52 lines
1.3 KiB
Bash
Executable file
52 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env nix-shell
|
|
#!nix-shell -i bash -p bash gptfdisk util-linux btrfs-progs
|
|
set -ex
|
|
|
|
if [ "$EUID" -ne 0 ]
|
|
then echo "Please run as root for mount permissions!"
|
|
exit
|
|
fi
|
|
|
|
BTRFS_OPTS="compress=zstd,noatime"
|
|
MNT="/mnt"
|
|
TARGET="/dev/sda"
|
|
|
|
# GPT labels
|
|
# /dev/sda1 -> BIOS boot
|
|
# /dev/sda2 -> BTRFS partition, with
|
|
# @rootfs mounted at /
|
|
# @nix mounted at /nix
|
|
# @boot mounted at /boot
|
|
# @swap mounted at /swap
|
|
|
|
# Mount everything at /mnt to install the system
|
|
|
|
sgdisk --zap-all "${TARGET}"
|
|
sgdisk -a1 -n1:2048:4095 -t1:EF02 "${TARGET}"
|
|
sgdisk -n2:0:0 -t2:8300 "${TARGET}"
|
|
|
|
fdisk -l "${TARGET}"
|
|
|
|
mkfs.btrfs -f -L NIXOS "${TARGET}2"
|
|
|
|
mkdir -p "${MNT}"
|
|
umount -R "${MNT}" || :
|
|
mount "${TARGET}2" "${MNT}"
|
|
btrfs subvolume create "${MNT}"/@rootfs
|
|
btrfs subvolume create "${MNT}"/@nix
|
|
btrfs subvolume create "${MNT}"/@boot
|
|
btrfs subvolume create "${MNT}"/@swap
|
|
umount "${MNT}"
|
|
|
|
mount -o "$BTRFS_OPTS,subvol=@rootfs" "${TARGET}2" "${MNT}"
|
|
mkdir "${MNT}"/{nix,boot,swap}
|
|
mount -o "$BTRFS_OPTS,subvol=@nix" "${TARGET}2" "${MNT}"/nix
|
|
mount -o "$BTRFS_OPTS,subvol=@swap" "${TARGET}2" "${MNT}"/swap
|
|
mount -o "$BTRFS_OPTS,subvol=@boot" "${TARGET}2" "${MNT}"/boot
|
|
|
|
findmnt -R --target "${MNT}"
|
|
|
|
# .#golgi is our hostname defined by our flake
|
|
nix-shell -p nixUnstable -p git --run "nixos-install --root ${MNT} --flake .#pre-golgi"
|
|
umount -R /mnt
|