You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3.2 KiB

INSTALLING ENCRYPTED NIX OS

This is just a random jumbling of notes I took when I installed Nix on my T440s.

Partitioning

I used the graphical installer and gparted to do partitioning.

First, the partition table should be GPT.

1MB grub data partition - EXT4 and bios_grub flag set. I called this partition "grub". Make sure to click "apply". Otherwise it will not let you right click -> manage flags to set bios_grub to true.

1GB boot partition - on the large side but I have 500GB to spend. Set this to fat32. Flags are "boot" and "esp".

Finally use the remaining space in one big partition, format it to EXT4 with the lvm flag, and commit it.

Disk Encryption

The large LVM partition above is our encrypted partition.

Type cryptSetup luksFormat /dev/sdX3 where sdX is the drive name. Enter a good password. Not used anywhere else.

Now we need to create the partitions

cryptsetup luksOpen /dev/sdX3 enc-pv and enter the password from above.

pvcreate /dev/mapper/enc-pv to initialize the partition.

vgcreate vg /dev/mapper/enc-pv to create the volume group vg on /dev/mapper/enc-pv from above.

lvcreate -L 16GB -n swap vg to create a swap logical volume on vg. I went with 2x RAM_SIZE_IN_GB. This is a little excessive and can be reduced quite a bit.

lvcreate -l 100%FREE -n root vg to create the root logical volume on vg. This consumes the remaining space in the volume group.

Partition Formatting and Mounting

Since we used gparted it is not necessary to format the unencrypted partitions.

For root however we need to format it ext4 (or whatever format you want) and also configure the swap.

mkfs.ext4 -0 dir_index -j -L root /dev/vg/root to format the root as ext4.

mkswap -L swap /dev/vg/swap.

Now let's mount these for installation:

mount /dev/vg/root /mnt mkdir /mnt/boot mount /dev/sdX2 /mnt/boot swapon /dev/vg/swap

Initial Nix Configuration

Now we need to set up a barebones configuration so we can see if we can boot up.

nixos-generate-config --root /mnt

This will give us two files, /etc/nixos/hardware-configuration.nix and /etc/nixos/configuration.nix to set the system up with.

The defaults are fairly sane for an initial boot. Double check to make sure everything looks okay according to your system specs.

The major change we need to make is to let NixOS know we have an encrypted partition. Add the following into the configuration.nix file.

boot.initrd.luks.devices = [
  { name = "root"; device = "/dev/sdX3"; preLVM = true; }
];

I tend to keep my boot stuff grouped together near the top.

We will keep the gummiboot related lines. gummiboot is a good enough bootloader for our purposes.

In your hardware-configuration.nix file your boot partition may not have the right fsType. Change it to vfat if necessary.

Finally, add networking.wireless.enable = true; to the file so we can use wpa_supplicant when we boot back up.

now type reboot to reboot. You should see gummiboot.

Installing the Rest of the System

Now that the hardest part is over we can configure Nix.

Let's begin by setting up a user.

useradd -m <your_name> passwd <your_name> groupadd -a -G wheel <your_name>

This will grant your user access to everything under sudo.