46 lines
823 B
Nix
46 lines
823 B
Nix
{ lib, config, ... }:
|
|
let
|
|
inherit (lib) mkOption;
|
|
inherit (lib.types)
|
|
listOf
|
|
str
|
|
coercedTo
|
|
submodule
|
|
;
|
|
rootDir = submodule {
|
|
options = {
|
|
directory = mkOption { type = str; };
|
|
user = mkOption {
|
|
type = str;
|
|
default = "root";
|
|
};
|
|
group = mkOption {
|
|
type = str;
|
|
default = "root";
|
|
};
|
|
mode = mkOption {
|
|
type = str;
|
|
default = "0755";
|
|
};
|
|
};
|
|
};
|
|
in
|
|
{
|
|
options = {
|
|
persistDirs = mkOption {
|
|
type = listOf (coercedTo str (d: { directory = d; }) rootDir);
|
|
default = [ ];
|
|
};
|
|
};
|
|
|
|
config = {
|
|
# Helper options
|
|
environment.persistence."/persist".directories = config.persistDirs;
|
|
|
|
# Global options
|
|
persistDirs = [
|
|
"/var/lib/systemd"
|
|
"/var/lib/nixos"
|
|
];
|
|
};
|
|
}
|