# Template for setting a new host's hardware configuration { config, lib, pkgs, modulesPath, ... }: let hostName = "myHost"; platform = "x86_64-linux"; bootUUID = "ABCD-1234"; # The UUID of the boot partition. luksUUID = "1408f9cf-68b8-4063-b919-48edde3329a5"; # The UUID of the encrypted LUKS partition. rootUUID = "3eab3498-9597-454a-a790-43f4c99a87cd"; # The UUID of the unlocked filesystem partition. in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; # Configure the kernel. boot = { # Run `nixos-generate-config --no-filesystems` to generate a baseline hardware configuration. initrd = { availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" ]; }; kernelModules = [ ]; }; # Configure the main filesystem. aux.system.filesystem = { btrfs = { enable = true; devices = { boot = "/dev/disk/by-uuid/${bootUUID}"; btrfs = "/dev/disk/by-uuid/${rootUUID}"; }; swapFile = { enable = true; size = 16384; # By default, this creates a 16GB swap file. Change this to whatever you'd like. }; }; luks = { enable = true; uuid = luksUUID; }; }; networking = { # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. useDHCP = lib.mkDefault true; # networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true; # Set the hostname. hostName = hostName; }; nixpkgs.hostPlatform = lib.mkDefault platform; }