Notes from running NixOS in a local VM.
The attached configuration.nix
sets users immutable to force managing them through the config. The primary user is added to the wheel group and the wheel group has passwordless sudo access. All passwords are set by hash (using mkpasswd
) and SSH keys are added for the primary user.
Manual installation
Partition, format, mount, configure:
#
# Partition scheme for UEFI (2G swap)
#
# GPT partition table
parted /dev/vda -- mklabel gpt
# root partition
parted /dev/vda -- mkpart primary 512MB -2GB
# swap partition
parted /dev/vda -- mkpart primary linux-swap -2GB 100%
# boot partition using ESP (EFI system partition)
parted /dev/vda -- mkpart ESP fat32 1MB 512MB
parted /dev/vda -- set 3 esp on
#
# Formatting
#
mkfs.ext4 -L nixos /dev/vda1
mkswap -L swap /dev/vda2
mkfs.fat -F 32 -n boot /dev/vda3
#
# Configuring
#
mount /dev/disk/by-label/nixos /mnt
mkdir -p /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
nixos-generate-config --root /mnt
Copy configuration.nix
(attached to this gist) to /mnt/etc/nixos/configuration.nix
.
Complete the installation:
nixos-install
reboot
Optimizing nix-store
nix.settings.auto-optimise-store
— If set to true, Nix automatically detects files in the store that have identical contents, and replaces them with hard links to a single copy. This saves disk space. If set to false (the default), you can still run nix-store --optimise
to get rid of duplicate files.
$ nix-store --gc
— Runs garbage collection: all paths in the Nix store not reachable via file system references from a set of “roots”, are deleted.