Add installation script
This commit is contained in:
parent
ccd5019abd
commit
3b471f8e32
66
scripts/install.sh
Executable file
66
scripts/install.sh
Executable file
@ -0,0 +1,66 @@
|
||||
#!/bin/sh
|
||||
|
||||
partition_disk() {
|
||||
parted "$DISK" -- mklabel gpt
|
||||
parted "$DISK" -- mkpart ESP fat32 1MiB 1025MiB
|
||||
parted "$DISK" -- mkpart linux-swap 1025MiB 17409MiB
|
||||
parted "$DISK" -- mkpart primary 17409MiB 100%
|
||||
parted "$DISK" -- set 1 boot on
|
||||
mkfs.fat -F32 -n BOOT "$DISK"p1
|
||||
mkswap "$DISK"p2
|
||||
swapon "$DISK"p2
|
||||
}
|
||||
|
||||
zfs_setup() {
|
||||
zpool import -f vault
|
||||
zpool create -f -o ashift=12 -o autotrim=on -O acltype=posixacl -O relatime=on \
|
||||
-O xattr=sa -O dnodesize=legacy -O normalization=formD -O mountpoint=none \
|
||||
-O canmount=off -O devices=off -R /mnt -O compression=zstd "$POOL_NAME" "$DISK"p3
|
||||
zfs create -o mountpoint=legacy -o com.sun:auto-snapshot=false "$POOL_NAME"/ephemeral
|
||||
zfs create -o mountpoint=legacy -o com.sun:auto-snapshot=false "$POOL_NAME"/ephemeral/nix
|
||||
zfs create -o mountpoint=legacy -o com.sun:auto-snapshot=false -o sync=disabled -o setuid=off "$POOL_NAME"/ephemeral/tmp
|
||||
zfs create -o mountpoint=legacy -o com.sun:auto-snapshot=false "$POOL_NAME"/stateful
|
||||
zfs create -o mountpoint=legacy -o com.sun:auto-snapshot=true "$POOL_NAME"/stateful/home
|
||||
zfs create -o mountpoint=legacy -o com.sun:auto-snapshot=false "$POOL_NAME"/stateful/root
|
||||
}
|
||||
|
||||
mount_datasets() {
|
||||
mount -t zfs sysion/stateful/root /mnt
|
||||
mkdir -p /mnt/boot
|
||||
mount "$DISK"p1 /mnt/boot
|
||||
mkdir -p /mnt/home/coolneng
|
||||
mount -t zfs sysion/stateful/home /mnt/home/coolneng
|
||||
mkdir -p /mnt/nix
|
||||
mount -t zfs sysion/ephemeral/nix /mnt/nix
|
||||
mkdir -p /mnt/tmp
|
||||
mount -t zfs sysion/ephemeral/tmp /mnt/tmp
|
||||
}
|
||||
|
||||
install_system() {
|
||||
nixos-generate-config --root /mnt
|
||||
mv /mnt/etc/nixos/hardware-configuration.nix modules/hardware-configuration.nix
|
||||
nix-shell -p git --command "nixos-install --root /mnt --flake .#zion"
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "Usage: install.sh <disk>"
|
||||
echo "disk: full path to the disk (e.g. /dev/sda)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ $# != 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
DISK="$1"
|
||||
POOL_NAME="sysion"
|
||||
|
||||
echo "Let's start by partitioning the disk"
|
||||
partition_disk
|
||||
echo "Starting up the ZFS machinery"
|
||||
zfs_setup
|
||||
echo "Mounting the horse"
|
||||
mount_datasets
|
||||
echo "Lift off to the NixOS planet"
|
||||
install_system
|
||||
echo "All ready, time to rejoice"
|
Loading…
Reference in New Issue
Block a user