Nix configurations for my homelab
1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7{
8 options.garden.caddy = {
9 package = {
10 plugins = lib.mkOption {
11 type = lib.types.listOf lib.types.str;
12 default = [ ];
13 description = "Caddy plugins to install";
14 };
15 hash = lib.mkOption {
16 type = lib.types.str;
17 default = lib.fakeSha256;
18 description = "Hash for Caddy plugins";
19 };
20 };
21 layer4 = lib.mkOption {
22 type = lib.types.lines;
23 default = "";
24 description = "Caddy-L4 configurations";
25 };
26 };
27
28 config = {
29 services.caddy = {
30 package = pkgs.caddy.withPlugins {
31 plugins = config.garden.caddy.package.plugins;
32 hash = config.garden.caddy.package.hash;
33 };
34 globalConfig = lib.mkIf (config.garden.caddy.layer4 != "") ''
35 layer4 {
36 ${config.garden.caddy.layer4}
37 }
38 '';
39 };
40 };
41}