.. | ||
accentor | ||
emacs | ||
ssh | ||
tetris | ||
vpn | ||
accentor.nix | ||
bluetooth.nix | ||
default.nix | ||
docker.nix | ||
eid.nix | ||
emacs.nix | ||
git.nix | ||
global-mailer.nix | ||
minecraft.nix | ||
nextcloud.nix | ||
nginx.nix | ||
nix.nix | ||
ovh.nix | ||
README.md | ||
smartd.nix | ||
ssh.nix | ||
sshd.nix | ||
steam.nix | ||
syncthing-server.nix | ||
teeworlds.nix | ||
tetris.nix | ||
tmux.nix | ||
vpn.nix | ||
zeroad.nix | ||
zfs.nix | ||
zotero.nix | ||
zsh.nix |
Setting up ZFS
-
Create three partitions:
- Boot
- Swap
- ZFS
For example:
sgdisk -n 0:0:+512MiB -t 0:EF00 -c 0:boot $DISK sgdisk -n 0:0:+32GiB -t 0:8200 -c 0:swap $DISK sgdisk -n 0:0:0 -t 0:BF01 -c 0:ZFS $DISK
-
Configure swap and boot as usual.
-
Create ZPool:
zpool create -O mountpoint=none -O encryption=aes-256-gcm -O keyformat=passphrase rpool $ZFS_PART
Leave out
-O encryption=aes-256-gcm -O keyformat=passphrase
if you don't want to fully encrypt the ZFS partition. -
Create datasets:
zfs create -o mountpoint=legacy rpool/local/root zfs snapshot rpool/local/root@blank zfs create -o mountpoint=legacy rpool/local/nix zfs set compression=lz4 rpool/local/nix zfs create -o mountpoint=legacy rpool/local/cache zfs set compression=lz4 rpool/local/cache zfs create -o mountpoint=legacy rpool/safe/data zfs set compression=lz4 rpool/local/data
-
Mount datasets:
mount -t zfs rpool/local/root /mnt mkdir /mnt/nix mount -t zfs rpool/local/nix /mnt/nix mkdir /mnt/boot mount $BOOT_PART /mnt/boot mkdir /mnt/cache mount -t zfs rpool/local/cache /mnt/cache mkdir /mnt/data mount -t zfs rpool/safe/data /mnt/data
-
Configure Host ID
Set
networking.hostid
in the nixos config tohead -c 8 /etc/machine-id
.