108 lines
3.5 KiB
Nix
108 lines
3.5 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
nixos-exporter = {
|
|
url = "git+https://git.clerie.de/clerie/nixos-exporter.git";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
solid-xmpp-alarm = {
|
|
url = "git+https://git.clerie.de/clerie/solid-xmpp-alarm.git";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
outputs = { self, nixpkgs, nixos-exporter, solid-xmpp-alarm, ... }: let
|
|
pkgs = import nixpkgs {
|
|
overlays = [
|
|
(import ./pkgs/overlay.nix)
|
|
];
|
|
system = "x86_64-linux";
|
|
};
|
|
system = "x86_64-linux";
|
|
in {
|
|
nixosConfigurations = let
|
|
generateNixosSystem = name: nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules = [
|
|
({ ... }: {
|
|
/*
|
|
Make the contents of the flake availiable to modules.
|
|
Useful for having the monitoring server scraping the
|
|
target config from all other servers automatically.
|
|
*/
|
|
_module.args._nixfiles = self;
|
|
})
|
|
./configuration/common
|
|
({ ... }: {
|
|
nixpkgs.overlays = [
|
|
(_: _: {
|
|
inherit (nixos-exporter.packages.${system})
|
|
nixos-exporter;
|
|
})
|
|
];
|
|
})
|
|
solid-xmpp-alarm.nixosModules.solid-xmpp-alarm
|
|
(./hosts + "/${name}/configuration.nix")
|
|
];
|
|
};
|
|
in {
|
|
aluminium = generateNixosSystem "aluminium";
|
|
backup-4 = generateNixosSystem "backup-4";
|
|
beryllium = generateNixosSystem "beryllium";
|
|
carbon = generateNixosSystem "carbon";
|
|
clerie-backup = generateNixosSystem "clerie-backup";
|
|
dn42-il-gw1 = generateNixosSystem "dn42-il-gw1";
|
|
dn42-il-gw5 = generateNixosSystem "dn42-il-gw5";
|
|
dn42-il-gw6 = generateNixosSystem "dn42-il-gw6";
|
|
dn42-ildix-clerie = generateNixosSystem "dn42-ildix-clerie";
|
|
gatekeeper = generateNixosSystem "gatekeeper";
|
|
hydra-1 = generateNixosSystem "hydra-1";
|
|
hydra-2 = generateNixosSystem "hydra-2";
|
|
minecraft-2 = generateNixosSystem "minecraft-2";
|
|
monitoring-3 = generateNixosSystem "monitoring-3";
|
|
nonat = generateNixosSystem "nonat";
|
|
osmium = generateNixosSystem "osmium";
|
|
palladium = generateNixosSystem "palladium";
|
|
porter = generateNixosSystem "porter";
|
|
schule = generateNixosSystem "schule";
|
|
storage-2 = generateNixosSystem "storage-2";
|
|
web-2 = generateNixosSystem "web-2";
|
|
dn42-ildix-service = generateNixosSystem "dn42-ildix-service";
|
|
_iso = generateNixosSystem "_iso";
|
|
};
|
|
|
|
colmena = {
|
|
meta = {
|
|
nixpkgs = import nixpkgs {};
|
|
};
|
|
|
|
defaults = { name, ... }: {
|
|
deployment = {
|
|
targetHost = "${name}.net.clerie.de";
|
|
targetUser = null;
|
|
};
|
|
};
|
|
} // builtins.mapAttrs (name: host: {
|
|
nixpkgs.system = host.config.nixpkgs.system;
|
|
imports = host._module.args.modules;
|
|
deployment.allowLocalDeployment = builtins.any (n: n == name) [ "schule" "osmium" ];
|
|
}) self.nixosConfigurations;
|
|
packages.x86_64-linux = {
|
|
inherit (pkgs)
|
|
anycast_healthchecker
|
|
flask-excel
|
|
iot-data
|
|
pyexcel-xlsx
|
|
pyexcel-webio
|
|
uptimestatus
|
|
wetter;
|
|
};
|
|
|
|
hydraJobs = {
|
|
inherit (self)
|
|
packages;
|
|
nixosConfigurations = builtins.mapAttrs (name: host: host.config.system.build.toplevel) self.nixosConfigurations;
|
|
iso = self.nixosConfigurations._iso.config.system.build.isoImage;
|
|
};
|
|
};
|
|
}
|