Installation eines einzellnen Hosts
- Nix 55.3%
- Shell 44.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| hosts | ||
| modules | ||
| .gitignore | ||
| flake.nix | ||
| nixos-setup.sh | ||
| README.md | ||
NixOS-Flakes-Infra
NixOS Flake Repo für einen Host.
NixOS-Flakes-Infra /
├─ flake.nix
├─ .gitignore
├─ README.md
└─ hosts/
└─ nix-host1/
├─ configuration.nix
└─ hardware-configuration.nix
Vorraussetzungen
- eignes Git-Repo mit den Dateien
- Anpassung der Dateien
"ssh-ed25519 xxxxxx"
];
initialHashedPassword = "xxxxxx";
};
flake.nix
Die flake.nix stellt z.B. die Distro Version bereit. In dieser Datei werden auch weitere Host hinzufügt.
configuration.nix
Hier wird der Host und das OS konfiguriert, jede Änderung die man sich am System wünscht muss hier eingetragen werden. Es wird ein Benutzer erstellt Names "service" mit einem initialHashedPassword und einem SSH-Key.
NixOS Installation
- OS mittels ISO booten
nixos-setup.shausführencurl https://xxx.install.sh | sh- Festplatte wird formatiert und die Installation wird gestartet
- root PW vergeben & neustart
manuelle Schritte:
parted /dev/vdb -- mklabel gpt
parted /dev/vdb -- mkpart ESP fat32 1MiB 513MiB
parted /dev/vdb -- set 1 esp on
parted /dev/vdb -- mkpart primary 513MiB 100%
mkfs.vfat -F32 -n EFI /dev/vdb1
mkfs.ext4 -L nixos /dev/vdb2
mount /dev/disk/by-label/nixos /mnt
mkdir -p /mnt/boot
mount /dev/disk/by-label/EFI /mnt/boot
git clone https://xxx.git /mnt/etc/nixos
nixos-generate-config --show-hardware-config > hosts/nix-srv1/hardware-configuration.nix
nixos-install --flake /mnt/etc/nixos#nix-srv1
OS-Update/OS-Anpassungen
Will man ein neues Programm auf dem Server installieren muss wie folgt vorgagangen werden:
In der neuen VM
- aktuelle hardware-configuration.nix erstellen
Diese wurde während der Installation automatisch für die VM erstellt, muss aber aktualisiert werden
nixos-generate-config --show-hardware-config > hosts/nix-srv1/hardware-configuration.nix - aktuelle
hardware-configuration.nixauf sein eigenes Repo übertragen - Editieren der
configuration.nixin eurem Repo -> z.B. hinzufügen von duf - Git pull
- NixOS aktualiseren:
sudo nixos-rebuild switch --flake . - DONE
Disko - Disk setup
- git clone des Repo
- sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount hosts/nix-srv1/disko-config.nix
Troubleshooting
- die hardware-configuration.nix muss im Repo eingechecked sein. Die dirty Files werden von NixOS nicht gesehen. Mit
git add xxxhinzufügen und committen.