blob: e96348b26cc78187bbef7df1155f482984584544 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# Sane stable stateless NixOS setup
This is a fairly straightforward setup for making a NixOS system configuration stateless without relying on experimental Nix features.
This means:
- `nix-channel` is disabled
- Nixpkgs is managed with [niv](https://github.com/nmattia/niv) [^1]
- The same Nixpkgs is used for the system and all Nix commands
- This includes the Nixpkgs version, config and overlays
[^1]: Yes niv is a third-party tool, but it's essentially just a nice wrapper around `nix-prefetch-url` and co.
## Usage
We're assuming that you just installed NixOS by going through the [official installation docs](https://nixos.org/manual/nixos/stable/#sec-installation).
### Setup
1. Clone this repo to a local directory and enter it:
```
nix-shell -p git --run \
'git clone https://git.push-f.com/config ~/config'
cd ~/config/nixos
```
2. Add your initial NixOS configuration files, either
- Move your existing configuration files into it:
```
sudo mv /etc/nixos/* .
```
- Generate new ones:
```
nixos-generate-config --dir .
```
3. Pin Nixpkgs to the [latest stable version](https://nixos.org/manual/nixos/stable/release-notes) using [niv](https://github.com/nmattia/niv):
```
nix-shell -p niv --run \
'niv init --nixpkgs NixOS/nixpkgs --nixpkgs-branch nixos-23.11'
```
4. Remove all stateful channels:
```
sudo rm -v /nix/var/nix/profiles/per-user/*/channels*
```
5. Rebuild:
```
sudo ./rebuild switch
```
6. Log out and back in again.
### Making changes
Here are some changes you can make:
- Change the NixOS configuration in `./configuration.nix`
- Update the pinned Nixpkgs:
```
niv update nixpkgs
```
- Upgrade to a newer release:
```
niv update nixpkgs --branch nixos-23.11
```
- Change the Nixpkgs config by editing `nixpkgs/config.nix`
- Add Nixpkgs overlays to `nixpkgs/overlays.nix`
- Regenerate the hardware configuration:
```
nixos-generate-configuration --dir .
```
To apply the changes, run
```
sudo ./rebuild switch
```
All options to `./rebuild` are forwarded to `nixos-rebuild`.
After rebuilding, the changes are reflected in the system.
Furthermore, all Nix commands on the system will also use the the same values.
|