My NixOS Basic no bs bare install guide

Oct 10, 2025

nixgirl (for legacy bios only)

  1. Download the iso from this link
  2. now it's time to partition stuff

Partition table should be like this yo

DeviceMount PointTypeFilesystem
/dev/vda1/bootboot partitionext4
/dev/vda2swapswapswap
/dev/vda3/rootext4
note this is on a qemu system so beware, change partition names according to your need
  1. format the partitions
mkfs.ext4 /dev/vda1
mkswap /dev/vda2
mkfs.ext4 /dev/vda3
  1. Mount these sons of Bits
mount /dev/vda3 /mnt
mkdir /mnt/boot
mount /dev/vda1 /mnt/boot
swapon /dev/vda2
  1. generate the god damn configuration
nixos-generate-config --root /mnt
vim /mnt/etc/nixos/configuration.nix
  1. Now change these follwing options i guess.
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda";  # not /dev/vda1
networking.hostName = "hostname";  # or any name you want
services.openssh.enable = true;
  1. then install using this command
nixos-install
  1. it should be done then reboot using reboot lol.

For UEFI systems (additional instructions)

If you're on a UEFI system instead of legacy BIOS, here's what changes:

Partition table for UEFI

DeviceMount PointTypeFilesystem
/dev/vda1/bootEFI System Partitionvfat
/dev/vda2swapswapswap
/dev/vda3/rootext4

Format partitions for UEFI

mkfs.vfat -F 32 /dev/vda1  # EFI partition needs vfat
mkswap /dev/vda2
mkfs.ext4 /dev/vda3

Mount stays the same

mount /dev/vda3 /mnt
mkdir /mnt/boot
mount /dev/vda1 /mnt/boot
swapon /dev/vda2

Configuration changes for UEFI

Instead of GRUB on legacy BIOS, use systemd-boot:

boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "hostname";  # or any name you want
services.openssh.enable = true;

The rest (generate config, install, reboot) stays exactly the same.


Some extra options you should sorta edit

  1. set time zone
time.timeZone = "Asia/Kolkata";
  1. setup locale
i18n.defaultLocale = "en_US.UTF-8";

User adding

users.users.lordofwizard = {
	isNormalUser = true;
	extraGroups = [ "wheel" ];
	packages = with pkgs; [
		tree
		htop
	];
};
RSS
https://lordofwizard.github.io/posts/atom.xml