fix(exports): enable base services by default

This commit is contained in:
arcnmx 2024-05-30 13:13:11 -07:00
parent 77fd991ed1
commit a1273971d9
14 changed files with 36 additions and 67 deletions

View file

@ -74,29 +74,4 @@
}; };
outputs = inputs: import ./outputs.nix {inherit inputs;}; outputs = inputs: import ./outputs.nix {inherit inputs;};
/*
outputs = {
self,
nixpkgs,
flake-utils,
...
} @ inputs: let
providedSystems =
flake-utils.lib.eachDefaultSystem
(system: rec {
devShells.default = import ./devShell.nix {inherit system inputs;};
legacyPackages = import ./meta.nix {inherit system inputs;};
inherit (legacyPackages.outputs) packages;
});
in
providedSystems
// {
nixosConfigurations = builtins.mapAttrs (_: config:
config
// {
inherit config;
})
self.legacyPackages.x86_64-linux.network.nodes;
};
*/
} }

View file

@ -3,8 +3,27 @@
gensokyo-zone, gensokyo-zone,
... ...
}: let }: let
inherit (gensokyo-zone.lib) mapAlmostOptionDefaults mkAlmostOptionDefault; inherit (gensokyo-zone.lib) mapListToAttrs mapAlmostOptionDefaults mkAlmostOptionDefault;
inherit (lib.modules) mkIf; inherit (lib.modules) mkIf;
inherit (lib.attrsets) nameValuePair;
mkExporter = { name, port }: nameValuePair "prometheus-exporters-${name}" ({config, ...}: {
nixos = {
serviceAttrPath = ["services" "prometheus" "exporters" name];
assertions = mkIf config.enable [
(nixosConfig: {
assertion = config.ports.default.port == nixosConfig.services.prometheus.exporters.${name}.port;
message = "port mismatch";
})
];
};
ports.default = mapAlmostOptionDefaults {
inherit port;
protocol = "http";
};
});
exporters = mapListToAttrs mkExporter [
{ name = "node"; port = 9091; }
];
in { in {
config.exports.services = { config.exports.services = {
prometheus = {config, ...}: { prometheus = {config, ...}: {
@ -23,22 +42,6 @@ in {
protocol = "http"; protocol = "http";
}; };
}; };
prometheus-exporters-node = {config, ...}: {
id = mkAlmostOptionDefault "prometheus-exporters-node";
nixos = {
serviceAttrPath = ["services" "prometheus" "exporters" "node"];
assertions = mkIf config.enable [
(nixosConfig: {
assertion = config.ports.default.port == nixosConfig.services.prometheus.exporters.node.port;
message = "port mismatch";
})
];
};
ports.default = mapAlmostOptionDefaults {
port = 9091;
protocol = "http";
};
};
grafana = {config, ...}: { grafana = {config, ...}: {
id = mkAlmostOptionDefault "grafana"; id = mkAlmostOptionDefault "grafana";
nixos = { nixos = {
@ -87,5 +90,5 @@ in {
protocol = "http"; protocol = "http";
}; };
}; };
}; } // exporters;
} }

View file

@ -8,10 +8,10 @@
inherit (gensokyo-zone.lib) mkAlmostOptionDefault; inherit (gensokyo-zone.lib) mkAlmostOptionDefault;
inherit (lib.options) mkOption mkEnableOption; inherit (lib.options) mkOption mkEnableOption;
inherit (lib.modules) mkIf mkMerge mkOptionDefault; inherit (lib.modules) mkIf mkMerge mkOptionDefault;
inherit (lib.attrsets) mapAttrsToList getAttrFromPath; inherit (lib.attrsets) mapAttrsToList getAttrFromPath genAttrs;
inherit (lib.trivial) mapNullable; inherit (lib.trivial) mapNullable;
inherit (lib.strings) concatStringsSep; inherit (lib.strings) concatStringsSep;
systemConfig = config; cfg = config.exports;
portModule = { portModule = {
config, config,
service, service,
@ -146,12 +146,15 @@
}; };
in { in {
options.exports = with lib.types; { options.exports = with lib.types; {
defaultServices = mkEnableOption "common base services" // {
default = config.type == "NixOS";
};
services = mkOption { services = mkOption {
type = attrsOf (submoduleWith { type = attrsOf (submoduleWith {
modules = [serviceModule]; modules = [serviceModule];
specialArgs = { specialArgs = {
machine = name; machine = name;
inherit systemConfig; systemConfig = config;
}; };
}); });
default = {}; default = {};
@ -162,5 +165,14 @@ in {
modules = mkIf (config.type == "NixOS") [ modules = mkIf (config.type == "NixOS") [
nixosModule nixosModule
]; ];
exports = let
defaultServices = genAttrs [
"sshd"
"prometheus-exporters-node"
"promtail"
] (_: { enable = mkAlmostOptionDefault true; });
in {
services = mkIf cfg.defaultServices defaultServices;
};
}; };
} }

View file

@ -9,7 +9,6 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
tailscale.enable = true; tailscale.enable = true;
minecraft-bedrock-server.enable = true; minecraft-bedrock-server.enable = true;
}; };

View file

@ -12,9 +12,4 @@ _: {
address6 = null; address6 = null;
}; };
}; };
exports = {
services = {
sshd.enable = true;
};
};
} }

View file

@ -11,7 +11,6 @@ _: {
exports = { exports = {
services = { services = {
nginx.enable = true; nginx.enable = true;
sshd.enable = true;
openwebrx.enable = true; openwebrx.enable = true;
}; };
}; };

View file

@ -9,7 +9,6 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
keycloak.enable = true; keycloak.enable = true;
vouch-proxy.enable = true; vouch-proxy.enable = true;
vaultwarden.enable = true; vaultwarden.enable = true;

View file

@ -22,7 +22,6 @@ _: {
}; };
exports = { exports = {
services = { services = {
sshd.enable = true;
}; };
}; };
} }

View file

@ -10,7 +10,6 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
tailscale.enable = true; tailscale.enable = true;
}; };
}; };

View file

@ -4,11 +4,6 @@ _: {
modules = [ modules = [
./nixos.nix ./nixos.nix
]; ];
exports = {
services = {
sshd.enable = true;
};
};
network.networks = { network.networks = {
local = { local = {
slaac.postfix = "40c3:23df:e82a:b214"; slaac.postfix = "40c3:23df:e82a:b214";

View file

@ -9,7 +9,6 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
nginx = { nginx = {
enable = true; enable = true;
ports.proxied.enable = true; ports.proxied.enable = true;

View file

@ -9,7 +9,6 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
tailscale.enable = true; tailscale.enable = true;
nfs.enable = true; nfs.enable = true;
}; };

View file

@ -9,7 +9,6 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
nginx = { nginx = {
enable = true; enable = true;
ports.proxied.enable = true; ports.proxied.enable = true;

View file

@ -9,7 +9,6 @@ _: {
]; ];
exports = { exports = {
services = { services = {
sshd.enable = true;
nginx = { nginx = {
enable = true; enable = true;
ports.proxied.enable = true; ports.proxied.enable = true;
@ -20,8 +19,6 @@ _: {
grafana.enable = true; grafana.enable = true;
loki.enable = true; loki.enable = true;
prometheus.enable = true; prometheus.enable = true;
prometheus-exporters-node.enable = true;
promtail.enable = true;
}; };
}; };
} }