Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

NixOS installation guide

From posixlycorrect wiki


Introduction

This is an incomplete guide on installing NixOs, using flakes and home-manager.

Be sure to have an ISO image of NixOS, which can be obtained here: https://nixos.org/download/#nixos-iso.

Installation guide

Partitioning your disk

  1. Boot the installation medium.
  2. Open a terminal.
  3. Wipe your disk: $ blkdiscard /dev/<installation disk>.
  4. Create root and boot partitions:
Use parted
$ parted <installation disk>
(parted) mklabel gpt
Boot partition
(parted) mkpart
(parted) Partitoin name? boot
(parted) File system type? fat32
(parted) Start? 0%
(parted) End? 2GB
(parted) set 1 esp on
(parted) set 1 boot on
Root partition
(parted) mkpart
(parted) Partitoin name? root
(parted) File system type? btrfs
(parted) Start? 2GB
(parted) End? 100%
(parted) quit

Configure and mount partitions

  1. $ mkfs.btrfs /dev/<root partition>
  2. $ mkfs.vfat -F32 /dev/<boot partition>
  3. $ mount /dev/<root partition> /mnt
  4. $ mkdir /mnt/boot
  5. $ mount /dev/<boot partition> /mnt/boot

Generate and edit config

  1. $ sudo nixos-generate-config --root /mnt
  2. Edit your configuration: $ nvim /mnt/etc/nixos/configuration.nix
  3. Checkout your hardware config: $ nvim /mnt/etc/nixos/hardware-configuration.nix
  4. Remember to add the following to configuration.nix so that grub works with EFI:
boot.loader.grub.enable = true;
boot.loader.grub.efiSupport = true;
boot.loader.grub.device = "nodev";
boot.loader.efi.canTouchEfiVariables = true;
Note: This is an example of my configuration: https://git.posixlycorrect.com/fabian/desktop_config

Install

  1. $ sudo nixos-install
  2. Set root password when prompted to do so.
  3. Reboot your machine
  4. Login as root and set a password for your user: $ passwd <username>
  5. Logout and login as your user


Enable flakes and replace your config with your flake

Flake

  1. $ mkdir nix
  2. Create your $ vim flake.nix
  3. $ nixos rebuidl switch

Home manager

  1. $ nix repl .
home = homeConfigurations.<configuration name>
home.activationPackage
  1. Copy the resulting path and do:
  2. $ build <path>
  3. ./result/activate