WIP: rewrite config #618

Draft
darkkirb wants to merge 387 commits from rewrite into main
2 changed files with 35 additions and 21 deletions
Showing only changes of commit a87baa94a0 - Show all commits

View file

@ -4,4 +4,5 @@
"${nixos-config}/services/tailscale.nix" "${nixos-config}/services/tailscale.nix"
./systemd-boot.nix ./systemd-boot.nix
]; ];
boot.initrd.systemd.enable = true;
} }

View file

@ -17,30 +17,43 @@ with lib; {
environment.impermanence = mkDefault (!config.boot.isContainer && !inTester); environment.impermanence = mkDefault (!config.boot.isContainer && !inTester);
} }
(mkIf config.environment.impermanence { (mkIf config.environment.impermanence {
boot.initrd.postDeviceCommands = mkAfter '' boot.initrd.systemd.services.rootfs-cleanup = {
mkdir /btrfs_tmp wantedBy = [
mount ${config.fileSystems."/".device} -t btrfs /btrfs_tmp "initrd.target"
if [[ -e /btrfs_tmp/root ]]; then ];
mkdir -p /btrfs_tmp/old_roots after = [
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") "initrd-root-device.target"
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp ];
fi before = [
"sysroot.mount"
];
unitConfig.DefaultDependencies = "no";
serviceConfig.Type = "oneshot";
script = ''
mkdir /btrfs_tmp
mount ${config.fileSystems."/".device} -t btrfs /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() { delete_subvolume_recursively() {
IFS=$'\n' IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i" 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 done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do btrfs subvolume create /btrfs_tmp/root
delete_subvolume_recursively "$i" umount /btrfs_tmp
done '';
};
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
assertions = [ assertions = [
{ {
assertion = hasAttr "/" config.fileSystems; assertion = hasAttr "/" config.fileSystems;