diff options
Diffstat (limited to 'openspec/changes/archive/2026-09-21-add-bash-profile-bootstrap/specs')
| -rw-r--r-- | openspec/changes/archive/2026-09-21-add-bash-profile-bootstrap/specs/shell-login-bootstrap/spec.md | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/openspec/changes/archive/2026-09-21-add-bash-profile-bootstrap/specs/shell-login-bootstrap/spec.md b/openspec/changes/archive/2026-09-21-add-bash-profile-bootstrap/specs/shell-login-bootstrap/spec.md new file mode 100644 index 0000000..37e236c --- /dev/null +++ b/openspec/changes/archive/2026-09-21-add-bash-profile-bootstrap/specs/shell-login-bootstrap/spec.md | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | ## Purpose | ||
| 2 | |||
| 3 | Ensures a login shell actually loads the user's bash configuration, since NixOS and most other Linux distributions don't ship a `~/.bash_profile` that sources `~/.bashrc` by default — without ever touching a `~/.bash_profile` that already exists. | ||
| 4 | |||
| 5 | ## ADDED Requirements | ||
| 6 | |||
| 7 | ### Requirement: A missing `.bash_profile` is created to source `.bashrc` | ||
| 8 | If no `~/.bash_profile` exists, home-manager activation SHALL create one whose contents source `~/.bashrc`. | ||
| 9 | |||
| 10 | #### Scenario: No `.bash_profile` exists | ||
| 11 | - **WHEN** activation runs and `~/.bash_profile` does not exist | ||
| 12 | - **THEN** a `~/.bash_profile` is created that sources `~/.bashrc` | ||
| 13 | |||
| 14 | ### Requirement: An existing `.bash_profile` is never modified | ||
| 15 | If `~/.bash_profile` already exists in any form (regular file or symlink), activation SHALL NOT create, overwrite, or otherwise modify it. | ||
| 16 | |||
| 17 | #### Scenario: `.bash_profile` already exists | ||
| 18 | - **WHEN** activation runs and `~/.bash_profile` already exists | ||
| 19 | - **THEN** its contents are left completely unchanged, and no write is attempted | ||
| 20 | |||
| 21 | ### Requirement: The created file tolerates a missing `.bashrc` | ||
| 22 | The generated `~/.bash_profile` SHALL only attempt to source `~/.bashrc` if that file exists, so it never errors on a login shell that runs before `~/.bashrc` is otherwise provisioned. | ||
| 23 | |||
| 24 | #### Scenario: `.bashrc` does not exist yet | ||
| 25 | - **WHEN** the generated `~/.bash_profile` runs and `~/.bashrc` does not exist | ||
| 26 | - **THEN** it does nothing further and produces no error | ||
| 27 | |||
| 28 | ### Requirement: Behavior is identical on every platform this flake targets | ||
| 29 | This capability SHALL apply unconditionally wherever the shared home-manager profile is activated — NixOS, standalone Linux, and macOS alike — gated only by whether `~/.bash_profile` already exists, not by operating system. | ||
| 30 | |||
| 31 | #### Scenario: Activated on any supported platform | ||
| 32 | - **WHEN** the shared home profile is activated on NixOS, standalone Linux, or macOS | ||
| 33 | - **THEN** the same create-if-absent behavior for `~/.bash_profile` applies identically | ||
