aboutsummaryrefslogtreecommitdiffstats

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