This commit is contained in:
soraefir
2026-06-07 16:21:21 +02:00
parent 649b7cc032
commit 8569c40183
24 changed files with 129 additions and 108 deletions

View File

@@ -1,6 +1,28 @@
{ lib,... }:
let
inherit (lib) mkOption;
inherit (lib.types) attrsOf coercedTo listOf str submodule nullOr port bool oneOf anything enum;
pathEntryType = coercedTo str (path: { inherit path; }) (submodule {
options = {
path = mkOption { type = str; };
owner = mkOption {
type = str;
default = "root:root";
};
mode = mkOption {
type = str;
default = "0755";
};
dirs = mkOption {
type = listOf str;
default = [ ];
};
};
});
mkPathOption = defaultPath: defaults: mkOption {
type = pathEntryType;
default = { path = defaultPath; } // defaults;
};
in with lib; {
domain = mkOption { type = types.str; };
mail = {
@@ -11,21 +33,21 @@ in with lib; {
path = mkOption {
type = types.submodule {
freeformType = types.attrsOf types.str;
freeformType = attrsOf pathEntryType;
options = {
config = mkOption { type = types.str; default = "/media/config"; };
data = mkOption { type = types.str; default = "/media/data"; };
download = mkOption { type = types.str; default = "/media/data/download"; };
cloud = mkOption { type = types.str; default ="/media/media/cloud"; };
film = mkOption { type = types.str; default ="/media/media/film"; };
book = mkOption { type = types.str; default ="/media/media/book"; };
manga = mkOption { type = types.str; default ="/media/media/manga"; };
photo = mkOption { type = types.str; default ="/media/media/photo"; };
# music = mkOption { type = types.str; default ="/media/media/music"; };
config = mkPathOption "/media/config" { };
data = mkPathOption "/media/data" { };
download = mkPathOption "/media/data/download" { owner = "1000:1000"; };
cloud = mkPathOption "/media/media/cloud" { owner = "33:33"; };
film = mkPathOption "/media/media/film" { owner = "1000:1000"; };
book = mkPathOption "/media/media/book" { owner = "1000:1000"; };
manga = mkPathOption "/media/media/manga" { owner = "1000:1000"; };
photo = mkPathOption "/media/media/photo" { owner = "1000:1000"; };
# music = mkPathOption "/media/media/music" { owner = "1000:1000"; };
dlComplete = mkOption { type = types.str; default ="/media/download/complete"; };
dlIncomplete = mkOption { type = types.str; default ="/media/download/incomplete"; };
dlConverted = mkOption { type = types.str; default ="/media/download/converted"; };
dlComplete = mkPathOption "/media/download/complete" { owner = "1000:1000"; };
dlIncomplete = mkPathOption "/media/download/incomplete" { owner = "1000:1000"; };
dlConverted = mkPathOption "/media/download/converted" { owner = "1000:1000"; };
};
};
default = {};