fix config attributes contrain mechanism for SP modules

Now it should work for all nested imports too. `imports` are traversed
recursively to redefine each imported module function with altered one,
constraining its config attribute (respecting config-paths-needed.json).
This commit is contained in:
Alexander Tomokhov
2023-11-15 04:15:50 +04:00
parent 26b3071929
commit 4419a1323a
3 changed files with 50 additions and 42 deletions

View File

@@ -1,24 +1,16 @@
[
[
"services",
"redis"
],
[
"mailserver"
],
[
"selfprivacy",
"userdata",
"email"
],
[
"selfprivacy",
"userdata",
"domain"
],
[
"selfprivacy",
"userdata",
"username"
]
[ "mailserver" ],
[ "selfprivacy", "userdata", "domain" ],
[ "selfprivacy", "userdata", "email" ],
[ "selfprivacy", "userdata", "hashedMasterPassword" ],
[ "selfprivacy", "userdata", "simple-nixos-mailserver" ],
[ "selfprivacy", "userdata", "useBinds" ],
[ "selfprivacy", "userdata", "username" ],
[ "selfprivacy", "userdata", "users" ],
[ "services", "dovecot2" ],
[ "services", "opendkim" ],
[ "services", "postfix", "group" ],
[ "services", "postfix", "user" ],
[ "services", "redis" ],
[ "services", "rspamd" ]
]

View File

@@ -6,17 +6,14 @@
outputs = { self, mailserver }: {
# tricks to rename (alias) the original module
nixosModules.default = args@{ pkgs, ... }:
nixosModules.default = args@{ pkgs, config, ... }:
let
module = mailserver.nixosModules.default args;
in
module // {
imports = module.imports ++ [
./config.nix
({ config, ... }: {
mailserver =
config.selfprivacy.userdata.simple-nixos-mailserver;
})
{ mailserver = config.selfprivacy.userdata.simple-nixos-mailserver; }
];
options = module.options // {
selfprivacy.userdata.simple-nixos-mailserver =