Payload
{
"action": "edited",
"issue": {
"url": "https://api.github.com/repos/darkmatter/nixmac/issues/157",
"repository_url": "https://api.github.com/repos/darkmatter/nixmac",
"labels_url": "https://api.github.com/repos/darkmatter/nixmac/issues/157/labels{/name}",
"comments_url": "https://api.github.com/repos/darkmatter/nixmac/issues/157/comments",
"events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/157/events",
"html_url": "https://github.com/darkmatter/nixmac/issues/157",
"id": 4441312314,
"node_id": "I_kwDOSB6EzM8AAAABCLkMOg",
"number": 157,
"title": "[Launch blocker] Nix installer policy: auto-install vs guided setup",
"user": {
"login": "linear-code[bot]",
"id": 222613912,
"node_id": "BOT_kgDODUTRmA",
"avatar_url": "https://avatars.githubusercontent.com/in/1658531?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/linear-code%5Bbot%5D",
"html_url": "https://github.com/apps/linear-code",
"followers_url": "https://api.github.com/users/linear-code%5Bbot%5D/followers",
"following_url": "https://api.github.com/users/linear-code%5Bbot%5D/following{/other_user}",
"gists_url": "https://api.github.com/users/linear-code%5Bbot%5D/gists{/gist_id}",
"starred_url": "https://api.github.com/users/linear-code%5Bbot%5D/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/linear-code%5Bbot%5D/subscriptions",
"organizations_url": "https://api.github.com/users/linear-code%5Bbot%5D/orgs",
"repos_url": "https://api.github.com/users/linear-code%5Bbot%5D/repos",
"events_url": "https://api.github.com/users/linear-code%5Bbot%5D/events{/privacy}",
"received_events_url": "https://api.github.com/users/linear-code%5Bbot%5D/received_events",
"type": "Bot",
"user_view_type": "public",
"site_admin": false
},
"labels": [
{
"id": 10865918433,
"node_id": "LA_kwDOSB6EzM8AAAACh6jB4Q",
"url": "https://api.github.com/repos/darkmatter/nixmac/labels/Improvement",
"name": "Improvement",
"color": "ededed",
"default": false,
"description": null
},
{
"id": 10936169199,
"node_id": "LA_kwDOSB6EzM8AAAACi9iy7w",
"url": "https://api.github.com/repos/darkmatter/nixmac/labels/juan-sourced",
"name": "juan-sourced",
"color": "9D86FF",
"default": false,
"description": null
}
],
"state": "open",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 0,
"created_at": "2026-05-13T21:30:28Z",
"updated_at": "2026-06-01T06:37:03Z",
"closed_at": null,
"assignee": null,
"author_association": "NONE",
"issue_field_values": [],
"type": null,
"active_lock_reason": null,
"sub_issues_summary": {
"total": 0,
"completed": 0,
"percent_completed": 0
},
"issue_dependencies_summary": {
"blocked_by": 0,
"total_blocked_by": 0,
"blocking": 0,
"total_blocking": 0
},
"body": "## Classification\n\nPre-launch decision\n\n## Context\n\nJuan (as well as Cooper's non-technical friend) had issues with the auto install.\n\n## Desired outcome\n\nUsers who don't have Nix installed should be told they need to install it and be pointed to two options (Determinate & official NixOS) with high-level instructions.\n\n## Acceptance criteria\n\n- [ ] When Nix is not detected, the setup screen explains in 2-3 sentences what Nix is and why nixmac requires it\n- [ ] The screen offers two installer options: Determinate Systems and NixOS Official, each with a one-line description of the tradeoff\n- [ ] Clicking an option opens the external link — nixmac does not launch a terminal or run any installer script on the user's behalf\n- [ ] The screen has a \"I've installed Nix — check again\" button that re-polls detection without requiring an app restart\n- [ ] If a user has Nix installed but darwin-rebuild is not yet available, the screen explains what's missing and what to do\n- [ ] Failed or partial Nix installs show a clear, human-readable error message with a recovery path\n\n## Source\n\nJuan sourced: local audit file `/Users/farhankhalaf/Downloads/2026-05-09_nixmac-review.md`, section `Onboarding issues`.\n\n---\n\n## Acceptance Criteria / Gherkin Specs\n\n```gherkin\nScenario: Nix not detected — user is shown an explanation and two installer options\n Given I open nixmac on a machine where Nix is not installed\n When the setup screen loads\n Then I see a 2-3 sentence explanation of what Nix is and why nixmac requires it\n And I am presented with two options: \"Determinate Systems installer\" and \"NixOS Official installer\"\n And each option has a one-line description of the tradeoff\n\nScenario: Clicking an installer option opens the external URL, no auto-run\n Given I am on the Nix setup screen\n When I click the Determinate Systems or NixOS Official installer option\n Then my default browser opens to the corresponding installer page\n And nixmac does NOT launch a terminal, run a shell script, or execute any installer on my behalf\n\nScenario: \"Check again\" button re-polls Nix without requiring app restart\n Given I have installed Nix using an external installer\n When I return to nixmac and click \"I've installed Nix — check again\"\n Then nixmac re-polls for the Nix binary\n And if Nix is now found, the setup screen advances to the next step\n And if Nix is still not found, the same guidance screen is shown with the same options\n\nScenario: Nix is installed but darwin-rebuild is not yet available\n Given Nix is installed on this machine\n But darwin-rebuild is not yet configured\n When nixmac performs the setup check\n Then the screen identifies specifically that darwin-rebuild is missing (not Nix itself)\n And provides instructions on what to do next (e.g., install nix-darwin)\n And does NOT silently spin or attempt to auto-install nix-darwin\n\nScenario: Partial or failed Nix install leaves a recoverable state\n Given a Nix installation was started but failed or is incomplete\n When nixmac attempts to detect Nix\n Then a clear human-readable error message is shown describing the partial state\n And a recovery path is provided (e.g., link to Determinate uninstaller or NixOS docs)\n And nixmac does not crash or show a cryptic technical error\n\nScenario: Nix is fully installed — setup screen is not shown\n Given Nix and darwin-rebuild are both present on this machine\n When nixmac performs the setup check\n Then the Nix installer guidance screen is NOT shown\n And nixmac proceeds directly to the normal onboarding or main app flow\n```",
"reactions": {
"url": "https://api.github.com/repos/darkmatter/nixmac/issues/157/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/darkmatter/nixmac/issues/157/timeline",
"performed_via_github_app": null,
"state_reason": null,
"pinned_comment": null
},
"changes": {
"body": {
"from": "## Classification\n\nPre-launch decision\n\n## Context\n\nJuan ( as well. as Cooper's non-technical friend had issues with the auto install)\n\n## Desired outcome\n\nUsers who don't have nix installed should be told they need to install it and be pointed to two options (determinate & official nixos) w/ high-level instructions\n\n## Acceptance criteria\n\n- [ ] When Nix is not detected, the setup screen explains in 2-3 sentences what Nix is and why nixmac requires it\n- [ ] The screen offers two installer options: Determinate Systems (`https://determinate.systems/nix-installer/`) and NixOS Official (`https://nixos.org/download`), each with a one-line description of the tradeoff\n- [ ] Clicking an option opens the external link — nixmac does not launch a terminal or run any installer script on the user's behalf\n- [ ] The screen has a \"I've installed Nix — check again\" button that re-polls detection without requiring an app restart\n- [ ] If a user has Nix installed but darwin-rebuild is not yet available, the screen explains what's missing and what to do (don't silently spin or auto-install nix-darwin)\n- [ ] Failed or partial Nix installs that leave the system in an unexpected state show a clear, human-readable error message with a recovery path (links to Determinate uninstaller or NixOS docs)\n\n## Source\n\nJuan sourced: local audit file `/Users/farhankhalaf/Downloads/2026-05-09_nixmac-review.md`, section `Onboarding issues`."
}
},
"repository": {
"id": 1209959628,
"node_id": "R_kgDOSB6EzA",
"name": "nixmac",
"full_name": "darkmatter/nixmac",
"private": false,
"owner": {
"login": "darkmatter",
"id": 17834193,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
"avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/darkmatter",
"html_url": "https://github.com/darkmatter",
"followers_url": "https://api.github.com/users/darkmatter/followers",
"following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
"gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
"starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
"organizations_url": "https://api.github.com/users/darkmatter/orgs",
"repos_url": "https://api.github.com/users/darkmatter/repos",
"events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
"received_events_url": "https://api.github.com/users/darkmatter/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"html_url": "https://github.com/darkmatter/nixmac",
"description": "Home manager and nix-darwin that understands plain English",
"fork": false,
"url": "https://api.github.com/repos/darkmatter/nixmac",
"forks_url": "https://api.github.com/repos/darkmatter/nixmac/forks",
"keys_url": "https://api.github.com/repos/darkmatter/nixmac/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/darkmatter/nixmac/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/darkmatter/nixmac/teams",
"hooks_url": "https://api.github.com/repos/darkmatter/nixmac/hooks",
"issue_events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/events{/number}",
"events_url": "https://api.github.com/repos/darkmatter/nixmac/events",
"assignees_url": "https://api.github.com/repos/darkmatter/nixmac/assignees{/user}",
"branches_url": "https://api.github.com/repos/darkmatter/nixmac/branches{/branch}",
"tags_url": "https://api.github.com/repos/darkmatter/nixmac/tags",
"blobs_url": "https://api.github.com/repos/darkmatter/nixmac/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/darkmatter/nixmac/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/darkmatter/nixmac/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/darkmatter/nixmac/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/darkmatter/nixmac/statuses/{sha}",
"languages_url": "https://api.github.com/repos/darkmatter/nixmac/languages",
"stargazers_url": "https://api.github.com/repos/darkmatter/nixmac/stargazers",
"contributors_url": "https://api.github.com/repos/darkmatter/nixmac/contributors",
"subscribers_url": "https://api.github.com/repos/darkmatter/nixmac/subscribers",
"subscription_url": "https://api.github.com/repos/darkmatter/nixmac/subscription",
"commits_url": "https://api.github.com/repos/darkmatter/nixmac/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/darkmatter/nixmac/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/darkmatter/nixmac/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/darkmatter/nixmac/contents/{+path}",
"compare_url": "https://api.github.com/repos/darkmatter/nixmac/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/darkmatter/nixmac/merges",
"archive_url": "https://api.github.com/repos/darkmatter/nixmac/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/darkmatter/nixmac/downloads",
"issues_url": "https://api.github.com/repos/darkmatter/nixmac/issues{/number}",
"pulls_url": "https://api.github.com/repos/darkmatter/nixmac/pulls{/number}",
"milestones_url": "https://api.github.com/repos/darkmatter/nixmac/milestones{/number}",
"notifications_url": "https://api.github.com/repos/darkmatter/nixmac/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/darkmatter/nixmac/labels{/name}",
"releases_url": "https://api.github.com/repos/darkmatter/nixmac/releases{/id}",
"deployments_url": "https://api.github.com/repos/darkmatter/nixmac/deployments",
"created_at": "2026-04-14T00:37:13Z",
"updated_at": "2026-06-01T06:15:50Z",
"pushed_at": "2026-06-01T06:32:03Z",
"git_url": "git://github.com/darkmatter/nixmac.git",
"ssh_url": "git@github.com:darkmatter/nixmac.git",
"clone_url": "https://github.com/darkmatter/nixmac.git",
"svn_url": "https://github.com/darkmatter/nixmac",
"homepage": "https://nixmac.com",
"size": 678800,
"stargazers_count": 5,
"watchers_count": 5,
"language": "Rust",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"has_discussions": false,
"forks_count": 1,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 77,
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
},
"allow_forking": true,
"is_template": false,
"web_commit_signoff_required": false,
"has_pull_requests": true,
"pull_request_creation_policy": "all",
"topics": [
"home-manager",
"nix",
"nix-darwin",
"nix-flake",
"opencode"
],
"visibility": "public",
"forks": 1,
"open_issues": 77,
"watchers": 5,
"default_branch": "develop",
"custom_properties": {}
},
"organization": {
"login": "darkmatter",
"id": 17834193,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
"url": "https://api.github.com/orgs/darkmatter",
"repos_url": "https://api.github.com/orgs/darkmatter/repos",
"events_url": "https://api.github.com/orgs/darkmatter/events",
"hooks_url": "https://api.github.com/orgs/darkmatter/hooks",
"issues_url": "https://api.github.com/orgs/darkmatter/issues",
"members_url": "https://api.github.com/orgs/darkmatter/members{/member}",
"public_members_url": "https://api.github.com/orgs/darkmatter/public_members{/member}",
"avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
"description": ""
},
"enterprise": {
"id": 469843,
"slug": "darkmatter",
"name": "darkmatter",
"node_id": "E_kgDOAAcrUw",
"avatar_url": "https://avatars.githubusercontent.com/b/469843?v=4",
"description": "",
"website_url": "darkmatter.io",
"html_url": "https://github.com/enterprises/darkmatter",
"created_at": "2025-09-07T16:01:00Z",
"updated_at": "2026-05-09T15:34:55Z"
},
"sender": {
"login": "czxtm",
"id": 1325802,
"node_id": "MDQ6VXNlcjEzMjU4MDI=",
"avatar_url": "https://avatars.githubusercontent.com/u/1325802?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/czxtm",
"html_url": "https://github.com/czxtm",
"followers_url": "https://api.github.com/users/czxtm/followers",
"following_url": "https://api.github.com/users/czxtm/following{/other_user}",
"gists_url": "https://api.github.com/users/czxtm/gists{/gist_id}",
"starred_url": "https://api.github.com/users/czxtm/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/czxtm/subscriptions",
"organizations_url": "https://api.github.com/users/czxtm/orgs",
"repos_url": "https://api.github.com/users/czxtm/repos",
"events_url": "https://api.github.com/users/czxtm/events{/privacy}",
"received_events_url": "https://api.github.com/users/czxtm/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"installation": {
"id": 131074261,
"node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
}
}