diff options
Diffstat (limited to 'openspec/specs')
| -rw-r--r-- | openspec/specs/container-runtime/spec.md | 21 | ||||
| -rw-r--r-- | openspec/specs/developer-environment/spec.md | 8 |
2 files changed, 27 insertions, 2 deletions
diff --git a/openspec/specs/container-runtime/spec.md b/openspec/specs/container-runtime/spec.md new file mode 100644 index 0000000..0b07f92 --- /dev/null +++ b/openspec/specs/container-runtime/spec.md | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | # container-runtime Specification | ||
| 2 | |||
| 3 | ## Purpose | ||
| 4 | |||
| 5 | Provides a working, unprivileged Docker container runtime on every NixOS host built from this flake, so the already-provisioned Docker CLI tooling has a daemon to talk to without a separately-managed installation step. | ||
| 6 | |||
| 7 | ## Requirements | ||
| 8 | |||
| 9 | ### Requirement: A rootless Docker daemon runs on every NixOS host | ||
| 10 | Every NixOS host built from this flake's shared system module SHALL run a Docker daemon in rootless mode (as the user's own account, not as root), without requiring per-host opt-in. | ||
| 11 | |||
| 12 | #### Scenario: Daemon available after boot | ||
| 13 | - **WHEN** a NixOS host built from this flake's shared system module finishes booting and the user logs in | ||
| 14 | - **THEN** a Docker daemon is running under that user's own account, not as root | ||
| 15 | |||
| 16 | ### Requirement: The Docker CLI connects to the rootless daemon without manual configuration | ||
| 17 | A user on a NixOS host built from this flake's shared system module SHALL be able to run Docker CLI commands (e.g. `docker run`, `docker build`) against the rootless daemon without manually setting `DOCKER_HOST` or other connection configuration. | ||
| 18 | |||
| 19 | #### Scenario: Docker command works out of the box | ||
| 20 | - **WHEN** a user runs a `docker` CLI command on a NixOS host built from this flake's shared system module | ||
| 21 | - **THEN** the command reaches the rootless daemon and executes, without the user having exported `DOCKER_HOST` or written any Docker connection config themselves | ||
diff --git a/openspec/specs/developer-environment/spec.md b/openspec/specs/developer-environment/spec.md index 374f098..bcdc3e4 100644 --- a/openspec/specs/developer-environment/spec.md +++ b/openspec/specs/developer-environment/spec.md | |||
| @@ -12,12 +12,16 @@ The shared home-manager profile SHALL include the user's evidenced most-used CLI | |||
| 12 | - **THEN** the provisioned developer CLI tools are available on `PATH` without any additional manual installation step | 12 | - **THEN** the provisioned developer CLI tools are available on `PATH` without any additional manual installation step |
| 13 | 13 | ||
| 14 | ### Requirement: Container and cloud tools are client-only | 14 | ### Requirement: Container and cloud tools are client-only |
| 15 | Container and cloud-related packages provisioned by this capability SHALL provide client/CLI functionality only; they SHALL NOT attempt to provide or manage the underlying runtime or service (e.g. a container engine or cloud account). | 15 | Container and cloud-related packages provisioned by this capability SHALL provide client/CLI functionality only; they SHALL NOT attempt to provide or manage the underlying runtime or service (e.g. a Kubernetes cluster or cloud account), with one exception: Docker's runtime is managed on NixOS hosts by the separate `container-runtime` capability. Outside of NixOS hosts, and for every other tool (`kubectl`, `awscli2`), no corresponding runtime or account is installed or managed. |
| 16 | 16 | ||
| 17 | #### Scenario: No runtime is installed or managed | 17 | #### Scenario: No runtime is installed or managed |
| 18 | - **WHEN** a container or cloud CLI tool is provisioned by the shared home profile | 18 | - **WHEN** a container or cloud CLI tool other than Docker is provisioned by the shared home profile |
| 19 | - **THEN** no corresponding daemon, virtual machine, or account configuration is installed or managed by this capability — the tool simply connects to whatever runtime or account is already configured on the system | 19 | - **THEN** no corresponding daemon, virtual machine, or account configuration is installed or managed by this capability — the tool simply connects to whatever runtime or account is already configured on the system |
| 20 | 20 | ||
| 21 | #### Scenario: Docker's runtime is the documented exception on NixOS | ||
| 22 | - **WHEN** the Docker CLI is provisioned by the shared home profile on a NixOS host built from this flake's shared system module | ||
| 23 | - **THEN** a Docker runtime is available via the separate `container-runtime` capability, rather than being left entirely unmanaged | ||
| 24 | |||
| 21 | ### Requirement: Shell and prompt configuration defers to the user's personal dotfiles | 25 | ### Requirement: Shell and prompt configuration defers to the user's personal dotfiles |
| 22 | Where the user's personal dotfiles repository already owns a piece of shell or prompt configuration, the shared home profile SHALL provide only the underlying package, not a competing managed configuration for that same file. | 26 | Where the user's personal dotfiles repository already owns a piece of shell or prompt configuration, the shared home profile SHALL provide only the underlying package, not a competing managed configuration for that same file. |
| 23 | 27 | ||
