{ config, lib, pkgs, modulesPath, ... }: { imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; services.qemuGuest.enable = true; boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk"]; boot.initrd.kernelModules = []; boot.kernelModules = []; boot.extraModulePackages = []; boot.supportedFilesystems = ["btrfs"]; boot.initrd.postDeviceCommands = lib.mkAfter '' mkdir /btrfs_tmp mount /dev/disk/by-label/NIXROOT /btrfs_tmp if [[ -e /btrfs_tmp/root ]]; then mkdir -p /btrfs_tmp/old_roots timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" fi delete_subvolume_recursively() { IFS=$'\n' for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do delete_subvolume_recursively "/btrfs_tmp/$i" done btrfs subvolume delete "$1" } for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do delete_subvolume_recursively "$i" done btrfs subvolume create /btrfs_tmp/root umount /btrfs_tmp ''; fileSystems."/" = { device = "/dev/disk/by-label/NIXROOT"; fsType = "btrfs"; options = ["subvol=root" "defaults" "noatime" "compress=zstd:1" "discard=async" "nodatacow"]; }; fileSystems."/nix" = { device = "/dev/disk/by-label/NIXROOT"; fsType = "btrfs"; neededForBoot = true; options = ["subvol=nix" "defaults" "noatime" "compress=zstd:3" "discard=async" "nodatacow"]; }; fileSystems."/persist" = { device = "/dev/disk/by-label/NIXROOT"; fsType = "btrfs"; neededForBoot = true; options = ["subvol=persist" "defaults" "noatime" "compress=zstd:1" "discard=async" "nodatacow"]; }; fileSystems."/boot" = { device = "/dev/disk/by-label/NIXBOOT"; fsType = "vfat"; options = ["fmask=0077" "dmask=0077"]; }; swapDevices = []; networking.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; }