summaryrefslogtreecommitdiff
path: root/modules/nixos/machines/lenovo.nix
diff options
context:
space:
mode:
authorandromeda <andromeda@lenovo>2026-04-19 12:15:31 +0200
committerandromeda <andromeda@lenovo>2026-04-19 12:15:31 +0200
commit2783860e4ec26caa82af5966773659270caa6664 (patch)
tree3aab7a8379f74c2b5202b2c430d46f3a00dc5067 /modules/nixos/machines/lenovo.nix
parentd2ea8ab074e2ef3a34076e3874435c4a5d2f7128 (diff)
update inputs
Diffstat (limited to 'modules/nixos/machines/lenovo.nix')
-rw-r--r--modules/nixos/machines/lenovo.nix88
1 files changed, 61 insertions, 27 deletions
diff --git a/modules/nixos/machines/lenovo.nix b/modules/nixos/machines/lenovo.nix
index 86255b1..537c5e5 100644
--- a/modules/nixos/machines/lenovo.nix
+++ b/modules/nixos/machines/lenovo.nix
@@ -17,36 +17,70 @@
options = ["subvol=root"];
};
- boot.initrd.postResumeCommands = lib.mkAfter ''
- 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
+ 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"
- }
+ 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
+ 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
- '';
+ 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";