Files
nix/README.md
T
2026-04-22 20:34:53 +02:00

138 lines
3.4 KiB
Markdown

# NixOS-konfiguration
Det här förrådet innehåller flake-baserade NixOS-konfigurationer.
## Värdar
- `daidalos`: Raspberry Pi 4, `aarch64-linux`, ZFS-root, `extlinux`
- `hermes`: x86_64-server
- `kronos`: x86_64-desktop
## Ny installation: `daidalos`
De här stegen utgår från en helt ren maskin. Du behöver inte installera Nix
innan du börjar. NixOS-installationsmediet innehåller redan `nix`,
`nixos-install` och `nixos-generate-config`.
### Krav
- En Raspberry Pi 4
- Ett separat microSD-kort med NixOS generiska `aarch64` SD-image
- En separat måldisk för systemet, helst en USB-SSD eller NVMe-adapter som
syns under `/dev/disk/by-id`
- Nätverksanslutning under installationen
- All data på måldisken raderas under installationen
`daidalos` använder ZFS och refererar diskar via `/dev/disk/by-id`. Installera
inte på samma medium som du har bootat installationsmiljön från.
### 1. Boota installationsmediet
1. Ladda ned NixOS generiska `aarch64` SD-image.
2. Skriv den till ett microSD-kort.
3. Starta Raspberry Pi 4 från kortet.
4. Om nätverket inte kommer upp automatiskt, kör `nmtui`.
### 2. Hämta förrådet och välj måldisk
```bash
sudo -i
export NIX_CONFIG='experimental-features = nix-command flakes'
cd /tmp
nix shell nixpkgs#git -c git clone <repo-url> nixcfg
cd /tmp/nixcfg
ls -l /dev/disk/by-id
nix shell nixpkgs#openssl -c openssl rand -hex 4
nix shell nixpkgs#nvim -c nvim modules/hosts/daidalos/configuration.nix
```
Ändra sedan i `modules/hosts/daidalos/configuration.nix`:
- Ersätt `REPLACE_ME` i `installDisk` med rätt disk från `/dev/disk/by-id`
- Sätt `networking.hostId` till en unik sträng med 8 hextecken, till exempel
värdet från `openssl rand -hex 4`
### 3. Partitionera, formatera och montera måldisken
```bash
nix run github:nix-community/disko -- --mode destroy,format,mount --flake .#daidalos
```
Kommandot raderar all data på måldisken och monterar systemet under `/mnt`.
### 4. Generera `hardware.nix` för just den här maskinen
```bash
mkdir -p /tmp/hw
nixos-generate-config --root /mnt --dir /tmp/hw --no-filesystems
cp /tmp/hw/hardware-configuration.nix modules/hosts/daidalos/hardware.nix
```
`--no-filesystems` är viktigt här. Disklayouten hanteras redan av `disko`.
### 5. Kopiera konfigurationen och installera systemet
```bash
mkdir -p /mnt/etc
cp -a /tmp/nixcfg /mnt/etc/nixos
nixos-install --root /mnt --flake /mnt/etc/nixos#daidalos
```
`nixos-install` frågar efter ett root-lösenord för den installerade maskinen.
### 6. Starta om
Ta bort installationskortet och starta om:
```bash
reboot
```
Om Pi:n inte bootar från måldisken efter installationen är firmware troligen
inte inställd för USB-boot ännu. Då behöver Raspberry Pi EEPROM uppdateras innan
systemet kan starta från en USB-disk.
## Vanligt underhåll
På en installerad maskin ligger konfigurationen under `/etc/nixos`.
Uppdatera flake-låset:
```bash
cd /etc/nixos
nix flake update
```
Bygg och aktivera konfigurationen:
```bash
cd /etc/nixos
sudo nixos-rebuild switch --flake .#daidalos
```
Testa utan att göra ändringen permanent över reboot:
```bash
cd /etc/nixos
sudo nixos-rebuild test --flake .#daidalos
```
Bygg bara:
```bash
cd /etc/nixos
sudo nixos-rebuild build --flake .#daidalos
```
Rensa gamla generationer och oanvända paket:
```bash
sudo nix-collect-garbage -d
```
Visa ZFS-snapshots:
```bash
zfs list -t snapshot
```