mod: make imports explicit and remove system
This commit is contained in:
parent
bd0bd713fd
commit
9892f55ae2
27 changed files with 201 additions and 144 deletions
|
|
@ -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
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 | \
|
||||||
|
|
|
||||||
|
|
@ -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
169
flake.nix
|
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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).";
|
||||||
|
|
|
||||||
|
|
@ -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 [
|
||||||
|
|
|
||||||
|
|
@ -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 =
|
||||||
|
|
|
||||||
|
|
@ -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 =
|
||||||
|
|
|
||||||
|
|
@ -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 [
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 = {
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 = {
|
||||||
|
|
|
||||||
|
|
@ -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 = {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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 = { ... }: [
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, lib, ... }:
|
{ pkgs, ... }:
|
||||||
let
|
let
|
||||||
testLib = pkgs.callPackage ../common.nix {};
|
testLib = pkgs.callPackage ../common.nix {};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue