aboutsummaryrefslogtreecommitdiffstats
path: root/openspec/changes/add-nix-flake-bootstrap/specs/nix-flake-bootstrap/spec.md
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.io>2026-09-18 15:12:24 +0200
committerGravatar Tom van der Lee <tom@vanderlee.io>2026-09-18 15:12:24 +0200
commit4937d0d6f29895b514dcf8cd20c73a1aec446144 (patch)
tree7ff388ba4cca94e95489d30452b25badd7e49aa9 /openspec/changes/add-nix-flake-bootstrap/specs/nix-flake-bootstrap/spec.md
parent72b640f5ae65755c1d932b7b8ee88d2367e4036f (diff)
downloaddesktop-flake-4937d0d6f29895b514dcf8cd20c73a1aec446144.tar.gz
desktop-flake-4937d0d6f29895b514dcf8cd20c73a1aec446144.tar.bz2
desktop-flake-4937d0d6f29895b514dcf8cd20c73a1aec446144.zip
Archive four completed changes, sync main specs
add-nix-flake-bootstrap, add-host-bootstrap-script, add-dotfiles-stow-bootstrap, and add-developer-environment all had every task complete (verified via a real nix flake check and a real NixOS host build). Archived in dependency order so the two changes sharing the nix-flake-bootstrap capability merged additively. Main specs now exist for the first time: nix-flake-bootstrap (10 requirements), dotfiles-management (4), developer-environment (4). add-gnome-desktop remains active (not yet implemented).
Diffstat (limited to 'openspec/changes/add-nix-flake-bootstrap/specs/nix-flake-bootstrap/spec.md')
-rw-r--r--openspec/changes/add-nix-flake-bootstrap/specs/nix-flake-bootstrap/spec.md47
1 files changed, 0 insertions, 47 deletions
diff --git a/openspec/changes/add-nix-flake-bootstrap/specs/nix-flake-bootstrap/spec.md b/openspec/changes/add-nix-flake-bootstrap/specs/nix-flake-bootstrap/spec.md
deleted file mode 100644
index 3fc0055..0000000
--- a/openspec/changes/add-nix-flake-bootstrap/specs/nix-flake-bootstrap/spec.md
+++ /dev/null
@@ -1,47 +0,0 @@
1## Purpose
2
3Provides a single Nix flake that provisions NixOS hosts from a copyable template and provisions a shared, cross-platform home-manager user profile that installs standalone on non-NixOS systems, keeping both paths built from the same per-user module.
4
5## ADDED Requirements
6
7### Requirement: Shared home profile across activation methods
8The system SHALL apply the same home-manager user profile (shell, git, editor, CLI tools) whether it is activated as part of a NixOS system build or activated standalone via `home-manager switch` on a non-NixOS system.
9
10#### Scenario: NixOS-activated profile matches standalone profile
11- **WHEN** a NixOS host built with the `mkNixos` helper activates its `home-manager.users.tom` configuration
12- **THEN** the resulting user environment includes the same programs and settings as the `homeConfigurations."tom@linux"` output built with the `mkHome` helper, because both consume the same `users/tom.nix` module
13
14### Requirement: Standalone installation requires no root privileges
15The system SHALL allow the shared home profile to be installed on any non-NixOS system without modifying system-level configuration or requiring root/sudo.
16
17#### Scenario: Standalone home-manager switch
18- **WHEN** a user with Nix installed runs `home-manager switch --flake .#tom@linux` on a non-NixOS Linux system
19- **THEN** only the user's home directory is modified and no root privileges are required
20
21### Requirement: NixOS host template is not a live flake output
22The system SHALL provide a NixOS host template directory that is not wired into any `nixosConfigurations` output, so it cannot be accidentally built or installed before being customized for real hardware.
23
24#### Scenario: Flake check does not build the template
25- **WHEN** `nix flake check` is run against the repository
26- **THEN** no `nixosConfigurations` entry evaluates or builds the `hosts/template` directory directly
27
28### Requirement: Flakes remain enabled on installed NixOS systems
29Every NixOS host built from this flake SHALL have the `nix-command` and `flakes` experimental features enabled by default, so subsequent `nixos-rebuild` invocations do not require extra flags.
30
31#### Scenario: Rebuilding after install needs no extra flags
32- **WHEN** a NixOS system installed from this flake is rebuilt with `nixos-rebuild switch --flake <path>#<host>`
33- **THEN** the command succeeds without passing `--extra-experimental-features`
34
35### Requirement: Per-host and per-user state versions are explicit
36Each NixOS host and each home-manager user configuration SHALL declare its own `system.stateVersion` / `home.stateVersion` value; the shared helper functions SHALL NOT supply a default value.
37
38#### Scenario: Missing stateVersion fails evaluation
39- **WHEN** a host or user configuration omits its `stateVersion` setting
40- **THEN** evaluating that configuration fails rather than silently falling back to a shared default
41
42### Requirement: Repository evaluates under pure evaluation
43The flake's `homeConfigurations` and check outputs defined in this change SHALL evaluate and build using only pure evaluation, without requiring the `--impure` flag.
44
45#### Scenario: Pure flake check succeeds
46- **WHEN** `nix flake check` is run without `--impure`
47- **THEN** it completes successfully for all outputs defined in this change