aboutsummaryrefslogtreecommitdiffstats
path: root/openspec/changes/add-bash-profile-bootstrap/specs
diff options
context:
space:
mode:
Diffstat (limited to 'openspec/changes/add-bash-profile-bootstrap/specs')
-rw-r--r--openspec/changes/add-bash-profile-bootstrap/specs/shell-login-bootstrap/spec.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/openspec/changes/add-bash-profile-bootstrap/specs/shell-login-bootstrap/spec.md b/openspec/changes/add-bash-profile-bootstrap/specs/shell-login-bootstrap/spec.md
new file mode 100644
index 0000000..37e236c
--- /dev/null
+++ b/openspec/changes/add-bash-profile-bootstrap/specs/shell-login-bootstrap/spec.md
@@ -0,0 +1,33 @@
1## Purpose
2
3Ensures 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`
8If 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
15If `~/.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`
22The 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
29This 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