# Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. { config, lib, pkgs, modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sr_mod"]; boot.initrd.kernelModules = []; boot.kernelModules = []; boot.extraModulePackages = []; fileSystems."/" = { device = "/dev/disk/by-uuid/32a45644-86e5-42c0-96e9-343e8078349e"; fsType = "btrfs"; options = ["subvol=root" "noatime"]; }; # Note `lib.mkBefore` is used instead of `lib.mkAfter` here. #boot.initrd.postDeviceCommands = pkgs.lib.mkBefore '' # mkdir -p /mnt # # We first mount the btrfs root to /mnt # # so we can manipulate btrfs subvolumes. # mount -o subvol=/ /dev/mapper/enc /mnt # # While we're tempted to just delete /root and create # # a new snapshot from /root-blank, /root is already # # populated at this point with a number of subvolumes, # # which makes `btrfs subvolume delete` fail. # # So, we remove them first. # # # # /root contains subvolumes: # # - /root/var/lib/portables # # - /root/var/lib/machines # # # # I suspect these are related to systemd-nspawn, but # # since I don't use it I'm not 100% sure. # # Anyhow, deleting these subvolumes hasn't resulted # # in any issues so far, except for fairly # # benign-looking errors from systemd-tmpfiles. # btrfs subvolume list -o /mnt/root | # cut -f9 -d' ' | # while read subvolume; do # echo "deleting /$subvolume subvolume..." # btrfs subvolume delete "/mnt/$subvolume" # done && # echo "deleting /root subvolume..." && # btrfs subvolume delete /mnt/root # echo "restoring blank /root subvolume..." # btrfs subvolume snapshot /mnt/root-blank /mnt/root # # Once we're done rolling back to a blank snapshot, # # we can unmount /mnt and continue on the boot process. # umount /mnt #''; fileSystems."/nix" = { device = "/dev/disk/by-uuid/32a45644-86e5-42c0-96e9-343e8078349e"; fsType = "btrfs"; options = ["subvol=nix" "noatime"]; }; fileSystems."/persistent" = { device = "/dev/disk/by-uuid/32a45644-86e5-42c0-96e9-343e8078349e"; fsType = "btrfs"; neededForBoot = true; options = ["subvol=persist" "noatime"]; }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/323A-5741"; fsType = "vfat"; options = ["fmask=0022" "dmask=0022"]; }; swapDevices = [ {device = "/dev/disk/by-uuid/1962cd0f-4063-4996-a33c-8ebaa9ecea1d";} ]; # 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`. networking.useDHCP = lib.mkDefault true; # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; }