aboutsummaryrefslogtreecommitdiffstats
path: root/openspec/changes/add-developer-environment/tasks.md
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.io>2026-09-17 13:17:44 +0200
committerGravatar Tom van der Lee <tom@vanderlee.io>2026-09-17 13:17:44 +0200
commite91a12c68901d761812a855559331b9a7462a170 (patch)
tree428cf9886633b87e7345242640f0ef433a180615 /openspec/changes/add-developer-environment/tasks.md
parent41db5fc767fbe5a5453b2fa0583de8c3b2cf4021 (diff)
downloaddesktop-flake-e91a12c68901d761812a855559331b9a7462a170.tar.gz
desktop-flake-e91a12c68901d761812a855559331b9a7462a170.tar.bz2
desktop-flake-e91a12c68901d761812a855559331b9a7462a170.zip
Add most-used dev tools, sshd/firewall, bash+liquidprompt shell
modules/home/dev-tools.nix provisions the developer's evidenced most- used CLI/client tooling (gh, tmux, htop, yq-go, tree-sitter, docker, docker-compose, kubectl, awscli2). modules/home/shell.nix drops zsh/ starship/direnv in favor of bash + liquidprompt, both left entirely to the user's own dotfiles for config since home-manager can't own ~/.bashrc without conflicting with it. modules/nixos/common.nix adds sshd (key-only auth) and a firewall baseline for future NixOS hosts.
Diffstat (limited to 'openspec/changes/add-developer-environment/tasks.md')
-rw-r--r--openspec/changes/add-developer-environment/tasks.md29
1 files changed, 29 insertions, 0 deletions
diff --git a/openspec/changes/add-developer-environment/tasks.md b/openspec/changes/add-developer-environment/tasks.md
new file mode 100644
index 0000000..5fcd5e2
--- /dev/null
+++ b/openspec/changes/add-developer-environment/tasks.md
@@ -0,0 +1,29 @@
1## 1. Developer CLI tools
2
3- [x] 1.1 Create `modules/home/dev-tools.nix` with `home.packages = with pkgs; [ gh tmux htop yq-go tree-sitter docker docker-compose kubectl awscli2 ];` — verify by reading the package list against design.md's decisions (especially `yq-go` not `yq`) (note: `terraform` omitted per task 1.3's outcome, see below)
4- [x] 1.2 Add `./dev-tools.nix` to `modules/home/default.nix`'s imports — verify by grep confirming the import is present
5- [x] 1.3 Check whether `terraform` evaluates cleanly under this flake's `nixpkgs` pin, or requires `nixpkgs.config.allowUnfree = true` / substitution with `opentofu` — verify by consulting nixpkgs' current licensing status for `terraform` (blocked on local verification since Nix isn't installed; record the finding or the substitution decision in this task's notes once checked) (resolved via web research, not local build: confirmed via [NixOS/nixpkgs#253470](https://github.com/NixOS/nixpkgs/issues/253470) that terraform ≥1.6.0 is unfree/BSL-licensed and requires `nixpkgs.config.allowUnfree = true`. Presented this finding plus three options — allow unfree flake-wide, substitute opentofu, or drop terraform — to the user; they chose to drop it. `terraform` is not in the final package list.)
6
7## 2. Shell and prompt
8
9- [x] 2.1 Rewrite `modules/home/shell.nix` to remove `programs.zsh`, `programs.starship`, and `programs.direnv` entirely, replacing its contents with `home.packages = [ pkgs.liquidprompt ];` — verify by reading the file and confirming none of the three removed program blocks remain
10- [x] 2.2 Confirm no other file in `modules/home/` re-enables `programs.zsh`, `programs.starship`, or `programs.direnv` — verify by grepping `modules/home/` for each (grep across all of `modules/home/` found zero matches for any of the three)
11
12## 3. NixOS common module: shell, sshd, firewall
13
14- [x] 3.1 In `modules/nixos/common.nix`, change `users.users.tom.shell` from `pkgs.zsh` to `pkgs.bash`, and remove the `programs.zsh.enable = true;` line — verify by reading the file
15- [x] 3.2 Add `services.openssh = { enable = true; settings = { PasswordAuthentication = false; PermitRootLogin = "no"; }; };` — verify by reading the added block
16- [x] 3.3 Add `networking.firewall = { enable = true; allowedTCPPorts = [ 22 ]; };` — verify by reading the added block
17
18## 4. Documentation
19
20- [x] 4.1 Update `README.md` to document the new `modules/home/dev-tools.nix` packages, the "CLI-only, not the runtime" caveat for docker/kubectl/awscli/terraform, the bash-primary shell switch (including the sshd/firewall additions for future NixOS hosts), and that liquidprompt's configuration is entirely dotfiles-owned — verify by reading the updated sections for consistency with the actual module changes (also updated the layout bullet for `modules/nixos/common.nix` and the dotfiles-precedent note to mention bash/.bashrc alongside git/.gitconfig, and added an explicit note on why terraform was dropped)
21
22## 5. Validation
23
24- [ ] 5.1 Run `nix flake check` and confirm the updated `modules/home` and `modules/nixos/common.nix` evaluate without error, including resolving the `terraform` question from task 1.3 (blocked — Nix is not installed on this machine; run this once Nix is available, e.g. via a real install or CI — this is the real acceptance gate, not the individual checkboxes above)
25- [x] 5.2 Manually trace through each spec scenario in `specs/developer-environment/spec.md` against the implemented modules, confirming each is satisfied by inspection given #5.1 cannot run locally (all 4 scenarios traced and satisfied: `dev-tools.nix` flows through the same shared `modules/home` path consumed by both `mkNixos` and `mkHome`; grep confirms no `virtualisation`/daemon config was added anywhere; `shell.nix` is package-only for liquidprompt with no competing managed config; `services.openssh` + `networking.firewall` in `common.nix` match the SSH scenario exactly)
26
27---
28
29**Verification note:** as with every prior change, Nix is not installed on this machine, so task 5.1 (`nix flake check`) could not be executed and remains the outstanding acceptance gate — now shared across four changes in this repo. Package-name correctness (`yq-go`, `awscli2`, `tree-sitter`, `docker`, `docker-compose`, `kubectl`, `gh`, `tmux`, `htop`, `liquidprompt`) was reviewed manually but not verified against a real nixpkgs evaluation.