Current version: 22.05 + flakes
- Download NixOS to
$ISO_PATH
- insert drive
lsblk
-> find out drive name (e.g./dev/sdb
)$DRIVE
- run (as sudo)
dd bs=4M if=$ISO_PATH of=$DRIVE conv=fdatasync status=progress && sync
Roughly this https://qfpl.io/posts/installing-nixos/
- lsblk -> find out disk name (e.g.
/dev/sda
)$DISK
gdisk $DISK
p
(print)d
(delete)n
(new)- number=1, begin=default, end=
+1G
, hex code=ef00
(not needed if dual boot) ($BOOT
from now on, or/dev/sda1
etc) - number=2, begin=default, end=default, hex code=
8e00
($MAIN
from now on)
- number=1, begin=default, end=
w
(write)
- encryption
cryptsetup luksFormat $MAIN
cryptsetup luksOpen $MAIN nixos-enc
pvcreate /dev/mapper/nixos-enc
vgcreate nixos-vg /dev/mapper/nixos-enc
lvcreate -L <swap size, e.g. 8G> -n swap nixos-vg
lvcreate -l 100%FREE -n root nixos-vg
- create fs
mkfs.vfat -n boot $BOOT
(not needed if dual boot)mkfs.ext4 -L nixos /dev/nixos-vg/root
mkswap -L swap /dev/nixos-vg/swap
swapon /dev/nixos-vg/swap
- mount
mount /dev/nixos-vg/root /mnt
mkdir /mnt/boot
mount $BOOT /mnt/boot
- generate config
nixos-generate-config --root /mnt
- add stuff to config
- if dual boot check out https://nixos.wiki/wiki/Dual_Booting_NixOS_and_Windows
dual boot:
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/sda";
boot.loader.grub.useOSProber = true;
required:
boot.initrd.luks.devices = {
root = {
device = "$MAIN";
preLVM = true;
};
};
boot.loader.systemd-boot.enable = true;
networking.networkmanager.enable = true;
users.extraUsers.alex = {
createHome = true;
extraGroups = ["wheel" "video" "audio" "disk" "networkmanager"];
group = "users";
home = "/home/alex";
isNormalUser = true;
uid = 1000;
};
- nixos go brrrr
nixos-install
reboot
to have a DM after first boot:
services.xserver = {
enable = true;
displayManager = {
gdm = {
enable = true;
wayland = false;
};
};
desktopManager.plasma5.enable = true; # or xfce or whatever
# or
# windowManager.xmonad.enable = true;
# to be able to mount an external drive to get secrets etc. for cloning from gh
boot.supportedFilesystems = [ "ntfs" ];
};
- connect to internet from nmcli
- find out interface:
nmcli d
($IF
) - enable interface:
nmcli r wifi on
- search networks:
nmcli d wifi list
- connect:
nmcli d wifi connect $(B)SSID password $PASSWORD
- find out interface:
($CONFIG
is the location of this repo)
git clone git@github.com:alexpeits/nixos-config.git $CONFIG
sudo nix-channel --add https://github.com/NixOS/nixos-hardware/archive/master.tar.gz nixos-hardware
sudo nix-channel --update
- change your name to alex because it's hardcoded in the configurations
sudo mkdir -m 0755 -p /nix/var/nix/{profiles,gcroots}/per-user/alex
(forhome-manager
)- Update flake.nix with new machine (preferably name = hostname)
sudo nixos-rebuild switch --flake '/path/to/nixos/config#<machine name, empty if hostname>