refactor!: switch to dendritic pattern
BREAKING CHANGE: complete reorganization of the repository
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
{
|
||||
flake.modules.nixos.traefik = {
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.mySystem.services.traefik;
|
||||
in {
|
||||
options.mySystem.services.traefik = {
|
||||
enable = mkEnableOption "Enable Traefik";
|
||||
email = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
};
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/tank/traefik";
|
||||
example = "/path/to/traefik/data";
|
||||
};
|
||||
environmentFiles = mkOption {
|
||||
type = types.listOf types.path;
|
||||
example = ["/var/traefik/traefik.env"];
|
||||
default = [];
|
||||
};
|
||||
dynamicConfigFile = mkOption {
|
||||
type = types.path;
|
||||
default = "${cfg.dataDir}/traefik.yaml";
|
||||
example = "/var/traefik/dynamic.yaml";
|
||||
};
|
||||
};
|
||||
config.services.traefik = {
|
||||
inherit (cfg) enable dynamicConfigFile environmentFiles;
|
||||
staticConfigOptions = {
|
||||
api.dashboard = true;
|
||||
log = {
|
||||
level = "INFO";
|
||||
filePath = "${cfg.dataDir}/traefik.log";
|
||||
format = "json";
|
||||
};
|
||||
accessLog.filePath = "${cfg.dataDir}/access.log";
|
||||
entryPoints = {
|
||||
web = {
|
||||
address = ":80";
|
||||
asDefault = true;
|
||||
http.redirections.entrypoint = {
|
||||
to = "websecure";
|
||||
scheme = "https";
|
||||
};
|
||||
};
|
||||
websecure = {
|
||||
address = ":443";
|
||||
asDefault = true;
|
||||
httpChallenge.entryPoint = "websecure";
|
||||
};
|
||||
};
|
||||
providers.docker = {
|
||||
endpoint = "unix:///var/run/docker.sock";
|
||||
exposedByDefault = false;
|
||||
};
|
||||
certificatesResolvers.cloudflare.acme = {
|
||||
inherit (cfg) email;
|
||||
storage = "${cfg.dataDir}/acme.json";
|
||||
dnsChallenge = {
|
||||
provider = "cloudflare";
|
||||
resolvers = ["1.1.1.1:53" "1.0.0.1:53"];
|
||||
propagation.delayBeforeChecks = 60;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user