Implement global custom libs as a flake output

This commit is contained in:
SebastianStork 2025-10-17 10:57:32 +02:00
parent f276848b18
commit 671a13239a
Signed by: SebastianStork
SSH key fingerprint: SHA256:iEM011ogNMG1q8+U500adGu/9rpPuZ2KnFtbdLeqTiI
10 changed files with 40 additions and 31 deletions

View file

@ -2,6 +2,7 @@
config,
pkgs,
lib,
lib',
...
}:
let
@ -10,8 +11,8 @@ let
virtualHosts = cfg.virtualHosts |> lib.attrValues |> lib.filter (value: value.enable);
tailscaleHosts = virtualHosts |> lib.filter (value: lib.custom.isTailscaleDomain value.domain);
nonTailscaleHosts = virtualHosts |> lib.filter (value: !lib.custom.isTailscaleDomain value.domain);
tailscaleHosts = virtualHosts |> lib.filter (value: lib'.isTailscaleDomain value.domain);
nonTailscaleHosts = virtualHosts |> lib.filter (value: !lib'.isTailscaleDomain value.domain);
webPorts = [
80
@ -28,8 +29,8 @@ let
{ domain, port, ... }:
''
import subdomain-log ${domain}
@${lib.custom.subdomainOf domain} host ${domain}
handle @${lib.custom.subdomainOf domain} {
@${lib'.subdomainOf domain} host ${domain}
handle @${lib'.subdomainOf domain} {
reverse_proxy localhost:${toString port}
}
'';
@ -42,7 +43,7 @@ let
lib.nameValuePair domain {
logFormat = "output file ${config.services.caddy.logDir}/${domain}.log { mode 640 }";
extraConfig = ''
bind tailscale/${lib.custom.subdomainOf domain}
bind tailscale/${lib'.subdomainOf domain}
reverse_proxy localhost:${toString port}
'';
};
@ -141,7 +142,7 @@ in
'';
virtualHosts =
nonTailscaleHosts
|> lib.groupBy (value: lib.custom.rootDomainOf value.domain)
|> lib.groupBy (value: lib'.rootDomainOf value.domain)
|> lib.mapAttrs' mkWildCardDomain;
};
})

View file

@ -2,6 +2,7 @@
config,
self,
lib,
lib',
...
}:
let
@ -51,7 +52,7 @@ in
message = "Running syncthing on a server requires `gui.domain` to be set.";
}
{
assertion = (cfg.gui.domain != null) -> (lib.custom.isTailscaleDomain cfg.gui.domain);
assertion = (cfg.gui.domain != null) -> (lib'.isTailscaleDomain cfg.gui.domain);
message = "The syncthing gui should only be exposed on a private network as it isn't yet configured with access controll.";
}
];
@ -108,7 +109,7 @@ in
genFolders =
folders:
folders
|> lib.custom.genAttrs (name: {
|> lib'.genAttrs (name: {
path = "${dataDir}/${name}";
ignorePerms = false;
devices = config.services.syncthing.settings.devices |> lib.attrNames;

View file

@ -2,6 +2,7 @@
config,
pkgs,
lib,
lib',
...
}:
let
@ -30,7 +31,7 @@ in
sops.secrets =
cfg.networks
|> lib.map (name: "iwd/${name}")
|> lib.custom.genAttrs (_: {
|> lib'.genAttrs (_: {
restartUnits = [ "iwd.service" ];
});