from existing install
on an existing guix/nix install, you can prep the disks ahead of time.
need parted and btrfs-progs
guix shell parted btrfs-progs
from installer
setting up from the installer requires configuration.scm from this directory. get that
on the installer thumb drive, on nfs, or some other way such that we
have access to it from the guix installer.
you'll need to use the terminal-based install, which should have all the tools you need.
partition disk
gpt, 3 partitions:
- 1
- esp 2GB
- 2
- swap 8GB
- 3
- linux-fs rest
first create the partition table with cfdisk, using
gpt labels
cfdisk /dev/vdb
turn on the ‘esp’ flag for partition 1:
parted /dev/vdb set 1 esp on
create filesystems
esp volume
mkfs.vfat -n ESP -F 32 /dev/vdb1
btrfs volumes
note that there is no /gnu/etc because
/etc can, in most cases, be created
automatically at boot during activation.
mkfs.btrfs -L root /dev/vdb3
mount -m -t btrfs /dev/vdb3 /mnt
btrfs subvol create /mnt/gnu
btrfs subvol create /mnt/gnu/store
btrfs subvol create /mnt/gnu/var
btrfs subvol create /mnt/gnu/boot
btrfs subvol create /mnt/persist
btrfs subvol create /mnt/persist/home
btrfs subvol create /mnt/persist/home/root
unmount
once the filesystems are set up, unmount /mnt so we can tmpfs mount it later.
umount /mnt
mount filesystems
now we mount up enough of the heirarchy so that we can install everything. probably not all of these are strictly required, but none should cause problems.
we are mounting /mnt as tmpfs just to
make sure the installer doesn't write something to permanent storage
that it shouldn't.
mount -m -t tmpfs tmpfs /mnt
mount -m -t btrfs -o subvol=/gnu LABEL=root /mnt/gnu
mount -m -t btrfs -o subvol=/gnu/var LABEL=root /mnt/var
mount -m -t btrfs -o subvol=/gnu/boot LABEL=root /mnt/boot
mount -m -t btrfs -o subvol=/persist LABEL=root /mnt/persist
mount -m -t btrfs -o subvol=/persist/home LABEL=root /mnt/home
mount -m --bind /mnt/home/root /mnt/root
mount -m -t vfat LABEL=ESP /mnt/boot/esp
init system
once the filesystems are mounted, we can init the system
guix system init configuration.scm /mnt
