{ config, lib, ... }: let cfg = config.soispha.impermanence; directories = [ "/etc/nixos" "/var/log" "/var/lib/systemd" # TODO: the following entries need to be checked #"/var/lib/nixos" ] ++ lib.optional config.networking.networkmanager.enable "/etc/NetworkManager" ++ lib.optional config.boot.lanzaboote.enable "/etc/secureboot" ++ lib.optional config.hardware.bluetooth.enable "/var/lib/bluetooth" ++ lib.optional config.virtualisation.waydroid.enable "/var/lib/waydroid" ++ lib.optional config.services.postgresql.enable "/var/lib/postgresql"; in { options.soispha.impermanence = { enable = lib.mkOption { type = lib.types.bool; default = true; description = lib.mdDoc "Disk setup with disko"; }; }; config = lib.mkIf cfg.enable { # needed for the hm impermanence config programs.fuse.userAllowOther = true; environment.persistence = { "/srv" = { hideMounts = true; inherit directories; files = [ "/etc/machine-id" ]; }; }; }; }