Work-in-progress NixOS Server Infrastructure
- Nix 99.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
Build Nix / Checks Nix formatting (push) Failing after 25s
Build Nix / Checks Nix flake (push) Failing after 46s
Build Nix / Build NixOS host "andromeda" (push) Has been skipped
Build Nix / Build NixOS host "milkyway" (push) Has been skipped
Build Nix / Build NixOS host "quasar" (push) Has been skipped
Build Nix / Build NixOS host "stardust" (push) Has been skipped
Build Nix / Build NixOS host "supernova" (push) Has been skipped
|
||
| .forgejo/workflows | ||
| .zed | ||
| data | ||
| modules | ||
| secrets@232621c2d0 | ||
| .gitignore | ||
| .gitmodules | ||
| .prettierignore | ||
| .sops.yaml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| overlays.nix | ||
| post-modification.sh | ||
| README.md | ||
Luna's NixOS Home Infrastructure
Work-in-progress NixOS Server Infrastructure based on valerie's NixOS setup.
Setup
Setting up Sops
TODO.
Bootstrapping a New Device
-
First, boot the NixOS live environment (minimal ISO is recommended).
-
Then, get the harddrive ID using
lsblkorfdisk -l:sudo fdisk -l ls -lah /dev/disk/by-id | grep -i <drive disk ID ie. sda>Example output:
[nix-shell:~]$ sudo fdisk -l Disk /dev/loop0: 1.14 GiB, 1221455872 bytes, 2385656 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors Disk model: QEMU HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes [nix-shell:~]$ ls -lah /dev/disk/by-id | grep -i sda lrwxrwxrwx 1 root root 9 May 5 13:20 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0 -> ../../sda [nix-shell:~]$ # disk path: /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0 -
Manually create a host configuration by modifying/duplicating
hosts/<target_host_to_base_off_of>tohosts/<new_host_name>. Be sure to modify the hostname inhosts/<new_host_name>/configuration.nix. -
Add the host to
flake.nix. -
Modify the disko configuration for our host to use the correct disk ID that we found earlier.
-
Make any other additional modifications if needed.
Installing the Configuration
- Copy/clone the configuration over to the host to install and
cdinto it. - Copy the sops key data to the host you are installing on (sops
key.txtandssh_host_ed25519_keyto/var/lib/sops-nix/) - Run
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount -f "$PWD#hostname"to prepare the disk, replacinghostnamewith the host you want to install (ex.andromeda). - Before installing, prepare sops inside the mounted filesystem:
sudo mkdir -p /mnt/persist/var/lib/sops-nix/; sudo cp -r /var/lib/sops-nix/ /mnt/persist/var/lib/; sudo chmod -R 755 /mnt/persist/var/lib/sops-nix/ - Run
sudo nixos-install --flake "$PWD#hostname"to install the OS, replacinghostnamewith the host you want to install (ex.andromeda). - Copy the current configuration into
/etc/nixos:sudo cp -r $PWD/. /mnt/persist/etc/nixos