mod: make imports explicit and remove system

This commit is contained in:
ibizaman 2025-10-10 07:18:21 +02:00 committed by Pierre Penninckx
parent bd0bd713fd
commit 9892f55ae2
27 changed files with 201 additions and 144 deletions

View file

@ -15,7 +15,10 @@
basic = { config, ... }: { basic = { config, ... }: {
imports = [ imports = [
./configuration.nix ./configuration.nix
selfhostblocks.nixosModules.x86_64-linux.default selfhostblocks.nixosModules.authelia
selfhostblocks.nixosModules.home-assistant
selfhostblocks.nixosModules.sops
selfhostblocks.nixosModules.ssl
sops-nix.nixosModules.default sops-nix.nixosModules.default
]; ];

View file

@ -15,7 +15,11 @@
basic = { config, ... }: { basic = { config, ... }: {
imports = [ imports = [
./configuration.nix ./configuration.nix
selfhostblocks.nixosModules.x86_64-linux.default selfhostblocks.nixosModules.authelia
selfhostblocks.nixosModules.nextcloud-server
selfhostblocks.nixosModules.nginx
selfhostblocks.nixosModules.sops
selfhostblocks.nixosModules.ssl
sops-nix.nixosModules.default sops-nix.nixosModules.default
]; ];

View file

@ -30,7 +30,7 @@ let
ghRoot = (gitHubDeclaration "ibizaman" "selfhostblocks" "").url; ghRoot = (gitHubDeclaration "ibizaman" "selfhostblocks" "").url;
buildOptionsDocs = args@{ modules, ... }: buildOptionsDocs = { modules, filterOptionPath ? null }: args:
let let
config = { config = {
_module.check = false; _module.check = false;
@ -51,7 +51,7 @@ let
}; };
}; };
options = lib.filterAttrs (name: v: name == "shb") eval.options; options = lib.setAttrByPath filterOptionPath (lib.getAttrFromPath filterOptionPath eval.options);
in buildPackages.nixosOptionsDoc ({ in buildPackages.nixosOptionsDoc ({
inherit options; inherit options;
@ -63,22 +63,30 @@ let
gitHubDeclaration "ibizaman" "selfhostblocks" gitHubDeclaration "ibizaman" "selfhostblocks"
(lib.removePrefix "/" (lib.removePrefix shbPath (toString decl)))) opt.declarations; (lib.removePrefix "/" (lib.removePrefix shbPath (toString decl)))) opt.declarations;
}; };
} // builtins.removeAttrs args [ "modules" "includeModuleSystemOptions" ]); } // builtins.removeAttrs args [ "includeModuleSystemOptions" ]);
scrubbedModule = { scrubbedModule = {
_module.args.pkgs = lib.mkForce (nmd.scrubDerivations "pkgs" pkgs); _module.args.pkgs = lib.mkForce (nmd.scrubDerivations "pkgs" pkgs);
_module.check = false; _module.check = false;
}; };
allOptionsDocs = paths: (buildOptionsDocs { allOptionsDocs = paths: (buildOptionsDocs
modules = paths ++ allModules ++ [ scrubbedModule ]; {
variablelistId = "selfhostblocks-options"; modules = paths ++ allModules ++ [ scrubbedModule ];
}).optionsJSON; filterOptionPath = [ "shb" ];
}
{
variablelistId = "selfhostblocks-options";
}).optionsJSON;
individualModuleOptionsDocs = paths: (buildOptionsDocs { individualModuleOptionsDocs = filterOptionPath: paths: (buildOptionsDocs
modules = paths ++ [ scrubbedModule ]; {
variablelistId = "selfhostblocks-options"; modules = paths ++ [ scrubbedModule ];
}).optionsJSON; inherit filterOptionPath;
}
{
variablelistId = "selfhostblocks-options";
}).optionsJSON;
nmd = import nmdsrc { nmd = import nmdsrc {
inherit lib; inherit lib;
@ -138,11 +146,16 @@ in stdenv.mkDerivation {
(pkgs.path + "/nixos/modules/services/misc/forgejo.nix") (pkgs.path + "/nixos/modules/services/misc/forgejo.nix")
]}/share/doc/nixos/options.json ]}/share/doc/nixos/options.json
'' ''
+ lib.concatStringsSep "\n" (lib.mapAttrsToList (name: path: '' + lib.concatStringsSep "\n" (lib.mapAttrsToList (name: cfg':
let
cfg = if builtins.isAttrs cfg' then cfg' else { module = cfg'; };
module = if builtins.isList cfg.module then cfg.module else [ cfg.module ];
optionRoot = cfg.optionRoot or [ "shb" (lib.last (lib.splitString "/" name)) ];
in ''
substituteInPlace ./modules/${name}/docs/default.md \ substituteInPlace ./modules/${name}/docs/default.md \
--replace-fail \ --replace-fail \
'@OPTIONS_JSON@' \ '@OPTIONS_JSON@' \
${individualModuleOptionsDocs (if builtins.isList path then path else [ path ])}/share/doc/nixos/options.json ${individualModuleOptionsDocs optionRoot module}/share/doc/nixos/options.json
'') modules) '') modules)
+ '' + ''
find . -name "*.md" -print0 | \ find . -name "*.md" -print0 | \

View file

@ -13,7 +13,7 @@ Then, in your `nixosConfigurations`, you can import all modules with:
```nix ```nix
imports = [ imports = [
inputs.selfhostblocks.nixosModules.x86_64-linux.default inputs.selfhostblocks.default
]; ];
``` ```
@ -21,9 +21,9 @@ or selectively import some with, for example:
```nix ```nix
imports = [ imports = [
inputs.selfhostblocks.nixosModules.x86_64-linux.authelia inputs.selfhostblocks.authelia
inputs.selfhostblocks.nixosModules.x86_64-linux.lldap inputs.selfhostblocks.lldap
inputs.selfhostblocks.nixosModules.x86_64-linux.nextcloud inputs.selfhostblocks.nextcloud
]; ];
``` ```
@ -133,7 +133,7 @@ The following snippets show how to deploy Self Host Blocks using the standard de
machine = nixosSystem' { machine = nixosSystem' {
inherit system; inherit system;
modules = [ modules = [
selfhostblocks.nixosModules.${system}.default selfhostblocks.nixosModules.default
]; ];
}; };
}; };
@ -172,7 +172,7 @@ some not using Self Host Blocks, then you can do the following:
machine2 = shbNixpkgs.lib.nixosSystem { machine2 = shbNixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
selfhostblocks.nixosModules.${system}.default selfhostblocks.nixosModules.default
]; ];
}; };
}; };
@ -212,7 +212,7 @@ The following snippets show how to deploy Self Host Blocks using the deployment
machine = { selfhostblocks, ... }: { machine = { selfhostblocks, ... }: {
imports = [ imports = [
selfhostblocks.nixosModules.${system}.default selfhostblocks.nixosModules.default
]; ];
}; };
}; };
@ -258,7 +258,7 @@ in this case you can use the `colmena.meta.nodeNixpkgs` option:
machine2 = { selfhostblocks, ... }: { machine2 = { selfhostblocks, ... }: {
imports = [ imports = [
selfhostblocks.nixosModules.${system}.default selfhostblocks.nixosModules.default
]; ];
# Machine specific configuration goes here. # Machine specific configuration goes here.
@ -307,7 +307,7 @@ The following snippets show how to deploy Self Host Blocks using the deployment
in in
nixosModules.machine = { nixosModules.machine = {
imports = [ imports = [
selfhostblocks.nixosModules.${system}.default selfhostblocks.nixosModules.default
]; ];
}; };
@ -378,7 +378,7 @@ in this case you can do:
nixosModules.machine2 = { nixosModules.machine2 = {
imports = [ imports = [
selfhostblocks.nixosModules.${system}.default selfhostblocks.nixosModules.default
]; ];
}; };
@ -578,7 +578,7 @@ as well as [Skarabox][], my sibling project used to bootstrap a server.
nixosModules.skarabox = { nixosModules.skarabox = {
imports = [ imports = [
skarabox.nixosModules.skarabox skarabox.nixosModules.skarabox
selfhostblocks.nixosModules.${system}.default selfhostblocks.nixosModules.default
sops-nix.nixosModules.default sops-nix.nixosModules.default
({ config, ... }: { ({ config, ... }: {
skarabox.hostname = "skarabox"; skarabox.hostname = "skarabox";

169
flake.nix
View file

@ -51,81 +51,9 @@
]; ];
in in
{ {
nixosModules.default = self.nixosModules.${system}.all;
nixosModules.all = {
imports = [
self.nixosModules.${system}.insecure
# blocks
self.nixosModules.${system}.authelia
self.nixosModules.${system}.davfs
self.nixosModules.${system}.hardcodedsecret
self.nixosModules.${system}.lldap
self.nixosModules.${system}.mitmdump
self.nixosModules.${system}.monitoring
self.nixosModules.${system}.nginx
self.nixosModules.${system}.postgresql
self.nixosModules.${system}.restic
self.nixosModules.${system}.ssl
self.nixosModules.${system}.sops
self.nixosModules.${system}.tinyproxy
self.nixosModules.${system}.vpn
self.nixosModules.${system}.zfs
# services
self.nixosModules.${system}.arr
self.nixosModules.${system}.audiobookshelf
self.nixosModules.${system}.deluge
self.nixosModules.${system}.forgejo
self.nixosModules.${system}.grocy
self.nixosModules.${system}.hledger
self.nixosModules.${system}.immich
self.nixosModules.${system}.home-assistant
self.nixosModules.${system}.jellyfin
self.nixosModules.${system}.nextcloud-server
self.nixosModules.${system}.open-webui
self.nixosModules.${system}.pinchflat
self.nixosModules.${system}.vaultwarden
];
};
nixosModules.insecure = {
nixpkgs.config.permittedInsecurePackages = [
];
};
nixosModules.authelia = modules/blocks/authelia.nix;
nixosModules.davfs = modules/blocks/davfs.nix;
nixosModules.hardcodedsecret = modules/blocks/hardcodedsecret.nix;
nixosModules.lldap = modules/blocks/lldap.nix;
nixosModules.mitmdump = modules/blocks/mitmdump.nix;
nixosModules.monitoring = modules/blocks/monitoring.nix;
nixosModules.nginx = modules/blocks/nginx.nix;
nixosModules.postgresql = modules/blocks/postgresql.nix;
nixosModules.restic = modules/blocks/restic.nix;
nixosModules.ssl = modules/blocks/ssl.nix;
nixosModules.sops = modules/blocks/sops.nix;
nixosModules.tinyproxy = modules/blocks/tinyproxy.nix;
nixosModules.vpn = modules/blocks/vpn.nix;
nixosModules.zfs = modules/blocks/zfs.nix;
nixosModules.arr = modules/services/arr.nix;
nixosModules.audiobookshelf = modules/services/audiobookshelf.nix;
nixosModules.deluge = modules/services/deluge.nix;
nixosModules.forgejo = modules/services/forgejo.nix;
nixosModules.grocy = modules/services/grocy.nix;
nixosModules.hledger = modules/services/hledger.nix;
nixosModules.immich = modules/services/immich.nix;
nixosModules.home-assistant = modules/services/home-assistant.nix;
nixosModules.jellyfin = modules/services/jellyfin.nix;
nixosModules.nextcloud-server = modules/services/nextcloud-server.nix;
nixosModules.open-webui = modules/services/open-webui.nix;
nixosModules.pinchflat = modules/services/pinchflat.nix;
nixosModules.vaultwarden = modules/services/vaultwarden.nix;
packages.manualHtml = pkgs.callPackage ./docs { packages.manualHtml = pkgs.callPackage ./docs {
inherit nmdsrc; inherit nmdsrc;
allModules = self.nixosModules.${system}.all.imports ++ contractDummyModules; allModules = self.nixosModules.all.imports ++ contractDummyModules;
release = builtins.readFile ./VERSION; release = builtins.readFile ./VERSION;
substituteVersionIn = [ substituteVersionIn = [
@ -135,7 +63,10 @@
modules = { modules = {
"blocks/authelia" = ./modules/blocks/authelia.nix; "blocks/authelia" = ./modules/blocks/authelia.nix;
"blocks/lldap" = ./modules/blocks/lldap.nix; "blocks/lldap" = ./modules/blocks/lldap.nix;
"blocks/ssl" = ./modules/blocks/ssl.nix; "blocks/ssl" = {
module = ./modules/blocks/ssl.nix;
optionRoot = [ "shb" "certs" ];
};
"blocks/mitmdump" = ./modules/blocks/mitmdump.nix; "blocks/mitmdump" = ./modules/blocks/mitmdump.nix;
"blocks/monitoring" = ./modules/blocks/monitoring.nix; "blocks/monitoring" = ./modules/blocks/monitoring.nix;
"blocks/postgresql" = ./modules/blocks/postgresql.nix; "blocks/postgresql" = ./modules/blocks/postgresql.nix;
@ -148,14 +79,29 @@
]; ];
"services/home-assistant" = ./modules/services/home-assistant.nix; "services/home-assistant" = ./modules/services/home-assistant.nix;
"services/jellyfin" = ./modules/services/jellyfin.nix; "services/jellyfin" = ./modules/services/jellyfin.nix;
"services/nextcloud-server" = ./modules/services/nextcloud-server.nix; "services/nextcloud-server" = {
module = ./modules/services/nextcloud-server.nix;
optionRoot = [ "shb" "nextcloud" ];
};
"services/open-webui" = ./modules/services/open-webui.nix; "services/open-webui" = ./modules/services/open-webui.nix;
"services/pinchflat" = ./modules/services/pinchflat.nix; "services/pinchflat" = ./modules/services/pinchflat.nix;
"services/vaultwarden" = ./modules/services/vaultwarden.nix; "services/vaultwarden" = ./modules/services/vaultwarden.nix;
"contracts/backup" = ./modules/contracts/backup/dummyModule.nix; "contracts/backup" = {
"contracts/databasebackup" = ./modules/contracts/databasebackup/dummyModule.nix; module = ./modules/contracts/backup/dummyModule.nix;
"contracts/secret" = ./modules/contracts/secret/dummyModule.nix; optionRoot = [ "shb" "contracts" "backup" ];
"contracts/ssl" = ./modules/contracts/ssl/dummyModule.nix; };
"contracts/databasebackup" = {
module = ./modules/contracts/databasebackup/dummyModule.nix;
optionRoot = [ "shb" "contracts" "databasebackup" ];
};
"contracts/secret" = {
module = ./modules/contracts/secret/dummyModule.nix;
optionRoot = [ "shb" "contracts" "secret" ];
};
"contracts/ssl" = {
module = ./modules/contracts/ssl/dummyModule.nix;
optionRoot = [ "shb" "contracts" "ssl" ];
};
}; };
}; };
@ -327,5 +273,70 @@
} }
) // { ) // {
herculesCI.ciSystems = [ "x86_64-linux" ]; herculesCI.ciSystems = [ "x86_64-linux" ];
nixosModules.default = self.nixosModules.all;
nixosModules.all = {
imports = [
# blocks
self.nixosModules.authelia
self.nixosModules.davfs
self.nixosModules.hardcodedsecret
self.nixosModules.lldap
self.nixosModules.mitmdump
self.nixosModules.monitoring
self.nixosModules.nginx
self.nixosModules.postgresql
self.nixosModules.restic
self.nixosModules.ssl
self.nixosModules.sops
self.nixosModules.tinyproxy
self.nixosModules.vpn
self.nixosModules.zfs
# services
self.nixosModules.arr
self.nixosModules.audiobookshelf
self.nixosModules.deluge
self.nixosModules.forgejo
self.nixosModules.grocy
self.nixosModules.hledger
self.nixosModules.immich
self.nixosModules.home-assistant
self.nixosModules.jellyfin
self.nixosModules.nextcloud-server
self.nixosModules.open-webui
self.nixosModules.pinchflat
self.nixosModules.vaultwarden
];
};
nixosModules.authelia = modules/blocks/authelia.nix;
nixosModules.davfs = modules/blocks/davfs.nix;
nixosModules.hardcodedsecret = modules/blocks/hardcodedsecret.nix;
nixosModules.lldap = modules/blocks/lldap.nix;
nixosModules.mitmdump = modules/blocks/mitmdump.nix;
nixosModules.monitoring = modules/blocks/monitoring.nix;
nixosModules.nginx = modules/blocks/nginx.nix;
nixosModules.postgresql = modules/blocks/postgresql.nix;
nixosModules.restic = modules/blocks/restic.nix;
nixosModules.ssl = modules/blocks/ssl.nix;
nixosModules.sops = modules/blocks/sops.nix;
nixosModules.tinyproxy = modules/blocks/tinyproxy.nix;
nixosModules.vpn = modules/blocks/vpn.nix;
nixosModules.zfs = modules/blocks/zfs.nix;
nixosModules.arr = modules/services/arr.nix;
nixosModules.audiobookshelf = modules/services/audiobookshelf.nix;
nixosModules.deluge = modules/services/deluge.nix;
nixosModules.forgejo = modules/services/forgejo.nix;
nixosModules.grocy = modules/services/grocy.nix;
nixosModules.hledger = modules/services/hledger.nix;
nixosModules.immich = modules/services/immich.nix;
nixosModules.home-assistant = modules/services/home-assistant.nix;
nixosModules.jellyfin = modules/services/jellyfin.nix;
nixosModules.nextcloud-server = modules/services/nextcloud-server.nix;
nixosModules.open-webui = modules/services/open-webui.nix;
nixosModules.pinchflat = modules/services/pinchflat.nix;
nixosModules.vaultwarden = modules/services/vaultwarden.nix;
}; };
} }

View file

@ -17,6 +17,12 @@ let
listenPort = if cfg.debug then 9090 else 9091; listenPort = if cfg.debug then 9090 else 9091;
in in
{ {
imports = [
./lldap.nix
./mitmdump.nix
./postgresql.nix
];
options.shb.authelia = { options.shb.authelia = {
enable = lib.mkEnableOption "selfhostblocks.authelia"; enable = lib.mkEnableOption "selfhostblocks.authelia";

View file

@ -48,6 +48,13 @@ let
}; };
in in
{ {
imports = [
./hardcodedsecret.nix
./mitmdump.nix
(lib.mkRenamedOptionModule [ "shb" "ldap" ] [ "shb" "lldap" ])
];
options.shb.lldap = { options.shb.lldap = {
enable = lib.mkEnableOption "the LDAP service"; enable = lib.mkEnableOption "the LDAP service";
@ -321,10 +328,6 @@ in
default = true; default = true;
}; };
}; };
imports = [
(lib.mkRenamedOptionModule [ "shb" "ldap" ] [ "shb" "lldap" ])
];
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {

View file

@ -7,7 +7,7 @@ let
contracts = pkgs.callPackage ../contracts {}; contracts = pkgs.callPackage ../contracts {};
inherit (lib) concatStringsSep filterAttrs flatten literalExpression optionals listToAttrs mapAttrsToList mkEnableOption mkOption mkMerge; inherit (lib) concatStringsSep filterAttrs flatten literalExpression optionals listToAttrs mapAttrsToList mkEnableOption mkOption mkMerge;
inherit (lib) generators hasPrefix mkIf nameValuePair optionalAttrs removePrefix; inherit (lib) hasPrefix mkIf nameValuePair optionalAttrs removePrefix;
inherit (lib.types) attrsOf enum int ints oneOf nonEmptyStr nullOr str submodule; inherit (lib.types) attrsOf enum int ints oneOf nonEmptyStr nullOr str submodule;
commonOptions = { name, prefix, config, ... }: { commonOptions = { name, prefix, config, ... }: {
@ -106,6 +106,10 @@ let
fullName = name: repository: "restic-backups-${name}_${repoSlugName repository.path}"; fullName = name: repository: "restic-backups-${name}_${repoSlugName repository.path}";
in in
{ {
imports = [
./hardcodedsecret.nix
];
options.shb.restic = { options.shb.restic = {
instances = mkOption { instances = mkOption {
description = "Files to backup following the [backup contract](./contracts-backup.html)."; description = "Files to backup following the [backup contract](./contracts-backup.html).";

View file

@ -38,7 +38,7 @@ in
This option implements the SSL Generator contract. This option implements the SSL Generator contract.
''; '';
type = contracts.ssl.certs-paths; type = contracts.ssl.certs-paths;
default = rec { default = {
key = "/var/lib/certs/cas/${config._module.args.name}.key"; key = "/var/lib/certs/cas/${config._module.args.name}.key";
cert = "/var/lib/certs/cas/${config._module.args.name}.cert"; cert = "/var/lib/certs/cas/${config._module.args.name}.cert";
}; };
@ -110,7 +110,7 @@ in
This option implements the SSL Generator contract. This option implements the SSL Generator contract.
''; '';
type = contracts.ssl.certs-paths; type = contracts.ssl.certs-paths;
default = rec { default = {
key = "/var/lib/certs/selfsigned/${config._module.args.name}.key"; key = "/var/lib/certs/selfsigned/${config._module.args.name}.key";
cert = "/var/lib/certs/selfsigned/${config._module.args.name}.cert"; cert = "/var/lib/certs/selfsigned/${config._module.args.name}.cert";
}; };
@ -306,8 +306,6 @@ in
config = config =
let let
filterProvider = provider: lib.attrsets.filterAttrs (k: i: i.provider == provider);
serviceName = lib.strings.removeSuffix ".service"; serviceName = lib.strings.removeSuffix ".service";
in in
lib.mkMerge [ lib.mkMerge [

View file

@ -25,8 +25,6 @@ let
}); });
configFile = name: cfg: settingsFormat.generate "tinyproxy-${name}.conf" cfg.settings; configFile = name: cfg: settingsFormat.generate "tinyproxy-${name}.conf" cfg.settings;
someEnabled = any (mapAttrsToList (name: c: c.enable) cfg);
in in
{ {
options = options =

View file

@ -197,8 +197,6 @@ let
echo "Running route-down DONE" echo "Running route-down DONE"
''; '';
}; };
someEnabled = lib.any (lib.mapAttrsToList (name: c: c.enable) cfg);
in in
{ {
options = options =

View file

@ -336,6 +336,10 @@ let
}); });
in in
{ {
imports = [
../blocks/nginx.nix
];
options.shb.arr = lib.listToAttrs (lib.mapAttrsToList appOption apps); options.shb.arr = lib.listToAttrs (lib.mapAttrsToList appOption apps);
config = lib.mkMerge [ config = lib.mkMerge [

View file

@ -18,6 +18,10 @@ let
lib.concatStringsSep "\n" lines; lib.concatStringsSep "\n" lines;
in in
{ {
imports = [
../blocks/nginx.nix
];
options.shb.deluge = { options.shb.deluge = {
enable = lib.mkEnableOption "selfhostblocks.deluge"; enable = lib.mkEnableOption "selfhostblocks.deluge";

View file

@ -9,6 +9,20 @@ let
inherit (lib.types) attrsOf bool enum listOf nullOr package port submodule str; inherit (lib.types) attrsOf bool enum listOf nullOr package port submodule str;
in in
{ {
imports = [
../blocks/nginx.nix
(lib.mkRemovedOptionModule [ "shb" "forgejo" "adminPassword" ] ''Instead, define an admin user in shb.forgejo.users and give it the same password, like so:
shb.forgejo.users = {
"forgejoadmin" = {
isAdmin = true;
email = "forgejoadmin@example.com";
password.result = <path/to/password>;
};
};
'')
];
options.shb.forgejo = { options.shb.forgejo = {
enable = mkEnableOption "selfhostblocks.forgejo"; enable = mkEnableOption "selfhostblocks.forgejo";
@ -346,18 +360,6 @@ in
}; };
}; };
imports = [
(lib.mkRemovedOptionModule [ "shb" "forgejo" "adminPassword" ] ''Instead, define an admin user in shb.forgejo.users and give it the same password, like so:
shb.forgejo.users = {
"forgejoadmin" = {
isAdmin = true;
email = "forgejoadmin@example.com";
password.result = <path/to/password>;
};
};
'')
];
config = mkMerge [ config = mkMerge [
(mkIf cfg.enable { (mkIf cfg.enable {
services.forgejo = { services.forgejo = {

View file

@ -8,6 +8,10 @@ let
fqdn = "${cfg.subdomain}.${cfg.domain}"; fqdn = "${cfg.subdomain}.${cfg.domain}";
in in
{ {
imports = [
../blocks/nginx.nix
];
options.shb.hledger = { options.shb.hledger = {
enable = lib.mkEnableOption "selfhostblocks.hledger"; enable = lib.mkEnableOption "selfhostblocks.hledger";

View file

@ -74,6 +74,10 @@ let
inherit (lib.types) attrs attrsOf bool enum listOf nullOr port submodule str path; inherit (lib.types) attrs attrsOf bool enum listOf nullOr port submodule str path;
in in
{ {
imports = [
../blocks/nginx.nix
];
options.shb.immich = { options.shb.immich = {
enable = mkEnableOption "selfhostblocks.immich"; enable = mkEnableOption "selfhostblocks.immich";

View file

@ -9,6 +9,10 @@ let
oauthScopes = [ "openid" "email" "profile" "groups" "${roleClaim}" ]; oauthScopes = [ "openid" "email" "profile" "groups" "${roleClaim}" ];
in in
{ {
imports = [
../blocks/nginx.nix
];
options.shb.open-webui = { options.shb.open-webui = {
enable = lib.mkEnableOption "the Open-WebUI service"; enable = lib.mkEnableOption "the Open-WebUI service";

View file

@ -8,6 +8,10 @@ let
shblib = pkgs.callPackage ../../lib {}; shblib = pkgs.callPackage ../../lib {};
in in
{ {
imports = [
../blocks/nginx.nix
];
options.shb.pinchflat = { options.shb.pinchflat = {
enable = lib.mkEnableOption "the Pinchflat service."; enable = lib.mkEnableOption "the Pinchflat service.";

View file

@ -11,6 +11,10 @@ let
dataFolder = if lib.versionOlder (config.system.stateVersion or "24.11") "24.11" then "/var/lib/bitwarden_rs" else "/var/lib/vaultwarden"; dataFolder = if lib.versionOlder (config.system.stateVersion or "24.11") "24.11" then "/var/lib/bitwarden_rs" else "/var/lib/vaultwarden";
in in
{ {
imports = [
../blocks/nginx.nix
];
options.shb.vaultwarden = { options.shb.vaultwarden = {
enable = lib.mkEnableOption "selfhostblocks.vaultwarden"; enable = lib.mkEnableOption "selfhostblocks.vaultwarden";

View file

@ -1,4 +1,4 @@
{ pkgs, lib, ... }: { pkgs, ... }:
let let
pkgs' = pkgs; pkgs' = pkgs;
@ -14,9 +14,6 @@ in
(pkgs'.path + "/nixos/modules/profiles/qemu-guest.nix") (pkgs'.path + "/nixos/modules/profiles/qemu-guest.nix")
../../modules/blocks/authelia.nix ../../modules/blocks/authelia.nix
../../modules/blocks/hardcodedsecret.nix ../../modules/blocks/hardcodedsecret.nix
../../modules/blocks/lldap.nix
../../modules/blocks/mitmdump.nix
../../modules/blocks/postgresql.nix
]; ];
networking.hosts = { networking.hosts = {

View file

@ -18,9 +18,7 @@ in
shb.ssl.enable = lib.mkEnableOption "ssl"; shb.ssl.enable = lib.mkEnableOption "ssl";
}; };
} }
../../modules/blocks/hardcodedsecret.nix
../../modules/blocks/lldap.nix ../../modules/blocks/lldap.nix
../../modules/blocks/mitmdump.nix
]; ];
shb.lldap = { shb.lldap = {

View file

@ -8,7 +8,6 @@ let
nodes.machine = { config, ... }: { nodes.machine = { config, ... }: {
imports = [ imports = [
testLib.baseImports testLib.baseImports
../../modules/blocks/hardcodedsecret.nix
../../modules/blocks/restic.nix ../../modules/blocks/restic.nix
]; ];

View file

@ -1,4 +1,4 @@
{ pkgs, lib, ... }: { pkgs, ... }:
let let
pkgs' = pkgs; pkgs' = pkgs;
in in
@ -130,7 +130,6 @@ in
multi = nodes.server.shb.certs.certs.selfsigned.multi; multi = nodes.server.shb.certs.certs.selfsigned.multi;
cert1 = nodes.server.shb.certs.certs.selfsigned.cert1; cert1 = nodes.server.shb.certs.certs.selfsigned.cert1;
cert2 = nodes.server.shb.certs.certs.selfsigned.cert2; cert2 = nodes.server.shb.certs.certs.selfsigned.cert2;
cert3 = nodes.server.shb.certs.certs.selfsigned.cert3;
in in
'' ''
start_all() start_all()

View file

@ -2,8 +2,6 @@
let let
testLib = pkgs.callPackage ../common.nix {}; testLib = pkgs.callPackage ../common.nix {};
adminPassword = "AdminPassword";
commonTestScript = testLib.mkScripts { commonTestScript = testLib.mkScripts {
hasSSL = { node, ... }: !(isNull node.config.shb.hledger.ssl); hasSSL = { node, ... }: !(isNull node.config.shb.hledger.ssl);
waitForServices = { ... }: [ waitForServices = { ... }: [

View file

@ -19,7 +19,6 @@ let
imports = [ imports = [
testLib.baseModule testLib.baseModule
../../modules/blocks/hardcodedsecret.nix ../../modules/blocks/hardcodedsecret.nix
../../modules/blocks/lldap.nix
../../modules/services/open-webui.nix ../../modules/services/open-webui.nix
]; ];

View file

@ -17,7 +17,6 @@ let
imports = [ imports = [
testLib.baseModule testLib.baseModule
../../modules/blocks/hardcodedsecret.nix ../../modules/blocks/hardcodedsecret.nix
../../modules/blocks/lldap.nix
../../modules/services/pinchflat.nix ../../modules/services/pinchflat.nix
]; ];

View file

@ -1,4 +1,4 @@
{ pkgs, lib, ... }: { pkgs, ... }:
let let
testLib = pkgs.callPackage ../common.nix {}; testLib = pkgs.callPackage ../common.nix {};