63 lines
1.2 KiB
Nix
63 lines
1.2 KiB
Nix
|
{
|
||
|
config,
|
||
|
inputs,
|
||
|
lib,
|
||
|
...
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
inherit (lib)
|
||
|
mkEnableOption
|
||
|
mkIf
|
||
|
mkOption
|
||
|
types
|
||
|
;
|
||
|
|
||
|
cfg = homelab.services.${service};
|
||
|
homelab = config.homelab;
|
||
|
service = "peertube";
|
||
|
in
|
||
|
{
|
||
|
options.homelab.services.${service} = {
|
||
|
enable = mkEnableOption "Enable ${service}";
|
||
|
|
||
|
url = mkOption {
|
||
|
default = "videos.${homelab.domain}";
|
||
|
type = types.str;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = mkIf cfg.enable {
|
||
|
services = {
|
||
|
${service} = {
|
||
|
enable = true;
|
||
|
|
||
|
configureNginx = true;
|
||
|
enableWebHttps = false;
|
||
|
listenWeb = 80;
|
||
|
localDomain = cfg.url;
|
||
|
|
||
|
database = {
|
||
|
createLocally = true;
|
||
|
};
|
||
|
|
||
|
redis = {
|
||
|
createLocally = true;
|
||
|
enableUnixSocket = true;
|
||
|
};
|
||
|
|
||
|
secrets.secretsFile = config.age.secrets.peertube-env.path;
|
||
|
};
|
||
|
|
||
|
cloudflared.tunnels.${homelab.cloudflared.tunnelId}.ingress = {
|
||
|
${cfg.url} = "http://${toString config.services.${service}.listenWeb}";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
age.secrets."${service}-env" = {
|
||
|
file = "${inputs.self}/secrets/${service}-env.age";
|
||
|
owner = config.services.${service}.user;
|
||
|
};
|
||
|
};
|
||
|
}
|