main
nix 66 lines 1.77 KB
Raw
1 {
2 inputs,
3 lib,
4 ...
5 }:
6 {
7 colmena.hosts = {
8 caliban = { };
9 umbriel = { };
10 staging-hydra.targetHost = "staging-hydra.nixos.org";
11
12 # ofborg
13 "core01.ofborg.org".targetHost = "core01.ofborg.org";
14 "eval01.ofborg.org".targetHost = "eval01.ofborg.org";
15 "eval02.ofborg.org".targetHost = "eval02.ofborg.org";
16 "eval03.ofborg.org".targetHost = "eval03.ofborg.org";
17 "eval04.ofborg.org".targetHost = "eval04.ofborg.org";
18 "build01.ofborg.org".targetHost = "build01.ofborg.org";
19 "build02.ofborg.org".targetHost = "build02.ofborg.org";
20 "build03.ofborg.org".targetHost = "build03.ofborg.org";
21 "build04.ofborg.org".targetHost = "build04.ofborg.org";
22 "build05.ofborg.org".targetHost = "build05.ofborg.org";
23 };
24 flake =
25 let
26 importConfig =
27 path:
28 (lib.mapAttrs (name: _value: import (path + "/${name}/default.nix")) (
29 lib.filterAttrs (_: v: v == "directory") (builtins.readDir path)
30 ));
31 in
32 {
33 nixosConfigurations = builtins.mapAttrs (
34 _name: value:
35 inputs.nixpkgs.lib.nixosSystem {
36 inherit lib;
37 system = "x86_64-linux";
38 specialArgs = {
39 inherit inputs;
40 };
41 modules = [
42 value
43 inputs.disko.nixosModules.disko
44 inputs.sops-nix.nixosModules.sops
45 ];
46 extraModules = [ inputs.colmena.nixosModules.deploymentOptions ];
47
48 }
49 ) (importConfig ./hosts);
50
51 };
52
53 perSystem =
54 { inputs', pkgs, ... }:
55 {
56 packages.encrypt-email = pkgs.callPackage ./packages/encrypt-email { };
57
58 devShells.non-critical-infra = pkgs.mkShellNoCC {
59 packages = [
60 inputs'.colmena.packages.colmena
61 pkgs.sops
62 pkgs.ssh-to-age
63 ];
64 };
65 };
66 }