Created
July 29, 2023 06:03
-
-
Save ryanwclark1/fbbae3f82f8b6de8381fb2dd11d5b390 to your computer and use it in GitHub Desktop.
zfs_nixos
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| partition_disk () { | |
| local disk="${1}" | |
| blkdiscard -f "${disk}" || true | |
| parted --script --align=optimal "${disk}" -- \ | |
| mklabel gpt \ | |
| mkpart EFI 2MiB 1GiB \ | |
| mkpart bpool 1GiB 50GiB \ | |
| mkpart rpool 50GiB -$((SWAPSIZE + RESERVE))GiB \ | |
| mkpart swap -$((SWAPSIZE + RESERVE))GiB -"${RESERVE}"GiB \ | |
| mkpart BIOS 1MiB 2MiB \ | |
| set 1 esp on \ | |
| set 5 bios_grub on \ | |
| set 5 legacy_boot on | |
| partprobe "${disk}" | |
| udevadm settle | |
| } | |
| for i in ${DISK}; do | |
| partition_disk "${i}" | |
| done | |
| for i in ${DISK}; do | |
| cryptsetup open --type plain --key-file /dev/random "${i}"-part4 "${i##*/}"-part4 | |
| mkswap /dev/mapper/"${i##*/}"-part4 | |
| swapon /dev/mapper/"${i##*/}"-part4 | |
| done | |
| zpool create \ | |
| -o compatibility=grub2 \ | |
| -o ashift=12 \ | |
| -o autotrim=on \ | |
| -O acltype=posixacl \ | |
| -O canmount=off \ | |
| -O compression=lz4 \ | |
| -O devices=off \ | |
| -O normalization=formD \ | |
| -O relatime=on \ | |
| -O xattr=sa \ | |
| -O mountpoint=/boot \ | |
| -R "${MNT}" \ | |
| bpool \ | |
| $(for i in ${DISK}; do | |
| printf '%s ' "${i}-part2"; | |
| done) | |
| zpool create \ | |
| -o ashift=12 \ | |
| -o autotrim=on \ | |
| -R "${MNT}" \ | |
| -O acltype=posixacl \ | |
| -O canmount=off \ | |
| -O compression=zstd \ | |
| -O dnodesize=auto \ | |
| -O normalization=formD \ | |
| -O relatime=on \ | |
| -O xattr=sa \ | |
| -O mountpoint=/ \ | |
| rpool \ | |
| $(for i in ${DISK}; do | |
| printf '%s ' "${i}-part3"; | |
| done) | |
| zfs create \ | |
| -o canmount=off \ | |
| -o mountpoint=none \ | |
| -o encryption=on \ | |
| -o keylocation=prompt \ | |
| -o keyformat=passphrase \ | |
| rpool/nixos | |
| zfs create -o mountpoint=legacy rpool/nixos/root | |
| mount -t zfs rpool/nixos/root "${MNT}"/ | |
| zfs create -o mountpoint=legacy rpool/nixos/home | |
| mkdir "${MNT}"/home | |
| mount -t zfs rpool/nixos/home "${MNT}"/home | |
| zfs create -o mountpoint=legacy rpool/nixos/var | |
| zfs create -o mountpoint=legacy rpool/nixos/var/lib | |
| zfs create -o mountpoint=legacy rpool/nixos/var/log | |
| zfs create -o mountpoint=none bpool/nixos | |
| zfs create -o mountpoint=legacy bpool/nixos/root | |
| mkdir "${MNT}"/boot | |
| mount -t zfs bpool/nixos/root "${MNT}"/boot | |
| mkdir -p "${MNT}"/var/log | |
| mkdir -p "${MNT}"/var/lib | |
| mount -t zfs rpool/nixos/var/lib "${MNT}"/var/lib | |
| mount -t zfs rpool/nixos/var/log "${MNT}"/var/log | |
| zfs create -o mountpoint=legacy rpool/nixos/empty | |
| zfs snapshot rpool/nixos/empty@start | |
| rm -rf "${MNT}"/etc/nixos/.git | |
| git -C "${MNT}"/etc/nixos/ init -b main | |
| git -C "${MNT}"/etc/nixos/ add "${MNT}"/etc/nixos/ | |
| git -C "${MNT}"/etc/nixos config user.email "[email protected]" | |
| git -C "${MNT}"/etc/nixos config user.name "ryan" | |
| git -C "${MNT}"/etc/nixos commit -asm 'initial commit' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment