add caddy module

This commit is contained in:
ulic-youthlic 2025-01-24 18:35:18 +08:00
parent fd2fe39655
commit 98b594aa15
Signed by: youthlic
GPG key ID: 63E86C3C14A0D721
5 changed files with 93 additions and 29 deletions

View file

@ -38,6 +38,10 @@
};
open-webui.enable = true;
transmission.enable = true;
caddy = {
enable = true;
baseDomain = "home.arp";
};
};
gui.enabled = "cosmic";
};

20
nixos/modules/caddy.nix Normal file
View file

@ -0,0 +1,20 @@
{ lib, config, ... }:
let
cfg = config.youthlic.programs.caddy;
in
{
options = {
youthlic.programs.caddy = {
enable = lib.mkEnableOption "caddy";
baseDomain = lib.mkOption {
type = lib.types.str;
example = "youthlic.fun";
};
};
};
config = lib.mkIf cfg.enable {
services.caddy = {
enable = true;
};
};
}

View file

@ -29,6 +29,7 @@
./kvm.nix
./open-webui.nix
./transmission.nix
./caddy.nix
];
config = {

View file

@ -8,14 +8,30 @@ in
enable = lib.mkEnableOption "open-webui";
};
};
config = lib.mkIf cfg.enable {
services.open-webui = {
enable = true;
port = 8083;
environmentFile = "${config.sops.secrets."open-webui_env".path}";
};
sops.secrets."open-webui_env" = {
format = "yaml";
};
};
config = lib.mkMerge [
(lib.mkIf cfg.enable {
services.open-webui = {
enable = true;
port = 8083;
environmentFile = "${config.sops.secrets."open-webui_env".path}";
};
sops.secrets."open-webui_env" = {
format = "yaml";
};
})
(
let
caddy-cfg = config.youthlic.programs.caddy;
in
lib.mkIf caddy-cfg.enable {
services.caddy.virtualHosts = {
"open-webui.${caddy-cfg.baseDomain}" = {
extraConfig = ''
reverse_proxy 127.0.0.1:8083
'';
};
};
}
)
];
}

View file

@ -15,24 +15,47 @@ in
enable = lib.mkEnableOption "transmission";
};
};
config = lib.mkIf cfg.enable {
users.groups."${config.services.transmission.group}".members = [
config.youthlic.home-manager.unixName
];
sops.secrets."transmission-config" = {
sopsFile = rootPath + "/secrets/transmission.yaml";
};
services.transmission = {
enable = true;
package = pkgs.transmission_4;
settings = {
utp-enabled = true;
watch-dir-enabled = true;
default-trackers = builtins.readFile "${inputs.bt-tracker}/all.txt";
config = lib.mkMerge [
(lib.mkIf cfg.enable {
users.groups."${config.services.transmission.group}".members = [
config.youthlic.home-manager.unixName
];
sops.secrets."transmission-config" = {
sopsFile = rootPath + "/secrets/transmission.yaml";
};
openRPCPort = true;
openPeerPorts = true;
credentialsFile = "${config.sops.secrets.transmission-config.path}";
};
};
services.transmission = {
enable = true;
package = pkgs.transmission_4;
settings = {
utp-enabled = true;
watch-dir-enabled = true;
default-trackers = builtins.readFile "${inputs.bt-tracker}/all.txt";
rpc-bind-address = "0.0.0.0";
};
openRPCPort = true;
openPeerPorts = true;
credentialsFile = "${config.sops.secrets.transmission-config.path}";
};
})
(
let
caddy-cfg = config.youthlic.programs.caddy;
in
lib.mkIf caddy-cfg.enable {
services.transmission = {
openRPCPort = lib.mkForce false;
settings = {
rpc-bind-address = lib.mkForce "127.0.0.1";
};
};
services.caddy.virtualHosts = {
"transmission.${caddy-cfg.baseDomain}" = {
extraConfig = ''
reverse_proxy 127.0.0.1:9091
'';
};
};
}
)
];
}