{ config, lib, ... }: let cfg = config.soispha.impermanence; in { options.soispha.impermanence = { enable = lib.mkEnableOption "persisting directories and files with impermanence"; directories = lib.mkOption { type = lib.types.listOf lib.types.str; description = "The directories to persist"; }; }; config = lib.mkIf cfg.enable { # needed for the hm impermanence config programs.fuse.userAllowOther = true; environment.persistence = { "/srv" = { hideMounts = true; inherit (cfg) directories; files = [ "/etc/machine-id" ]; }; }; }; }