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 = {
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,
...
}: let
inherit (gensokyo-zone.lib) mapAlmostOptionDefaults mkAlmostOptionDefault;
inherit (gensokyo-zone.lib) mapListToAttrs mapAlmostOptionDefaults mkAlmostOptionDefault;
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 {
config.exports.services = {
prometheus = {config, ...}: {
@ -23,22 +42,6 @@ in {
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, ...}: {
id = mkAlmostOptionDefault "grafana";
nixos = {
@ -87,5 +90,5 @@ in {
protocol = "http";
};
};
};
} // exporters;
}

View file

@ -8,10 +8,10 @@
inherit (gensokyo-zone.lib) mkAlmostOptionDefault;
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.modules) mkIf mkMerge mkOptionDefault;
inherit (lib.attrsets) mapAttrsToList getAttrFromPath;
inherit (lib.attrsets) mapAttrsToList getAttrFromPath genAttrs;
inherit (lib.trivial) mapNullable;
inherit (lib.strings) concatStringsSep;
systemConfig = config;
cfg = config.exports;
portModule = {
config,
service,
@ -146,12 +146,15 @@
};
in {
options.exports = with lib.types; {
defaultServices = mkEnableOption "common base services" // {
default = config.type == "NixOS";
};
services = mkOption {
type = attrsOf (submoduleWith {
modules = [serviceModule];
specialArgs = {
machine = name;
inherit systemConfig;
systemConfig = config;
};
});
default = {};
@ -162,5 +165,14 @@ in {
modules = mkIf (config.type == "NixOS") [
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 = {
services = {
sshd.enable = true;
tailscale.enable = true;
minecraft-bedrock-server.enable = true;
};

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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