{ config, lib, inputs, ... }: let cfg = config.os.srv.persistance; in { imports = [ inputs.impermanence.nixosModules.impermanence ]; options.os.srv.persistance.enable = lib.mkEnableOption "enables persistance drive maintnance"; config = lib.mkMerge [ (lib.mkIf cfg.enable { environment.persistence."/persist" = { hideMounts = true; directories = [ "/var/lib/nixos" "/var/lib/systemd" "/var/lib/microvm" ]; files = [ "/etc/machine-id" ]; }; }) (lib.mkIf (cfg.enable && config.os.srv.ssh.server.enable) { environment.persistence."/persist" = { files = [ "/etc/ssh/ssh_host_ed25519_key" "/etc/ssh/ssh_host_ed25519_key.pub" ]; }; }) (lib.mkIf (cfg.enable && config.os.srv.crowdsec.agent.enable) { environment.persistence."/persist" = lib.mkIf cfg.agent.enable { hideMounts = true; directories = [ { directory = "/var/lib/crowdsec"; user = "crowdsec"; group = "crowdsec"; mode = "0750"; } ]; }; }) ]; }