the-infra/flake.nix

152 lines
3.5 KiB
Nix
Raw Permalink Normal View History

2024-06-23 04:41:53 +00:00
{
description = "Bagel cooking infrastructure";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
terranix.url = "github:terranix/terranix";
2024-06-23 04:41:53 +00:00
2024-06-24 16:03:07 +00:00
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixpkgs";
2024-06-23 04:41:53 +00:00
colmena.url = "github:zhaofengli/colmena";
colmena.inputs.nixpkgs.follows = "nixpkgs";
2024-06-24 14:45:59 +00:00
hydra.url = "git+https://git.lix.systems/lix-project/hydra.git";
hydra.inputs.nixpkgs.follows = "nixpkgs";
2024-06-24 18:59:37 +00:00
nix-gerrit.url = "git+https://git.lix.systems/the-distro/nix-gerrit.git";
nix-gerrit.inputs.nixpkgs.follows = "nixpkgs";
2024-06-24 18:59:37 +00:00
lix.follows = "hydra/nix";
2024-06-23 04:41:53 +00:00
};
outputs = { self, nixpkgs, terranix, colmena, ... } @ inputs:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
localSystem = system;
overlays = [
inputs.hydra.overlays.default
inputs.lix.overlays.default
inputs.nix-gerrit.overlays.default
];
};
lib = pkgs.lib;
terraform = pkgs.opentofu;
terraformCfg = terranix.lib.terranixConfiguration {
inherit system;
2024-07-07 18:43:05 +00:00
modules = [
./terraform
{
2024-07-07 18:43:05 +00:00
bagel.gandi.enable = true;
bagel.hydra.enable = true;
}
];
};
in
{
apps.${system} = {
tf = {
type = "app";
program = toString (pkgs.writers.writeBash "tf" ''
set -eo pipefail
ln -snf ${terraformCfg} config.tf.json
exec ${lib.getExe terraform} "$@"
'');
};
2024-07-07 16:02:55 +00:00
default = self.apps.${system}.tf;
};
2024-07-05 09:43:53 +00:00
devShells.${system}.default = pkgs.mkShell {
packages = [
2024-07-05 09:43:53 +00:00
inputs.agenix.packages.${system}.agenix
inputs.colmena.packages.${system}.colmena
pkgs.opentofu
2024-07-05 09:43:53 +00:00
];
};
nixosConfigurations = (colmena.lib.makeHive self.outputs.colmena).nodes;
2024-06-23 04:41:53 +00:00
colmena = {
meta.nixpkgs = import nixpkgs {
localSystem = system;
2024-06-24 18:59:37 +00:00
overlays = [
inputs.hydra.overlays.default
inputs.lix.overlays.default
inputs.nix-gerrit.overlays.default
2024-06-24 18:59:37 +00:00
];
2024-06-23 04:41:53 +00:00
};
2024-06-24 14:45:59 +00:00
meta.specialArgs.inputs = inputs;
2024-06-23 04:41:53 +00:00
bagel-box = {
2024-06-24 14:45:59 +00:00
imports = [
2024-06-24 16:03:07 +00:00
inputs.agenix.nixosModules.default
2024-06-24 14:45:59 +00:00
inputs.hydra.nixosModules.hydra
./services
./common
2024-06-24 14:45:59 +00:00
./hosts/bagel-box
];
2024-06-23 04:41:53 +00:00
};
meta01 = {
imports = [
inputs.agenix.nixosModules.default
inputs.hydra.nixosModules.hydra
./services
./common
./hosts/meta01.nixpkgs.lahfa.xyz
];
};
gerrit01 = {
imports = [
inputs.agenix.nixosModules.default
inputs.hydra.nixosModules.hydra
./services
./common
./hosts/cl.forkos.org
];
};
fodwatch = {
imports = [
inputs.agenix.nixosModules.default
inputs.hydra.nixosModules.hydra
./services
./common
./hosts/fodwatch.forkos.org
];
};
2024-07-09 09:26:10 +00:00
wob-vpn-gw = {
imports = [
inputs.agenix.nixosModules.default
inputs.hydra.nixosModules.hydra
./services
./common
./hosts/wob-vpn-gw.forkos.org
];
};
2024-07-09 21:42:43 +00:00
} // (lib.listToAttrs (lib.genList (i: lib.nameValuePair "builder-${toString i}" {
imports = [
inputs.agenix.nixosModules.default
inputs.hydra.nixosModules.hydra
./services
./common
{
bagel.baremetal.builders = { enable = true; num = i; };
}
];
}) 12));
2024-06-23 04:41:53 +00:00
};
}