aboutsummaryrefslogtreecommitdiffstats
path: root/openspec/changes/add-claude-code-slack-spotify-discord-teams/tasks.md
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.io>2026-09-21 15:57:04 +0200
committerGravatar Tom van der Lee <tom@vanderlee.io>2026-09-21 15:57:04 +0200
commitc3f882fae8f4c1ae84deafc310357846e8b66ad1 (patch)
tree7d8e9fac29bec584fb39283c41d0d73632fb01e8 /openspec/changes/add-claude-code-slack-spotify-discord-teams/tasks.md
parenta6e0ae7b4eb877d0c22ae84ee55d6a85618ca4c1 (diff)
downloaddesktop-flake-c3f882fae8f4c1ae84deafc310357846e8b66ad1.tar.gz
desktop-flake-c3f882fae8f4c1ae84deafc310357846e8b66ad1.tar.bz2
desktop-flake-c3f882fae8f4c1ae84deafc310357846e8b66ad1.zip
Add Slack, Discord, Spotify, teams-for-linux, and Claude Code
Provisions these via home-manager, scoping unfree-package access to exactly these packages and skipping any that aren't available for the current system/architecture (e.g. aarch64-linux lacks Discord/Spotify builds) instead of failing evaluation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BBSd4VBfoKHjE1HR3P8kmn
Diffstat (limited to 'openspec/changes/add-claude-code-slack-spotify-discord-teams/tasks.md')
-rw-r--r--openspec/changes/add-claude-code-slack-spotify-discord-teams/tasks.md20
1 files changed, 20 insertions, 0 deletions
diff --git a/openspec/changes/add-claude-code-slack-spotify-discord-teams/tasks.md b/openspec/changes/add-claude-code-slack-spotify-discord-teams/tasks.md
new file mode 100644
index 0000000..82aa94f
--- /dev/null
+++ b/openspec/changes/add-claude-code-slack-spotify-discord-teams/tasks.md
@@ -0,0 +1,20 @@
1## 1. Unfree package gating
2
3- [ ] 1.1 Create `lib/unfree-allowlist.nix` containing `[ "slack" "discord" "spotify" "claude-code" ]` and verify it evaluates with `nix eval --file lib/unfree-allowlist.nix` (or `nix-instantiate --eval`)
4- [ ] 1.2 Update `lib/mkHome.nix` to construct `pkgs` via `import inputs.nixpkgs { inherit system; config.allowUnfreePredicate = pkg: builtins.elem (inputs.nixpkgs.lib.getName pkg) (import ./unfree-allowlist.nix); }` instead of `inputs.nixpkgs.legacyPackages.${system}`, and verify `nix flake show` still lists both `homeConfigurations` without error
5- [ ] 1.3 Update `lib/mkNixos.nix` to prepend a module setting the same `nixpkgs.config.allowUnfreePredicate` (reusing `lib/unfree-allowlist.nix`), and verify `nix flake check` (or `nix eval .#nixosConfigurations` for any configured host) still evaluates without an "unfree package" error
6
7## 2. Desktop applications module
8
9- [ ] 2.1 Create `modules/home/desktop-apps.nix` with `home.packages = builtins.filter (lib.meta.availableOn pkgs.stdenv.hostPlatform) ([ pkgs.slack pkgs.discord pkgs.spotify ] ++ lib.optional pkgs.stdenv.hostPlatform.isLinux pkgs.teams-for-linux);` and verify the file evaluates standalone via `nix-instantiate --eval --strict -E 'import ./modules/home/desktop-apps.nix { pkgs = import <nixpkgs> {}; lib = (import <nixpkgs> {}).lib; }'` or equivalent
10- [ ] 2.2 Add `./desktop-apps.nix` to the `imports` list in `modules/home/default.nix` and verify `home-manager build --flake .#tom@linux` and `home-manager build --flake .#tom@darwin` both evaluate successfully (run on a machine with Nix installed - not available in this environment)
11- [ ] 2.3 Verify on the build output (or via `nix eval`) that `tom@darwin`'s closure excludes `teams-for-linux` while `tom@linux`'s includes it, confirming the Linux-only guard works as intended
12
13## 3. Claude Code CLI
14
15- [ ] 3.1 Add `pkgs.claude-code` to `modules/home/dev-tools.nix`'s `home.packages`, guarded with `lib.optional (lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.claude-code) pkgs.claude-code`, and verify `claude-code` appears on `PATH` after `home-manager build --flake .#tom@linux` (or `.#tom@darwin`) followed by activation on a machine with Nix installed
16
17## 4. End-to-end verification
18
19- [ ] 4.1 Run `nix flake check` on a machine with Nix installed and confirm no evaluation errors for either `homeConfigurations` entry
20- [ ] 4.2 Run `statix check` and `deadnix` (already used by this repo's `devShells.default`) over the changed files and fix any findings