Install
Temporäre Installation auf USB-Stick oder kleine Partition
Die temporäre Installation wird genutzt um eine funktionierende zfs-unstable Umgebung zu haben, was noch benötigt wird um einen encrypteten zpool zu verwenden.
Randhex für hostId
echo "$(openssl rand -hex 4)"
Config-Optionen:
boot.supportedFilesystems = [ "zfs" ];
boot.zfs.enableUnstable = true;
networking.hostId = "RANDHEX";
environment.systemPackages = with pkgs; [
wget vim tmux openssh gptfdisk
];
Finale Installation
Die finale Installation wird dann auf die korrekte Festplatte durchgeführt. sdb muss also gegebenenfalls angepasst werden.
gdisk /dev/sdb
Partitionen für EFI, SWAP und ZFS anlegen
Verschlüsselten zpool und filesets anlegen
zpool create -o ashift=12 -o altroot="/mnt" -O mountpoint=none -O acltype=posixacl -O xattr=sa -O encryption=aes-256-gcm -O keyformat=passphrase zroot /dev/sdb3
zfs create -o compression=lz4 -o atime=off -o normalization=formD -o mountpoint=none zroot/nixos
zfs create -o mountpoint=legacy zroot/nixos/root
zfs create -o mountpoint=legacy zroot/nixos/usr
zfs create -o mountpoint=legacy zroot/nixos/var
zfs create -o mountpoint=legacy zroot/nixos/tmp
zfs create -o mountpoint=legacy zroot/nixos/home
Mounten und installieren
mount -t zfs zroot/nixos/root /mnt
mkdir /mnt/{home,boot,usr,var,tmp}
mkfs.vfat /dev/sdb1
mount /dev/sdb1 /mnt/boot
mkswap /dev/sdb2
swapon /dev/sdb2
mount -t zfs zroot/nixos/home /mnt/home
mount -t zfs zroot/nixos/usr /mnt/usr
mount -t zfs zroot/nixos/var /mnt/var
mount -t zfs zroot/nixos/tmp /mnt/tmp
nixos-generate-config --root /mnt
Config Optionen wie oben
nixos-install --root /mnt
reboot
nix-channel --update nixos