{ config, lib, pkgs, modulesPath, ... }: { imports = [(modulesPath + "/installer/scan/not-detected.nix")]; boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "sdhci_pci"]; boot.initrd.kernelModules = []; boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelModules = ["kvm-intel"]; boot.extraModulePackages = []; fileSystems."/" = { device = "/dev/disk/by-uuid/5455cfb4-0efd-4f55-b496-d2cab3f419b7"; fsType = "btrfs"; options = ["subvol=root"]; }; boot.initrd.systemd = { services.impermanent-btrfs = { description = "saves old root and makes new one"; unitConfig.DefaultDependencies = false; serviceConfig = { Type = "oneshot"; StandardOutput = "journal+console"; StandardError = "journal+console"; }; requiredBy = [ "initrd.target" ]; before = [ "sysroot.mount" ]; requires = [ "initrd-root-device.target" ]; after = [ "initrd-root-device.target" "local-fs-pre.target" ]; script = '' mkdir /btrfs_tmp mount ${config.fileSystems."/".device} /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 mkdir /btrfs_tmp/root/persist mkdir /btrfs_tmp/root/etc mount ${config.fileSystems."/persist".device} /btrfs_tmp/root/persist -o subvol=persist cp /btrfs_tmp/root/persist/etc/ssh /btrfs_tmp/root/etc/ssh -r umount /btrfs_tmp/root/persist rm -r /btrfs_tmp/root/persist umount /btrfs_tmp ''; }; extraBin = { "mkdir" = "${pkgs.coreutils}/bin/mkdir"; "date" = "${pkgs.coreutils}/bin/date"; "stat" = "${pkgs.coreutils}/bin/stat"; "mv" = "${pkgs.coreutils}/bin/mv"; "cp" = "${pkgs.coreutils}/bin/cp"; "rm" = "${pkgs.coreutils}/bin/rm"; "btrfs" = "${pkgs.btrfs-progs}/bin/btrfs"; # find, mount, umount already there }; }; fileSystems."/nix" = { device = "/dev/disk/by-uuid/0e586651-36f4-42b0-99b3-3f0704a894d6"; fsType = "btrfs"; }; fileSystems."/persist" = { device = "/dev/disk/by-uuid/5455cfb4-0efd-4f55-b496-d2cab3f419b7"; fsType = "btrfs"; options = ["subvol=persist"]; }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/F425-55BA"; fsType = "vfat"; options = ["fmask=0022" "dmask=0022"]; }; swapDevices = []; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; system.stateVersion = "26.05"; }