103 lines
2.8 KiB
Nix
103 lines
2.8 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
|
|
nixos-generators = {
|
|
url = "github:nix-community/nixos-generators";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = { self, nixpkgs, nixos-generators, ... }@inputs: let
|
|
helper = (import ./helper.nix) inputs;
|
|
in {
|
|
hosts = {
|
|
hydra = {
|
|
site = "vs";
|
|
};
|
|
iperf = {
|
|
site = "vs";
|
|
};
|
|
jackett = {
|
|
site = "vs";
|
|
};
|
|
nitter = {
|
|
site = "vs";
|
|
};
|
|
nixos-coturn = {
|
|
site = "vs";
|
|
};
|
|
tor-relay = {
|
|
site = "vs";
|
|
};
|
|
web-public-2 = {
|
|
site = "vs";
|
|
};
|
|
};
|
|
|
|
generateColmenaHost = name: host: {
|
|
deployment = {
|
|
targetHost = "${name}.${host.site}.grzb.de";
|
|
targetUser = "colmena-deploy";
|
|
};
|
|
|
|
imports = [
|
|
./configuration/common
|
|
./configuration/proxmox-vm
|
|
./configuration/proxmox-vm/hardware-configuration.nix
|
|
./hosts/${name}
|
|
] ++ nixpkgs.lib.optional (builtins.pathExists ./hosts/${name}/secrets.nix) ./hosts/${name}/secrets.nix;
|
|
};
|
|
|
|
colmena = {
|
|
meta = {
|
|
nixpkgs = import nixpkgs {
|
|
system = "x86_64-linux";
|
|
};
|
|
};
|
|
} // builtins.mapAttrs (self.generateColmenaHost) self.hosts;
|
|
|
|
nixosConfigurations = nixpkgs.lib.mapAttrs (name: config: let
|
|
nodeNixpkgs = self.outputs.colmena.meta.nodeNixpkgs.${name} or self.outputs.colmena.meta.nixpkgs;
|
|
nodeNixos = import (nodeNixpkgs.path + "/nixos/lib/eval-config.nix");
|
|
in nodeNixos {
|
|
modules = [
|
|
#self.outputs.colmena.defaults
|
|
config
|
|
#inputs.colmena.nixosModules.deploymentOptions
|
|
{
|
|
_module.args.name = nixpkgs.lib.mkForce name;
|
|
_module.args.nodes = self.outputs.nixosConfigurations;
|
|
#nixpkgs.overlays = nixpkgs.lib.attrValues self.overlays;
|
|
}
|
|
];
|
|
inherit (nodeNixpkgs) system;
|
|
}
|
|
) (builtins.removeAttrs self.outputs.colmena ["meta" "defaults"]);
|
|
|
|
hydraJobs = {
|
|
nixosConfigurations = nixpkgs.lib.mapAttrs (_: config: config.config.system.build.toplevel) self.outputs.nixosConfigurations;
|
|
};
|
|
|
|
/*
|
|
nixosConfigurations = (builtins.mapAttrs (helper.mapToNixosConfigurations) self.hosts);
|
|
hydraJobs = {
|
|
nixConfigurations = helper.buildHosts self.nixosConfigurations;
|
|
};
|
|
*/
|
|
|
|
# Generate a base VM image for Proxmox with `nix build .#base-proxmox`
|
|
packages.x86_64-linux = {
|
|
base-proxmox = nixos-generators.nixosGenerate {
|
|
system = "x86_64-linux";
|
|
modules = [
|
|
./configuration/common
|
|
./configuration/nixos-generators
|
|
./configuration/proxmox-vm
|
|
];
|
|
format = "proxmox";
|
|
};
|
|
};
|
|
|
|
};
|
|
}
|