@cryptotaxi247 / infra / commits / 8b58adaf

ofborg: merge ofborg-infrastructure into this repo

The ofborg machines were maintained in a separate NixOS/ofborg-infrastructure repo that already consumed this one as a flake input for shared modules and ssh-keys. Keeping both repos in lockstep was a bit of a pain, so instead I moved the nixos code for the machines into this repo.

Jörg Thalheim committed Apr 13, 2026 at 09:25 UTC 8b58adaf8f770383b7dae74d83c836b523937732
88 files changed +4060 -2
.github/workflows/ci.yml
+54
@@ -75,6 +75,60 @@ jobs:
75 name: nixos-infra-dev
76 authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
77 - run: nix run --inputs-from . nixpkgs#nix-fast-build -- --skip-cached --no-nom --flake '.#nixosConfigurations."${{ matrix.machine }}".config.system.build.toplevel'
78 + # ofborg machines share most of their closure, so build all of one arch in a
79 + # single job to reuse the store between them.
80 + nixos-ofborg-x86_64:
81 + name: NixOS ofborg (x86_64)
82 + runs-on: ubuntu-latest
83 + steps:
84 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
85 + with:
86 + persist-credentials: false
87 + - uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31
88 + - uses: cachix/cachix-action@1eb2ef646ac0255473d23a5907ad7b04ce94065c # v17
89 + with:
90 + name: nixos-infra-dev
91 + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
92 + - run: nix run --inputs-from . nixpkgs#nix-fast-build -- --skip-cached --no-nom --flake '.#ciSystems.ofborg-x86_64-linux'
93 + nixos-ofborg-aarch64:
94 + name: NixOS ofborg (aarch64)
95 + runs-on: ubuntu-22.04-arm
96 + steps:
97 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
98 + with:
99 + persist-credentials: false
100 + - uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31
101 + - uses: cachix/cachix-action@1eb2ef646ac0255473d23a5907ad7b04ce94065c # v17
102 + with:
103 + name: nixos-infra-dev
104 + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
105 + - run: nix run --inputs-from . nixpkgs#nix-fast-build -- --skip-cached --no-nom --flake '.#ciSystems.ofborg-aarch64-linux'
106 + nix-darwin-ofborg:
107 + name: nix-darwin ofborg (aarch64)
108 + runs-on: macos-latest
109 + steps:
110 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
111 + with:
112 + persist-credentials: false
113 + - uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31
114 + - uses: cachix/cachix-action@1eb2ef646ac0255473d23a5907ad7b04ce94065c # v17
115 + with:
116 + name: nixos-infra-dev
117 + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
118 + - run: nix run --inputs-from . nixpkgs#nix-fast-build -- --skip-cached --no-nom --flake '.#ciSystems.ofborg-aarch64-darwin'
119 + nix-darwin-ofborg-x86_64:
120 + name: nix-darwin ofborg (x86_64)
121 + runs-on: macos-15-intel
122 + steps:
123 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
124 + with:
125 + persist-credentials: false
126 + - uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31
127 + - uses: cachix/cachix-action@1eb2ef646ac0255473d23a5907ad7b04ce94065c # v17
128 + with:
129 + name: nixos-infra-dev
130 + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
131 + - run: nix run --inputs-from . nixpkgs#nix-fast-build -- --skip-cached --no-nom --flake '.#ciSystems.ofborg-x86_64-darwin'
132 nix-darwin:
133 runs-on: macos-latest
134 strategy:
checks/flake-module.nix
+36 -1
@@ -1,5 +1,40 @@
1 -{ ... }:
1 +{ self, lib, ... }:
2 {
3 + # Group machine toplevels by architecture so CI can build all hosts of one
4 + # arch in a single nix-fast-build invocation (the ofborg fleet in particular
5 + # shares almost its entire closure). Hosts are listed explicitly to avoid
6 + # forcing evaluation of every configuration just to learn its system.
7 + flake.ciSystems =
8 + let
9 + nixos = names: lib.genAttrs names (n: self.nixosConfigurations.${n}.config.system.build.toplevel);
10 + darwin = names: lib.genAttrs names (n: self.darwinConfigurations.${n}.config.system.build.toplevel);
11 + in
12 + {
13 + ofborg-x86_64-linux = nixos [
14 + "core01.ofborg.org"
15 + "build01.ofborg.org"
16 + "build02.ofborg.org"
17 + "build03.ofborg.org"
18 + "build04.ofborg.org"
19 + ];
20 + ofborg-aarch64-linux = nixos [
21 + "eval01.ofborg.org"
22 + "eval02.ofborg.org"
23 + "eval03.ofborg.org"
24 + "eval04.ofborg.org"
25 + "build05.ofborg.org"
26 + ];
27 + ofborg-aarch64-darwin = darwin [
28 + "nixos-foundation-macstadium-44911207"
29 + "nixos-foundation-macstadium-44911104"
30 + ];
31 + ofborg-x86_64-darwin = darwin [
32 + "nixos-foundation-macstadium-44911305"
33 + "nixos-foundation-macstadium-44911362"
34 + "nixos-foundation-macstadium-44911507"
35 + ];
36 + };
37 +
38 perSystem =
39 { self', lib, ... }:
40 {
flake.lock
+38
@@ -524,6 +524,42 @@
524 "type": "github"
525 }
526 },
527 + "ofborg": {
528 + "inputs": {
529 + "nixpkgs": [
530 + "nixpkgs"
531 + ]
532 + },
533 + "locked": {
534 + "lastModified": 1775142351,
535 + "narHash": "sha256-HdnxJRJnPvlE4jqkivzd+zKVlsew4prfOz4cAkpkwyc=",
536 + "owner": "NixOS",
537 + "repo": "ofborg",
538 + "rev": "f5c1e00707d3ebd232d114b2732783d36a9dc17f",
539 + "type": "github"
540 + },
541 + "original": {
542 + "owner": "NixOS",
543 + "repo": "ofborg",
544 + "type": "github"
545 + }
546 + },
547 + "ofborg-viewer": {
548 + "flake": false,
549 + "locked": {
550 + "lastModified": 1736528671,
551 + "narHash": "sha256-g4BK1MP8LPBEesMdRavl6eqJcKPIQg6FWs4XSbzObq4=",
552 + "owner": "NixOS",
553 + "repo": "ofborg-viewer",
554 + "rev": "bb4ad97f2bd431e113698fce3a4a988f5d713019",
555 + "type": "github"
556 + },
557 + "original": {
558 + "owner": "NixOS",
559 + "repo": "ofborg-viewer",
560 + "type": "github"
561 + }
562 + },
563 "rfc39": {
564 "inputs": {
565 "nixpkgs": [
@@ -561,6 +597,8 @@
597 "nixpkgs": "nixpkgs",
598 "nixpkgs-swh": "nixpkgs-swh",
599 "nixpkgs-unstable": "nixpkgs-unstable",
600 + "ofborg": "ofborg",
601 + "ofborg-viewer": "ofborg-viewer",
602 "rfc39": "rfc39",
603 "simple-nixos-mailserver": "simple-nixos-mailserver",
604 "sops-nix": "sops-nix",
flake.nix
+11
@@ -106,6 +106,17 @@
106 url = "github:nix-community/nixpkgs-swh";
107 inputs.nixpkgs.follows = "nixpkgs";
108 };
109 +
110 + ofborg = {
111 + url = "github:NixOS/ofborg";
112 + inputs.nixpkgs.follows = "nixpkgs";
113 + };
114 +
115 + ofborg-viewer = {
116 + url = "github:NixOS/ofborg-viewer";
117 + flake = false;
118 + };
119 +
120 };
121 outputs =
122 inputs@{ flake-parts, ... }:
macs/.sops.yaml new
+58
@@ -0,0 +1,58 @@
1 +keys:
2 + - &hexa age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
3 + - &simon age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
4 + - &dasJ age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
5 + - &mic92 age17n64ahe3wesh8l8lj0zylf4nljdmqn28hvqns2g7hgm9mdkhlsvsjuvkxz
6 + - &mic92-mac age1nnm255ah9wa4gpsaq0v023a75lnmlcxszt9lc6az3mtwzxgrucfq45rp7h
7 + - &nixos-foundation-macstadium-44911305-ofborg-org age1x608lllmu7gdfjnn6c8mvmmguft5f22fu7g38wv3ckmzqy2usq0q5u2ekx
8 + - &nixos-foundation-macstadium-44911362-ofborg-org age1d0u5ukkwsf47x4jv6uklcc4j3ljnmyz879syya2qneagz0t42cqqyf09dt
9 + - &nixos-foundation-macstadium-44911507-ofborg-org age1s0m24l3s29jr345uxk5j8zq7kd4sln3rvf0pdtd6afum3smtxsyqtjra0z
10 + - &nixos-foundation-macstadium-44911207-ofborg-org age1f6u77gvh94fk5fdh53lp04nk87cvjmwy2q3hjdlhd83mhlp0jg0s7rupux
11 + - &nixos-foundation-macstadium-44911104-ofborg-org age14gkxeqaehj2m38sesnc6fyd4c3hqjt7tqjz6q7lrult3uaahxcysdxt67n
12 +
13 +creation_rules:
14 + - path_regex: secrets/nixos-foundation-macstadium-44911305.yml
15 + key_groups:
16 + - age:
17 + - *nixos-foundation-macstadium-44911305-ofborg-org
18 + - *hexa
19 + - *simon
20 + - *dasJ
21 + - *mic92
22 + - *mic92-mac
23 + - path_regex: secrets/nixos-foundation-macstadium-44911362.yml
24 + key_groups:
25 + - age:
26 + - *nixos-foundation-macstadium-44911362-ofborg-org
27 + - *hexa
28 + - *simon
29 + - *dasJ
30 + - *mic92
31 + - *mic92-mac
32 + - path_regex: secrets/nixos-foundation-macstadium-44911507.yml
33 + key_groups:
34 + - age:
35 + - *nixos-foundation-macstadium-44911507-ofborg-org
36 + - *hexa
37 + - *simon
38 + - *dasJ
39 + - *mic92
40 + - *mic92-mac
41 + - path_regex: secrets/nixos-foundation-macstadium-44911207.yml
42 + key_groups:
43 + - age:
44 + - *nixos-foundation-macstadium-44911207-ofborg-org
45 + - *hexa
46 + - *simon
47 + - *dasJ
48 + - *mic92
49 + - *mic92-mac
50 + - path_regex: secrets/nixos-foundation-macstadium-44911104.yml
51 + key_groups:
52 + - age:
53 + - *nixos-foundation-macstadium-44911104-ofborg-org
54 + - *hexa
55 + - *simon
56 + - *dasJ
57 + - *mic92
58 + - *mic92-mac
macs/flake-module.nix
+56 -1
@@ -42,5 +42,60 @@
42 # M2 8C, 24G, 1TB (Oakhost)
43 eager-heisenberg = mkNixDarwin "eager-heisenberg" ./profiles/m2.large.nix;
44 kind-lumiere = mkNixDarwin "kind-lumiere" ./profiles/m2.large.nix;
45 - };
45 + }
46 + // inputs.nixpkgs.lib.listToAttrs (
47 + map
48 + (cfg: {
49 + name = cfg.hostname;
50 + value = inputs.darwin.lib.darwinSystem {
51 + system = "${cfg.system}-darwin";
52 +
53 + specialArgs = {
54 + inherit inputs;
55 + };
56 +
57 + modules = [
58 + ./ofborg-common.nix
59 + ./profiles/${cfg.profile or "ofborg-${cfg.system}"}.nix
60 + "${inputs.sops-nix}/modules/nix-darwin"
61 + { networking.hostName = cfg.hostname; }
62 + ];
63 + };
64 + })
65 + [
66 + # MacStadium ofborg builders
67 + {
68 + hostname = "nixos-foundation-macstadium-44911305";
69 + system = "x86_64";
70 + ip = "208.83.1.173";
71 + # 12 CPU cores, 32 GB RAM, 500 GB disk
72 + }
73 + {
74 + hostname = "nixos-foundation-macstadium-44911362";
75 + system = "x86_64";
76 + ip = "208.83.1.175";
77 + # 12 CPU cores, 32 GB RAM, 500 GB disk
78 + }
79 + {
80 + hostname = "nixos-foundation-macstadium-44911507";
81 + system = "x86_64";
82 + ip = "208.83.1.186";
83 + # 12 CPU cores, 32 GB RAM, 500 GB disk
84 + }
85 + {
86 + hostname = "nixos-foundation-macstadium-44911207";
87 + system = "aarch64";
88 + profile = "ofborg-m1";
89 + ip = "208.83.1.145";
90 + # 8 CPU cores, 16 GB RAM, 256 GB disk
91 + }
92 + {
93 + hostname = "nixos-foundation-macstadium-44911104";
94 + system = "aarch64";
95 + profile = "ofborg-m1";
96 + ip = "208.83.1.181";
97 + # 8 CPU cores, 16 GB RAM, 256 GB disk
98 + }
99 + ]
100 + );
101 }
macs/mac-exec
+6
@@ -9,6 +9,12 @@ HOSTS=(
9 "customer@eager-heisenberg.mac.nixos.org"
10 "customer@kind-lumiere.mac.nixos.org"
11 "root@norwegian-blue.mac.nixos.org"
12 + # ofborg (MacStadium)
13 + "root@mac01.ofborg.org"
14 + "root@mac02.ofborg.org"
15 + "root@mac03.ofborg.org"
16 + "root@mac04.ofborg.org"
17 + "root@mac05.ofborg.org"
18 )
19 PIDS=()
20
macs/mac-update
+6
@@ -17,5 +17,11 @@ update hetzner@sweeping-filly.mac.nixos.org
17 update customer@eager-heisenberg.mac.nixos.org
18 update customer@kind-lumiere.mac.nixos.org
19 update root@norwegian-blue.mac.nixos.org
20 +# ofborg (MacStadium)
21 +update root@mac01.ofborg.org
22 +update root@mac02.ofborg.org
23 +update root@mac03.ofborg.org
24 +update root@mac04.ofborg.org
25 +update root@mac05.ofborg.org
26
27 wait "${PIDS[@]}"
macs/ofborg-ca/client-nixos-foundation-macstadium-44911104.crt new
+12
@@ -0,0 +1,12 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBrzCCAWGgAwIBAgIUW+L+r4Nl4TaYFRdwkVjhMNk2K7kwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDgzMTE0MTA0OVoYDzIwNzUwODE5MTQxMDQ5
5 +WjBmMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExQTA/BgNVBAMM
6 +OGh5ZHJhLXF1ZXVlLWJ1aWxkZXItbml4b3MtZm91bmRhdGlvbi1tYWNzdGFkaXVt
7 +LTQ0OTExMTA0MCowBQYDK2VwAyEAwg81We0emvtttglMSqZALqqHPQGkpM3j21+z
8 +ikmyM/6jQjBAMB0GA1UdDgQWBBS5ahdd+XKK/AI8jN7fdXWo6oYn0zAfBgNVHSME
9 +GDAWgBTTBAboHFMq1jCXLC7IPRpWv/WviDAFBgMrZXADQQAG5KMpDZ9Od7v42Qcx
10 +jpmEu9sSUB0XMzN0XYkIwIgRDK7jEmG1CbX19Vco1eBiA+MW+JFCmJP7JBM1lHx3
11 ++BwO
12 +-----END CERTIFICATE-----
macs/ofborg-ca/client-nixos-foundation-macstadium-44911207.crt new
+12
@@ -0,0 +1,12 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBrzCCAWGgAwIBAgIUW+L+r4Nl4TaYFRdwkVjhMNk2K7gwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDgzMTE0MTA0OVoYDzIwNzUwODE5MTQxMDQ5
5 +WjBmMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExQTA/BgNVBAMM
6 +OGh5ZHJhLXF1ZXVlLWJ1aWxkZXItbml4b3MtZm91bmRhdGlvbi1tYWNzdGFkaXVt
7 +LTQ0OTExMjA3MCowBQYDK2VwAyEAeyeFq3u3hksc07IGBITcq0/go+iD4+DriPSb
8 +yAq+/nyjQjBAMB0GA1UdDgQWBBS/UHOeRtG8+xozoDTcYxcMpVYjzzAfBgNVHSME
9 +GDAWgBTTBAboHFMq1jCXLC7IPRpWv/WviDAFBgMrZXADQQCFQNs1ZiKpnY60MdFn
10 +H7NaQ7Jis0n665CjKWFKIEFdr2C+UZovnzSZYfl9UqxGjb3udfUK/6Z4Rqbf6cGH
11 +SRAP
12 +-----END CERTIFICATE-----
macs/ofborg-ca/client-nixos-foundation-macstadium-44911305.crt new
+12
@@ -0,0 +1,12 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBrzCCAWGgAwIBAgIUW+L+r4Nl4TaYFRdwkVjhMNk2K7UwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDgzMTE0MTA0OVoYDzIwNzUwODE5MTQxMDQ5
5 +WjBmMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExQTA/BgNVBAMM
6 +OGh5ZHJhLXF1ZXVlLWJ1aWxkZXItbml4b3MtZm91bmRhdGlvbi1tYWNzdGFkaXVt
7 +LTQ0OTExMzA1MCowBQYDK2VwAyEAQ6HvVxrDKl8JIAli/QNz8Ot4zcR9biiQOcQI
8 +mZLgekGjQjBAMB0GA1UdDgQWBBTTHQ/eJCYE8KTgVfhRq0RQThpONDAfBgNVHSME
9 +GDAWgBTTBAboHFMq1jCXLC7IPRpWv/WviDAFBgMrZXADQQDuIgw6XDf2Bpg2dFGz
10 +0GvVRlIDbv6paOdZDKhPqKuZIvXgYK6xtXJyYkODtPgkLjTkIufyX79o7zwtJATP
11 +oAwH
12 +-----END CERTIFICATE-----
macs/ofborg-ca/client-nixos-foundation-macstadium-44911362.crt new
+12
@@ -0,0 +1,12 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBrzCCAWGgAwIBAgIUW+L+r4Nl4TaYFRdwkVjhMNk2K7YwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDgzMTE0MTA0OVoYDzIwNzUwODE5MTQxMDQ5
5 +WjBmMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExQTA/BgNVBAMM
6 +OGh5ZHJhLXF1ZXVlLWJ1aWxkZXItbml4b3MtZm91bmRhdGlvbi1tYWNzdGFkaXVt
7 +LTQ0OTExMzYyMCowBQYDK2VwAyEA70JtJD1NetW22ggjqF6LY8plCNn4jpMJm1Aa
8 +I0JoImOjQjBAMB0GA1UdDgQWBBQEVVeckjstcg3RWqa7G884FbpnvzAfBgNVHSME
9 +GDAWgBTTBAboHFMq1jCXLC7IPRpWv/WviDAFBgMrZXADQQBcdGmZ0e69HfUN8E/1
10 +sQfFeaqwzX5jc3RhHnjViLP4OUcqWnYeqAT+ELwaucOdkMp47SgJIaUn12FEG+i/
11 +oC4C
12 +-----END CERTIFICATE-----
macs/ofborg-ca/client-nixos-foundation-macstadium-44911507.crt new
+12
@@ -0,0 +1,12 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBrzCCAWGgAwIBAgIUW+L+r4Nl4TaYFRdwkVjhMNk2K7cwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDgzMTE0MTA0OVoYDzIwNzUwODE5MTQxMDQ5
5 +WjBmMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExQTA/BgNVBAMM
6 +OGh5ZHJhLXF1ZXVlLWJ1aWxkZXItbml4b3MtZm91bmRhdGlvbi1tYWNzdGFkaXVt
7 +LTQ0OTExNTA3MCowBQYDK2VwAyEAy7uGuWSpwuj249gR5+4Z0U9fFcQNQYXB8cGM
8 +SaNAK7mjQjBAMB0GA1UdDgQWBBQQPGitG4ehKYgnAVlV3yO7DlglZjAfBgNVHSME
9 +GDAWgBTTBAboHFMq1jCXLC7IPRpWv/WviDAFBgMrZXADQQAitINnRMRBXE/eAl5Y
10 +04zfMZKBo1Q81v7j4KtrylRfo/qWyotdm/9erqqoIqwyRjoGn2Sr7eKNvs7oo8Hx
11 +3t0M
12 +-----END CERTIFICATE-----
macs/ofborg-common.nix new
+79
@@ -0,0 +1,79 @@
1 +{
2 + config,
3 + pkgs,
4 + lib,
5 + ...
6 +}:
7 +{
8 + imports = [
9 + ./ofborg.nix
10 + ./ofborg-queue-builder.nix
11 + ];
12 +
13 + environment.systemPackages = [
14 + config.nix.package
15 + pkgs.nix-top
16 + ];
17 +
18 + system.stateVersion = 5;
19 + ids.gids.nixbld = 30000;
20 +
21 + programs = {
22 + zsh = {
23 + enable = true;
24 + enableCompletion = false;
25 + };
26 + bash = {
27 + enable = true;
28 + completion.enable = true;
29 + };
30 + };
31 +
32 + nix = {
33 + settings = {
34 + extra-experimental-features = [
35 + "nix-command"
36 + "flakes"
37 + ];
38 + max-silent-time = 7200; # 2h
39 + timeout = 43200; # 12h
40 + };
41 + gc = {
42 + automatic = true;
43 + interval = {
44 + # hourly at the 15th minute
45 + Minute = 15;
46 + };
47 + # ensure up to 125G free space every hour
48 + options = "--max-freed $(df -k /nix/store | awk 'NR==2 {available=$4; required=125*1024*1024; to_free=required-available; printf \"%.0d\", to_free*1024}')";
49 + };
50 + };
51 +
52 + # Manage user for ofborg, this enables creating/deleting users
53 + # depending on what modules are enabled.
54 + users = {
55 + users.ofborg.home = "/private/var/lib/ofborg";
56 + users.root = {
57 + # bash doesn't export /run/current-system/sw/bin to $PATH,
58 + # which we need for nix-store
59 + shell = "/bin/zsh";
60 + # Not part of the infra team
61 + openssh.authorizedKeys.keys = (import ../keys.nix).ssh.groups.infra ++ [
62 + # Not part of the infra team
63 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM35Bq87SBWrEcoDqrZFOXyAmV/PJrSSu3hl3TdVvo4C janne"
64 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPK/3rYhlIzoPCsPK38PMdK1ivqPaJgUqWwRtmxdKZrO ✏️"
65 + ];
66 + };
67 + };
68 +
69 + system.activationScripts.postActivation.text = ''
70 + printf "disabling spotlight indexing... "
71 + mdutil -i off -d / &> /dev/null
72 + mdutil -E / &> /dev/null
73 + echo "ok"
74 + '';
75 +
76 + services.prometheus.exporters.node.enable = true;
77 + # https://github.com/LnL7/nix-darwin/issues/1256
78 + users.users._prometheus-node-exporter.home = lib.mkForce "/private/var/lib/prometheus-node-exporter";
79 +}
macs/ofborg-queue-builder.nix new
+28
@@ -0,0 +1,28 @@
1 +{
2 + config,
3 + inputs,
4 + ...
5 +}:
6 +
7 +{
8 + imports = [
9 + inputs.hydra-staging.darwinModules.builder
10 + ];
11 +
12 + services.hydra-queue-builder-dev = {
13 + enable = true;
14 + queueRunnerAddr = "https://queue-runner.staging-hydra.nixos.org";
15 + maxJobs = 2;
16 + mtls = {
17 + serverRootCaCertPath = ../non-critical-infra/hosts/staging-hydra/ca.crt;
18 + clientCertPath = "${./ofborg-ca/client-${config.networking.hostName}.crt}";
19 + clientKeyPath = config.sops.secrets."queue-runner-client.key".path;
20 + domainName = "queue-runner.staging-hydra.nixos.org";
21 + };
22 + };
23 +
24 + sops.secrets."queue-runner-client.key" = {
25 + owner = "hydra-queue-builder";
26 + sopsFile = ./secrets/${config.networking.hostName}.yml;
27 + };
28 +}
macs/ofborg.nix new
+29
@@ -0,0 +1,29 @@
1 +{
2 + config,
3 + inputs,
4 + pkgs,
5 + ...
6 +}:
7 +
8 +{
9 + imports = [
10 + ../non-critical-infra/modules/ofborg/ofborg-config.nix
11 + ];
12 +
13 + services.ofborg = {
14 + enable = true;
15 + package = pkgs.ofborg;
16 + configFile = "/etc/ofborg.json";
17 + };
18 +
19 + nixpkgs.overlays = [
20 + (_self: super: {
21 + ofborg = inputs.ofborg.packages.${super.stdenv.hostPlatform.system}.pkg;
22 + })
23 + ];
24 +
25 + sops.secrets."ofborg/builder-rabbitmq-password" = {
26 + owner = "ofborg";
27 + sopsFile = ./secrets/${config.networking.hostName}.yml;
28 + };
29 +}
macs/profiles/ofborg-m1.nix new
+8
@@ -0,0 +1,8 @@
1 +{
2 + # 8 Cores, 16 GB RAM, 256 GB Disk
3 + # split into 4 jobs with 2C/4G
4 + nix.settings = {
5 + cores = 2;
6 + max-jobs = 4;
7 + };
8 +}
macs/profiles/ofborg-x86_64.nix new
+8
@@ -0,0 +1,8 @@
1 +{
2 + # 12 Cores, 32GB RAM, 1 TB Disk
3 + # split into 4 jobs with 3C/8G
4 + nix.settings = {
5 + cores = 3;
6 + max-jobs = 4;
7 + };
8 +}
macs/secrets/nixos-foundation-macstadium-44911104.yml new
+63
@@ -0,0 +1,63 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:TNzUCf83Bu6FxoXLbjWjcKGvPPJePRY6IGcPNfRKMPGcyShRyZC3Tw+fGfPXZCZjK08=,iv:mII0yPL75KlZ+t8+pCCE70pKVufXYO8C7ExGNLd0qfY=,tag:x0NLpX6KNBEjZzxumTs2QQ==,type:str]
3 +queue-runner-client.key: ENC[AES256_GCM,data:gpDEcEtSZARUHnv1cuH8NrmWOAMuxN/oTS5gxXBNUg4Y5RRttGnpu7SxTQtim5aD/yYDiw7W9gdQujSWNMTbqRPv4iwWwDjMecObPGbkRRd1vhSG3or2VItvahzvU3H7pl8B9UfOz8rYNz/4psV7OXD6yRksD/E=,iv:aWQG160Du+YMSstFibT1LlR/ttP4xZznDYhjNKGPnqY=,tag:OSvpvrXz3np8SuNmSWTIrw==,type:str]
4 +sops:
5 + age:
6 + - recipient: age14gkxeqaehj2m38sesnc6fyd4c3hqjt7tqjz6q7lrult3uaahxcysdxt67n
7 + enc: |
8 + -----BEGIN AGE ENCRYPTED FILE-----
9 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFT1FRa1p1WkxRQ1VwWCti
10 + MS9qZHdSMTdKajNwQmhGWlhxTVFTZDNxS1RrCkl3KytxTnBzYWtCeWtCSmZ3TG1o
11 + dThaNTRFUjNLWTFzelQ3L3R2Q29VNzQKLS0tIDM4dEZOZmxuSmVBNlVEenkzNTNh
12 + bU5JZkNoaEY4TjE1bFhxZTB0b1NkODQKp/7Pq3nHqqywVc6KyRaNgRJYS+kvCQ+2
13 + g7CjJxnRrAsf9zamKbJIBFPRjqwXX48GigVnly5s/lW2+nT3Gu4m5A==
14 + -----END AGE ENCRYPTED FILE-----
15 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
16 + enc: |
17 + -----BEGIN AGE ENCRYPTED FILE-----
18 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4a3VpbmZiRnR5U3FSU0dO
19 + c1VaWWNVa3VRWXBFb28zaCtrb2MxMm04N0Z3CjdYSGRGa0RHWUlhVWZXcDBvRGVn
20 + K3Zaak43Z2tGR0FFVi9nN3BqMXpVQUEKLS0tIHBHTDdzTVRoU1VRdi9BUW1tWnRL
21 + ZjdvNFJVTlI0VmNXK3AwMlhIc2V3a1EKdTneIVCqt0b5wfGIar+A32pqezcn+J3r
22 + +rqhD7k5oW1gus7Fi9JI/fkLjJW1ak9S/kmOpwSNoYmC+EJrPepg8A==
23 + -----END AGE ENCRYPTED FILE-----
24 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
25 + enc: |
26 + -----BEGIN AGE ENCRYPTED FILE-----
27 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpaU5EakpaaGVCTitucDhz
28 + enowMUhyc1EzQ0dCcUtIRU1Bclk2T25ZbkJJCjlJQS81MlEyVnM3Q0xNWlczVXRB
29 + K05iOFdqNEc0dFdDblliRHVCbWtXZ28KLS0tIEhPR0lkeUtOMlNiMVZpcDlzcS91
30 + QXhGZmFPQzVrSlNwamJQUXNEWk1DOUEKpt/RBqQ/WJYtPM7/7hS0RdHtWFaCcrEP
31 + YWkaqPePY+jK85d/+0kW3CTGSefOJ119qKgG77l/kcQGtP6OsJKm6Q==
32 + -----END AGE ENCRYPTED FILE-----
33 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
34 + enc: |
35 + -----BEGIN AGE ENCRYPTED FILE-----
36 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFeU1KNVF3VUtiYWNwQWt4
37 + ZHFzUi9PcFRpa1dOTjllZUczaGNUaXBDdGlBCkVkUDhvTTBnSDAyWmdmUndTVlla
38 + N0cwckwwVWE3Yys0amNCTTJUMmtBR0EKLS0tIFFUV0R3T2RDaENtalFpYWFDYm5O
39 + cEdZbjFYUXlrWmxXcSsyRVlrcmR2d1kKYld95q8VvDPDbtAFT6d58HT/q0nSYA0Q
40 + PRylkunDAXS+5HjPxECZNVcX85eHyr+mFI/ju6enMVLkXqH87R3WkQ==
41 + -----END AGE ENCRYPTED FILE-----
42 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
43 + enc: |
44 + -----BEGIN AGE ENCRYPTED FILE-----
45 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3WjQ1NzZEdU52OXBkK3kw
46 + TTI4am9OS1l4SC9meWpKYmZ6RTlzQkd4Tm1VCkYvUXFDOVJzazFsejNlZ3diTXZG
47 + ZE9VMnFkVm5SMWw0L3RSQVhjdG51Nk0KLS0tIHdRci9MS0dRcS9zTCtxSEVBdThk
48 + UFZlcGFaVm9ITE9NQSt2RGRsN0gwdWsKZMYNlfUgZUfYxxzUkPptVM25zbGRMT/7
49 + SVpwY5X1oZBfD4DjnTtTt99Ld8ayje7hfBH+H20AIRbCKTh/qmj7/g==
50 + -----END AGE ENCRYPTED FILE-----
51 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
52 + enc: |
53 + -----BEGIN AGE ENCRYPTED FILE-----
54 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNM1FaQTVMKzRhVm5yaUlP
55 + cFhpa05vLy93dTZpakhiMGw0WWtYbjV5T2pnCjZ1NGJGd0FxQlhKOTF1bVkxMmE2
56 + MHlDRlpkeWdUZ0p2YXVVS1owbGdFYjQKLS0tIG5vV08rQ0xUbzVob3pibzdOOWFH
57 + UHh5aTJxejFIand6aVZwdHVxL2R6KzgKUO9lByaF3qwAK5V9gVEFOiTfTS14dYVt
58 + VqE2s5GjDI9hRCDeeDdzjdL3y4AYKlobk9JQmL5cD4IngtL0DkoAVg==
59 + -----END AGE ENCRYPTED FILE-----
60 + lastmodified: "2025-08-31T15:04:36Z"
61 + mac: ENC[AES256_GCM,data:TjaB9/dPyn475bNxqLjm0UBNYPG7/iIJOWK1UUJF/jQun1jSw5faMSiaLhlfexHF1gal+WCUGcFUyslXX90kAB+GD4G0YWdze7tmjTZCtMers+Xw/WWQ7OKzFsZIj3Z8HCvVOlYCqlGRZ7/cZkjC2N7vT1M6CXuH2S7U8MDhBn4=,iv:u+VjOO4ketXDMku6HCVW2VphWRF4XsHoTRfaHVmt6F0=,tag:N95UaNh7a88aU5cnl1tdDQ==,type:str]
62 + unencrypted_suffix: _unencrypted
63 + version: 3.10.2
macs/secrets/nixos-foundation-macstadium-44911207.yml new
+63
@@ -0,0 +1,63 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:tK1jDNt1X3f/o9bJ0iFHLtxQa5z6V77ohmhnd82BDlpRZva2Y65vHuvSL9bRmVnGUvI=,iv:rHvNCmujJd3WK6mwx1heRBFgnLlokCvtOPD/BESUxkA=,tag:AWjfYJcLBiT5v8T7C2edPg==,type:str]
3 +queue-runner-client.key: ENC[AES256_GCM,data:B17aFR6BGeJaZXhmZr8WhKeu6VEbWTiKs+ZprwlJZkH2w9y6Ve5c4liLwpe9E0J1ELyhL0o3AnnTIo/42d9KpD9Cb+k4y6XAzj8UyPvQlMxN5+3ZKjpdkhEj/jFH3z/OXBgh7fEvrbjeNsAR67MCr7U8j02cPIo=,iv:fKx1Y4H/SCZQIW0bLP3gwHVx/ae1kPgZgUXtfMgNdT0=,tag:0Zlc1qHr7aUECHp9lK/vEw==,type:str]
4 +sops:
5 + age:
6 + - recipient: age1f6u77gvh94fk5fdh53lp04nk87cvjmwy2q3hjdlhd83mhlp0jg0s7rupux
7 + enc: |
8 + -----BEGIN AGE ENCRYPTED FILE-----
9 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCRW9XMXZxZlZPbW8ya0Ix
10 + Umt1RjFsTHdrQUx3M1YyUG1zb2pmeVRRcTFrClFNNEFVS1lrL0luUjZNaFp3VmJs
11 + cGxyMmN1N2gyMVRwU0VmbDVqLzNNS28KLS0tIGUxeE1RQmlSMTVKY2hVUVFsbnhV
12 + YytLL1hVTFJZZWlKaCs0a2J4RXE0N1EK5u7iNulm1XDEdbwtbtIQz71/DYiE4f1A
13 + 0KteNJQvG61ko07U/Zoxap4Vgxrvxos3pbWy2VcAbL3r35KgBzzO3A==
14 + -----END AGE ENCRYPTED FILE-----
15 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
16 + enc: |
17 + -----BEGIN AGE ENCRYPTED FILE-----
18 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2aE92MXZjb3A0b0VtSG9o
19 + WUNwcEpFYzJCdE1BQU9xSzh6Q1o2TEF1L1RVCmg0enVlOUsydGh2dXdmbkQrblZo
20 + M1JQOFpEbGNoTXRuQ2pWaHAyQ2twUkEKLS0tIHhERUdwdUEvQXBIS2V0YThnU0di
21 + L2lrVDBwTjhHSFljZys4cXJLMks1ZmsK7PvI+nD3dvzFzj2WdUVZWRWeaBS5nKRE
22 + scE2HzwrvRPyfYxLgTnm0gQB24akX6B75YP1MpIZpJ+Mhao83iJpSw==
23 + -----END AGE ENCRYPTED FILE-----
24 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
25 + enc: |
26 + -----BEGIN AGE ENCRYPTED FILE-----
27 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtd3o3S01DWllwQVpJRTBV
28 + VnFvUHc5eEdEcjlvbHZFK29PdndqaVRqb1VRCklyMWpCc0RXelNiUU9aeStqbWZj
29 + YktienMyL2x1ZFJ1WGhGZWwvVmpTTkkKLS0tIHVrK3RkQUxPaHdNanh5Sy9XMWhO
30 + SGxsb1RrakR1WFlZM2tXUHJwK1FVeWcKbm1qMcVGjCzVWPtoo0WUy7cfjxGK8JQm
31 + ckNGQQVgXjaWKO15qRgcqWnmCLDckv/dwsBIuBrwwN+B0uFOaWsnKg==
32 + -----END AGE ENCRYPTED FILE-----
33 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
34 + enc: |
35 + -----BEGIN AGE ENCRYPTED FILE-----
36 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTQlhUZ1lIRkQrTXU4Umxq
37 + Wi9pZmdZV1NzaXFNZGhuT08vY3dBUE1CTFNvCnloZllOZ3ViMjNOQTQvTGY0emU2
38 + MWpQZ1ZoZTJwZUhsSHF1TDQvSHV0R2MKLS0tIGFUMXNRMnprRmlqYm1qSVhLSExn
39 + WDJLRzRGMHJhYUIzRGptVnlRVTJxT28KOXZoTt5hAplGcQVXcOii6kgqf6iHMrPi
40 + wURFQPnTHZRrnqENltVG0cQufzToYyHd4rlm9ewgzES2/nBq96oB+A==
41 + -----END AGE ENCRYPTED FILE-----
42 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
43 + enc: |
44 + -----BEGIN AGE ENCRYPTED FILE-----
45 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2S0p6RE53UTdmVTdLbjBT
46 + TzVicXovdmlHUFJhczFQMkFGdE1VSWpFMVJVCmx4SkJPOFNLZjFycFZWYlB5WXpy
47 + RmhtajhJMkJidVFabGRMakl4bkEvOFkKLS0tIFRLOCtzRnRQM1FEelAyZ0xCbVN2
48 + SkdYT3NycktzWDU0R2xLeGVtaEhqUnMKiWA/CPYZrhrgKMtOYWS38+cBmgoPQ8o/
49 + 7qvXqciFPr3TCxTidPG42VViQT6SzD2ursZx02h167Z0GA6+0p0Elg==
50 + -----END AGE ENCRYPTED FILE-----
51 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
52 + enc: |
53 + -----BEGIN AGE ENCRYPTED FILE-----
54 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxNUZKUnNWWjZva1dRR21h
55 + TTZPVyt6cjdsbkFQbVhhNFlveHp6WTFhWHhNCkZLeXkzeFhMZWFhVFNiSm13Z0hJ
56 + WTIwRDdWV1JnSVlQNTl3TENsZktld00KLS0tIERrTXpsTXZyQWtVam1FMUdDYWJK
57 + VnRRT1ZHeHVZOCtBb0p4MkNXQjhzbWMK+WLYiDuhpOHTpHFjmdMGipmxtiTh/6ls
58 + lzC8CEN2682xNxYkAVnyqLHKFR5lEDHpDoDwvNk0jTn8Fj3d4odCZw==
59 + -----END AGE ENCRYPTED FILE-----
60 + lastmodified: "2025-08-31T15:04:59Z"
61 + mac: ENC[AES256_GCM,data:yE2/xv0LltDZBaD2gI3I+L09cG8/czVgXGDdDZt12dAzzsMsY3CKlss/3K4zD/G1p2Afdp85ZNzxbbUvcpShT35L/XWAviLrP6PqV1YYAromFb03G4nBpOyOlpXWmjPP7JBo2oGK1yg5hjMwomLd7vb2OaBtXQ0EZ2X+i4vmC68=,iv:YTiZDnLON9nS63vGYj3w+Dsw4CCsd/C31B9A/EhQeTc=,tag:zGZ997oabhCg0PqRa+J9WA==,type:str]
62 + unencrypted_suffix: _unencrypted
63 + version: 3.10.2
macs/secrets/nixos-foundation-macstadium-44911305.yml new
+63
@@ -0,0 +1,63 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:LopQz4a7gvobT1l6DvWmyCK1oOzBeYUbZobS5akNAwCsR+TtpkyskNwXUHryyPB92ag=,iv:dFxyhuDgQg7JWtpIIAc0PthhCzEfgY/D3HAzS0l9euA=,tag:mJOAr44Ax1TdA3t/gTzyhQ==,type:str]
3 +queue-runner-client.key: ENC[AES256_GCM,data:SzIMMeauP8SjTXYob9WL+ARUMZh89luhlt5vQoyrQwqoCPUV7Nw+9t7uRxBuDmGAPWxCw/rt0faYRc+6GdqKDIuK+hiiGcjGTWFiakxCSS0jcewtDv+iaxr7ZqJVtmiz788yZvg+3DQ1jPZUTBmxd+Hl2scfb8k=,iv:tFRD6oP4x54WqDazJTC7TeG87MDXwvJtutqoj4IE9LM=,tag:k2ICj2TdWbZ6gT93vAjOTA==,type:str]
4 +sops:
5 + age:
6 + - recipient: age1x608lllmu7gdfjnn6c8mvmmguft5f22fu7g38wv3ckmzqy2usq0q5u2ekx
7 + enc: |
8 + -----BEGIN AGE ENCRYPTED FILE-----
9 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkT01WTjNVM2RZQ2hCdm5B
10 + djMzaTRwZjFYbUJnVnhCRTBKbXJlblM3ZkdRCnVnbXREZVExakdaZk1TaitLcU9Z
11 + V05wcjZJRGdDSlA1WDdPbGY2RXBFY1EKLS0tIE1kbmQ3OXFZdHp0bjlEUldYTE1s
12 + VFdQK1hoTXZDRU1TV1dkMi9mUXVqZncKe9iTJkHCmfzGen+hm8F0FHIq0OW3UyAX
13 + eGz9UAwPDH7Y6N/gCpB0ZzMvDljQxYdM7sVtrumq7lAXEoirsqAZMQ==
14 + -----END AGE ENCRYPTED FILE-----
15 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
16 + enc: |
17 + -----BEGIN AGE ENCRYPTED FILE-----
18 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGZHVMcDV0MnlyaE9VSzBk
19 + WTBIeWZKNFpTTWltRjFYZU9KWVBUOHVRamcwCllMdWpRYVZFKzY4TUI4cWRaNW8r
20 + TTJLai9rbUhFR3d0cEFNVHEvM3c2eEUKLS0tIExaT1NOVDhBTHlRendUNnBhU2dn
21 + dkpzbjB3MGh1bk9qNnEwc0hhYTNKa00KQdxuzlXDnfUyw1ipjNz0rNVJ5kIbO/ya
22 + oGebUaxTphLG4QFq3vw5N4AeXBcbUcfX3hjUKYiM7HYSBz7CyxckVw==
23 + -----END AGE ENCRYPTED FILE-----
24 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
25 + enc: |
26 + -----BEGIN AGE ENCRYPTED FILE-----
27 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvYVVpNFNIbjZ4L0MwQUc0
28 + NHIxS3NvYTJLTUU4K0lxenRkaUZ0VWk1NkFBCm9wWDdOTjVMYk54dnRrbHdzUUFN
29 + VFFZYmM1YW1CcVpwbm1uNnNYaEk4YUEKLS0tIEZQYU9iSlhLZWl1Rk80aEtCVEpR
30 + UjRIR2ZPOGxKMzZoOVp5TXdHNExWZ3cKY6CWwoeEBLT8H7b0TVhQtxW0H9P/pKAn
31 + OKqS4U2g+bTwQRCJ8h7b/eTdJM3lAXqxkLz/A6kBcFCKj0oZqIeiPw==
32 + -----END AGE ENCRYPTED FILE-----
33 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
34 + enc: |
35 + -----BEGIN AGE ENCRYPTED FILE-----
36 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRSlJKMUtaTFRqNFhkbnVD
37 + Y3hURnJwTU5zb3cwTW5yUUdqbk1NSGlkN0M4Cml3aWFGNSt0Z01MZU9DT2RKaU04
38 + Ukx0MXQ1cXMyL29EaUNHZTVhRDdKM2MKLS0tIE9DRG5ZRWNXNHRCRmUwUDRVMnc0
39 + VFRVODRGTzRCWkl0cHgyTFArU3h3ZkkKpRRtPMl3VDgEBUDYrm9pShCEF99kPdQh
40 + 6dS32a/FK/OP0qXaQyCLZ6JlBwutu2fy/ohyfQ6TVaskLfwidQxvyg==
41 + -----END AGE ENCRYPTED FILE-----
42 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
43 + enc: |
44 + -----BEGIN AGE ENCRYPTED FILE-----
45 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3dnZOK2hsZDg1RGlwRkYy
46 + ZUNKb2p0YW8ySzJ1cjBrbmVGR3ZueEdlYVZRCkhrQmxHSVBMRzdpUkZjYk14bURl
47 + V0U3bzBsRUFiSmUwU0NFaFRBakZTR2sKLS0tIHNwVzRnZXN6VVdnMXg1Zm5jM0hU
48 + Q0hDbmlEM1pheHNyYTlLOTNHM3A0cmMKvMQrYkuHbaZkRNuN0gJKojFn112yOWlV
49 + ZsC7+A6jcYFJBPtO3k3Y+XeUa5WD/TuBt7Pa+oiGZ2gx1/igVPzH8A==
50 + -----END AGE ENCRYPTED FILE-----
51 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
52 + enc: |
53 + -----BEGIN AGE ENCRYPTED FILE-----
54 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOem9jZCtSVnYweVNoWklj
55 + dzF3RzQ1UFpXcmJYUEtwbHJEeGJsVm1kNEdBCkZaUHhqTnRnR0UwMjVCWW5WWlY4
56 + VzZTUjhhUlpuZUdXUGZJd1NVb3FZRzAKLS0tIFhoRkpta1hnQ0xFR1NMU1hFdmR2
57 + c0gwRXk0Yk5zZUk2aDNaVjJQaXZXYlEKB/82tEb40KykfgZ58gux0CMtxRbz4hst
58 + Av6Jx/hjpl7HLKrlz7x9M868iZMWvIYBb/O0CecS3X/P4p+l8rzyow==
59 + -----END AGE ENCRYPTED FILE-----
60 + lastmodified: "2025-08-31T15:05:41Z"
61 + mac: ENC[AES256_GCM,data:NfkyYoZXDQKrPLKEn9cD3wydkoW7DA4i9QE+9/SaUuiR2hHYip9pS1LXxgpzIr2EL3WPR61NdcEMc4+p1IDykbsmh+MqkwuOf4bgwboJJKtlk7R+/bH5OTLVrM8jUcgwW94z/63whRKvqZV4lf6tSWEouzt8YB3ukWAMKUx9DqQ=,iv:g8iPucegVJ2aYOZkYHDvh7OExJ8Vwdveq7v1TNUf4tk=,tag:t1qy7CvUAPkfF3ZOXpRs7Q==,type:str]
62 + unencrypted_suffix: _unencrypted
63 + version: 3.10.2
macs/secrets/nixos-foundation-macstadium-44911362.yml new
+63
@@ -0,0 +1,63 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:YvpvZfSJcVx1iPBi6am3QXAeW70D4DSkHO/kf+eOpK9o+9dSjUg/FGcxc36Z7uV4AFo=,iv:tgFmPSvnB7Z4l1Mllef1G8Fiy02FacvtWLdh5CmTyfY=,tag:Llvp+9x2l+G/PT15AE/WWA==,type:str]
3 +queue-runner-client.key: ENC[AES256_GCM,data:nlR533Docz60HEU0ooGtK3pwcEevnhDUmsRR5TJvd8lMPvCS733B++UptjsFOD3qWXt1HRJJBzscJHwIfwfXDmXPv3XCY3QG83g6dfKMhMF1QyqBYuKKmMBUkhua53GJqYRcogdhj5Uc4cbC2L3qSyXBG3NAuqE=,iv:K+SgPkL1QiFvmB4eMR01x/zjM6U5zyDncntdZbhAJnI=,tag:3XDV6eYkl8GOPaIIXeyG9Q==,type:str]
4 +sops:
5 + age:
6 + - recipient: age1d0u5ukkwsf47x4jv6uklcc4j3ljnmyz879syya2qneagz0t42cqqyf09dt
7 + enc: |
8 + -----BEGIN AGE ENCRYPTED FILE-----
9 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwWGRHeFVGYUZ2YWxiYW9Z
10 + OGpSQ2VteExwZm4wMXVvMVdMc3N6VVpUNzJRCmNNUmVqcTJhbUFrU1h4WnNOSUQ4
11 + dWFDRzg3NG55c0xXQk93bVlRUjdJclkKLS0tIGdvWUFTSkxCZTlJTnI0YzJEeXRF
12 + ZUNIYXQvUGlqRWpGMHVtN0hxTHJwbEUKsXuzBa7u15cM/DrIeQ2gfXwUktovxGjB
13 + 6V6yPZbeA5v7yA+0GG89UH67tmArh/mF0l2z/UJRZDgw7Z+Gh0RGHQ==
14 + -----END AGE ENCRYPTED FILE-----
15 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
16 + enc: |
17 + -----BEGIN AGE ENCRYPTED FILE-----
18 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYUWs4VFFIM05XM0txd0cv
19 + YTV4RHZ3Tjl4TXptdVpyUVkvaHFjU1V5TTAwClVWclZEKytaSTJrcUhoaXBUekd1
20 + V2xaYUZUcmFseHNPb1ZJYXM0Q0ZkM1UKLS0tIE9tcVJkRmJLUnlybTlhK243NXB6
21 + Sk5QcVVaejB6TDFtV0pDVUpkRGNkMUUKF8sEATa7mRbeti4WJFXVYiiAryPSO3Gw
22 + ViIhsYVg7M4t8/11AJZ2edJayTWaSrPwMxPWLrc3A2w7pRDtK1LoAw==
23 + -----END AGE ENCRYPTED FILE-----
24 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
25 + enc: |
26 + -----BEGIN AGE ENCRYPTED FILE-----
27 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNaHJqcmtzSEQvQTdzZFNG
28 + b2pLSXBwa2UrRU9NZnlySmkyc0crRnVFRlRBCnl4VFNLRnIwTnJjZ2NoZkJvdXJ1
29 + ZGJEbitra0o4WmJaeG9aaFkzdTZIUUEKLS0tIHhMOE0vaS9IWFBvcFpKYytrVkpj
30 + TU1LcWJIZGhKOHhjVmczTEZiREhaT28KPFIui3jqceI8SNqSGhvC4XFmsq3vbiPp
31 + fr44yKqTaWdHBgX4wXHuyp1FYCpunCfDDw2aYfN3rSlhey3+5ky0ng==
32 + -----END AGE ENCRYPTED FILE-----
33 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
34 + enc: |
35 + -----BEGIN AGE ENCRYPTED FILE-----
36 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1N1piTmhrbWVTR3RvbnZa
37 + Q2FlRUtzM1FWZ203a2QzTk8zSEYxc05BWEE0CllQbEZTeDRnVXh3cmpPRUpIVTRM
38 + YW9lTTV1YzFVdjg5anBxTWVObC9wbHMKLS0tIFZ3ZGhpV0ZPNG9GTDJadEpLY3Jw
39 + b0V1NFo2ZUR5SmJyOTRHUGVON2M3dWcKa1BUdWY9/Xtvk56ZonN7X6jfZHzYwTE/
40 + xgtcuRPJF05vuN/n/uCKu9OtU/Lb0A5m9OaN9JQE3kdzeyHoe9Ic8A==
41 + -----END AGE ENCRYPTED FILE-----
42 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
43 + enc: |
44 + -----BEGIN AGE ENCRYPTED FILE-----
45 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDRjJSM3lWNGJXdmM3a1Ew
46 + K004cjNocFlwQUpmTU96aWpnMDJjMEowS0RFCm1Wc0gzZVo0alJxcU9DNW5BOXdO
47 + eFZZSzRjNHRtUGV5YytwZUVuNlVZN2cKLS0tIFhWRjk0Z0N6MG1KaVp5ZjF2a21i
48 + V2dNWUwvYTJzcUZWMEkxZkRGMHcrZFUKCwMWyULhYFDBstatQh4CSZrZ0/4gwthW
49 + iYOML3bf12sZf1wFfM+199XXkkFZHHYzazhVX+3578w6cz/wAt65Lg==
50 + -----END AGE ENCRYPTED FILE-----
51 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
52 + enc: |
53 + -----BEGIN AGE ENCRYPTED FILE-----
54 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2NTh1WEZXZmtBMTdRRmxO
55 + T0NGb3VMZHRubm5BSDNUSmY5cVA5cHRrS25rCjV5NXJ2TnZIcld2ME1lV29wMnZI
56 + ZWlydVNZZ2t5M2VqZE1xYTlsVDQzSmcKLS0tIEJGYlFFY2F1OGc2SU55VStpVG1S
57 + ZHNtUVovMzZMdTFHeXphUnhCME56VHMKIfn3CmtPWcawLneAxooUXPfvFe8M6avH
58 + 93pyl50ghHLZrbipjLAu7G2wtUTlFuiMY0vG8+jRQJHgq7FkHtdalQ==
59 + -----END AGE ENCRYPTED FILE-----
60 + lastmodified: "2025-08-31T15:06:03Z"
61 + mac: ENC[AES256_GCM,data:G/a4GqIpj4zKdH/zDik4hr3LIDtJwJTK8HafONRItAZoETo0gy7bqBymOKn3eaWaJW2PP81dQnv6liDQh5GUuo51Th2K3dWrfORwL3IldLebZO4MNhDufnld3uFJyvSm/JOvV2shfH7SAN0Z4BNeoerwAndsvatcHLY2ce1C9js=,iv:pSJhRWllJCqx7nOBpDbMKut8XEnwYWo1l8yUFUvbI54=,tag:/fq1krHM2ip0LFvfHG4v0A==,type:str]
62 + unencrypted_suffix: _unencrypted
63 + version: 3.10.2
macs/secrets/nixos-foundation-macstadium-44911507.yml new
+63
@@ -0,0 +1,63 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:YmvZ+UwoKtY81wrzr0oSoRGFVDcWqp8WkSApWd5n5/mQr7vGLQA0ZvpGsf1G+nNzE+g=,iv:ebCwaYy120OPQ5zXLxVLk4vD5+wiSfB0G7TT24822YY=,tag:ACldOsS2mterk/5a7ThuoQ==,type:str]
3 +queue-runner-client.key: ENC[AES256_GCM,data:EhZa2bSybMbMCPGGoFeBSvVREyMQTE8odlHgjl0lxxjYgFBmLjhlsmYfv2/q68Mv+oxww5Cv2czL78B7OIX9fJShJwCuGvSnOzMYeSrr0P/8Afh/whUP44IdeXgMasHrD9v2KDSgeUTMQ1oo9663GkLTkblMJ5o=,iv:lSSCNiY7hc2Dh+LUxaGQTWOkxXIvPBAMV3k95lXvCjo=,tag:/7Zp5Bw6Ld2CB7jvUlUixg==,type:str]
4 +sops:
5 + age:
6 + - recipient: age1s0m24l3s29jr345uxk5j8zq7kd4sln3rvf0pdtd6afum3smtxsyqtjra0z
7 + enc: |
8 + -----BEGIN AGE ENCRYPTED FILE-----
9 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3TTBaN2w0TDVhUHBCL1Yy
10 + cjF3L0NTYjE0VXJGTTBVcWlMSm9mOU1wNEJRCmhNaERJL2FXZ3d6dmtpSFB5YVJu
11 + T3A2MGd4N1B3SVE1Wmc1MHQ1cHhPZWMKLS0tIHJFNkE5U0Z3ZHJTNTZLVUtWVGpW
12 + OUZRTlhKYzN5OGxFYWRJS29RQUdxTk0Ky8T3HuBXIYDqb4PnU3wxil2tT3a9R8zt
13 + HEyPA/BU9ujZrvSWf9NLylCqtID5ZADvycJfm6dsJUUAs1Fq6XSy9w==
14 + -----END AGE ENCRYPTED FILE-----
15 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
16 + enc: |
17 + -----BEGIN AGE ENCRYPTED FILE-----
18 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwZVdJSnlGZkNtV0hMYXkx
19 + Qjc1dzVHNGRudXdmYVc2VEwvTG5SZUdncEg4ClBTWEhrNXBmbGVGMHk0T2toTHQr
20 + UnBSUlJBei9yTGVLR1VHK2xzSVptNWcKLS0tIEFoU3JzR0I2a1ozdFRIQjYwUzVm
21 + c1hLaTZSMGs5ZjE5L1RCdjhoNDNCUjQKG2mt7WyXwngUmA7SN9DBgJjAsOOyB4+M
22 + OV60D/bjcYrSMRjNI0T8cZopD2N5/Mste0VtvfOk78doZICfTM0p2g==
23 + -----END AGE ENCRYPTED FILE-----
24 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
25 + enc: |
26 + -----BEGIN AGE ENCRYPTED FILE-----
27 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGcUNIOVdwa2VCTHhGeUpy
28 + eXg0a2craDRLazB2b2VPZUFVeDhrYTZYWnlrClpUUHd4UE8rU3dEdlBRaHFrdWRi
29 + NGszWmhOYms1Znk1bnZoNlAvMGVwMzAKLS0tIHM3RDhUS0JjaHRmNEZhaFJhM1lt
30 + NzZJaDh0WUpJV29JZm42Q3liZzAwWTgKKKAIunuTHChBMcg76Eu2XHDOQawIVgsq
31 + T98joVBVz2CAFMjbyYmE4uMvvA47KmUnhnlUzvaVfB28YzzuSH2elg==
32 + -----END AGE ENCRYPTED FILE-----
33 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
34 + enc: |
35 + -----BEGIN AGE ENCRYPTED FILE-----
36 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKbXBXMkxmaU1ISWRWamZu
37 + d0FEaVFQc1c0NTQ3REhnMnVIeHhLK1lZSlJjCjRpeVA4Qk1qM0Zha1pMblN1NVQr
38 + VnNKeXcrVnlENmdNTGU5bTZ4Sk1CQkEKLS0tIDdCck5jS0FaYUEreDhCaHBFenJ2
39 + WUxmdEZ0czlHTk1IS0ZrQ05MdjE4N2cKmVsm5M1zp7VaKAih4keKhredjAraHmYw
40 + yjcYrr3+bLxvQhaY4JLtw39SWrpKVEouAlVl6moQyGIr6l3KPkTDdw==
41 + -----END AGE ENCRYPTED FILE-----
42 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
43 + enc: |
44 + -----BEGIN AGE ENCRYPTED FILE-----
45 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5M01ibnk0SzdLWjUvQUFn
46 + aERQRnJYeENrSmFVY2JCUFJqQUZIOHUwazF3Ck5aSXB4aFpna3haUUY1UGgrQzRT
47 + b0V1Y2JPb05EblBlcDZiVHlJNDJlN2MKLS0tICtmNHlVRXdmUmIxTmMvdHIzLys0
48 + dzV1SzJBUkwzbVFuU0lWNHQ4ZmVRaDAK0gMG0Uz7+9QHXIestCAK/z+AQFnXGzzM
49 + FZz4o62gWsI/DsB0c67DAQn3ghsZ1rDJa3Vge86BSgCoG61jGbEw2w==
50 + -----END AGE ENCRYPTED FILE-----
51 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
52 + enc: |
53 + -----BEGIN AGE ENCRYPTED FILE-----
54 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFMEczci9RUXNOWHUrQUVV
55 + aXkxSW5aaHhHZzQzbWlkTE82bGRKQ0ZrdVhJCk9Xa3kraGNsM1hCeHFOcEgyVU9Z
56 + cHk5K0FDWnhURHVLZDdSREhTZ3J3L2sKLS0tIFNwVFRneDhQNUdKNjlCRzZpV2Ey
57 + WmJIL21zMU1qazVPc09OREN3b2JRU1EK6ioB1V81JncWBbO+pkqWSKYMJTxn8ykV
58 + 7mAX6NxFxlxrbQmlp4wz8HESNvkUIKGKuU3Dd8FegP4VUze9IoPVfw==
59 + -----END AGE ENCRYPTED FILE-----
60 + lastmodified: "2025-08-31T15:06:26Z"
61 + mac: ENC[AES256_GCM,data:Ed4lAjLxiAx8Qqoy4XfXJdtl8ypjCucipaDYgdnwaAd7dZEh3n8ba6Nktgqkkk8N++rO72K3zGZlFCKtc/oHK/oiUMnTG47KEJ47XcbrEspijGB0uu4n1YgRbiKGhgOTqgHzwcGym8Reg3/jYk83Wq3KTTDJWjiW7rJf2TzYmr8=,iv:FB43RPLaNhi6f8gk6amlKbsVe9S1NUoVy1j53lidQEE=,tag:9NVRbzFeqpA5sOpWr+0foA==,type:str]
62 + unencrypted_suffix: _unencrypted
63 + version: 3.10.2
non-critical-infra/.sops.yaml
+118
@@ -9,6 +9,19 @@ keys:
9 - &mic92 age17n64ahe3wesh8l8lj0zylf4nljdmqn28hvqns2g7hgm9mdkhlsvsjuvkxz
10 - &mic92-mac age1nnm255ah9wa4gpsaq0v023a75lnmlcxszt9lc6az3mtwzxgrucfq45rp7h
11 - &Ericson2314 age1fgzf77gyah4efemnrqg4e7j0vk8fpq0uzrucepmdpsd5z7l4lgpsfq54df
12 + # ofborg admins
13 + - &dasJ age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
14 + # ofborg hosts
15 + - &core01-ofborg-org age1rrrj8tgcyp9xfxvy6zmk9487x62cgx0z68l7jretz2th6ey9nf4qh7nq7h
16 + - &eval01-ofborg-org age16d0phf8c5wy3rfsd4pgc42mqa3aw2llfukdhgu7pzklnzjr2rvxsusz842
17 + - &eval02-ofborg-org age1qn3q3y04pxumygmq96x0gk9qtrdcgdw4y5nl6xd780u4avk0qgsqy8tuu0
18 + - &eval03-ofborg-org age1yssfznyq8rljcpfthpulnvfls0l5t36fpqxkk5taxcwpkqhv9gcqrvvwh7
19 + - &eval04-ofborg-org age1vunut833rrdfulgnsjqtuke4yjtzexn2xqjqavwzxlgrg7n4y45qhurzwc
20 + - &build01-ofborg-org age1ulnex45wt7fpj92jy9c5del3ccz6mmnqptrsva24k8m7qsez9pcsdu3eae
21 + - &build02-ofborg-org age1wrp04f5c0d4jx3hwjsn8cyxdjzpzx6fl202zftqfvfdt7hx8efgskf6s86
22 + - &build03-ofborg-org age1n0yrvl2v397kztuhf00cdvrhf26c9uegwz6day8z9pyqj3zff4sq6ha0lm
23 + - &build04-ofborg-org age1l7xmxkh6y6d5svj06txknamlwdpfwac8855p3edgpu6jcqea7pvslw4r9a
24 + - &build05-ofborg-org age1mduqldqpqp33u2wwh685cwwkpj2ak36z67dtrq2tcskgqkultvps7w9q7u
25
26 creation_rules:
27 - path_regex: secrets/[^/]+.caliban
@@ -45,3 +58,108 @@ creation_rules:
58 - *hexa
59 - *simon
60 - *Ericson2314
61 +
62 + # ofborg
63 + - path_regex: secrets/[^/]+.core01.ofborg.org.yml
64 + key_groups:
65 + - age:
66 + - *core01-ofborg-org
67 + - *hexa
68 + - *simon
69 + - *dasJ
70 + - *mic92
71 + - *mic92-mac
72 + - path_regex: secrets/github-tokens.ofborg.org.yml
73 + key_groups:
74 + - age:
75 + - *core01-ofborg-org
76 + - *eval01-ofborg-org
77 + - *eval02-ofborg-org
78 + - *eval03-ofborg-org
79 + - *eval04-ofborg-org
80 + - *hexa
81 + - *simon
82 + - *dasJ
83 + - *mic92
84 + - *mic92-mac
85 + - path_regex: secrets/[^/]+.eval01.ofborg.org.yml
86 + key_groups:
87 + - age:
88 + - *eval01-ofborg-org
89 + - *hexa
90 + - *simon
91 + - *dasJ
92 + - *mic92
93 + - *mic92-mac
94 + - path_regex: secrets/[^/]+.eval02.ofborg.org.yml
95 + key_groups:
96 + - age:
97 + - *eval02-ofborg-org
98 + - *hexa
99 + - *simon
100 + - *dasJ
101 + - *mic92
102 + - *mic92-mac
103 + - path_regex: secrets/[^/]+.eval03.ofborg.org.yml
104 + key_groups:
105 + - age:
106 + - *eval03-ofborg-org
107 + - *hexa
108 + - *simon
109 + - *dasJ
110 + - *mic92
111 + - *mic92-mac
112 + - path_regex: secrets/[^/]+.eval04.ofborg.org.yml
113 + key_groups:
114 + - age:
115 + - *eval04-ofborg-org
116 + - *hexa
117 + - *simon
118 + - *dasJ
119 + - *mic92
120 + - *mic92-mac
121 + - path_regex: secrets/[^/]+.build01.ofborg.org.yml
122 + key_groups:
123 + - age:
124 + - *build01-ofborg-org
125 + - *hexa
126 + - *simon
127 + - *dasJ
128 + - *mic92
129 + - *mic92-mac
130 + - path_regex: secrets/[^/]+.build02.ofborg.org.yml
131 + key_groups:
132 + - age:
133 + - *build02-ofborg-org
134 + - *hexa
135 + - *simon
136 + - *dasJ
137 + - *mic92
138 + - *mic92-mac
139 + - path_regex: secrets/[^/]+.build03.ofborg.org.yml
140 + key_groups:
141 + - age:
142 + - *build03-ofborg-org
143 + - *hexa
144 + - *simon
145 + - *dasJ
146 + - *mic92
147 + - *mic92-mac
148 + - path_regex: secrets/[^/]+.build04.ofborg.org.yml
149 + key_groups:
150 + - age:
151 + - *build04-ofborg-org
152 + - *hexa
153 + - *simon
154 + - *dasJ
155 + - *mic92
156 + - *mic92-mac
157 + - path_regex: secrets/[^/]+.build05.ofborg.org.yml
158 + key_groups:
159 + - age:
160 + - *build05-ofborg-org
161 + - *hexa
162 + - *simon
163 + - *dasJ
164 + - *mic92
165 + - *mic92-mac
non-critical-infra/flake-module.nix
+12
@@ -8,6 +8,18 @@
8 caliban = { };
9 umbriel = { };
10 staging-hydra = { };
11 +
12 + # ofborg
13 + "core01.ofborg.org".targetHost = "138.199.148.47";
14 + "eval01.ofborg.org".targetHost = "95.217.15.9";
15 + "eval02.ofborg.org".targetHost = "95.216.209.162";
16 + "eval03.ofborg.org".targetHost = "37.27.189.4";
17 + "eval04.ofborg.org".targetHost = "95.217.18.12";
18 + "build01.ofborg.org".targetHost = "185.119.168.10";
19 + "build02.ofborg.org".targetHost = "185.119.168.11";
20 + "build03.ofborg.org".targetHost = "185.119.168.12";
21 + "build04.ofborg.org".targetHost = "185.119.168.13";
22 + "build05.ofborg.org".targetHost = "142.132.171.106";
23 };
24 flake =
25 let
non-critical-infra/hosts/build01.ofborg.org/client.crt new
+11
@@ -0,0 +1,11 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBmTCCAUugAwIBAgIUfUYjDOaJML1lIMkAMvLjnSTscZAwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDczMTEyMDQxN1oYDzIwNzUwNzE5MTIwNDE3
5 +WjBQMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExKzApBgNVBAMM
6 +Imh5ZHJhLXF1ZXVlLWJ1aWxkZXItb2Zib3JnLWJ1aWxkMDEwKjAFBgMrZXADIQCj
7 +6blZljlur8EmgUA9yNjQrGkg647jacmiy+kn1znGT6NCMEAwHQYDVR0OBBYEFH6t
8 +LjEVdWyQWzR49xirHn9QoNUlMB8GA1UdIwQYMBaAFNMEBugcUyrWMJcsLsg9Gla/
9 +9a+IMAUGAytlcANBAJy33gi4Azqa0Y3hEdvkg+bHn+SsEWOSlls/cy0Lfl6l+qGn
10 +Jd9+vtequq1aXWqzXE3g0r4vjqzQDg8GJE1j5wo=
11 +-----END CERTIFICATE-----
non-critical-infra/hosts/build01.ofborg.org/default.nix new
+54
@@ -0,0 +1,54 @@
1 +{
2 + imports = [
3 + ../../modules/ofborg/builder.nix
4 + ../../modules/hydra/builder.nix
5 + ./hardware.nix
6 + ];
7 +
8 + # Bootloader.
9 + boot.loader.systemd-boot.enable = true;
10 +
11 + networking = {
12 + hostName = "ofborg-build01";
13 + domain = "ofborg.org";
14 + hostId = "007f0301";
15 + };
16 +
17 + disko.devices = import ./disko.nix;
18 +
19 + systemd.network.networks."10-uplink" = {
20 + matchConfig.MACAddress = "00:23:09:4f:49:36";
21 + address = [ "185.119.168.10/32" ];
22 + routes = [
23 + {
24 + Gateway = "91.224.148.0";
25 + GatewayOnLink = true;
26 + }
27 + ];
28 + linkConfig.RequiredForOnline = "routable";
29 + };
30 +
31 + users.users.root.openssh.authorizedKeys.keys = [
32 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQ5hBVVKK72ZX+n+BVnPocx+AG5u6ht8bM++G1lhufp liberodark@gmail.com"
33 + ];
34 +
35 + zramSwap = {
36 + enable = true;
37 + memoryPercent = 25;
38 + };
39 +
40 + system.stateVersion = "24.11"; # Did you read the comment?
41 +
42 + sops.secrets = {
43 + "ofborg/builder-rabbitmq-password" = {
44 + owner = "ofborg-builder";
45 + restartUnits = [ "ofborg-builder.service" ];
46 + sopsFile = ../../secrets/ofborg.build01.ofborg.org.yml;
47 + };
48 + "harmonia/secret" = {
49 + owner = "harmonia";
50 + restartUnits = [ "harmonia.service" ];
51 + sopsFile = ../../secrets/ofborg.build01.ofborg.org.yml;
52 + };
53 + };
54 +}
non-critical-infra/hosts/build01.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/nvme0n1";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/nvme0n1
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/build01.ofborg.org/hardware.nix new
+9
@@ -0,0 +1,9 @@
1 +{
2 +
3 + boot.initrd.availableKernelModules = [
4 + "ehci_pci"
5 + "ahci"
6 + ];
7 + boot.initrd.kernelModules = [ "nvme" ];
8 + boot.kernelModules = [ "kvm-intel" ];
9 +}
non-critical-infra/hosts/build02.ofborg.org/client.crt new
+11
@@ -0,0 +1,11 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBmTCCAUugAwIBAgIUfUYjDOaJML1lIMkAMvLjnSTscZEwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDczMTEyMDQxN1oYDzIwNzUwNzE5MTIwNDE3
5 +WjBQMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExKzApBgNVBAMM
6 +Imh5ZHJhLXF1ZXVlLWJ1aWxkZXItb2Zib3JnLWJ1aWxkMDIwKjAFBgMrZXADIQAL
7 +Cdl+ZbvuX8OUBj5MIMfL7120fT1NxFk6C4DydQ7Qt6NCMEAwHQYDVR0OBBYEFGAH
8 +xmXkYN9IDgVaHjA/oEj2921hMB8GA1UdIwQYMBaAFNMEBugcUyrWMJcsLsg9Gla/
9 +9a+IMAUGAytlcANBACmGjy4gHWTiahHy2P/hPQ661vfob9nkBQ+CEG1FSaK3ImpQ
10 +yPVG+BJiu2oT50EO3EzdsV2tUk9VAhcYNA2YXAg=
11 +-----END CERTIFICATE-----
non-critical-infra/hosts/build02.ofborg.org/default.nix new
+54
@@ -0,0 +1,54 @@
1 +{
2 + imports = [
3 + ../../modules/ofborg/builder.nix
4 + ../../modules/hydra/builder.nix
5 + ./hardware.nix
6 + ];
7 +
8 + # Bootloader.
9 + boot.loader.systemd-boot.enable = true;
10 +
11 + networking = {
12 + hostName = "ofborg-build02";
13 + domain = "ofborg.org";
14 + hostId = "007f0302";
15 + };
16 +
17 + disko.devices = import ./disko.nix;
18 +
19 + systemd.network.networks."10-uplink" = {
20 + matchConfig.MACAddress = "22:33:4d:07:51:b4";
21 + address = [ "185.119.168.11/32" ];
22 + routes = [
23 + {
24 + Gateway = "91.224.148.0";
25 + GatewayOnLink = true;
26 + }
27 + ];
28 + linkConfig.RequiredForOnline = "routable";
29 + };
30 +
31 + users.users.root.openssh.authorizedKeys.keys = [
32 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQ5hBVVKK72ZX+n+BVnPocx+AG5u6ht8bM++G1lhufp liberodark@gmail.com"
33 + ];
34 +
35 + zramSwap = {
36 + enable = true;
37 + memoryPercent = 25;
38 + };
39 +
40 + system.stateVersion = "24.11"; # Did you read the comment?
41 +
42 + sops.secrets = {
43 + "ofborg/builder-rabbitmq-password" = {
44 + owner = "ofborg-builder";
45 + restartUnits = [ "ofborg-builder.service" ];
46 + sopsFile = ../../secrets/ofborg.build02.ofborg.org.yml;
47 + };
48 + "harmonia/secret" = {
49 + owner = "harmonia";
50 + restartUnits = [ "harmonia.service" ];
51 + sopsFile = ../../secrets/ofborg.build02.ofborg.org.yml;
52 + };
53 + };
54 +}
non-critical-infra/hosts/build02.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/nvme0n1";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/nvme0n1
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/build02.ofborg.org/hardware.nix new
+9
@@ -0,0 +1,9 @@
1 +{
2 +
3 + boot.initrd.availableKernelModules = [
4 + "ehci_pci"
5 + "ahci"
6 + ];
7 + boot.initrd.kernelModules = [ "nvme" ];
8 + boot.kernelModules = [ "kvm-intel" ];
9 +}
non-critical-infra/hosts/build03.ofborg.org/client.crt new
+11
@@ -0,0 +1,11 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBmTCCAUugAwIBAgIUfUYjDOaJML1lIMkAMvLjnSTscZIwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDczMTEyMDQxN1oYDzIwNzUwNzE5MTIwNDE3
5 +WjBQMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExKzApBgNVBAMM
6 +Imh5ZHJhLXF1ZXVlLWJ1aWxkZXItb2Zib3JnLWJ1aWxkMDMwKjAFBgMrZXADIQC8
7 +UiCK9YGsTI+144EzVlCjuwz0wBUyOwjg1b2lnQCdZ6NCMEAwHQYDVR0OBBYEFEDA
8 +dN0ht/zFU5Y7KER4xxTAeZdrMB8GA1UdIwQYMBaAFNMEBugcUyrWMJcsLsg9Gla/
9 +9a+IMAUGAytlcANBAHDszlrrBBg8Q5tHeynkDLY+Cvh0gOAaUmyoMkfhlPNxKNLH
10 ++8NVKKkDoVLreYcLrKxEg+36KIBU/Z3uxfIAew0=
11 +-----END CERTIFICATE-----
non-critical-infra/hosts/build03.ofborg.org/default.nix new
+54
@@ -0,0 +1,54 @@
1 +{
2 + imports = [
3 + ../../modules/ofborg/builder.nix
4 + ../../modules/hydra/builder.nix
5 + ./hardware.nix
6 + ];
7 +
8 + # Bootloader.
9 + boot.loader.systemd-boot.enable = true;
10 +
11 + networking = {
12 + hostName = "ofborg-build03";
13 + domain = "ofborg.org";
14 + hostId = "007f0303";
15 + };
16 +
17 + disko.devices = import ./disko.nix;
18 +
19 + systemd.network.networks."10-uplink" = {
20 + matchConfig.MACAddress = "22:33:4d:07:51:b9";
21 + address = [ "185.119.168.12/32" ];
22 + routes = [
23 + {
24 + Gateway = "91.224.148.0";
25 + GatewayOnLink = true;
26 + }
27 + ];
28 + linkConfig.RequiredForOnline = "routable";
29 + };
30 +
31 + users.users.root.openssh.authorizedKeys.keys = [
32 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQ5hBVVKK72ZX+n+BVnPocx+AG5u6ht8bM++G1lhufp liberodark@gmail.com"
33 + ];
34 +
35 + zramSwap = {
36 + enable = true;
37 + memoryPercent = 25;
38 + };
39 +
40 + system.stateVersion = "24.11"; # Did you read the comment?
41 +
42 + sops.secrets = {
43 + "ofborg/builder-rabbitmq-password" = {
44 + owner = "ofborg-builder";
45 + restartUnits = [ "ofborg-builder.service" ];
46 + sopsFile = ../../secrets/ofborg.build03.ofborg.org.yml;
47 + };
48 + "harmonia/secret" = {
49 + owner = "harmonia";
50 + restartUnits = [ "harmonia.service" ];
51 + sopsFile = ../../secrets/ofborg.build03.ofborg.org.yml;
52 + };
53 + };
54 +}
non-critical-infra/hosts/build03.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/nvme0n1";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/nvme0n1
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/build03.ofborg.org/hardware.nix new
+9
@@ -0,0 +1,9 @@
1 +{
2 +
3 + boot.initrd.availableKernelModules = [
4 + "ehci_pci"
5 + "ahci"
6 + ];
7 + boot.initrd.kernelModules = [ "nvme" ];
8 + boot.kernelModules = [ "kvm-intel" ];
9 +}
non-critical-infra/hosts/build04.ofborg.org/client.crt new
+11
@@ -0,0 +1,11 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBmTCCAUugAwIBAgIUfUYjDOaJML1lIMkAMvLjnSTscZMwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDczMTEyMDQxN1oYDzIwNzUwNzE5MTIwNDE3
5 +WjBQMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExKzApBgNVBAMM
6 +Imh5ZHJhLXF1ZXVlLWJ1aWxkZXItb2Zib3JnLWJ1aWxkMDQwKjAFBgMrZXADIQDH
7 +sVDND3YMmQ9ijOxK9b65fhuCF70h8O4d3NAiKUzZp6NCMEAwHQYDVR0OBBYEFBy8
8 +QofH7VDm+VVK3YunEtbxGc/OMB8GA1UdIwQYMBaAFNMEBugcUyrWMJcsLsg9Gla/
9 +9a+IMAUGAytlcANBAOsNsCCH+jV9xUaaQG0t40IG8UMr9b+ThA9hiOnrsTOmUfE7
10 +wsl1639LWXyoWiqjsj7g646M70lPcWCqocxDhQk=
11 +-----END CERTIFICATE-----
non-critical-infra/hosts/build04.ofborg.org/default.nix new
+54
@@ -0,0 +1,54 @@
1 +{
2 + imports = [
3 + ../../modules/ofborg/builder.nix
4 + ../../modules/hydra/builder.nix
5 + ./hardware.nix
6 + ];
7 +
8 + # Bootloader.
9 + boot.loader.systemd-boot.enable = true;
10 +
11 + networking = {
12 + hostName = "ofborg-build04";
13 + domain = "ofborg.org";
14 + hostId = "007f0304";
15 + };
16 +
17 + disko.devices = import ./disko.nix;
18 +
19 + systemd.network.networks."10-uplink" = {
20 + matchConfig.MACAddress = "22:33:4d:06:4a:ad";
21 + address = [ "185.119.168.13/32" ];
22 + routes = [
23 + {
24 + Gateway = "91.224.148.0";
25 + GatewayOnLink = true;
26 + }
27 + ];
28 + linkConfig.RequiredForOnline = "routable";
29 + };
30 +
31 + users.users.root.openssh.authorizedKeys.keys = [
32 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQ5hBVVKK72ZX+n+BVnPocx+AG5u6ht8bM++G1lhufp liberodark@gmail.com"
33 + ];
34 +
35 + zramSwap = {
36 + enable = true;
37 + memoryPercent = 25;
38 + };
39 +
40 + system.stateVersion = "24.11"; # Did you read the comment?
41 +
42 + sops.secrets = {
43 + "ofborg/builder-rabbitmq-password" = {
44 + owner = "ofborg-builder";
45 + restartUnits = [ "ofborg-builder.service" ];
46 + sopsFile = ../../secrets/ofborg.build04.ofborg.org.yml;
47 + };
48 + "harmonia/secret" = {
49 + owner = "harmonia";
50 + restartUnits = [ "harmonia.service" ];
51 + sopsFile = ../../secrets/ofborg.build04.ofborg.org.yml;
52 + };
53 + };
54 +}
non-critical-infra/hosts/build04.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/nvme0n1";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/nvme0n1
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/build04.ofborg.org/hardware.nix new
+9
@@ -0,0 +1,9 @@
1 +{
2 +
3 + boot.initrd.availableKernelModules = [
4 + "ehci_pci"
5 + "ahci"
6 + ];
7 + boot.initrd.kernelModules = [ "nvme" ];
8 + boot.kernelModules = [ "kvm-intel" ];
9 +}
non-critical-infra/hosts/build05.ofborg.org/client.crt new
+11
@@ -0,0 +1,11 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBmTCCAUugAwIBAgIUfUYjDOaJML1lIMkAMvLjnSTscZQwBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDczMTEyMDQxN1oYDzIwNzUwNzE5MTIwNDE3
5 +WjBQMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExKzApBgNVBAMM
6 +Imh5ZHJhLXF1ZXVlLWJ1aWxkZXItb2Zib3JnLWJ1aWxkMDUwKjAFBgMrZXADIQCV
7 +CeAL3FB4rMIDBSife7abqJK2+H7OAskVY+jOXcytEaNCMEAwHQYDVR0OBBYEFPXn
8 +CTIW6uvZnozTKkouPPmtgoOkMB8GA1UdIwQYMBaAFNMEBugcUyrWMJcsLsg9Gla/
9 +9a+IMAUGAytlcANBALq7WRX5hKqnjLTgaoLgwBbH5FPMhf+rC+63lepxl0/kAeoT
10 +IgiSCPV7GonPxeLsqE+uytoQ2CaPYwBRosPTCAw=
11 +-----END CERTIFICATE-----
non-critical-infra/hosts/build05.ofborg.org/default.nix new
+56
@@ -0,0 +1,56 @@
1 +{ inputs, ... }:
2 +{
3 + imports = [
4 + inputs.srvos.nixosModules.hardware-hetzner-cloud-arm
5 + ../../modules/ofborg/builder.nix
6 + ../../modules/hydra/builder.nix
7 + ./hardware.nix
8 + ];
9 +
10 + # Bootloader.
11 + boot.loader.systemd-boot.enable = true;
12 +
13 + networking = {
14 + hostName = "ofborg-build05";
15 + domain = "ofborg.org";
16 + hostId = "007f0305";
17 + };
18 +
19 + disko.devices = import ./disko.nix;
20 +
21 + systemd.network.networks."10-uplink" = {
22 + matchConfig.MACAddress = "96:00:03:fd:32:fd";
23 + address = [
24 + "142.132.171.106/32"
25 + "2a01:4f8:1c1b:6d41::/64"
26 + ];
27 + routes = [
28 + { Gateway = "fe80::1"; }
29 + {
30 + Gateway = "172.31.1.1";
31 + GatewayOnLink = true;
32 + }
33 + ];
34 + linkConfig.RequiredForOnline = "routable";
35 + };
36 +
37 + zramSwap = {
38 + enable = true;
39 + memoryPercent = 100;
40 + };
41 +
42 + system.stateVersion = "24.11"; # Did you read the comment?
43 +
44 + sops.secrets = {
45 + "ofborg/builder-rabbitmq-password" = {
46 + owner = "ofborg-builder";
47 + restartUnits = [ "ofborg-builder.service" ];
48 + sopsFile = ../../secrets/ofborg.build05.ofborg.org.yml;
49 + };
50 + "harmonia/secret" = {
51 + owner = "harmonia";
52 + restartUnits = [ "harmonia.service" ];
53 + sopsFile = ../../secrets/ofborg.build05.ofborg.org.yml;
54 + };
55 + };
56 +}
non-critical-infra/hosts/build05.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/sda";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/sda
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/build05.ofborg.org/hardware.nix new
+18
@@ -0,0 +1,18 @@
1 +{ lib, ... }:
2 +
3 +{
4 +
5 + boot.initrd.availableKernelModules = [
6 + "xhci_pci"
7 + "virtio_pci"
8 + "usbhid"
9 + "sr_mod"
10 + ];
11 + boot.initrd.kernelModules = [ "virtio_gpu" ];
12 + boot.kernelModules = [ ];
13 + boot.extraModulePackages = [ ];
14 +
15 + swapDevices = [ ];
16 +
17 + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
18 +}
non-critical-infra/hosts/core01.ofborg.org/default.nix new
+55
@@ -0,0 +1,55 @@
1 +{ inputs, ... }:
2 +
3 +{
4 + imports = [
5 + inputs.srvos.nixosModules.hardware-hetzner-cloud
6 + ../../modules/ofborg/common.nix
7 + ../../modules/ofborg/github-tokens.nix
8 + ./nginx.nix
9 + ./rabbitmq.nix
10 + # ofborg.org landingpage
11 + # ./website.nix
12 + # Accepts webhooks from GitHub
13 + ./github-webhook-receiver.nix
14 + # Checks wheter a PR event is interesting to us
15 + ./evaluation-filter.nix
16 + # Handles incoming comments
17 + ./github-comment-filter.nix
18 + # Receives logs from builders
19 + ./log-message-collector.nix
20 + # Posts to GitHub
21 + ./github-comment-poster.nix
22 + # LogApi and LogViewer
23 + ./log-viewer.nix
24 + ];
25 + # TODO backups
26 +
27 + # Bootloader.
28 + boot.loader.grub.enable = true;
29 +
30 + networking = {
31 + hostName = "ofborg-core01";
32 + domain = "ofborg.org";
33 + hostId = "007f0101";
34 + };
35 +
36 + disko.devices = import ./disko.nix;
37 +
38 + systemd.network.networks."10-uplink" = {
39 + matchConfig.MACAddress = "96:00:03:ea:fa:62";
40 + address = [
41 + "138.199.148.47/32"
42 + "2a01:4f8:c012:cda4::1/64"
43 + ];
44 + routes = [
45 + { Gateway = "fe80::1"; }
46 + {
47 + Gateway = "172.31.1.1";
48 + GatewayOnLink = true;
49 + }
50 + ];
51 + linkConfig.RequiredForOnline = "routable";
52 + };
53 +
54 + system.stateVersion = "24.11"; # Did you read the comment?
55 +}
non-critical-infra/hosts/core01.ofborg.org/disko.nix new
+68
@@ -0,0 +1,68 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/sda";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + grub = {
10 + size = "1M";
11 + type = "EF02";
12 + };
13 + boot = {
14 + size = "1G";
15 + type = "EF00";
16 + content = {
17 + type = "filesystem";
18 + format = "vfat";
19 + mountpoint = "/boot";
20 + mountOptions = [ "umask=0077" ];
21 + };
22 + };
23 + root = {
24 + size = "100%";
25 + content = {
26 + type = "zfs";
27 + pool = "zroot";
28 + };
29 + };
30 + };
31 + };
32 + };
33 + };
34 +
35 + zpool = {
36 + zroot = {
37 + type = "zpool";
38 + options = {
39 + # smartctl --all /dev/sda
40 + # Logical block size: 512 bytes
41 + ashift = "9";
42 + };
43 + rootFsOptions = {
44 + acltype = "posixacl";
45 + compression = "zstd";
46 + mountpoint = "none";
47 + xattr = "sa";
48 + };
49 + datasets = {
50 + "root" = {
51 + type = "zfs_fs";
52 + mountpoint = "/";
53 + };
54 + "nix" = {
55 + type = "zfs_fs";
56 + mountpoint = "/nix";
57 + };
58 + "reserved" = {
59 + type = "zfs_fs";
60 + options = {
61 + canmount = "off";
62 + refreservation = "1G";
63 + };
64 + };
65 + };
66 + };
67 + };
68 +}
non-critical-infra/hosts/core01.ofborg.org/evaluation-filter.nix new
+67
@@ -0,0 +1,67 @@
1 +{ config, pkgs, ... }:
2 +
3 +{
4 + systemd.services.ofborg-evaluation-filter = {
5 + description = "ofBorg Evaluation Filter";
6 +
7 + wantedBy = [ "ofborg.target" ];
8 + bindsTo = [ "ofborg.target" ];
9 + restartTriggers = [ config.environment.etc."ofborg.json".source ];
10 +
11 + stopIfChanged = false;
12 + unitConfig.StartLimitIntervalSec = 0;
13 + serviceConfig = {
14 + # Filesystem stuff
15 + ProtectSystem = "strict"; # Prevent writing to most of /
16 + ProtectHome = true; # Prevent accessing /home and /root
17 + PrivateTmp = true; # Give an own directory under /tmp
18 + PrivateDevices = true; # Deny access to most of /dev
19 + ProtectKernelTunables = true; # Protect some parts of /sys
20 + ProtectControlGroups = true; # Remount cgroups read-only
21 + RestrictSUIDSGID = true; # Prevent creating SETUID/SETGID files
22 + PrivateMounts = true; # Give an own mount namespace
23 + RemoveIPC = true;
24 + UMask = "0077";
25 +
26 + Restart = "always";
27 + RestartSec = "5s";
28 + ExecStart = "${pkgs.ofborg}/bin/evaluation-filter /etc/ofborg.json";
29 + User = "ofborg-evaluation-filter";
30 + Group = "ofborg-evaluation-filter";
31 +
32 + # Capabilities
33 + CapabilityBoundingSet = ""; # Allow no capabilities at all
34 + NoNewPrivileges = true; # Disallow getting more capabilities. This is also implied by other options.
35 +
36 + # Kernel stuff
37 + ProtectKernelModules = true; # Prevent loading of kernel modules
38 + SystemCallArchitectures = "native"; # Usually no need to disable this
39 + ProtectKernelLogs = true; # Prevent access to kernel logs
40 + ProtectClock = true; # Prevent setting the RTC
41 +
42 + # Misc
43 + LockPersonality = true; # Prevent change of the personality
44 + ProtectHostname = true; # Give an own UTS namespace
45 + RestrictRealtime = true; # Prevent switching to RT scheduling
46 + MemoryDenyWriteExecute = true; # Maybe disable this for interpreters like python
47 + PrivateUsers = true; # If anything randomly breaks, it's mostly because of this
48 + RestrictNamespaces = true;
49 + SystemCallFilter = "@system-service";
50 + };
51 + };
52 +
53 + users.users.ofborg-evaluation-filter = {
54 + isSystemUser = true;
55 + group = "ofborg-evaluation-filter";
56 + description = "ofBorg evaluation filter system user";
57 + };
58 + users.groups.ofborg-evaluation-filter = { };
59 +
60 + sops.secrets = {
61 + "ofborg/evaluation-filter-rabbitmq-password" = {
62 + owner = "ofborg-evaluation-filter";
63 + restartUnits = [ "ofborg-evaluation-filter.service" ];
64 + sopsFile = ../../secrets/ofborg.core01.ofborg.org.yml;
65 + };
66 + };
67 +}
non-critical-infra/hosts/core01.ofborg.org/github-comment-filter.nix new
+69
@@ -0,0 +1,69 @@
1 +{ config, pkgs, ... }:
2 +
3 +{
4 + systemd.services.ofborg-github-comment-filter = {
5 + description = "ofBorg GitHub comment filter";
6 +
7 + wantedBy = [ "ofborg.target" ];
8 + bindsTo = [ "ofborg.target" ];
9 + restartTriggers = [ config.environment.etc."ofborg.json".source ];
10 +
11 + stopIfChanged = false;
12 + unitConfig.StartLimitIntervalSec = 0;
13 + serviceConfig = {
14 + # Filesystem stuff
15 + ProtectSystem = "strict"; # Prevent writing to most of /
16 + ProtectHome = true; # Prevent accessing /home and /root
17 + PrivateTmp = true; # Give an own directory under /tmp
18 + PrivateDevices = true; # Deny access to most of /dev
19 + ProtectKernelTunables = true; # Protect some parts of /sys
20 + ProtectControlGroups = true; # Remount cgroups read-only
21 + RestrictSUIDSGID = true; # Prevent creating SETUID/SETGID files
22 + PrivateMounts = true; # Give an own mount namespace
23 + RemoveIPC = true;
24 + UMask = "0077";
25 +
26 + Restart = "always";
27 + RestartSec = "5s";
28 + ExecStart = "${pkgs.ofborg}/bin/github-comment-filter /etc/ofborg.json";
29 + User = "ofborg-github-comment-filter";
30 + Group = "ofborg-github-comment-filter";
31 + SupplementaryGroups = [ "ofborg-github-oauth-secret" ];
32 +
33 + # Capabilities
34 + CapabilityBoundingSet = ""; # Allow no capabilities at all
35 + NoNewPrivileges = true; # Disallow getting more capabilities. This is also implied by other options.
36 +
37 + # Kernel stuff
38 + ProtectKernelModules = true; # Prevent loading of kernel modules
39 + SystemCallArchitectures = "native"; # Usually no need to disable this
40 + ProtectKernelLogs = true; # Prevent access to kernel logs
41 + ProtectClock = true; # Prevent setting the RTC
42 +
43 + # Misc
44 + LockPersonality = true; # Prevent change of the personality
45 + ProtectHostname = true; # Give an own UTS namespace
46 + RestrictRealtime = true; # Prevent switching to RT scheduling
47 + MemoryDenyWriteExecute = true; # Maybe disable this for interpreters like python
48 + PrivateUsers = true; # If anything randomly breaks, it's mostly because of this
49 + RestrictNamespaces = true;
50 + SystemCallFilter = "@system-service";
51 + };
52 + };
53 +
54 + users.users.ofborg-github-comment-filter = {
55 + isSystemUser = true;
56 + group = "ofborg-github-comment-filter";
57 + description = "ofBorg GitHub comment filter system user";
58 + };
59 + users.groups.ofborg-github-comment-filter = { };
60 +
61 + sops.secrets = {
62 + "ofborg/github-comment-filter-rabbitmq-password" = {
63 + owner = "ofborg-github-comment-filter";
64 + restartUnits = [ "ofborg-github-comment-filter.service" ];
65 + sopsFile = ../../secrets/ofborg.core01.ofborg.org.yml;
66 + };
67 + "ofborg/github-oauth-secret".restartUnits = [ "ofborg-github-comment-filter.service" ];
68 + };
69 +}
non-critical-infra/hosts/core01.ofborg.org/github-comment-poster.nix new
+69
@@ -0,0 +1,69 @@
1 +{ config, pkgs, ... }:
2 +
3 +{
4 + systemd.services.ofborg-github-comment-poster = {
5 + description = "ofBorg GitHub comment poster";
6 +
7 + wantedBy = [ "ofborg.target" ];
8 + bindsTo = [ "ofborg.target" ];
9 + restartTriggers = [ config.environment.etc."ofborg.json".source ];
10 +
11 + stopIfChanged = false;
12 + unitConfig.StartLimitIntervalSec = 0;
13 + serviceConfig = {
14 + # Filesystem stuff
15 + ProtectSystem = "strict"; # Prevent writing to most of /
16 + ProtectHome = true; # Prevent accessing /home and /root
17 + PrivateTmp = true; # Give an own directory under /tmp
18 + PrivateDevices = true; # Deny access to most of /dev
19 + ProtectKernelTunables = true; # Protect some parts of /sys
20 + ProtectControlGroups = true; # Remount cgroups read-only
21 + RestrictSUIDSGID = true; # Prevent creating SETUID/SETGID files
22 + PrivateMounts = true; # Give an own mount namespace
23 + RemoveIPC = true;
24 + UMask = "0077";
25 +
26 + Restart = "always";
27 + RestartSec = "5s";
28 + ExecStart = "${pkgs.ofborg}/bin/github-comment-poster /etc/ofborg.json";
29 + User = "ofborg-github-comment-poster";
30 + Group = "ofborg-github-comment-poster";
31 + SupplementaryGroups = [ "ofborg-github-app-key" ];
32 +
33 + # Capabilities
34 + CapabilityBoundingSet = ""; # Allow no capabilities at all
35 + NoNewPrivileges = true; # Disallow getting more capabilities. This is also implied by other options.
36 +
37 + # Kernel stuff
38 + ProtectKernelModules = true; # Prevent loading of kernel modules
39 + SystemCallArchitectures = "native"; # Usually no need to disable this
40 + ProtectKernelLogs = true; # Prevent access to kernel logs
41 + ProtectClock = true; # Prevent setting the RTC
42 +
43 + # Misc
44 + LockPersonality = true; # Prevent change of the personality
45 + ProtectHostname = true; # Give an own UTS namespace
46 + RestrictRealtime = true; # Prevent switching to RT scheduling
47 + MemoryDenyWriteExecute = true; # Maybe disable this for interpreters like python
48 + PrivateUsers = true; # If anything randomly breaks, it's mostly because of this
49 + RestrictNamespaces = true;
50 + SystemCallFilter = "@system-service";
51 + };
52 + };
53 +
54 + users.users.ofborg-github-comment-poster = {
55 + isSystemUser = true;
56 + group = "ofborg-github-comment-poster";
57 + description = "ofBorg GitHub comment poster system user";
58 + };
59 + users.groups.ofborg-github-comment-poster = { };
60 +
61 + sops.secrets = {
62 + "ofborg/github-comment-poster-rabbitmq-password" = {
63 + owner = "ofborg-github-comment-poster";
64 + restartUnits = [ "ofborg-github-comment-poster.service" ];
65 + sopsFile = ../../secrets/ofborg.core01.ofborg.org.yml;
66 + };
67 + "ofborg/github-app-key".restartUnits = [ "ofborg-github-comment-poster.service" ];
68 + };
69 +}
non-critical-infra/hosts/core01.ofborg.org/github-webhook-receiver.nix new
+80
@@ -0,0 +1,80 @@
1 +{ config, pkgs, ... }:
2 +
3 +{
4 + systemd.services.ofborg-github-webhook-receiver = {
5 + description = "ofBorg Webhook Receiver";
6 +
7 + wantedBy = [ "ofborg.target" ];
8 + bindsTo = [ "ofborg.target" ];
9 + restartTriggers = [ config.environment.etc."ofborg.json".source ];
10 +
11 + stopIfChanged = false;
12 + unitConfig.StartLimitIntervalSec = 0;
13 + serviceConfig = {
14 + # Filesystem stuff
15 + ProtectSystem = "strict"; # Prevent writing to most of /
16 + ProtectHome = true; # Prevent accessing /home and /root
17 + PrivateTmp = true; # Give an own directory under /tmp
18 + PrivateDevices = true; # Deny access to most of /dev
19 + ProtectKernelTunables = true; # Protect some parts of /sys
20 + ProtectControlGroups = true; # Remount cgroups read-only
21 + RestrictSUIDSGID = true; # Prevent creating SETUID/SETGID files
22 + PrivateMounts = true; # Give an own mount namespace
23 + RemoveIPC = true;
24 + UMask = "0077";
25 +
26 + Restart = "always";
27 + RestartSec = "5s";
28 + ExecStart = "${pkgs.ofborg}/bin/github-webhook-receiver /etc/ofborg.json";
29 + User = "ofborg-github-webhook-receiver";
30 + Group = "ofborg-github-webhook-receiver";
31 +
32 + # Capabilities
33 + CapabilityBoundingSet = ""; # Allow no capabilities at all
34 + NoNewPrivileges = true; # Disallow getting more capabilities. This is also implied by other options.
35 +
36 + # Kernel stuff
37 + ProtectKernelModules = true; # Prevent loading of kernel modules
38 + SystemCallArchitectures = "native"; # Usually no need to disable this
39 + ProtectKernelLogs = true; # Prevent access to kernel logs
40 + ProtectClock = true; # Prevent setting the RTC
41 +
42 + # Misc
43 + LockPersonality = true; # Prevent change of the personality
44 + ProtectHostname = true; # Give an own UTS namespace
45 + RestrictRealtime = true; # Prevent switching to RT scheduling
46 + MemoryDenyWriteExecute = true; # Maybe disable this for interpreters like python
47 + PrivateUsers = true; # If anything randomly breaks, it's mostly because of this
48 + RestrictNamespaces = true;
49 + SystemCallFilter = "@system-service";
50 + };
51 + };
52 +
53 + services.nginx.virtualHosts."gh-webhook.ofborg.org" = {
54 + forceSSL = true;
55 + enableACME = true;
56 +
57 + locations."/".proxyPass = "http://[::1]:9899/";
58 + };
59 +
60 + users.users.ofborg-github-webhook-receiver = {
61 + isSystemUser = true;
62 + group = "ofborg-github-webhook-receiver";
63 + description = "ofBorg Github webhook receiver system user";
64 + };
65 + users.groups.ofborg-github-webhook-receiver = { };
66 +
67 + sops.secrets = {
68 + "ofborg/github-webhook-secret" = {
69 + owner = "ofborg-github-webhook-receiver";
70 + restartUnits = [ "ofborg-github-webhook-receiver.service" ];
71 + sopsFile = ../../secrets/ofborg.core01.ofborg.org.yml;
72 + };
73 +
74 + "ofborg/github-webhook-rabbitmq-password" = {
75 + owner = "ofborg-github-webhook-receiver";
76 + restartUnits = [ "ofborg-github-webhook-receiver.service" ];
77 + sopsFile = ../../secrets/ofborg.core01.ofborg.org.yml;
78 + };
79 + };
80 +}
non-critical-infra/hosts/core01.ofborg.org/log-message-collector.nix new
+69
@@ -0,0 +1,69 @@
1 +{ config, pkgs, ... }:
2 +
3 +{
4 + systemd.services.ofborg-log-message-collector = {
5 + description = "ofBorg log message collector";
6 +
7 + wantedBy = [ "ofborg.target" ];
8 + bindsTo = [ "ofborg.target" ];
9 + restartTriggers = [ config.environment.etc."ofborg.json".source ];
10 +
11 + stopIfChanged = false;
12 + unitConfig.StartLimitIntervalSec = 0;
13 + serviceConfig = {
14 + # Filesystem stuff
15 + ProtectSystem = "strict"; # Prevent writing to most of /
16 + ProtectHome = true; # Prevent accessing /home and /root
17 + PrivateTmp = true; # Give an own directory under /tmp
18 + PrivateDevices = true; # Deny access to most of /dev
19 + ProtectKernelTunables = true; # Protect some parts of /sys
20 + ProtectControlGroups = true; # Remount cgroups read-only
21 + RestrictSUIDSGID = true; # Prevent creating SETUID/SETGID files
22 + PrivateMounts = true; # Give an own mount namespace
23 + RemoveIPC = true;
24 + UMask = "0027";
25 +
26 + Restart = "always";
27 + RestartSec = "5s";
28 + ExecStart = "${pkgs.ofborg}/bin/log-message-collector /etc/ofborg.json";
29 + User = "ofborg-logs";
30 + Group = "ofborg-logs";
31 +
32 + LogsDirectory = "ofborg";
33 +
34 + # Capabilities
35 + CapabilityBoundingSet = ""; # Allow no capabilities at all
36 + NoNewPrivileges = true; # Disallow getting more capabilities. This is also implied by other options.
37 +
38 + # Kernel stuff
39 + ProtectKernelModules = true; # Prevent loading of kernel modules
40 + SystemCallArchitectures = "native"; # Usually no need to disable this
41 + ProtectKernelLogs = true; # Prevent access to kernel logs
42 + ProtectClock = true; # Prevent setting the RTC
43 +
44 + # Misc
45 + LockPersonality = true; # Prevent change of the personality
46 + ProtectHostname = true; # Give an own UTS namespace
47 + RestrictRealtime = true; # Prevent switching to RT scheduling
48 + MemoryDenyWriteExecute = true; # Maybe disable this for interpreters like python
49 + PrivateUsers = true; # If anything randomly breaks, it's mostly because of this
50 + RestrictNamespaces = true;
51 + SystemCallFilter = "@system-service";
52 + };
53 + };
54 +
55 + users.users.ofborg-logs = {
56 + isSystemUser = true;
57 + group = "ofborg-logs";
58 + description = "ofBorg logs user";
59 + };
60 + users.groups.ofborg-logs = { };
61 +
62 + sops.secrets = {
63 + "ofborg/log-message-collector-rabbitmq-password" = {
64 + owner = "ofborg-logs";
65 + restartUnits = [ "ofborg-log-message-collector.service" ];
66 + sopsFile = ../../secrets/ofborg.core01.ofborg.org.yml;
67 + };
68 + };
69 +}
non-critical-infra/hosts/core01.ofborg.org/log-viewer.nix new
+102
@@ -0,0 +1,102 @@
1 +{
2 + config,
3 + pkgs,
4 + inputs,
5 + ...
6 +}:
7 +let
8 + logviewer = import "${inputs.ofborg-viewer}/release.nix" { inherit pkgs; };
9 +in
10 +{
11 + systemd.services.ofborg-logapi = {
12 + description = "ofBorg log api";
13 +
14 + wantedBy = [ "ofborg.target" ];
15 + bindsTo = [ "ofborg.target" ];
16 + restartTriggers = [ config.environment.etc."ofborg.json".source ];
17 +
18 + stopIfChanged = false;
19 + unitConfig.StartLimitIntervalSec = 0;
20 + serviceConfig = {
21 + # Filesystem stuff
22 + ProtectSystem = "strict"; # Prevent writing to most of /
23 + ProtectHome = true; # Prevent accessing /home and /root
24 + PrivateTmp = true; # Give an own directory under /tmp
25 + PrivateDevices = true; # Deny access to most of /dev
26 + ProtectKernelTunables = true; # Protect some parts of /sys
27 + ProtectControlGroups = true; # Remount cgroups read-only
28 + RestrictSUIDSGID = true; # Prevent creating SETUID/SETGID files
29 + PrivateMounts = true; # Give an own mount namespace
30 + RemoveIPC = true;
31 + UMask = "0077";
32 +
33 + Restart = "always";
34 + RestartSec = "5s";
35 + ExecStart = "${pkgs.ofborg}/bin/logapi /etc/ofborg.json";
36 + User = "ofborg-logapi";
37 + Group = "ofborg-logapi";
38 +
39 + # Capabilities
40 + CapabilityBoundingSet = ""; # Allow no capabilities at all
41 + NoNewPrivileges = true; # Disallow getting more capabilities. This is also implied by other options.
42 +
43 + # Kernel stuff
44 + ProtectKernelModules = true; # Prevent loading of kernel modules
45 + SystemCallArchitectures = "native"; # Usually no need to disable this
46 + ProtectKernelLogs = true; # Prevent access to kernel logs
47 + ProtectClock = true; # Prevent setting the RTC
48 +
49 + # Misc
50 + LockPersonality = true; # Prevent change of the personality
51 + ProtectHostname = true; # Give an own UTS namespace
52 + RestrictRealtime = true; # Prevent switching to RT scheduling
53 + MemoryDenyWriteExecute = true; # Maybe disable this for interpreters like python
54 + PrivateUsers = true; # If anything randomly breaks, it's mostly because of this
55 + RestrictNamespaces = true;
56 + SystemCallFilter = "@system-service";
57 + };
58 + };
59 +
60 + users = {
61 + users.ofborg-logapi = {
62 + isSystemUser = true;
63 + group = "ofborg-logapi";
64 + description = "ofBorg Log Api";
65 + extraGroups = [ "ofborg-logs" ];
66 + };
67 + groups.ofborg-logapi = { };
68 + users.nginx.extraGroups = [ "ofborg-logs" ];
69 + };
70 +
71 + services.nginx.virtualHosts."logs.ofborg.org" = {
72 + forceSSL = true;
73 + enableACME = true;
74 + root = "${logviewer}/website";
75 +
76 + locations = {
77 + "/logfile/" = {
78 + alias = "/var/log/ofborg/";
79 + extraConfig = ''
80 + add_header Access-Control-Allow-Origin "*";
81 + add_header Access-Control-Request-Method "GET";
82 + add_header Content-Security-Policy "default-src 'none'; sandbox;";
83 + add_header Content-Type "text/plain; charset=utf-8";
84 + add_header X-Content-Type-Options "nosniff";
85 + add_header X-Frame-Options "deny";
86 + add_header X-XSS-Protection "1; mode=block";
87 + '';
88 + };
89 +
90 + "/logs/" = {
91 + proxyPass = "http://[::1]:9898";
92 + extraConfig = ''
93 + add_header Access-Control-Allow-Origin "*";
94 + add_header Access-Control-Request-Method "GET";
95 + add_header Content-Security-Policy "default-src 'none'; sandbox;";
96 + add_header X-Content-Type-Options "nosniff";
97 + add_header X-XSS-Protection "1; mode=block";
98 + '';
99 + };
100 + };
101 + };
102 +}
non-critical-infra/hosts/core01.ofborg.org/nginx.nix new
+13
@@ -0,0 +1,13 @@
1 +{
2 + imports = [
3 + ../../modules/nginx.nix
4 + ];
5 +
6 + services.nginx.virtualHosts."core01.ofborg.org" = {
7 + forceSSL = true;
8 + enableACME = true;
9 +
10 + locations."= /metrics/node".proxyPass = "http://[::1]:9100/metrics";
11 + locations."= /metrics/rabbitmq".proxyPass = "http://[::1]:15692/metrics";
12 + };
13 +}
non-critical-infra/hosts/core01.ofborg.org/rabbitmq.nix new
+71
@@ -0,0 +1,71 @@
1 +{ config, ... }:
2 +
3 +{
4 + services.rabbitmq = {
5 + enable = true;
6 + plugins = [
7 + "rabbitmq_shovel"
8 + "rabbitmq_shovel_management"
9 + # https://www.rabbitmq.com/docs/prometheus#overview-prometheus
10 + "rabbitmq_prometheus"
11 + # https://www.rabbitmq.com/docs/management
12 + "rabbitmq_management"
13 + # ofborg-viewer, https://www.rabbitmq.com/docs/web-stomp
14 + "rabbitmq_web_stomp"
15 + ];
16 + configItems = {
17 + # Consumer
18 + "consumer_timeout" = "28800000"; # 8h
19 +
20 + # TLS
21 + "listeners.tcp" = "none";
22 + "listeners.ssl.default" = "5671";
23 + "ssl_options.cacertfile" = "${
24 + config.security.acme.certs."messages.ofborg.org".directory
25 + }/chain.pem";
26 + "ssl_options.certfile" = "${config.security.acme.certs."messages.ofborg.org".directory}/cert.pem";
27 + "ssl_options.keyfile" = "${config.security.acme.certs."messages.ofborg.org".directory}/key.pem";
28 + "ssl_options.versions.1" = "tlsv1.3";
29 +
30 + # Auth
31 + "auth_mechanisms.1" = "PLAIN";
32 + "auth_mechanisms.2" = "AMQPLAIN";
33 + "anonymous_login_user" = "none";
34 +
35 + # Web interface
36 + "management.tcp.ip" = "::1";
37 + "management.tcp.port" = "15672";
38 +
39 + # Prometheus
40 + "cluster_name" = "messages.ofborg.org";
41 + "prometheus.tcp.ip" = "::1";
42 +
43 + # STOMP for ofborg-viewer
44 + "web_stomp.ssl.ip" = "::";
45 + "web_stomp.ssl.port" = "15673";
46 + "web_stomp.ssl.cacertfile" = "${
47 + config.security.acme.certs."messages.ofborg.org".directory
48 + }/chain.pem";
49 + "web_stomp.ssl.certfile" = "${config.security.acme.certs."messages.ofborg.org".directory}/cert.pem";
50 + "web_stomp.ssl.keyfile" = "${config.security.acme.certs."messages.ofborg.org".directory}/key.pem";
51 + };
52 + };
53 +
54 + # No need to reload RabbitMQ, this happens automatically every couple minutes
55 + security.acme.certs."messages.ofborg.org" = {
56 + webroot = "/var/lib/acme/acme-challenge";
57 + group = "rabbitmq";
58 + };
59 +
60 + systemd.services.rabbitmq = {
61 + stopIfChanged = false;
62 + requires = [ "acme-messages.ofborg.org.service" ];
63 + # https://github.com/rabbitmq/rabbitmq-server-release/issues/51
64 + serviceConfig.SuccessExitStatus = "69";
65 + };
66 +
67 + networking.firewall.allowedTCPPorts = [
68 + 5671
69 + 15673
70 + ];
71 +}
non-critical-infra/hosts/eval01.ofborg.org/default.nix new
+44
@@ -0,0 +1,44 @@
1 +{ inputs, ... }:
2 +
3 +{
4 + imports = [
5 + inputs.srvos.nixosModules.hardware-hetzner-cloud-arm
6 + ../../modules/ofborg/evaluator.nix
7 + ./hardware.nix
8 + ];
9 +
10 + # Bootloader.
11 + boot.loader.systemd-boot.enable = true;
12 +
13 + networking = {
14 + hostName = "ofborg-eval01";
15 + domain = "ofborg.org";
16 + hostId = "007f0201";
17 + };
18 +
19 + disko.devices = import ./disko.nix;
20 +
21 + systemd.network.networks."10-uplink" = {
22 + matchConfig.MACAddress = "96:00:03:f4:25:ec";
23 + address = [
24 + "95.217.15.9/32"
25 + "2a01:4f9:c012:cf00::1/64"
26 + ];
27 + routes = [
28 + { Gateway = "fe80::1"; }
29 + {
30 + Gateway = "172.31.1.1";
31 + GatewayOnLink = true;
32 + }
33 + ];
34 + linkConfig.RequiredForOnline = "routable";
35 + };
36 +
37 + system.stateVersion = "24.11"; # Did you read the comment?
38 +
39 + sops.secrets."ofborg/mass-rebuilder-rabbitmq-password" = {
40 + owner = "ofborg-mass-rebuilder";
41 + restartUnits = [ "ofborg-mass-rebuilder.service" ];
42 + sopsFile = ../../secrets/ofborg.eval01.ofborg.org.yml;
43 + };
44 +}
non-critical-infra/hosts/eval01.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/sda";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/sda
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/eval01.ofborg.org/hardware.nix new
+18
@@ -0,0 +1,18 @@
1 +{ lib, ... }:
2 +
3 +{
4 +
5 + boot.initrd.availableKernelModules = [
6 + "xhci_pci"
7 + "virtio_pci"
8 + "usbhid"
9 + "sr_mod"
10 + ];
11 + boot.initrd.kernelModules = [ "virtio_gpu" ];
12 + boot.kernelModules = [ ];
13 + boot.extraModulePackages = [ ];
14 +
15 + swapDevices = [ ];
16 +
17 + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
18 +}
non-critical-infra/hosts/eval02.ofborg.org/client.crt new
+11
@@ -0,0 +1,11 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBmDCCAUqgAwIBAgIUfUYjDOaJML1lIMkAMvLjnSTscY0wBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDczMTEyMDQxN1oYDzIwNzUwNzE5MTIwNDE3
5 +WjBPMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExKjAoBgNVBAMM
6 +IWh5ZHJhLXF1ZXVlLWJ1aWxkZXItb2Zib3JnLWV2YWwwMjAqMAUGAytlcAMhAFcG
7 +BnePuRCpdx2IRfr+ZzL1OFlqMJGYiKKG0aVz58kyo0IwQDAdBgNVHQ4EFgQU7eLl
8 +cmwgQE5zEb2j/e3/WvQmyh4wHwYDVR0jBBgwFoAU0wQG6BxTKtYwlywuyD0aVr/1
9 +r4gwBQYDK2VwA0EAicmxp8HCEF7bwk8NjpayAEPAFq3SPqrl/Bg3ruZitdKUY/Mf
10 +5rEjjlCP6/GjzAfg8kki/t3dyv0Jn1uKjmaMBA==
11 +-----END CERTIFICATE-----
non-critical-infra/hosts/eval02.ofborg.org/default.nix new
+56
@@ -0,0 +1,56 @@
1 +{ inputs, ... }:
2 +{
3 + imports = [
4 + inputs.srvos.nixosModules.hardware-hetzner-cloud-arm
5 + ../../modules/ofborg/builder.nix
6 + ../../modules/hydra/builder.nix
7 + ./hardware.nix
8 + ];
9 +
10 + # Bootloader.
11 + boot.loader.systemd-boot.enable = true;
12 +
13 + networking = {
14 + hostName = "ofborg-eval02";
15 + domain = "ofborg.org";
16 + hostId = "007f0202";
17 + };
18 +
19 + disko.devices = import ./disko.nix;
20 +
21 + systemd.network.networks."10-uplink" = {
22 + matchConfig.MACAddress = "96:00:03:f4:25:ee";
23 + address = [
24 + "95.216.209.162/32"
25 + "2a01:4f9:c012:17c6::1/64"
26 + ];
27 + routes = [
28 + { Gateway = "fe80::1"; }
29 + {
30 + Gateway = "172.31.1.1";
31 + GatewayOnLink = true;
32 + }
33 + ];
34 + linkConfig.RequiredForOnline = "routable";
35 + };
36 +
37 + zramSwap = {
38 + enable = true;
39 + memoryPercent = 100;
40 + };
41 +
42 + system.stateVersion = "24.11"; # Did you read the comment?
43 +
44 + sops.secrets = {
45 + "ofborg/builder-rabbitmq-password" = {
46 + owner = "ofborg-builder";
47 + restartUnits = [ "ofborg-builder.service" ];
48 + sopsFile = ../../secrets/ofborg.eval02.ofborg.org.yml;
49 + };
50 + "harmonia/secret" = {
51 + owner = "harmonia";
52 + restartUnits = [ "harmonia.service" ];
53 + sopsFile = ../../secrets/ofborg.eval02.ofborg.org.yml;
54 + };
55 + };
56 +}
non-critical-infra/hosts/eval02.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/sda";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/sda
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/eval02.ofborg.org/hardware.nix new
+18
@@ -0,0 +1,18 @@
1 +{ lib, ... }:
2 +
3 +{
4 +
5 + boot.initrd.availableKernelModules = [
6 + "xhci_pci"
7 + "virtio_pci"
8 + "usbhid"
9 + "sr_mod"
10 + ];
11 + boot.initrd.kernelModules = [ "virtio_gpu" ];
12 + boot.kernelModules = [ ];
13 + boot.extraModulePackages = [ ];
14 +
15 + swapDevices = [ ];
16 +
17 + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
18 +}
non-critical-infra/hosts/eval03.ofborg.org/client.crt new
+11
@@ -0,0 +1,11 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBmDCCAUqgAwIBAgIUfUYjDOaJML1lIMkAMvLjnSTscY4wBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDczMTEyMDQxN1oYDzIwNzUwNzE5MTIwNDE3
5 +WjBPMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExKjAoBgNVBAMM
6 +IWh5ZHJhLXF1ZXVlLWJ1aWxkZXItb2Zib3JnLWV2YWwwMzAqMAUGAytlcAMhAB0a
7 +xge5pV7G50sB0vcIUlSMLQH09Wtu1lpVMkyZJhwYo0IwQDAdBgNVHQ4EFgQU8fyD
8 +i3r+cVJo4Yg6O6jyKzhKVucwHwYDVR0jBBgwFoAU0wQG6BxTKtYwlywuyD0aVr/1
9 +r4gwBQYDK2VwA0EARtdZCQID1oUjAZojQLw+pquY9QUrePC8LIBUPzMsqyunJYSC
10 +jths2dINWC4p2x6rhkAAfsi+AaCLRXwZHdWcBA==
11 +-----END CERTIFICATE-----
non-critical-infra/hosts/eval03.ofborg.org/default.nix new
+56
@@ -0,0 +1,56 @@
1 +{ inputs, ... }:
2 +{
3 + imports = [
4 + inputs.srvos.nixosModules.hardware-hetzner-cloud-arm
5 + ../../modules/ofborg/builder.nix
6 + ../../modules/hydra/builder.nix
7 + ./hardware.nix
8 + ];
9 +
10 + # Bootloader.
11 + boot.loader.systemd-boot.enable = true;
12 +
13 + networking = {
14 + hostName = "ofborg-eval03";
15 + domain = "ofborg.org";
16 + hostId = "007f0203";
17 + };
18 +
19 + disko.devices = import ./disko.nix;
20 +
21 + systemd.network.networks."10-uplink" = {
22 + matchConfig.MACAddress = "96:00:03:f4:25:ed";
23 + address = [
24 + "37.27.189.4/32"
25 + "2a01:4f9:c012:e37b::1/64"
26 + ];
27 + routes = [
28 + { Gateway = "fe80::1"; }
29 + {
30 + Gateway = "172.31.1.1";
31 + GatewayOnLink = true;
32 + }
33 + ];
34 + linkConfig.RequiredForOnline = "routable";
35 + };
36 +
37 + zramSwap = {
38 + enable = true;
39 + memoryPercent = 100;
40 + };
41 +
42 + system.stateVersion = "24.11"; # Did you read the comment?
43 +
44 + sops.secrets = {
45 + "ofborg/builder-rabbitmq-password" = {
46 + owner = "ofborg-builder";
47 + restartUnits = [ "ofborg-builder.service" ];
48 + sopsFile = ../../secrets/ofborg.eval03.ofborg.org.yml;
49 + };
50 + "harmonia/secret" = {
51 + owner = "harmonia";
52 + restartUnits = [ "harmonia.service" ];
53 + sopsFile = ../../secrets/ofborg.eval03.ofborg.org.yml;
54 + };
55 + };
56 +}
non-critical-infra/hosts/eval03.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/sda";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/sda
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/eval03.ofborg.org/hardware.nix new
+18
@@ -0,0 +1,18 @@
1 +{ lib, ... }:
2 +
3 +{
4 +
5 + boot.initrd.availableKernelModules = [
6 + "xhci_pci"
7 + "virtio_pci"
8 + "usbhid"
9 + "sr_mod"
10 + ];
11 + boot.initrd.kernelModules = [ "virtio_gpu" ];
12 + boot.kernelModules = [ ];
13 + boot.extraModulePackages = [ ];
14 +
15 + swapDevices = [ ];
16 +
17 + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
18 +}
non-critical-infra/hosts/eval04.ofborg.org/client.crt new
+11
@@ -0,0 +1,11 @@
1 +-----BEGIN CERTIFICATE-----
2 +MIIBmDCCAUqgAwIBAgIUfUYjDOaJML1lIMkAMvLjnSTscY8wBQYDK2VwMEMxCzAJ
3 +BgNVBAYTAkRFMRQwEgYDVQQKDAtOaXhPUyBJbmZyYTEeMBwGA1UEAwwVaHlkcmEt
4 +cXVldWUtcnVubmVyLWNhMCAXDTI1MDczMTEyMDQxN1oYDzIwNzUwNzE5MTIwNDE3
5 +WjBPMQswCQYDVQQGEwJERTEUMBIGA1UECgwLTml4T1MgSW5mcmExKjAoBgNVBAMM
6 +IWh5ZHJhLXF1ZXVlLWJ1aWxkZXItb2Zib3JnLWV2YWwwNDAqMAUGAytlcAMhAFcS
7 +v8kRpmT4XxN9Wpy1eUleEAfaTYjkRDNLvx/wyzmco0IwQDAdBgNVHQ4EFgQUyBE8
8 ++NWvcR45rtQz1Kq2T4rdca0wHwYDVR0jBBgwFoAU0wQG6BxTKtYwlywuyD0aVr/1
9 +r4gwBQYDK2VwA0EAP1fJ6PHx+1Y9HSEn0WEndXVf/BW/rsPAwrxPPUZSX6FbwsPQ
10 +uEIx9gIfy02H7S+qTNsXHH/YG3Vk3ZLcBDVLAg==
11 +-----END CERTIFICATE-----
non-critical-infra/hosts/eval04.ofborg.org/default.nix new
+57
@@ -0,0 +1,57 @@
1 +{ inputs, ... }:
2 +{
3 + imports = [
4 + inputs.srvos.nixosModules.hardware-hetzner-cloud-arm
5 + ../../modules/ofborg/builder.nix
6 + ../../modules/hydra/builder.nix
7 + # ../../modules/ofborg/evaluator.nix
8 + ./hardware.nix
9 + ];
10 +
11 + # Bootloader.
12 + boot.loader.systemd-boot.enable = true;
13 +
14 + networking = {
15 + hostName = "ofborg-eval04";
16 + domain = "ofborg.org";
17 + hostId = "007f0204";
18 + };
19 +
20 + disko.devices = import ./disko.nix;
21 +
22 + systemd.network.networks."10-uplink" = {
23 + matchConfig.MACAddress = "96:00:03:f4:25:eb";
24 + address = [
25 + "95.217.18.12/32"
26 + "2a01:4f9:c012:273b::/64"
27 + ];
28 + routes = [
29 + { Gateway = "fe80::1"; }
30 + {
31 + Gateway = "172.31.1.1";
32 + GatewayOnLink = true;
33 + }
34 + ];
35 + linkConfig.RequiredForOnline = "routable";
36 + };
37 +
38 + zramSwap = {
39 + enable = true;
40 + memoryPercent = 100;
41 + };
42 +
43 + system.stateVersion = "24.11"; # Did you read the comment?
44 +
45 + sops.secrets = {
46 + "ofborg/builder-rabbitmq-password" = {
47 + owner = "ofborg-builder";
48 + restartUnits = [ "ofborg-builder.service" ];
49 + sopsFile = ../../secrets/ofborg.eval04.ofborg.org.yml;
50 + };
51 + "harmonia/secret" = {
52 + owner = "harmonia";
53 + restartUnits = [ "harmonia.service" ];
54 + sopsFile = ../../secrets/ofborg.eval04.ofborg.org.yml;
55 + };
56 + };
57 +}
non-critical-infra/hosts/eval04.ofborg.org/disko.nix new
+64
@@ -0,0 +1,64 @@
1 +{
2 + disk = {
3 + main = {
4 + type = "disk";
5 + device = "/dev/sda";
6 + content = {
7 + type = "gpt";
8 + partitions = {
9 + boot = {
10 + size = "1G";
11 + type = "EF00";
12 + content = {
13 + type = "filesystem";
14 + format = "vfat";
15 + mountpoint = "/boot";
16 + mountOptions = [ "umask=0077" ];
17 + };
18 + };
19 + root = {
20 + size = "100%";
21 + content = {
22 + type = "zfs";
23 + pool = "zroot";
24 + };
25 + };
26 + };
27 + };
28 + };
29 + };
30 +
31 + zpool = {
32 + zroot = {
33 + type = "zpool";
34 + options = {
35 + # smartctl --all /dev/sda
36 + # Logical block size: 512 bytes
37 + ashift = "9";
38 + };
39 + rootFsOptions = {
40 + acltype = "posixacl";
41 + compression = "zstd";
42 + mountpoint = "none";
43 + xattr = "sa";
44 + };
45 + datasets = {
46 + "root" = {
47 + type = "zfs_fs";
48 + mountpoint = "/";
49 + };
50 + "nix" = {
51 + type = "zfs_fs";
52 + mountpoint = "/nix";
53 + };
54 + "reserved" = {
55 + type = "zfs_fs";
56 + options = {
57 + canmount = "off";
58 + refreservation = "1G";
59 + };
60 + };
61 + };
62 + };
63 + };
64 +}
non-critical-infra/hosts/eval04.ofborg.org/hardware.nix new
+18
@@ -0,0 +1,18 @@
1 +{ lib, ... }:
2 +
3 +{
4 +
5 + boot.initrd.availableKernelModules = [
6 + "xhci_pci"
7 + "virtio_pci"
8 + "usbhid"
9 + "sr_mod"
10 + ];
11 + boot.initrd.kernelModules = [ "virtio_gpu" ];
12 + boot.kernelModules = [ ];
13 + boot.extraModulePackages = [ ];
14 +
15 + swapDevices = [ ];
16 +
17 + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
18 +}
non-critical-infra/modules/hydra/builder.nix new
+37
@@ -0,0 +1,37 @@
1 +{ inputs, config, ... }:
2 +let
3 + nodes = {
4 + ofborg-eval02 = "eval02.ofborg.org";
5 + ofborg-eval03 = "eval03.ofborg.org";
6 + ofborg-eval04 = "eval04.ofborg.org";
7 + ofborg-build01 = "build01.ofborg.org";
8 + ofborg-build02 = "build02.ofborg.org";
9 + ofborg-build03 = "build03.ofborg.org";
10 + ofborg-build04 = "build04.ofborg.org";
11 + ofborg-build05 = "build05.ofborg.org";
12 + };
13 + nodePath = nodes."${config.networking.hostName}";
14 +in
15 +{
16 + imports = [
17 + inputs.hydra-staging.nixosModules.builder
18 + ];
19 +
20 + services.hydra-queue-builder-dev = {
21 + enable = true;
22 + queueRunnerAddr = "https://queue-runner.staging-hydra.nixos.org";
23 + maxJobs = 2;
24 + mtls = {
25 + serverRootCaCertPath = ../../hosts/staging-hydra/ca.crt;
26 + clientCertPath = "${../../hosts/${nodePath}/client.crt}";
27 + clientKeyPath = config.sops.secrets."queue-runner-client.key".path;
28 + domainName = "queue-runner.staging-hydra.nixos.org";
29 + };
30 + };
31 +
32 + sops.secrets."queue-runner-client.key" = {
33 + owner = "hydra-queue-builder";
34 + restartUnits = [ "hydra-queue-builder-dev.service" ];
35 + sopsFile = ../../secrets/ofborg.${nodePath}.yml;
36 + };
37 +}
non-critical-infra/modules/ofborg/builder.nix new
+92
@@ -0,0 +1,92 @@
1 +{ config, pkgs, ... }:
2 +
3 +{
4 + imports = [
5 + ./common.nix
6 + ./ofborg-config.nix
7 + ./harmonia.nix
8 + ];
9 +
10 + networking.extraHosts = ''
11 + 95.216.209.162 eval02.ofborg.org
12 + 37.27.189.4 eval03.ofborg.org
13 + 95.217.18.12 eval04.ofborg.org
14 +
15 + 185.119.168.10 build01.ofborg.org
16 + 185.119.168.11 build02.ofborg.org
17 + 185.119.168.12 build03.ofborg.org
18 + 185.119.168.13 build04.ofborg.org
19 + 142.132.171.106 build05.ofborg.org
20 + '';
21 +
22 + deployment.tags = [ "ofborg-builder" ];
23 +
24 + systemd.services.ofborg-builder = {
25 + description = "ofBorg builder";
26 +
27 + wantedBy = [ "ofborg.target" ];
28 + bindsTo = [ "ofborg.target" ];
29 + restartTriggers = [ config.environment.etc."ofborg.json".source ];
30 +
31 + path = [
32 + config.nix.package
33 + config.programs.git.package
34 + ];
35 +
36 + environment = {
37 + GIT_AUTHOR_NAME = "OfBorg";
38 + GIT_COMMITTER_NAME = "OfBorg";
39 + EMAIL = "ofborg@nixos.org";
40 + };
41 +
42 + stopIfChanged = false;
43 + unitConfig.StartLimitIntervalSec = 0;
44 + serviceConfig = {
45 + # Filesystem stuff
46 + ProtectSystem = "strict"; # Prevent writing to most of /
47 + ProtectHome = true; # Prevent accessing /home and /root
48 + PrivateTmp = true; # Give an own directory under /tmp
49 + PrivateDevices = true; # Deny access to most of /dev
50 + ProtectKernelTunables = true; # Protect some parts of /sys
51 + ProtectControlGroups = true; # Remount cgroups read-only
52 + RestrictSUIDSGID = true; # Prevent creating SETUID/SETGID files
53 + PrivateMounts = true; # Give an own mount namespace
54 + RemoveIPC = true;
55 + UMask = "0077";
56 +
57 + Restart = "always";
58 + RestartSec = "5s";
59 + ExecStart = "${pkgs.ofborg}/bin/builder /etc/ofborg.json";
60 + User = "ofborg-builder";
61 + Group = "ofborg-builder";
62 +
63 + StateDirectory = [ "ofborg/checkout" ];
64 +
65 + # Capabilities
66 + CapabilityBoundingSet = ""; # Allow no capabilities at all
67 + NoNewPrivileges = true; # Disallow getting more capabilities. This is also implied by other options.
68 +
69 + # Kernel stuff
70 + ProtectKernelModules = true; # Prevent loading of kernel modules
71 + SystemCallArchitectures = "native"; # Usually no need to disable this
72 + ProtectKernelLogs = true; # Prevent access to kernel logs
73 + ProtectClock = true; # Prevent setting the RTC
74 +
75 + # Misc
76 + LockPersonality = true; # Prevent change of the personality
77 + ProtectHostname = true; # Give an own UTS namespace
78 + RestrictRealtime = true; # Prevent switching to RT scheduling
79 + MemoryDenyWriteExecute = true; # Maybe disable this for interpreters like python
80 + PrivateUsers = true; # If anything randomly breaks, it's mostly because of this
81 + RestrictNamespaces = true;
82 + SystemCallFilter = "@system-service";
83 + };
84 + };
85 +
86 + users.users.ofborg-builder = {
87 + isSystemUser = true;
88 + group = "ofborg-builder";
89 + description = "ofBorg builder system user";
90 + };
91 + users.groups.ofborg-builder = { };
92 +}
non-critical-infra/modules/ofborg/common.nix new
+33
@@ -0,0 +1,33 @@
1 +{ inputs, ... }:
2 +{
3 + imports = [
4 + inputs.srvos.nixosModules.server
5 + ../../../modules/common.nix
6 + ../common.nix
7 + ./ofborg-config.nix
8 + ];
9 +
10 + nix.gc.automatic = true;
11 +
12 + # TODO wire up exporters
13 + # TODO loki
14 +
15 + # Not part of the infra team
16 + users.users.root.openssh.authorizedKeys.keys = [
17 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM35Bq87SBWrEcoDqrZFOXyAmV/PJrSSu3hl3TdVvo4C janne"
18 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPK/3rYhlIzoPCsPK38PMdK1ivqPaJgUqWwRtmxdKZrO ✏️"
19 + ];
20 +
21 + nixpkgs.overlays = [
22 + (_self: super: {
23 + ofborg = inputs.ofborg.packages.${super.stdenv.hostPlatform.system}.pkg;
24 + })
25 + ];
26 +
27 + systemd.targets.ofborg = {
28 + description = "ofBorg target";
29 + wantedBy = [ "multi-user.target" ];
30 + };
31 +
32 + deployment.tags = [ "ofborg" ];
33 +}
non-critical-infra/modules/ofborg/evaluator.nix new
+91
@@ -0,0 +1,91 @@
1 +{ config, pkgs, ... }:
2 +
3 +{
4 + imports = [
5 + ./common.nix
6 + ./ofborg-config.nix
7 + ./github-tokens.nix
8 + ];
9 +
10 + deployment.tags = [ "ofborg-evaluator" ];
11 +
12 + systemd.services.ofborg-mass-rebuilder = {
13 + description = "ofBorg mass rebuilder";
14 +
15 + wantedBy = [ "ofborg.target" ];
16 + bindsTo = [ "ofborg.target" ];
17 + restartTriggers = [ config.environment.etc."ofborg.json".source ];
18 +
19 + path = [
20 + config.nix.package
21 + config.programs.git.package
22 + ];
23 +
24 + environment = {
25 + GIT_AUTHOR_NAME = "OfBorg";
26 + GIT_COMMITTER_NAME = "OfBorg";
27 + EMAIL = "ofborg@nixos.org";
28 + };
29 +
30 + stopIfChanged = false;
31 + unitConfig.StartLimitIntervalSec = 0;
32 + serviceConfig = {
33 + # Filesystem stuff
34 + ProtectSystem = "strict"; # Prevent writing to most of /
35 + ProtectHome = true; # Prevent accessing /home and /root
36 + PrivateTmp = true; # Give an own directory under /tmp
37 + PrivateDevices = true; # Deny access to most of /dev
38 + ProtectKernelTunables = true; # Protect some parts of /sys
39 + ProtectControlGroups = true; # Remount cgroups read-only
40 + RestrictSUIDSGID = true; # Prevent creating SETUID/SETGID files
41 + PrivateMounts = true; # Give an own mount namespace
42 + RemoveIPC = true;
43 + UMask = "0077";
44 +
45 + Restart = "always";
46 + RestartSec = "5s";
47 + ExecStart = "${pkgs.ofborg}/bin/mass-rebuilder /etc/ofborg.json";
48 + User = "ofborg-mass-rebuilder";
49 + Group = "ofborg-mass-rebuilder";
50 + SupplementaryGroups = [
51 + "ofborg-github-oauth-secret"
52 + "ofborg-github-app-key"
53 + ];
54 +
55 + StateDirectory = [ "ofborg/checkout" ];
56 +
57 + # Capabilities
58 + CapabilityBoundingSet = ""; # Allow no capabilities at all
59 + NoNewPrivileges = true; # Disallow getting more capabilities. This is also implied by other options.
60 +
61 + # Kernel stuff
62 + ProtectKernelModules = true; # Prevent loading of kernel modules
63 + SystemCallArchitectures = "native"; # Usually no need to disable this
64 + ProtectKernelLogs = true; # Prevent access to kernel logs
65 + ProtectClock = true; # Prevent setting the RTC
66 +
67 + # Misc
68 + LockPersonality = true; # Prevent change of the personality
69 + ProtectHostname = true; # Give an own UTS namespace
70 + RestrictRealtime = true; # Prevent switching to RT scheduling
71 + MemoryDenyWriteExecute = true; # Maybe disable this for interpreters like python
72 + PrivateUsers = true; # If anything randomly breaks, it's mostly because of this
73 + RestrictNamespaces = true;
74 + SystemCallFilter = "@system-service";
75 + };
76 + };
77 +
78 + users.users.ofborg-mass-rebuilder = {
79 + isSystemUser = true;
80 + group = "ofborg-mass-rebuilder";
81 + description = "ofBorg mass rebuilder system user";
82 + };
83 + users.groups.ofborg-mass-rebuilder = { };
84 +
85 + programs.git.enable = true;
86 +
87 + sops.secrets = {
88 + "ofborg/github-oauth-secret".restartUnits = [ "ofborg-github-comment-filter.service" ];
89 + "ofborg/github-app-key".restartUnits = [ "ofborg-github-comment-filter.service" ];
90 + };
91 +}
non-critical-infra/modules/ofborg/github-tokens.nix new
+16
@@ -0,0 +1,16 @@
1 +{
2 + sops.secrets = {
3 + "ofborg/github-oauth-secret" = {
4 + mode = "0440";
5 + group = "ofborg-github-oauth-secret";
6 + sopsFile = ../../secrets/github-tokens.ofborg.org.yml;
7 + };
8 + "ofborg/github-app-key" = {
9 + mode = "0440";
10 + group = "ofborg-github-app-key";
11 + sopsFile = ../../secrets/github-tokens.ofborg.org.yml;
12 + };
13 + };
14 + users.groups."ofborg-github-oauth-secret" = { };
15 + users.groups."ofborg-github-app-key" = { };
16 +}
non-critical-infra/modules/ofborg/harmonia.nix new
+71
@@ -0,0 +1,71 @@
1 +{ config, lib, ... }:
2 +let
3 + nodes = {
4 + ofborg-eval02 = {
5 + substituter = "eval02.ofborg.org";
6 + public-key = "eval02.ofborg.org:85vbhZviIv2eeC3VKK2T/X/zzgIYLYjyGw3Pi+Pqh34=";
7 + };
8 + ofborg-eval03 = {
9 + substituter = "eval03.ofborg.org";
10 + public-key = "eval03.ofborg.org:HATIHUe6QMH83dbDpnUv9VeuaNDBjeWshW2monmRK1c=";
11 + };
12 + ofborg-eval04 = {
13 + substituter = "eval04.ofborg.org";
14 + public-key = "eval04.ofborg.org:k4s/u1JWDew+dwXcuFvAAVFK2DfN6ib+73iCwX5gkBE=";
15 + };
16 + ofborg-build01 = {
17 + substituter = "build01.ofborg.org";
18 + public-key = "build01.ofborg.org:Edgo6+RgHXa8nlxuLAgh18fMhQuXGdXNcYK6yNKQaQ8=";
19 + };
20 + ofborg-build02 = {
21 + substituter = "build02.ofborg.org";
22 + public-key = "build02.ofborg.org:uw5IBpYv129c8+ltrQ288TGvmE5JqNZA+q7GW3tDaUk=";
23 + };
24 + ofborg-build03 = {
25 + substituter = "build03.ofborg.org";
26 + public-key = "build03.ofborg.org:8LFTt2s1cbzniV4MLkT30qEHPY0cK3RP+6fk03GD3lw=";
27 + };
28 + ofborg-build04 = {
29 + substituter = "build04.ofborg.org";
30 + public-key = "build04.ofborg.org:NHEGj8moimu2TiZNIA4DOb4kVhvds6Vlzr2TAwX1mUY=";
31 + };
32 + ofborg-build05 = {
33 + substituter = "build05.ofborg.org";
34 + public-key = "build05.ofborg.org:RPuXIkyo86mCmsfYqyK/STIbPE+DM9Ixcw7HUe64Ss4=";
35 + };
36 + };
37 + ownNode = nodes."${config.networking.hostName}";
38 + allOtherNodes = lib.filterAttrs (n: _: n != config.networking.hostName) nodes;
39 +in
40 +{
41 + services.harmonia = {
42 + enable = true;
43 + signKeyPaths = [ "/run/secrets/harmonia/secret" ];
44 + settings = {
45 + priority = 50;
46 + };
47 + };
48 +
49 + nix.settings = {
50 + fallback = true;
51 + extra-substituters = lib.mapAttrsToList (_: config: "http://${config.substituter}") allOtherNodes;
52 + extra-trusted-public-keys = lib.mapAttrsToList (_: config: config.public-key) allOtherNodes;
53 + };
54 +
55 + networking.firewall.allowedTCPPorts = [ 80 ];
56 + services.nginx = {
57 + enable = true;
58 + recommendedTlsSettings = true;
59 + virtualHosts."${ownNode.substituter}" = {
60 + locations."/".extraConfig = ''
61 + proxy_pass http://127.0.0.1:5000;
62 + proxy_set_header Host $host;
63 + proxy_redirect http:// https://;
64 + proxy_http_version 1.1;
65 + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
66 + proxy_set_header Upgrade $http_upgrade;
67 + proxy_set_header Connection $connection_upgrade;
68 + '';
69 + };
70 + };
71 +}
non-critical-infra/modules/ofborg/ofborg-config.nix new
+94
@@ -0,0 +1,94 @@
1 +let
2 + rabbitmq = {
3 + host = "messages.ofborg.org";
4 + ssl = true;
5 + virtualhost = "ofborg";
6 + # Missing: username and password_file
7 + };
8 +in
9 +{
10 + config,
11 + pkgs,
12 + lib,
13 + ...
14 +}:
15 +{
16 + environment.etc."ofborg.json".text = builtins.toJSON {
17 + github_webhook_receiver = {
18 + listen = "[::1]:9899";
19 + webhook_secret_file = "/run/secrets/ofborg/github-webhook-secret";
20 + rabbitmq = rabbitmq // {
21 + username = "ofborg-github-webhook";
22 + password_file = "/run/secrets/ofborg/github-webhook-rabbitmq-password";
23 + };
24 + };
25 + log_api_config = {
26 + listen = "[::1]:9898";
27 + logs_path = "/var/log/ofborg";
28 + serve_root = "https://logs.ofborg.org/logfile";
29 + };
30 + evaluation_filter = {
31 + rabbitmq = rabbitmq // {
32 + username = "ofborg-evaluation-filter";
33 + password_file = "/run/secrets/ofborg/evaluation-filter-rabbitmq-password";
34 + };
35 + };
36 + github_comment_filter = {
37 + rabbitmq = rabbitmq // {
38 + username = "ofborg-github-comment-filter";
39 + password_file = "/run/secrets/ofborg/github-comment-filter-rabbitmq-password";
40 + };
41 + };
42 + github_comment_poster = {
43 + rabbitmq = rabbitmq // {
44 + username = "ofborg-github-comment-poster";
45 + password_file = "/run/secrets/ofborg/github-comment-poster-rabbitmq-password";
46 + };
47 + };
48 + log_message_collector = {
49 + rabbitmq = rabbitmq // {
50 + username = "ofborg-log-message-collector";
51 + password_file = "/run/secrets/ofborg/log-message-collector-rabbitmq-password";
52 + };
53 + logs_path = "/var/log/ofborg";
54 + };
55 + mass_rebuilder = {
56 + rabbitmq = rabbitmq // {
57 + username = "${config.networking.hostName}";
58 + password_file = "/run/secrets/ofborg/mass-rebuilder-rabbitmq-password";
59 + };
60 + };
61 + runner = {
62 + identity = "ofborg-core"; # TODO what is this
63 + repos = [
64 + "nixos/nixpkgs"
65 + "ofborg/testpkgs"
66 + ];
67 + disable_trusted_users = true;
68 + trusted_users = [ ]; # disabled so everyone can build
69 + };
70 + builder = {
71 + rabbitmq = rabbitmq // {
72 + username = "${config.networking.hostName}";
73 + password_file = "/run/secrets/ofborg/builder-rabbitmq-password";
74 + };
75 + };
76 + github_app = {
77 + app_id = 20500; # Used for submitting statuses
78 + private_key = "/run/secrets/ofborg/github-app-key"; # Used for submitting statuses
79 + oauth_client_id = "Iv1.24d6e782e2ccbbdf"; # For accessing the API
80 + oauth_client_secret_file = "/run/secrets/ofborg/github-oauth-secret"; # For accessing the API
81 + };
82 +
83 + checkout.root = "/var/lib/ofborg/checkout";
84 + nix = {
85 + build_timeout_seconds = 18000;
86 + initial_heap_size = "4g";
87 + remote = "daemon";
88 + inherit (pkgs.stdenv.hostPlatform) system;
89 + };
90 + };
91 +
92 + nix.settings.trusted-users = lib.mkForce [ "*" ];
93 + nix.settings.allowed-users = lib.mkForce [ "*" ];
94 +}
non-critical-infra/secrets/github-tokens.ofborg.org.yml new
+104
@@ -0,0 +1,104 @@
1 +ofborg:
2 + github-oauth-secret: ENC[AES256_GCM,data:ljXwAT9e8Wo/5m2xWC0Ip3JxGVFZNqeVn//TnOtck8NCE0enG3Pv5w==,iv:v/sATS+/psNauwc9dkGA+kNzCyjOE0Lx2uakidmnCmw=,tag:9me+XbM1spGzvJGUYDbbDA==,type:str]
3 + github-app-key: ENC[AES256_GCM,data:+NMlEwfrQgQtYPzmQE6rRTi6OMJRCVONHfgA2MRE32RaLXnpRXVdbVl5pujyD1AihFxb8l8QKjPOZolb7W+GBV4u7nAD5NW/JWKLrnll7AXsL2pDltzSyeXRHC8AM2Sl6vB9xAQJ6XPF/PsAHMm9xWCrGqByoUz0cVUK9jUTwG6Ckzc35oSu6HWuX0wjD46Mjv5pB6ODr0zs0wgLeEku6UBk6OqVwctAOKPzL8ESjxxJz1n+EGCV3XEeQAIkh1EQgfTgzrHntmdGIGPytYpUO50qIZCf/UQepYVDxiCL34f7lypT5FRji7DnaiAMgvuNIvBnBR65o0Su91EjiAFjs/si0a226WVApXg+EVjWdcUgG5O6FYH/No0MxfdjhmFlTlHMS+WhP+nCZilFFTuMnA8/tam2ywCDrEZQybJI8BjnwALlT9nVo8iTLrEPF+p2T2D2JBMENXgOfma5IZFFfOkn7eJt1U0kJQrWRe3zylM/Q6g7Iv3gW0N8jgtx0XUPQlmI3TE7QfjJLzgFky7x0gvF0fdohuGg18tJrzxPudcV9FWGpiOwIw9dYix3cCDpIOT3ohAdYS4XRsweNNZLShQlGwHR4YkFEVMFL07hbEWkn7iO0uyei8e+UBwFrCYnz/hMcTihCE8gmi0ohURe0z5id0G7xp41Z7O3kZTLJCkIAa8PDR9A/n9VLb+ae29c48TfUsiJv3OspfVtbOgSl9FfO/6wNPw7D2TFLILlJnnCFToxzaQPjWWiiE8+G+NA433JGMbs8T07RymMPufoumOs7OVJoz30O72ertNT3IRVFEWTkdOwtqw31ZYJPHxVc/sQHUlOmuUBebfS/tNR3UyLTyJFI5M77otW1zrpaxEd94IPBvn4p5G5Tosc3NNZug5ciN42YVwgKyARzBAZvi7d34l5p0tkxMYv/Ky8jMsocY7B5+9j87FnsivHhku1ha1YP/7NwmctX+P9tQdkLKCrBKLxj7nBUoiG8MCgM7qBP/0bjD5CLh+GTaL2d569nJzqMaCO27cnPzCuKjz5wegBZFBYyRYqWKpShTK4bL6eGWgPK6vSC7fsVtiGAkeTLHarNNo5i4ad9ucyw5a0E4cQtok1SG3hbopbqTDZb6F5pqs+JccYjfURjQSaoUJqa32MG3ifU2V9N1btRxa4zEE5S9kH+EneCfrDGaCM2iL2MWdbuIrgNieybEEUjBvLc1DSG834kFRJFVhz0BiQ1uo0afeqvXvlSzPBEo2x/9SeB1KCWjKV4tdBI4aDGvNNhZq7tbhpzzzdpfBKUgfeoL8UJl9vIv6LeXxSs+CIJbImgV1hHfg5ZN+LE7UB29+pLZzK4DlVCQS4hZjQ8/fnbxJl3x2XkdcEDa/69Ad4M6cZlU+Pbj5OfB+PfoluPMTMWX5YxaoZjGvDobh+lUrPnQjf/Yai7nFr0k/qhpSbFbwRNQ4k1rcTPLaopmjtn7WbvC21+lZN8wSmOF5duMc47REslZgodJyr75K9qFWE/V3l6w1r9oD9i1WLbLdQSJ4Dvd5WWvwT0Z9Klx3Vey9AUJ7IE2g78e+6adWzkuqJunJ7nZmxPZNSuDz3ElGK3aFFlUpwpOGkRrJ18We3E9f5LXjbn3FEvHsmXmxgSaxYEjubHtyLyctupETHROG6QIcUEo8OrQqtHpN0ljTo6qD1fJXC6/tQF0SEfYayGiXetEVTdLjJAvKggThbKMdnGRN7LPNxOqRVHSWi5VFJMizZrPiZZizmMApe73TH0wf6bUKOmkUjN1MgIC+T5pKlsHr+1xadLObrIOL3FiCjg70setSiTjLRJjJJ97+pQqfo1z5SOit8DUv55K3Rth/C01hl7/RKkpWl2z/tXSnYcfdfmIky8OrUFGorPiZ7S3pSPlwcjLZmscu1SXZVSDnhaAp8nTUKEOw6pwN3mDcI88cgVF9Qi9HGKxL/fjCO14OkBCGE6rjANXtGsGfY0FG6H98uyD2U7IiS6oRUBFaVwvfjzQYESQCqH3UYFCIeRfwpCzB59g5xhiJni5+9DcIKuJAKM6/mnmQKyRu3SReMElsXN7xme7ggOQQ5FtnXa7wPUcDsMYZvs36Rkc25Jyjnh5T0iqpU/46Rj7owKMCvz860ZCDTbL4J3APnYKV63ix4y+8Lh+E7fQOXEyci7jBK+3ArCKysitEVc55QvFDX/XDAtdBWLZT4UvUASyX+7MN4OtfqbTXCrwA7zXCKrA==,iv:seUxszOTK2/oct+FlKVFPseo4/CHpdp0eiLUyddmmWg=,tag:HWrNTJKz7oQY+aPRk4H55g==,type:str]
4 +sops:
5 + kms: []
6 + gcp_kms: []
7 + azure_kv: []
8 + hc_vault: []
9 + age:
10 + - recipient: age1rrrj8tgcyp9xfxvy6zmk9487x62cgx0z68l7jretz2th6ey9nf4qh7nq7h
11 + enc: |
12 + -----BEGIN AGE ENCRYPTED FILE-----
13 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0QlNpd2c5MDhBcGEwQjQx
14 + OTFXSUd1SldaNUdTc2t4Ukx2c3FncVFzZWtRCnd5a1hwekxYVjZmY0tiaEhIbWFU
15 + cWpZUGxxcjZDVWx0L3FnaDBKaU5mdEkKLS0tIFVSUkJsdWpWeXhoYit0SGVCZC96
16 + Y1NZVHp6aG9PMVZYM3FSTU1vUWJWamsKma/fA+Gko375jMBmT/oOrbbnkju22SYo
17 + Vcc4qUthuffHxlSCW5fW7Coyl9JEA3tx2lOBUk0hZO5kPkVpquS8Uw==
18 + -----END AGE ENCRYPTED FILE-----
19 + - recipient: age16d0phf8c5wy3rfsd4pgc42mqa3aw2llfukdhgu7pzklnzjr2rvxsusz842
20 + enc: |
21 + -----BEGIN AGE ENCRYPTED FILE-----
22 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrc1NSckN4ZEsxZ0RtWUcz
23 + czBMcDR6akRzN0pVUnc3a2dHU3RZelBXTUZZClNzWXBmYmhUMW9pbVVXYXJOdDF1
24 + QWJsQWE5cFQwdXp4ck42VkRud050OG8KLS0tIGVNeXdBMmxOTXp1TUhDY09sbE5r
25 + Z0NLRXNzcWdTL0lzcEtRd21CRFd0dUEKNjzdg+qidmug1Jn/kvpaeOcSm6U3iZnP
26 + um0wz8k3sWsAZdnzxm3jYPhjEFaRZMkEez4OGv5ZAbj6QOJ/LgVu0A==
27 + -----END AGE ENCRYPTED FILE-----
28 + - recipient: age1qn3q3y04pxumygmq96x0gk9qtrdcgdw4y5nl6xd780u4avk0qgsqy8tuu0
29 + enc: |
30 + -----BEGIN AGE ENCRYPTED FILE-----
31 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6UWFycmhQRlhJNjNBZElZ
32 + aDBBSHgrUXZIbVRCZzdiK0NkV29rZ09laWxFCnhZMFlzdFh5aTlBdkU5bFdPNDMz
33 + REFEZ1hZdHpFNUQ0RmJrUm1aYVRjd28KLS0tIGtVY29NOGhOa0J1YVh5eWJIUDA2
34 + ZnhUNmhMQUdwN3UvcFU4Y0hlZDI5NWsKfmVq2vz6fg+V/VEtHBNykjs/1TO6PPql
35 + HQL8GEWGJtATdlLkbfIiYF/I/mFr04Vm8Efk7kDPfhMAtDtah5cr9A==
36 + -----END AGE ENCRYPTED FILE-----
37 + - recipient: age1yssfznyq8rljcpfthpulnvfls0l5t36fpqxkk5taxcwpkqhv9gcqrvvwh7
38 + enc: |
39 + -----BEGIN AGE ENCRYPTED FILE-----
40 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNSENwSTJqaTNYSnZIOFlw
41 + Ulk0TWZtaEJUUVBlWG9lUmlMQ1REMDhZcFVZCmVoTzVaNHZuUGowVnkvSEVrZXdn
42 + b2tSemNYZjJSQTdIcHl3UDhJTEdwYjQKLS0tIDJXVDRSUlBnWXdleGROUzA1dVBD
43 + R1NzN0ZRay8vNzhQYnJqQ3pXcUJpSFkKT2r2INWOiYqg1Z/QY3Uz8O0jqvC+zOyD
44 + EIKCCHO1S4FdO6lmcsA0ArncL6LwStSQSb0JC4iHyhzjuRf2Jqo6jw==
45 + -----END AGE ENCRYPTED FILE-----
46 + - recipient: age1vunut833rrdfulgnsjqtuke4yjtzexn2xqjqavwzxlgrg7n4y45qhurzwc
47 + enc: |
48 + -----BEGIN AGE ENCRYPTED FILE-----
49 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKTEVUeUJVNTA5dmsrcWVw
50 + Q3R5RGF0cVYrQVJGWXBFWEs3a3lmSWEwRGpZClR6ZGJaZHJ1ZE9oQ28zZ3RRRUMx
51 + VGY1aFNBRGNkSStuUDlDNUZZeTN6azQKLS0tIGUzWXIxQ0NranBDZHJQQVRvb2dF
52 + QWQxbmRJSUlKSmdGaGRXTHhNRnc5OGsKKUz1rJXZpDkyVuLafUzzYurPm0SHdXF0
53 + u5gBoEUFK302z04UFIKu7TXKDFthNxCnh7bKLGjlmPQ9mkEoDAx5FA==
54 + -----END AGE ENCRYPTED FILE-----
55 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
56 + enc: |
57 + -----BEGIN AGE ENCRYPTED FILE-----
58 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVc1BzZGtHZHFKN2VYc29D
59 + eGpkaWdXalhSdjFRT2Nhd3ZUUjMwdDNFL3ljCmZLdnh5MUI2WWFNNjRhaU14M05K
60 + WkVpR3NjYjNwem9rYkJ4NkRvUDE3Ym8KLS0tIDZjbXV4R0hwTUUzaEtzMkV4N2NP
61 + elMwbUFHV2RCemdWeFQzYlRnNnlBLzgKQD8sy0m0vI85vQEKcKNWkZlaOyJMoikt
62 + XNXNkx+PT5cXIrPHcQOsbRqTM/lgepJqHsSrnWCf7HmVgaBxpLN03g==
63 + -----END AGE ENCRYPTED FILE-----
64 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
65 + enc: |
66 + -----BEGIN AGE ENCRYPTED FILE-----
67 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvc0ZsY0w3Wnhwemtoa3pH
68 + MVRuYmNoQkpJSU5oZFh6Y3R1dDl4bURwMzBrClVWOVRacndkN3c0TlVvWnpIaWdK
69 + Z09FUVQ1bDUwcHMzaXN2YlNwQzhQVEkKLS0tIDhvVGNzOUZnNjZucXdXNE1aWkJW
70 + SjBPS003bWh1Z2NFbDYxazlKVUF0c0UKiH+DGOBx7tSzjBelBwea7Av4oG50aV7R
71 + CWZc5efN8naw9r0+c1QwSQKQ40a4fXaIoy66X6oLDPfBO0nApUlAag==
72 + -----END AGE ENCRYPTED FILE-----
73 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
74 + enc: |
75 + -----BEGIN AGE ENCRYPTED FILE-----
76 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6SVIwZlFnQ0NweGxaVW8x
77 + WCtZVm0yOXE3VmcwdEwwWW9YR3lCZ1hCczFJCkVjSjA4SmNhTXJRTzNGMVNqY210
78 + NTh6bUJyODhIY2ZjT3JhRk1waHdnVE0KLS0tIHdxcDJFRzlDTVpqZlArZWVFcHFj
79 + MHZteHZHRG52VEhraDd5akd1Ym0rN3MKaotVK+V+sgN3jYO6eRT6iklBInF17S47
80 + pB0epMvdUSvu0rXeNlkyrKzqKSPQDA+iwJJws7N3fsYiL91MjYrFgA==
81 + -----END AGE ENCRYPTED FILE-----
82 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
83 + enc: |
84 + -----BEGIN AGE ENCRYPTED FILE-----
85 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5cGtQN2dZOVg1dU9GcU5h
86 + ejFOc25HRGYyajhFMHZGQ0ZLc2hiNHV5d1FzCmlGa1lWaW9tQi9TMk1Pd3ZBMjl1
87 + WGV1azgwWkx2VUFEODBUOFpLeFFtYXcKLS0tIGh5RkozSEFkeVg0eVFaa1doUDV3
88 + K2RuMHZyUnltallXQk4xamxLQ3h2NzAKlMaEXoukMvK6O5/88nfYmCSxFm+MmSk3
89 + t4et95x+87Kyen5LX7z+Pj+X5MrjC0O2DDyoDQj6K7wT/hjMzarbNg==
90 + -----END AGE ENCRYPTED FILE-----
91 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
92 + enc: |
93 + -----BEGIN AGE ENCRYPTED FILE-----
94 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBUnNnR2IvelptWW1DL3pq
95 + V3pKMXFKZXlpdmFKMEQzN1VIanlFNjRHWW13CmxocThhTDdOQ3oxd1ZoNHpJYnpT
96 + Z1JXUE5TZE1ZWEwvc0x4di9ORGdUWWMKLS0tIFY5Y2NLUXZwbi9uaVVvYU9DbkJE
97 + TFpQaW0zYWVMMkExc0tlb3FxVDdTcmMK+QNN15A44FNROjzoNEdLJCc3t3s8YX3g
98 + abliHcCZmf4PxF0Z2KTem7vfglkKZiA8kf//nmH3UADiVm2K/AY6Vg==
99 + -----END AGE ENCRYPTED FILE-----
100 + lastmodified: "2024-12-29T16:57:50Z"
101 + mac: ENC[AES256_GCM,data:9eXCFgz2dK9F4yWZ/vZykAZV6B0dh2ZrtsPMcy0EfnT12JFgt6AHpkmclEhqVLS7oXshUi4mVwkQjB2ZdVVega2IePu3EmWkpxbFoJyNW+kce0d/CYZAZRjigwPS68lxXT8+q1rUvIeMAq60EnZaefTwU9+xM+x05lXsw2yxsIo=,iv:ouMLuOX1mBlJ2wcn7MPexfZs0RT/xxOWovgYQIpafxY=,tag:SHjoqoBrSdUZB/RTqdB9RQ==,type:str]
102 + pgp: []
103 + unencrypted_suffix: _unencrypted
104 + version: 3.9.2
non-critical-infra/secrets/ofborg.build01.ofborg.org.yml new
+65
@@ -0,0 +1,65 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:PJutzppfwBpsqcnCn8nsiistlFAFvqx+WyClEFQAPbFPi8l4wTZ1emVkkPt7b6tmI/w=,iv:iGSvtMrTV6hcKkbubgH5bwJbJIB30K+apjX5xZ0BTC8=,tag:16W2YeZoED5PjKCW2piiyA==,type:str]
3 +harmonia:
4 + secret: ENC[AES256_GCM,data:l0ksas81hQj9u9FHZiW54tNWf9h6KV9G2zQD4T210xeW+zA/5C+fMqO6XVcQfISmxUjBzHCROr7mhLo/26S1ko+nUJq2sKu6fxiAF+yREH6rqFwC9wn4egochDaXQoAcE4a+8uPh8u8XT+A=,iv:hCVtTwC170TPpBHQDzPK72+RxS5HNYLv8J3LvvttJ4g=,tag:tvIzWGanqOPku3+oywJ7Lg==,type:str]
5 +queue-runner-client.key: ENC[AES256_GCM,data:/8jVcQHp4rUDZizbuPmQy3IrSAlxuYJ9vMHDUSbShu7iZ+oIq1h0cxJmfvFZ+Rf6/a1ZZZQykyUcJeGlNvCpFYabKWit6RKcHHSy5S3lg50kKMwyZga4h9FWjWBd4rJ3XOCbelQXNwAfXBBanxgF1hMlE+SXoAg=,iv:6VUR22+ZIlu0eyWechcAM8Z6QWqCfBynORivUjV5SOA=,tag:0CQ7BVo4IKqnV7j9gyplXQ==,type:str]
6 +sops:
7 + age:
8 + - recipient: age1ulnex45wt7fpj92jy9c5del3ccz6mmnqptrsva24k8m7qsez9pcsdu3eae
9 + enc: |
10 + -----BEGIN AGE ENCRYPTED FILE-----
11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVaDJ3K3RobDN2bU5lNTJK
12 + RTd3WVFmQUpGVFFYb3dMeDdJVE1DOVp6NW5NCnZEZ2lqald3TVVuZWJhZ1I1Mi9E
13 + bkNaaU56K2xLYmdEVWRQRWEvTUFWU2cKLS0tIE5oeHFaTFJKTitJVk1XTndIeUFl
14 + cmxhbDlBSVRJeFlDM3BpbnZDbElSYTgKruwJAwrNYk52IQCwWgOTUIFN3NPDTP0k
15 + jd7TvMStgqBKU2jz5IBHkzKjgpEY4vjqwTnj5Fw9ArRJ6mIzctFDlA==
16 + -----END AGE ENCRYPTED FILE-----
17 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
18 + enc: |
19 + -----BEGIN AGE ENCRYPTED FILE-----
20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkWXRCcVg0bVBJQm93U3My
21 + Z0V1bXM5YUo2b3dDMVNZajB5alByS0EySmlJCmxEVjdZY3BZbnlyNVRZWXFZTjM3
22 + MnlJNEw1Q3FMZFF1YmRpd3UxN0g3U1kKLS0tIHB0a1IxT08weFg0UHZkWmJMMWkw
23 + Smp3a2EwcDVXWnROZkE0SU5tZmdGRlkKKkbWDY1iJLrxnZx9VBHQKZ31SdDsA80n
24 + ikiuB935RLiT0qk52BnkGmakXGyiEMS1SjP1+OtHIbpFw3Y2Y4Iarw==
25 + -----END AGE ENCRYPTED FILE-----
26 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
27 + enc: |
28 + -----BEGIN AGE ENCRYPTED FILE-----
29 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLeXU0YjA0djBxZ0c2R3h6
30 + ckdWS1pqSnUzUjhNZ0QwcWZYUDM1aCtmQ24wCkhNemhIb1dNUmtZdUc3QnZ2S3RY
31 + eE5VN0xhVEVYNUUxY2JCSFBHT1lnMm8KLS0tIFcxV01NRk8zRFU4MFJQZ2xOc0N2
32 + Ym85YkdOWUxkS1NhZE9mUFFSbThtTjQKTtu108ofDN0wv5wucmUn7xYNA/dd2rWi
33 + NG62pg5S39oi6V+JdXddV8WJ4Cr261zQA67s5/4U6mCGr2+5iC7npw==
34 + -----END AGE ENCRYPTED FILE-----
35 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
36 + enc: |
37 + -----BEGIN AGE ENCRYPTED FILE-----
38 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBla21sWFR1VEtUTnU0Szls
39 + ZmNGcmJyZTdDak9Wd25Kam1jckE2ejZ3aGg0Ckxuc2N3eXlKSDZkQUt6ZXUwMDM1
40 + S0txYk5yNXZGdjRtVEhxWnVINVg1MEUKLS0tIGVVWU9kRVFVYm5vZ05HNzU1a01W
41 + N2svOGQ2NWV5cFd2MlkzQ1dEZFJCVjgKsYDLsz8EUWKt4tU6ecc9qhEd6CghRmke
42 + GLoMfLXmC1UkxoJq2/1ZoUbWaM1nLTHXcd0jRvqY2PtFgOzixs+5dQ==
43 + -----END AGE ENCRYPTED FILE-----
44 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
45 + enc: |
46 + -----BEGIN AGE ENCRYPTED FILE-----
47 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1Z1ZQczFRRUdKUjR0Q3FC
48 + SGVPb0lkNWMvQkVJNVoreVVJT1AwVzhaMFVBCm9FUlFselU3TDBBQTMzcHdlZFQ3
49 + d0RiWklleC9ZeUcrY0NBeHRUWHZOZFkKLS0tIFlFMkdKZDkwN1hNS2xQNEd2NWF1
50 + anpIWThNaG5rNEw2bVNrTGxTVjc3aWcK5uq2oy5WdJ1Hv8ah+3AUULVrSOcz/NgS
51 + QrIbuzvbjJqH7TOsTd0OUPz0liYkWoZTvt4jORdxRRRnYaqr02pZmw==
52 + -----END AGE ENCRYPTED FILE-----
53 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
54 + enc: |
55 + -----BEGIN AGE ENCRYPTED FILE-----
56 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwTGJwbjRpR2ppanRFekdq
57 + T09yYm5FR0hWeThCV1pLOXNJZnljWE1aeFhJCnZudkZhMG1sMzhXYUwzQW1NL3Fq
58 + cHdkc2g1STNrMStOM1BTS2pBSlpadnMKLS0tIGVhc1NyWlFnaVBRM1ZrT3N6MkRG
59 + VTQ5VjgzeWd3Kzh5YzlDdW9wWjY1TUEKf0BR88592mPaCyRbDQXk0qrxTRsPpV62
60 + ii/0v3v2eQH4n3DESR5xe0ZXRW3YUoqnHzJMu7e7zKhVexQiskwOrQ==
61 + -----END AGE ENCRYPTED FILE-----
62 + lastmodified: "2025-08-10T19:16:28Z"
63 + mac: ENC[AES256_GCM,data:dbrYWe2uHQRY0lkaCaqwAtXNJe+NzPEhTVBEjN/gybqILx7EylTNxkEC2OUeK66nm6PoRQ6F/mrqf9qLcXwfVqnQAHVa8CWFCb9EeYBNGoe7KPmxCxzpyHHG+mQdvz3jLD5h1lXVoRYcks2yOOYUKJQGpjZe8gxoraqkUEQQiiU=,iv:+6oRGpSd6uMyXrEO0dJq+6RvLNGzie1p1st7d00+q+k=,tag:VnZs/kGP4yPcM15q/tYvEg==,type:str]
64 + unencrypted_suffix: _unencrypted
65 + version: 3.10.2
non-critical-infra/secrets/ofborg.build02.ofborg.org.yml new
+65
@@ -0,0 +1,65 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:QVJgi+XJWIlSHBXWIHZTh/ADCChlyLbRekV5bpyIvxmacvi5D2ILVq8U2RC2Nf0gnOc=,iv:fSUmuf4sAg/8+ZFvxM+JEVpUWXudwszSt6z+SgF2kfQ=,tag:+GF3yKvt0ZoxeTiHiWRu+w==,type:str]
3 +harmonia:
4 + secret: ENC[AES256_GCM,data:n7l9VJh9fpp3RIoGbofZivhLjrMRBdZYLMBxoIP/6Gbm5WVXnKqJ3QinVGuzdUnJN7nCgupmD6OWza38PS6DJ1ZZ0WzwZ5qR2M7l0BERzUwl4Ow+APeSyv4DFhUg0J6Fmwvb/PmAGfG8ows=,iv:bX/dQR8YPWBJ9OdpAuvHuBCf8J0yDxSqALrGf/ozlYE=,tag:SEWdW+zuSvsQovK299i4BA==,type:str]
5 +queue-runner-client.key: ENC[AES256_GCM,data:ySLkgrEoq17F5mHSYi9gxLTebpK2BYStrGsfsyTc5qpGCFi36heHLrS8fH2ChGOe4Bt+AVuRjgSWYMAFZPL6RoS9E1a2Pd35J5DLjXI330D237ouRMBeKu2LBCPUzaiO0AD73fRfpwYbh7TzhYm+qlCdKmgMLpE=,iv:nKQ9MqjbznvEWduAeGmzoRt9NQAr0bSRAJwt7qMa7gQ=,tag:FtVM7uDyYW58CctQx9m8rw==,type:str]
6 +sops:
7 + age:
8 + - recipient: age1wrp04f5c0d4jx3hwjsn8cyxdjzpzx6fl202zftqfvfdt7hx8efgskf6s86
9 + enc: |
10 + -----BEGIN AGE ENCRYPTED FILE-----
11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqTHUwU1pFSGZCT3ZpMXdJ
12 + bk93bDhZSmVRbDBibXAwZGl1SFVveXNER1RnCnNwQURGUUZsVDdEZ1d4VjVPMk00
13 + NWNJaWZGSWMrczA3VzNJNWFFMFBWQm8KLS0tIHFvN2l5QXR1K3NvK2xUV1JYTTFn
14 + bmY4TEgvMndzamZyWnc5QWFDcFd6NGMKu3UzG5HGJ+kQtOfOxaPVyZnxfQaIU/41
15 + KB9X1NBPXyJzkRIdM8p0wm1Wmv8tXMjn/vg43zzR5yjEaCgg1amhqA==
16 + -----END AGE ENCRYPTED FILE-----
17 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
18 + enc: |
19 + -----BEGIN AGE ENCRYPTED FILE-----
20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvY1VveWpqbWxHUWRtdGE1
21 + Nk5DMXNkWU0yUzY5YmVpbVNmVXJpRHBSaDBnCkFhR2s4ZmlHcGRHS2J4VHNXQ2pB
22 + UTY4dE5leEVydWdNZnJTV2xsNmh5Y3cKLS0tIFVlV2tCdnY1VTFQQkdKYzdyakVu
23 + TWJRdU1zcWQ1dTlpR3crZjJRZkFzZTgKTIF6ZjO+Ur1df08YadOzLIKbuGurx76I
24 + jc3rbvK2yzWhrcDltC/kGHrXe8ZJp8kILXIDaE3WQgQ+EV7DMNqcDQ==
25 + -----END AGE ENCRYPTED FILE-----
26 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
27 + enc: |
28 + -----BEGIN AGE ENCRYPTED FILE-----
29 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4dEhaUnhxZWZlcmU5dmRh
30 + NDJBWENjS215aUVJTytqTi9KVGR6Z3BpY1FJCjc5ZmpjZFZRQkVON29NTGk5N25T
31 + ZEJkQnhodUJJM0ZIRUI2TjRwdk1XMG8KLS0tIHUxSkd0KzF3L1R0Wnp2MUJIeEND
32 + WlZ6N2xIZ0t1UGp2NHlOYkpPYnlTTWMKkCBa5YRHnmXNpGS71jBzbEZIQq6yeHct
33 + m7/kKz3cBN7857ClbJeKQRcZkS0gjR174hb7nwz+gBn6LUe6hTuYaA==
34 + -----END AGE ENCRYPTED FILE-----
35 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
36 + enc: |
37 + -----BEGIN AGE ENCRYPTED FILE-----
38 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtZTUrT2FVcm9ITG1QYSts
39 + OWcreGJuRG5lRGIwb2NOTWM0QS9CNlJPcjBNCm5WeFNtT01OeE1GOStmV0xXSVNC
40 + OUpDeGxOdnREWmQyOHVoZVoyeW1WU1kKLS0tIHBNcE1uRWNvUGloejQwTmo4WGVs
41 + a20va1pka0xPK0VSdDgxVWloRU1QTXcKFpVCaJRWcJLXxnKDWj4S9zM2h6KVN1Vz
42 + cWWc+LSkVuwMgPS9KQRudsTVPC93AKzc3qM7CMpo0yIRv/2wukhFDA==
43 + -----END AGE ENCRYPTED FILE-----
44 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
45 + enc: |
46 + -----BEGIN AGE ENCRYPTED FILE-----
47 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUYVhkQXpTS3N5bm9rN2RM
48 + cEhCQzlYNktXOUcreTkwbnVuV3kwbUNIWERFCktUZ0VQZG8rMk9qUXhycnd1OXM0
49 + MTNqck04MUtCVTNiR3k1TGR6N3YyMHMKLS0tIG5ZSkR1VUdpdjFBeFE1M3VaeFFS
50 + YksrN3QvOFNESGJLUDFwUDRqVFpXOVEKZB/pdEmjGY3nJF+sd2Z733pFx9Cymq2/
51 + u8xa2ofgybrfLM3UgWZXQJZbZHkmn9huUD2uo8cLL/hOY6+247DYeg==
52 + -----END AGE ENCRYPTED FILE-----
53 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
54 + enc: |
55 + -----BEGIN AGE ENCRYPTED FILE-----
56 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtVG9JZ0c1SFVLaURYQ0dX
57 + YWwxcGx2WFhRc29YY0E4TWlsNkZ2TjlHZ1ZrClpNKzVYTkVkZituQlQ2d3lnMXRx
58 + UjI0NDNuSnBRVnBkQUM2Qm54NlAwalkKLS0tIEdDcGFaVUlJRHJ1OVZRcHFvRWdW
59 + UVRoaXFTa2xmSUZUY0psMEtnZGFIL0kKpceOpY9f3LaCWtF465HzU/+3TzofV27z
60 + ZQf0aFz0u5+T5ZYOwIsQMx8MV7vorI5Ifz+AnSMirSZKUQsba4dpOA==
61 + -----END AGE ENCRYPTED FILE-----
62 + lastmodified: "2025-07-31T12:39:01Z"
63 + mac: ENC[AES256_GCM,data:eOCu6Ih5JpuZekioxI+jkwxIkTqiMxVnOT9mN6BPYp4wBLzAPrampuNoZV9gU63cjX2zzqNP+GaXygyW4A+DbT5K1uCxZLAM4AgyvCnSs27ck5mJZKi1H2CC5XTs8Huk4QerbPdI5+EfIDGelorAW9BFS6uc+s213udXAKdLNcY=,iv:/TPX4juuVEpDj/5GPE542rsGknl2NX4ZutJGVHKUxtw=,tag:JpBJQPWHyKGaK3D7BDAvBw==,type:str]
64 + unencrypted_suffix: _unencrypted
65 + version: 3.10.2
non-critical-infra/secrets/ofborg.build03.ofborg.org.yml new
+65
@@ -0,0 +1,65 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:YXvfUctFG4D0HEa87dW8YBTQiDpAEvFjHONrvync5kcFHrbwBFUPr1+sdGauShJDPeU=,iv:Uubwa947ItOcswBwB7Wq6QVXSlg8TKy8wetd1H6lSVY=,tag:bF4vEaWqyO8aGEir56cGOQ==,type:str]
3 +harmonia:
4 + secret: ENC[AES256_GCM,data:bd+Yj1sQWbPEBHjVNUP4DfTsuz55y3jgBslycICP86IafshhA/x4aoqGYRPN750PR0iiZJkkvEABigjBD3wh+p5yuHxLAQzfmaTghJ8vatvAoarjxZ6CmeAHD5pKDWdn0NBqtyknRsr9/AU=,iv:refy8KB76qxLAE8CHA47N7GFnIxsMxM4/8XnJ4N0/+8=,tag:7YXtRhLqITJdz0YCBdROcQ==,type:str]
5 +queue-runner-client.key: ENC[AES256_GCM,data:wq9bLGk9xDZoFz5zWHymTw2OxujgpWbojgX7Fbj2IdlGN9r7++BLRx8sR2h++Hi0YuY6kUdlvlSJ+SeOj/IwG73ke80mJB7zx88++jw8FnQ/xrQiP0Jdes3AJMe/t2PGJtOXQdy9GHIZlokBJovSuwZ4E+SqMjo=,iv:e1Ky7/sfQlWk9AfdT0Eu6Dck8LVKJSeQ/WYlzV4/xoM=,tag:aHARMMfrBXT07Kq94aCRTw==,type:str]
6 +sops:
7 + age:
8 + - recipient: age1n0yrvl2v397kztuhf00cdvrhf26c9uegwz6day8z9pyqj3zff4sq6ha0lm
9 + enc: |
10 + -----BEGIN AGE ENCRYPTED FILE-----
11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5SUJsTXY4TjRIT2R2VWhY
12 + VmJQVW5Oc1ZBd3grdE5EWGNETURaNFFUYXdvCnZaemtwYno2VUxuRVhTZFFYdTdm
13 + c0VOY28zYXNPT3ZsZk55ZFFSMXp5L1UKLS0tIExOa3ZoR0ZaTk5vUTA4cTF3VXAz
14 + TXBzaUJkT1ROWHBrekVaZTZOMk9hMUEKYfhdyoFIlSUhXUNQ9x48WQlN2/EGrFmU
15 + 73w+WKGkANoEg/728DsKYYkRmeAQh7D28fdsG1ssXz4QXI9cgbd/DQ==
16 + -----END AGE ENCRYPTED FILE-----
17 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
18 + enc: |
19 + -----BEGIN AGE ENCRYPTED FILE-----
20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPeUJwa2VLNEVMRjRQWUhY
21 + cDl3ZUlkNHg4Z2hYMmM1UmRDVHNuVGZFMG13Ckloc2w0VHJTNDVXOHBSYVd3d1Jp
22 + bzhVRXlKTHR3c0puQlpQQWpIWHJieFkKLS0tIHNidloybkRCcVdzYk12V3lSVEZE
23 + aTNoY29NeDBPbzdRU00wU2hVNm54R28KzZBQ/CEPKfZ6GOtIDAjDP6C3pSGKkrTm
24 + NODg2Ewtfr6ssL40A/ocAO3lBODQgjTRXXo35g5/Zb1fRnTgrV9yvg==
25 + -----END AGE ENCRYPTED FILE-----
26 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
27 + enc: |
28 + -----BEGIN AGE ENCRYPTED FILE-----
29 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0eDhFbVlvSkNVUHU5WGtr
30 + Mmt5V214R1dFaHd1KzNQL25zRkxZS2RPaEh3CnZieTdnSGUyMWxjUVVDZGRRWmZa
31 + eGFuNk15VGpwYzhCd2pnRkR0QlgvckkKLS0tIGMrMDhTbTRqRGFXbGNBYUVTNDVy
32 + UHNzRnFsYVlPZUY4YVpTVmNEcmRwQm8KdgrgnU3IF59nx9u74fkQnjqfgCVG8PKE
33 + IVdqwYBGVjU472cGTlY+ALQINkjE99bJZUkwTs0dM9NZ0tyYPU72dQ==
34 + -----END AGE ENCRYPTED FILE-----
35 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
36 + enc: |
37 + -----BEGIN AGE ENCRYPTED FILE-----
38 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTV0hYWDQ1R3FWNFE5bUhZ
39 + a0luTGVrSW1uRnRqM3I0SUtOY3RWVHM4ajJBCnZLcEZXMUg5NFRJSENlSm1uazNY
40 + aTZSVitrMTNGZ1lpNzdKbWs5SzU5ZlEKLS0tIEkxR21wdlBiTWVVc3NtM3ZnQXFy
41 + bVBJbXowQTIyYTBDRlp5d3VJWWFOZ28KoIsbDW2qf4jUVmv7dOgynZvbEtrBHptg
42 + 8YnWWBIqpD1GfHgaQ5igtXvCgelVMK6D3vnxztO92uZzU2b3Bm+8VA==
43 + -----END AGE ENCRYPTED FILE-----
44 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
45 + enc: |
46 + -----BEGIN AGE ENCRYPTED FILE-----
47 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxcGxHUHI4cHZJbnpYeXpO
48 + T0RjeUtKYmsyakl4WHgvYXV4dURpRS9BS25ZCmZBSkhWSDlkOCtqclNpWDFZRmZT
49 + YmpxOUxRTThYYWpwVG1TcllPTmNGL28KLS0tIDBBWC9LMSsvT1hKVmk3Vk5ZM1ZZ
50 + d1VIWFBNRGhrQTBnUnJTY0V0NXpLV2MKd2O4NTuuxnlIFJfYAu4W+KIckrsLRkHr
51 + hXg+VlQa341UFPkmd4Ruj1yLI+fFSCRsobFll7exhIZm8qziiG95Og==
52 + -----END AGE ENCRYPTED FILE-----
53 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
54 + enc: |
55 + -----BEGIN AGE ENCRYPTED FILE-----
56 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByakhyc2ZSQ296RFZScDFX
57 + aTFCcmxhQVpKc0ZvVHBWdVRRczFmMHl0SEZFCkJYTEowcXM2OUd2UGNENkZNUTA0
58 + NmFNTXlOTm94amxJL2FzaDRNRnhlcjAKLS0tIDI3ZmVsMkVYSnNWRmZpZU1RVmJx
59 + elB6SC9DQThBdXhPVGZ1V3prWTM5ZkkK4WAp7pEhKAHVWUGl/Yr+k/NFxS2xDErT
60 + Uh5XEHQSL87JA4DSJGSzJNDeFN3TJiVCwFWaQ3rR422/A2YWQVphzA==
61 + -----END AGE ENCRYPTED FILE-----
62 + lastmodified: "2025-07-31T12:39:15Z"
63 + mac: ENC[AES256_GCM,data:SK6NlMDwRXtr6heqyakmm388FFu1cBCzZ4P9CYNimrb/Qt6ZXf9YDzsyuiyvPpUEjqrnXqDtlaz7b43hG4LiKP8DmM9guVKzywmwea9QmircihovvZ48Et60A28eGBvxQFOJWgn434aI7xaJuU2dpDQgukjjkjwzE5me5SsM+Ns=,iv:vzicQbbt2/Q3KKgOR7q/V4r/L4kostr/eWv/C1oY0LI=,tag:ZT7SVqgGhHuR/1toYPkECg==,type:str]
64 + unencrypted_suffix: _unencrypted
65 + version: 3.10.2
non-critical-infra/secrets/ofborg.build04.ofborg.org.yml new
+65
@@ -0,0 +1,65 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:BY214D12Z800uyoMHxoH4y/BRxpg3cJMXCjae3k5lCmZeYahpaUx7Frd2i9fQmPaiOk=,iv:NNADJIcdzvtNWv++Q4Sd8MpHdJ1DhwMDNqI5RGc5KtY=,tag:8OTV+0gk/v6moTjFzFXDIQ==,type:str]
3 +harmonia:
4 + secret: ENC[AES256_GCM,data:BA5Vq/CY3lnLxbvzvTKfztlBdpPqTmkJ0DAAnk8OYSfCu0HF0kXUuPlhkqfZIi/Z9KKETrMtAPmtwSsakRtjlGgwXX1yPFNLCvyjyDY6CuqYFqbWESSThCqg9Ygm2yTtfOEH6sr0NPKHXHM=,iv:UUhp73xbtBfZnhRY5OTGWmYD+uaQ1TlJfC3cQ26p/VI=,tag:svclNQwF8Vib+wCLIDybyg==,type:str]
5 +queue-runner-client.key: ENC[AES256_GCM,data:BsP0kv7VmThjFR8JoxSjif7nD9at7egv3i/5ZEFzF6euz7NBxV8F4GpXeqUIVzx02pDWzcnMmGpXb2rZkPCUoecE06Y/Dz8GktRZaU/IJnhCmaa0ktlYl0X9ttXr66Jn0cyt0bnSjQE1O/yTMaFXCrPLeAVMd4o=,iv:wvFZwdqyuoX4sc3yDAJy7oWpwvoFnq1zERyeLscc99k=,tag:35jBsVfPIvjSVnoZWKZcWQ==,type:str]
6 +sops:
7 + age:
8 + - recipient: age1l7xmxkh6y6d5svj06txknamlwdpfwac8855p3edgpu6jcqea7pvslw4r9a
9 + enc: |
10 + -----BEGIN AGE ENCRYPTED FILE-----
11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0VmtPY0V6QUNFSHFzSUM0
12 + NTBpaHc3T21CR2dnL3ROanNpOUlaeVoyR1hVCnJHVnlxUkg1aXRJQjFQK0VlUEtG
13 + MC8rZDdsek82S1pTcjQyRXR4UTZrMG8KLS0tIHdZOGVxcHA0MHMwN2tSRHZFN0ta
14 + WHZGRDJaUG93QjBiWUFzK25Cc29LVHcKkA8SQeH6spdyLye1Mnsei+z75zOrzSs/
15 + F0Ndz7JSbO9Tg1TmMk7ttQJ8BGC7A0Yi44GNCALjxV8m1Vs62/wNTQ==
16 + -----END AGE ENCRYPTED FILE-----
17 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
18 + enc: |
19 + -----BEGIN AGE ENCRYPTED FILE-----
20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzNEtQelM4WjgwSkpESGVv
21 + VmpmSzVCV2gwN3AyalllN2xCaklXdk41TmxBCmdqNmlZWmJkc25RVC94dGpXK0w1
22 + V2dhSjFZSUFGdzM2QXFjVHA1VHFwbGcKLS0tIGdHMDUxRVQ4NWlNcHRIbzdEdW5U
23 + NnE4QlNtazlqeXdHZ3dHcFdNRUFBOVkKWlZU6HYIJayk1YUH+9MLwVRxpissLBUr
24 + qy7HdzTdWm6JH9P+L7p92THJ230HZYx7c6Zd0Xo6bFe9sLtdZndk/Q==
25 + -----END AGE ENCRYPTED FILE-----
26 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
27 + enc: |
28 + -----BEGIN AGE ENCRYPTED FILE-----
29 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuVVdGWkJ5N0l3UXZBZ0k5
30 + Ump4Y3AvZXJrSktqR2o2MUVGMGQ1TkcySGtVCk9WSTVqZVRoT2w2NHlVNTJZcWxj
31 + a2V5L2NxR3Q5S2wwR2NZcVZoYUhLN1UKLS0tIDVCMkkzUDJJY016elNQVkdPVXFi
32 + bi9ObFgwVjFqeW85RXdEdCtTd2tOU2MK+ZI77YveRdA6//gLPneQQNPFsE2uWXcS
33 + WtIKzMAm9VDtJnKL8oSzkFdAZ2Pvn8ouJySH/Uk5zPP7jDrYJueeTg==
34 + -----END AGE ENCRYPTED FILE-----
35 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
36 + enc: |
37 + -----BEGIN AGE ENCRYPTED FILE-----
38 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLZ2xLMDFRa0p1eTM1ZXUz
39 + aUxuWnl2RUZTR3ZtUWNrazRubzJuVjRNMlJFCm1kT056ZkVjbFFMaWJPWkxYY0RH
40 + UjNUQVRnWXBxY25JOHRwd3NQd2ZyUW8KLS0tIFkxd2xmMW9yd3RKdlJLZ1RRL2tO
41 + anFWVkZYQlRZS3pDclkzSko1MnVKNFEKkkC/vtOhX0mM6NAILDAYlXIKKDP3XxQJ
42 + VDleil6XqULQyFzvCbHwdAiakjZhDigtiwbX21pnILr2eX/+mg95YQ==
43 + -----END AGE ENCRYPTED FILE-----
44 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
45 + enc: |
46 + -----BEGIN AGE ENCRYPTED FILE-----
47 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0VUQ0MS9TcjBKcXVySWNh
48 + Slc0d0hqSmZOL0ZnZVhoOEExakVxazljV2d3CnRHM3I1anUvajBTODJpbTBuNCtp
49 + SmoyNEVZSll0cUQ4ZURhU2lLWXFJN2cKLS0tIFFYRDQ3WEdNTjk4djNkQUh1QjRo
50 + eFpUV0xVVlhGaHhVUmh3REpXaDg5bFkKdsJkLKA/B2ydQH374zOfPQZ0LqkwNKZV
51 + njHmW1+Rvb7Rh5GvNSM6K67hxzIw7tdI9pisWozbIwDQoi/I5csE7w==
52 + -----END AGE ENCRYPTED FILE-----
53 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
54 + enc: |
55 + -----BEGIN AGE ENCRYPTED FILE-----
56 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxZTBnd2NkTlNXMkF2c0Q3
57 + YXpCQ0RyYXFua0tJbDhQQ3JqOGt4UVQ0cGpJCmJkbFNBQzhJcjBaQlI0ajJqdTJJ
58 + WkRnMFd4Q0hzeVEzUUVxRkFJQWNaa2cKLS0tIGxBUVQwc0xKVXVyOGtXSVJ5eGFU
59 + T1BteWw0U0JHZ1plMW9iVk9iQ1ZpNmcK+tLr+/uq+yhhyZBv0LmSL5XLx1kpVIlA
60 + Xnqrw2lD2h79/UI5/T/LKEzWf0vUCDatNoK9f3ISYCzDopvoS+Wzcw==
61 + -----END AGE ENCRYPTED FILE-----
62 + lastmodified: "2025-07-31T12:39:32Z"
63 + mac: ENC[AES256_GCM,data:RiDq8uRtVR3ojwLeM0ZyE6I3/Et+QeG9kxYOe61iPiqlM0zQZCSZqdDKOnUNxIquAbMyoVuwmHTtE6TGB1XER1KRNST7CPYnut9pnO8ouNspS8QE2+zs2guqfaN9aPMgJ/9YsKaIeie5eP6NXLO8X1j5AvVz5E9T6zswQWFRMQw=,iv:yXqEUowR9hl8l7afqYglBtVpy7n3Bnh3v4pFvBUHHy8=,tag:dgHSLCKmE1cG/lT4KFrZMA==,type:str]
64 + unencrypted_suffix: _unencrypted
65 + version: 3.10.2
non-critical-infra/secrets/ofborg.build05.ofborg.org.yml new
+65
@@ -0,0 +1,65 @@
1 +ofborg:
2 + builder-rabbitmq-password: ENC[AES256_GCM,data:6C7gffgkLc1e8rg3s9nDOPsY3/tjA6V9N8bVIOhas9UyTMB+phWQtTeoSrnb03qEjis=,iv:zZoiq7hMzADohBx9MzqBMiEiH17GvGNAlqZy9uGn7zY=,tag:6h7kpX51Pa/JWQvyYPt7hw==,type:str]
3 +harmonia:
4 + secret: ENC[AES256_GCM,data:3rXrIPnJ5c4pnAchjHZE5waic9vSiou3wloEANmpPore6WlGx56V1PTA1kd0UYDcLSCSkUts47U/5KyKXkaQOHyKcilBzv0vlWgkHWi1n/HplVSkTIGNfl75ROYd3TeQ0PP8UnpQaxGF0A4=,iv:A9uvQJw+TqqGdQLWHJhYyf4FUVGgNDx7zwQRcIFUr2Q=,tag:5LMibUs/f+yIcpIrz99RGQ==,type:str]
5 +queue-runner-client.key: ENC[AES256_GCM,data:Av6MqHkWm8tzf93easgr1kXXX2rHSenO5XIdf8nrDXGSKDhftHpzcuO3TRvRVM2jJmzfVO0j4x/pUR91of+K3elx3rUuEFszUtNogJOe7NdTc17pQFvThXVa2U+GPZ6o63f7/VhKTh3btsjfWQBDG7AqywJoFG0=,iv:neAYivmwJp5Bau2KsVt2YTHwMngozRA0yHUJuct3EMU=,tag:mO61AJHGuBmnlR+3mOl1lw==,type:str]
6 +sops:
7 + age:
8 + - recipient: age1mduqldqpqp33u2wwh685cwwkpj2ak36z67dtrq2tcskgqkultvps7w9q7u
9 + enc: |
10 + -----BEGIN AGE ENCRYPTED FILE-----
11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxZE8xZy95YXRnZE5EUXFY
12 + R1Z0dTVmQmlrdmtYdjJjNFFFcVY3VFJ1Y2d3CkVoSVdWbmE0VmdZeVFLazk5SzVi
13 + TkVhZUJMNnBNT2t2a1ZVSUlISUVHVzQKLS0tIEdKeThjdTBmSTBVeWlLdm1rWXNJ
14 + UkRuRXo3Tm0rTWxzMmdVQzdsd2FtdzAKjDcgrjcFeISLyNdmRLJagkf7Afn237eZ
15 + ENwFKVXOjtXF3HN4fiUqO6dCZyl8D3g7X0B1VVgA3FlvY2/ucmUitA==
16 + -----END AGE ENCRYPTED FILE-----
17 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
18 + enc: |
19 + -----BEGIN AGE ENCRYPTED FILE-----
20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArQ0FNYVlCUkJBdUx5VDJF
21 + TWlYOWVNQ3IvNDFEajljZjNWaVFza0xnQUZnCll2KzdHdlhqZVVKTzRTdmZHa0pv
22 + YnRLS212ZDdrdVJWaUZicnF4VE14a0UKLS0tIDF3aFRYK0NpT091SGpsajlyZ1JY
23 + Unk5dGZXNURicFlNNjZaaFpZNVF2WW8KKZALYweB4jsRuFOhzM0v2Ls+WuxvbwHt
24 + EZT3JggbPSe728PybUv2l4F49Rqmh9DVndFvGRlnNoGHb02rBARvhA==
25 + -----END AGE ENCRYPTED FILE-----
26 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
27 + enc: |
28 + -----BEGIN AGE ENCRYPTED FILE-----
29 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2VlRRZGVCU3NBM2hQOVZw
30 + cHF4NUNxT3ZvUjhYcnZDMDdTSXBHNGV0ZlFVCnhaRUYrNklnL3kyTWNyMFp5aFZv
31 + R3FsMmVhMURwRGQ1eFhJZUpQYXVKTlkKLS0tIDg5OWdaVnRmNzZBbTNLYVFXZ1E4
32 + SHRYYmZIUDJIbnlyKzBxdUJ5ZzNLSFEKrlGODX4fv/CjGplGuutSwLJmjl6y4fBo
33 + DyZykN4mZhxQy4P8GshUEX1+vTffcO48S2c1w4XPTfiFHcNVRhYgLw==
34 + -----END AGE ENCRYPTED FILE-----
35 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
36 + enc: |
37 + -----BEGIN AGE ENCRYPTED FILE-----
38 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrUkxQUGhzczhDNzBVWUgy
39 + UDJScFRvVWptNVBxb0FlNWJ5akczZXl4RkFvClFzL1ZhSnpySlEzZTBvOFpHL2pQ
40 + YjJLNGJvaXg5K0tZaUpSay9QeFhCNkkKLS0tIDc2dUlGcXNZTnJMcEw5MUg5UWhq
41 + VjFkVGhrODgrQWZWTWhOTS9MbEJLRmMKoHak92bGtBkyoYDNqYPXzPczk7ltNOmt
42 + DCSCx9Cgq0gmNDryMl8DXZdEiN334nOXu/HB1RiUHoQIjJnEiwul9A==
43 + -----END AGE ENCRYPTED FILE-----
44 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
45 + enc: |
46 + -----BEGIN AGE ENCRYPTED FILE-----
47 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxSjQzZ3hwY0k0bmRuMjN4
48 + WWNrWVB6bTF5UGZ6M0Y0ZUtlaGhFN0ZNb2xnClpRMDhkWk1kOW5lQ3hHcFJ6K0E1
49 + Z2t6QVVyM0FadjBkSlAxcWFvb3FiY1kKLS0tIDhTdVlHM2RGRnMvMWxQR0RGUXVt
50 + NjhqdEZVYkdwQUhBS1FHN0JJckowK28K19Ond+UZ0/MFHHR20kp5gAC8ov42xlgB
51 + ZEvAd88tXfJvrbBBAySykj83wg1FYCi3GvWdFOZ5dq18V3ffKKTy0Q==
52 + -----END AGE ENCRYPTED FILE-----
53 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
54 + enc: |
55 + -----BEGIN AGE ENCRYPTED FILE-----
56 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCUnhyd25Dei9rYWZlc3Qw
57 + bzd3cGk5S0N0NlQ3K0JvcGphT3hheW5nM3k0CkVBbU83RXlyZWwvME9yZ2wyUktI
58 + RmRQYmhrWHZ4UzhBUTFkSnVTYS9WWWMKLS0tIHU1L2VIbEQvNDlaWk82ai8zRnov
59 + V2NGeVQ0aWl5VVRoazA5dlY5RlpoRU0KTLh6k3QPa+CSyHMe/NBQw1hoo1UNHUV6
60 + hToDcRsJrsGdtFT5hthvljZA4JTZjraHP2sqsv8mZNsNcVyE7R4NSQ==
61 + -----END AGE ENCRYPTED FILE-----
62 + lastmodified: "2025-07-31T12:39:52Z"
63 + mac: ENC[AES256_GCM,data:YSo7nBvqrZuwH/yzY1U8mFn9PdxPJEm07rY1mHJGdqtDY1h+mp6NufMvW2cNqUk6IUakxuqUUOcXgDtnkS3hLW+lN+Yur8jklyhEx4m1/XbIq01PGHIgLPC8v1Kvigc1ZO89UmFrba8+gFXTgImfXVg2LTyHjWp7VIySvUxnlNw=,iv:qlgxip8P7Ud3xR8qnrJ7W+BhujLBdb9bOgEucw8wXkc=,tag:j61ADB3G6wGVMco9WvnFnQ==,type:str]
64 + unencrypted_suffix: _unencrypted
65 + version: 3.10.2
non-critical-infra/secrets/ofborg.core01.ofborg.org.yml new
+72
@@ -0,0 +1,72 @@
1 +ofborg:
2 + github-webhook-secret: ENC[AES256_GCM,data:9yLN867F6kJHHQcrDGw/TC/tUQage4t0Uhnu+BMjj/qqaA/BULCUu73U1R+Llb8BdkAG6Pd9sLEcTsoz5kfSug==,iv:lFVdhOI9a08Q06dRxOqS2YDbYudIxqkalNeS+qwall0=,tag:VVTzGj4Rvul6z7Z8c+zS7g==,type:str]
3 + github-webhook-rabbitmq-password: ENC[AES256_GCM,data:UYJ1Cy0gJ+n5HLgnxmm6ggZg8GlBGWGOUoYC1eB8FWBbo3UtVoq0syXQSFNQl9w84+E=,iv:C94Ma14s6CFKlogrIMc+JYTDBjhzAqCscPqonXrMsdM=,tag:hzBD63/qBye5belOmE/vcg==,type:str]
4 + evaluation-filter-rabbitmq-password: ENC[AES256_GCM,data:HCpnksWNrl+7gmGv24sC/Hew6GbM/xzZpKYdNE/zmQ+rwvfZVvVncromEbTW7ksyZ6Y=,iv:PDDf+U5xmTvKx4+5NY1gc+J9rIuepXRPvf/7Zd+yBG4=,tag:g+7UA6Q8W70Tx/qepMXPUQ==,type:str]
5 + github-comment-filter-rabbitmq-password: ENC[AES256_GCM,data:EL3y07go0UP2nHpvSmDkF9DcdyoBFe3XOE8HxQ5xb611Hs5owGFfCOEmHxNRfkNUNN4=,iv:Q054FgRtiFuCwQgm4+npi7AkdO9k1Is3snd8QFXgKXI=,tag:eMTsLRLaVmZsvGbVaurjow==,type:str]
6 + github-comment-poster-rabbitmq-password: ENC[AES256_GCM,data:dYm6yZ94yX4RMWSZdHzC7/8NNLN/u9Yyr0y8WtnySy2bkdvOfxtXgPnafeCt4hUrdXg=,iv:xu27b9YM4Z3apmVoolq8wYy5bi2Ip5ScrNMXi6pFnNs=,tag:qdaYYHV8f7PLb+xXgfdxVA==,type:str]
7 + log-message-collector-rabbitmq-password: ENC[AES256_GCM,data:HZaFkL/coGffcROPb0Np/zyIwVSEjmoQmAteV8fx1SBmVSLGsSWmkwitvRHNKDXZu8o=,iv:ICOwj8kYiEbrkldIE54DmVHdglpwR0W6Bqvh9GKroJY=,tag:/DOrZzK62S6Ut95uJjtf6A==,type:str]
8 +sops:
9 + kms: []
10 + gcp_kms: []
11 + azure_kv: []
12 + hc_vault: []
13 + age:
14 + - recipient: age1rrrj8tgcyp9xfxvy6zmk9487x62cgx0z68l7jretz2th6ey9nf4qh7nq7h
15 + enc: |
16 + -----BEGIN AGE ENCRYPTED FILE-----
17 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkOXF5RThxTGFFNHh2Q00r
18 + cGcwVHY2RlhDUUN4Q0Q2UUw0VjVWUWsxRXdvCnFXa3VjbmpjSnBnVW1vQTl3OHBK
19 + ZFBSWHRMekRBL3REQXNEdmFFNEJPUUUKLS0tIE5xcG44ZEYreVpCb3YvWHovMVJh
20 + dkdyRGtUaThBNVBKaHRQRUcyZGxja0UKVvt/NZOpa2YhhhZdig2OKOauZnY40Q+2
21 + VuOMUuvrW/lzHI2xNQtd5XYNM+OB9kNgcxmQltqndxZJfs4XJQge8Q==
22 + -----END AGE ENCRYPTED FILE-----
23 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
24 + enc: |
25 + -----BEGIN AGE ENCRYPTED FILE-----
26 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoQk1YTDhxK3BsVTgwZnND
27 + V0Mxbi9MZTdsMWQ4Q3JvNzVhRGRpZ3NIVHdrCnlkN1pLRElJNk5NZUw3Vkt5a2Zz
28 + SGJsTzBqSnhnU3cwcU4zRTlCc3RTRDgKLS0tIGpycHVrMzBYVWZGenBnYXoxM1VI
29 + cFo5ZTNSajJmQS9ZZi85V1FHaUplbTQK09kAVXeEVXWWWjKg9zIFNB55EN9tfD1P
30 + CaF/rmtb9hmvdpkaFkDVY5ok9+2T2gTZqvT5FsCFypCKLZFxMA4tLA==
31 + -----END AGE ENCRYPTED FILE-----
32 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
33 + enc: |
34 + -----BEGIN AGE ENCRYPTED FILE-----
35 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrOXZvV0hldFVzQUl5OTBn
36 + c2pnVEhEdCt3OCt6ZWpMbksyVUM0L2hib2hzCmZSSTBEMnl2YmoxTFRFR1hEV3NI
37 + Z2JadlM1YUpnSzRBZWRxaE9xdW42RXcKLS0tIC9ROHZhYS9SNjZ5Z2x4SCtoTDVC
38 + VWYyWDlaWWJHQ3V2QTQ0Tkw3K05vclEK+YYPsfCnCdoO+rEVMa6SgVJb5t7JIym6
39 + 9n+2d82caUcopTaLTgzj8t7tzBGCceaxtRUTruIOH2EvvhLoL5RjnQ==
40 + -----END AGE ENCRYPTED FILE-----
41 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
42 + enc: |
43 + -----BEGIN AGE ENCRYPTED FILE-----
44 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmWlFvQ3dMSnpMQjM3SW9Z
45 + SFU3NjUybUVQcXRuNlhLb2l5Nmc3UUExbFJNCkQ1amUwb25yZXo3NTE3aEJieGNC
46 + d1JiSHQyd255VTMzZEQrRVZOZjBJKzAKLS0tIFpJTUZ6REhjVSsrMmtIcW0wL2tN
47 + ZzhValo0eUkzSThhU21HenRvZTNwOWcKeHbXUgWbPEzNdEm6mm755v9cZReLBVwO
48 + l9Q5UntN1RzjNTe0+6/QZDlqm1E6A7BmMPFDKV8Advdkg+auBcFgjA==
49 + -----END AGE ENCRYPTED FILE-----
50 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
51 + enc: |
52 + -----BEGIN AGE ENCRYPTED FILE-----
53 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxdXNPcCtzT0dTalQ0NTZk
54 + d1pNaGdaQ0dEVnpZODlRaEM3czRwZVJ0aFRvCjdTZmZvelhUcHJoRmMvYmxHNUdu
55 + SFI4RHZOTjkyajBZd2MzU0tWVGlTZm8KLS0tIHNBZzlMS0VFcGZBRDJzcjV0V1RT
56 + M082VE5sQWNXcHJaTUhPcFdWQ3ZjNGsKAiQDeZ2KASXqYpLs72/Ns99bZXfuC65J
57 + EGiV23fkuCo//09nK9Ll8XFGm2CUTHrk352TBtL0v0Tz64jCUY8drA==
58 + -----END AGE ENCRYPTED FILE-----
59 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
60 + enc: |
61 + -----BEGIN AGE ENCRYPTED FILE-----
62 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArVUhEZDkwQTBkYUhLYTRT
63 + ZC96TUJYbTluV2V1N0s0dVd2VnZSaHIweUVBCjV6ZlZ4NERMUm1ZUlk5ZlRvY0lw
64 + Zi9DMi9GaEV0cThSU3NUZVQ2RmV4Y1UKLS0tIG1PcmY4OEIrdXdlbnY1eDREQ1BV
65 + VkZKL0Q2TzF4TCtlbWVjSjJFVy94ZjgK75ST+KUV3pxkoEAwmqoeGVqlnf1lhm3u
66 + Kwno/31LOCmeivVkz+L7DD7/BlBeh7BaPyhDyD+WPnlD/jAeN6NPag==
67 + -----END AGE ENCRYPTED FILE-----
68 + lastmodified: "2024-12-30T12:13:27Z"
69 + mac: ENC[AES256_GCM,data:X+55YgOwJ1V2V11tO6JwCRa6EugXuAp1e3IqWUZHuEVz8SaeVDbU4IB4xIzXw8ug8caWs1vljtWSjXkcLpmnfA77rx5x4h3sKWjW9CM4Wrz1jtI2uTaGMlZ+xKpiPDQD1YJHjNRRPLp8QCUfUH6UC9RfaWONubiOOttfIaFbLOI=,iv:prULAefZKflT054J6i2y5QA5zLxQsnuO2YiR4wR1yho=,tag:BVo78nriAN5HmPfBdMqScA==,type:str]
70 + pgp: []
71 + unencrypted_suffix: _unencrypted
72 + version: 3.9.2
non-critical-infra/secrets/ofborg.eval01.ofborg.org.yml new
+67
@@ -0,0 +1,67 @@
1 +ofborg:
2 + mass-rebuilder-rabbitmq-password: ENC[AES256_GCM,data:vQTjY4bitWJwOxqIO6FdCcfpcsnSaK8FLYSFipAIwYIWoWK+VLpuJJJuRgcauXczVs4=,iv:8FPVs17xmeVAAcGQzN6pY7W78IaU7ynNE1a4GAZk62k=,tag:KXqp5ZBPPQHkl+M1G9+eTg==,type:str]
3 +sops:
4 + kms: []
5 + gcp_kms: []
6 + azure_kv: []
7 + hc_vault: []
8 + age:
9 + - recipient: age16d0phf8c5wy3rfsd4pgc42mqa3aw2llfukdhgu7pzklnzjr2rvxsusz842
10 + enc: |
11 + -----BEGIN AGE ENCRYPTED FILE-----
12 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4dVBNVmNpQzZDVDBKR1RB
13 + Qm5uMjN2VFhDeThXTUEyRXZFMWJsSlZSTmtjCk5ZMGdTenp4TGhiQkRZbCsyKzI3
14 + STVvQktGWVhJNkFCVlJXNVJCdEJ0UkUKLS0tIHNVQWFsb0FsSnJVVDdCRGRINHVW
15 + dmVaRGFja2c0OSt2SEtYalFpdlNYTkUKm1VelPESqM6q1uzfvxW9iNTOAt4U1tsz
16 + 4kBh5oc2rx+hNWP7gNsS4kRkJxxTNOvu8GWltt42ItJ1o9FLCCdb5Q==
17 + -----END AGE ENCRYPTED FILE-----
18 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
19 + enc: |
20 + -----BEGIN AGE ENCRYPTED FILE-----
21 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuLzBITFJZTHNuOGdGNHl6
22 + dCtFaU8xQW9YMitIM3FMODVNT3NicjF5K0dRClNkS0xId0tRaU5GdVZJcVduVUJD
23 + U2twdjQxa0RJS3lwS3J6ekJIRVA0cEkKLS0tIGdJeXBkUnZUbk9zVTJXOFd4cVBz
24 + M3dUUGhhZmVzSUE4eGFVY1JwRXRObU0KA08rMP65rri96BMZe5/qVQaLvFzLWfot
25 + snuCObBwodr968tjWMv6tcotvVfBhGZ6GTTbE1iRAc5+iYENHIwoeg==
26 + -----END AGE ENCRYPTED FILE-----
27 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
28 + enc: |
29 + -----BEGIN AGE ENCRYPTED FILE-----
30 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOR3E5dER5aVRHVUJVWUhs
31 + dzBBdlA2a3VBWGJiWFNBRUpxWlR3anBkbkM4CmN5VDFkRkp0d1ZQeEJKRHNrRlZQ
32 + SVBlTkNndjErWlNzcTArNW1FNUloVGMKLS0tIHRyN1VJQVpZbTZOa2FvQTdWM3lk
33 + RW12UVRuLzRsZTZZV055R3JkODd2SkUKnNMbhGDeAGJwFDDySVhM+jxAFtyxAI9R
34 + ZSTBQjmY/VaZy35hwiZ7utrq9bzy5WjmYmJHkyQUEIWAmUDdoSZ3qA==
35 + -----END AGE ENCRYPTED FILE-----
36 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
37 + enc: |
38 + -----BEGIN AGE ENCRYPTED FILE-----
39 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByNHZOQUw2ZGo5Y1Z4SU5Q
40 + NjdCY1pUUkZmclBxVGkrdlN0VWVSRm04UEJRCnNYdTVrV1lWOEh0T0JSOXVqdFVJ
41 + VmNHZlhjR3FHMGhOVkQzNTgvTDZMdmsKLS0tIDlKeTgzZ05rOFhMQWNOUGlITTdM
42 + QjNaOGZZaG1ZZFRTNVQ1Z1MrODlhS1EKb0E+AZhS4K7X/Lh4pQaHTzfPB0uD6eB/
43 + aCLFDbjoraOrsMu4zZipOBwdKHJ+4DnN82Xmn40C4Ev/y3gDLyHxmw==
44 + -----END AGE ENCRYPTED FILE-----
45 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
46 + enc: |
47 + -----BEGIN AGE ENCRYPTED FILE-----
48 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBONE92Q2hzanh5RDlvajhL
49 + c0lwMEV6bzJZQlYxMDBBR3A5Y1ErRnJJdmkwCjR4UlFBSEoxQ2ZVQUVpWXd3L28y
50 + dUZQU1p2Q0VmbCtmMXhjWjBwZDRHY3MKLS0tIGpMcFBGbzYwWjV1VEh4czJnRmli
51 + WUJaWDBMelI1NVlWT3NQemZodXhMN3cKbb2yu0joqiYZswddPg5XSMvtdU+opMKz
52 + zosvMKRMqFnG1r9eR7Di2mD6xW8T9rvNluxpkOmAo3txCwhELxfLPw==
53 + -----END AGE ENCRYPTED FILE-----
54 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
55 + enc: |
56 + -----BEGIN AGE ENCRYPTED FILE-----
57 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlZE05K2ZkOEJLRDQzcThG
58 + WnZPN1A4cit6VEFEV3RxQnNzMnZiQU9BajA4CmQxdnJHWEFUK1MxOGYwNzNSZzJl
59 + UUJnMEJIS1VwSU9mRTRkbitXelNiTlUKLS0tIElYcVErZ2ppN3NUL21JYk43Y3hN
60 + WlNtVUR0YitjWmhRZmhDUG1vNUdDRTgKw7sRQ1Ao876O5KBd7TxjyYBgYTKE7qFN
61 + OfbIj+IRgOtsh53cuBX7exu+Amuh3+yQvaf0oyjuSDyjJpfwCwK5DA==
62 + -----END AGE ENCRYPTED FILE-----
63 + lastmodified: "2024-12-29T17:01:34Z"
64 + mac: ENC[AES256_GCM,data:UlS0/7BBaHyy07Be/f44q1N/43zpeiXMCbD/uIyNhkAGTzRbPBLPMgUsfr84XQMdeNXJOiI5XN6Vxy8rXEkpz0O8xqE1TIZq/IMNTEFOasFV9Fk59hmJmOBXYaZzAEVBrIvOqJt74AT+0Y38AusUW+wczyQZt2ksVpL2vvBpqLw=,iv:iF3NoDcANH7QvfUT+8McXjIEBLSX4ApVwOExP1T7HVo=,tag:QJXvBouCzgEjPfWipbsNCQ==,type:str]
65 + pgp: []
66 + unencrypted_suffix: _unencrypted
67 + version: 3.9.2
non-critical-infra/secrets/ofborg.eval02.ofborg.org.yml new
+66
@@ -0,0 +1,66 @@
1 +ofborg:
2 + mass-rebuilder-rabbitmq-password: ENC[AES256_GCM,data:ipEMLuirLRKHMr58Ga3gLVm/NSMhIVEdbWG1RJ4Y1rOSQWaakyzfjEIwRRrBRu5oHkQ=,iv:tH3tuqUzVintlGnwONZ9lSvQzUpDI5q644PBxBdHssI=,tag:GunGT6vvbwUK14KQ0Ed+9w==,type:str]
3 + builder-rabbitmq-password: ENC[AES256_GCM,data:Mn6LTtIYUCaTc51eeRhssjqiRubD3oQxZa0KMA8ZbHJaIFJekiqfTUZA/G5LdT4nJNo=,iv:yyThReELLfPmOqsb7A8bIeRK6u1VwWWhhE82ypqoggc=,tag:C2XU/r8HKsJfHjP70J/SPw==,type:str]
4 +harmonia:
5 + secret: ENC[AES256_GCM,data:0Ovat+iPF/JzlDnhAUBAkPZLKwtu1ntLVS8UZoKNtaoftKqQ4rR4+1VFwfLLYnagBrDtf1zhWRJOnnvRSC8g08clsMUXk2CneogJVKZdPIKfeL8Dsk4Axh0t2nXVQYKQG09jyDPUs4UgAw==,iv:jx6arJ9d9qf+xAu5g4kNNERRvmWrRq72bVqdcSeqOD0=,tag:Lwa2/I++Y5GtADN+uz5syg==,type:str]
6 +queue-runner-client.key: ENC[AES256_GCM,data:DQjjWeAqT8aE0FwOnaUloEr3lan5Z9k1bMi/hxqo2O0T9PtuNMzJVBaU+uhLIsiUL7MtFHK7WDkLr95z2kNw6HrnVjEitnAy6RRc0e2uO/TryEhZJMf8D49a+LYoSEgUOAZt8DH0yqD9lRUSbLM1/JR3pPOUJeQ=,iv:TJ93bHR6amSgKlbYnUbVX0Wg1nfA4rU1NwfsAknqkwM=,tag:9veAYX2HcQiFaFahDrTxQg==,type:str]
7 +sops:
8 + age:
9 + - recipient: age1qn3q3y04pxumygmq96x0gk9qtrdcgdw4y5nl6xd780u4avk0qgsqy8tuu0
10 + enc: |
11 + -----BEGIN AGE ENCRYPTED FILE-----
12 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpRUJnWUk2ay94WDFkYXM3
13 + VG5lNkhWWjVmU24yaE5pVmY4LzdxQjlOaFNzCncvNWRLYlFTamliYWx5clBOeTl0
14 + UlYrMVVXWkJVcVR3Vlp6V2NkcGFkZ2sKLS0tIFVJN3c2UW1PeFVTNDZDVEtZUFRS
15 + c0VtUmF5WXY0RENFcEhwUDRFc3FMeU0Kkda4+csIM7ucD8qePFGy6eTdUJbsSmR/
16 + bWKnK1Sl/HJ+p5naF0IJ8JtXVKYHJYlUn9rGfJvkfS3RXBCRQhexXw==
17 + -----END AGE ENCRYPTED FILE-----
18 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
19 + enc: |
20 + -----BEGIN AGE ENCRYPTED FILE-----
21 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZUWdXUzRMUnJVZXd6Q3Yx
22 + MlJDWTFsOVkxYU1kYWpyVThrdkZoZXMyNUc4CmFOZEpmT2s4clczQ0xndy9GRmZM
23 + QVl1WkdnNU1ya0NJT0xOQktDK1ZGdmcKLS0tIEhCVGdqNEsxYkNxbHovU2pURUZ1
24 + QzNodlg4T1NFMGszN2Y1TXRsR2FHd00KwG8buymdfyltvDa9YuvOdU5yjgG0s2ti
25 + 3UlK2gDcP7q4FcJo8/QP/v0QqKTuGv+0HrdhMgVw/VVdkIZ3dD3TKg==
26 + -----END AGE ENCRYPTED FILE-----
27 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
28 + enc: |
29 + -----BEGIN AGE ENCRYPTED FILE-----
30 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0b1pWSy9LSUZDbWtheTRO
31 + cW1VU3ZUcG1POUdwbjZzd2JXVStJQWZVcmdNCllwT1p3bUhrS21BUVgyZEJrdTJ3
32 + U0hOVXUyWGpXdi8vSXJWeHVyUXhKaVEKLS0tIGEwL1lHQjR1WjBjeUEzT2l4TGps
33 + QTIzanNXcmpZNEYxdjF2MVhrMktKNEUKncQUla/SmWXlkNz4LK3AMNNJLMYY5AzQ
34 + duy9IP1dhfOBaj8u39AH/9yK1C7CGSdlpZB4nQFMAviUmcFOLkjJcw==
35 + -----END AGE ENCRYPTED FILE-----
36 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
37 + enc: |
38 + -----BEGIN AGE ENCRYPTED FILE-----
39 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5V1hZaTJUZHZFR2RxTmNn
40 + TUJVbkR0OFZEM3VEWVhCNC9tZkJvSG9qSm5VCmJSckt2NlNmVlM0ZFh2eExIUEo1
41 + bHJFVFNVd1pYZkNDQTltcGVPQUlMSWMKLS0tIGRQL1RMRXVOQzRUbjcwcFE1cFZz
42 + eW1FelV4akJmM3RTeDRVQ3FNZlhNWUkKLRAB/+bnexIGYwAyczY1IIDFzvji2OzW
43 + rqOdtyGCi/99tMxtfsK3h5UFZlMVEOOosjz8n8WTC2/g/P4H5CVgrA==
44 + -----END AGE ENCRYPTED FILE-----
45 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
46 + enc: |
47 + -----BEGIN AGE ENCRYPTED FILE-----
48 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEa0NFQ2l2V3dpekdDUGxl
49 + TFFZNi90M25tWTlYSnphN2FwaUFkdTNwUG5rCnBDK2laVUd0MHFGR25yc0tHUDdr
50 + eURKRlJJcHRDcFJhUDEvVWNvSmc3SmsKLS0tIFF1ZDNvOVhOdTNQaWZtc2I3Q054
51 + UHN1V3owanJFVkI2VjBVUzhwYUhpNjQKW6IQ0cjfk3vxbNuZY4thgOzL630Nxf3Y
52 + iQOT71FJA+Byj9NN2D/tapJdanilS6eVxzUJXhKkaFLRHa+D02vpAg==
53 + -----END AGE ENCRYPTED FILE-----
54 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
55 + enc: |
56 + -----BEGIN AGE ENCRYPTED FILE-----
57 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2aGxKbXdyU0RLZlZ4eThW
58 + QUFYQnpoeVRQaWRLQWJLcmFZbERSaUlpQVJjCjI0bVoyNGhRMHp1TlFySmlMQk8w
59 + UVdaVW0zQWFMajZtdlphN2dZS0thcGMKLS0tIHRnWlRJQi83RWJhbTE0RzYwWGsy
60 + N0c5YUxDY09IY01kYUJvZFlLcWtvN1UK2eBUCm5Ikwt6NClzLI8xv5lSMsaM7ETo
61 + xW0nPj7CxS9Xpvte55lQja5bnCZjJe+0s1WJndtgBs+AgksuCTNseA==
62 + -----END AGE ENCRYPTED FILE-----
63 + lastmodified: "2025-07-31T12:40:14Z"
64 + mac: ENC[AES256_GCM,data:jO+sFUbBhw/OD5U9gXvwe1YxedMW7jxv8je2PJXOX4YApUlk98llGSth1AOMK+Jkfky2yyxgCUb+vDves0u8UOE41itdaFn3Y1FW46cacfgQFJUuepDB+btlC632DYULEM+e/9mAGALxI5AYap0rtce+SEWfPhXXGbm06c+kRI8=,iv:MZfvT6scO40FsqjA4augXuRnf8XgzbRx0coZ1X2MBe8=,tag:V4UPyi0gMjR+WO+stBx66Q==,type:str]
65 + unencrypted_suffix: _unencrypted
66 + version: 3.10.2
non-critical-infra/secrets/ofborg.eval03.ofborg.org.yml new
+66
@@ -0,0 +1,66 @@
1 +ofborg:
2 + mass-rebuilder-rabbitmq-password: ENC[AES256_GCM,data:bG3a7gAx9XhN7TM5wEvXeC7lB3ZaLz2NZU2VEjaTdTzHDtwQZl/T3gOvJR+RsO7fDJs=,iv:bTx9Bru62CCBcHvPSRIFfVG+eeSRvN1muk0p+ROqGO0=,tag:Zl/L52kl1qTd1VczlHa3TQ==,type:str]
3 + builder-rabbitmq-password: ENC[AES256_GCM,data:5sFff+ugVDLRiwHsXqp0evM9JT2P0I/0twqVEQ2HZo95wo+38Gavlx7tHfIEZC58+QY=,iv:maBiRtPM2/fv84kJIdkbh3sPrgadDPfFBlBCh0Lu7l0=,tag:0gvoarCDYB+Kb/mXIi1ifw==,type:str]
4 +harmonia:
5 + secret: ENC[AES256_GCM,data:DB0GIKQaVew6Ymn8cJnHrB0B0nlSRtkn+nDIFB1irlnTmBwyUFRnKUVL7Rmd4iejPI6tjZhjKccJ2/A+ZlM6I1kczrdK9+HwwVrTZml+X3QNtDe5EDB8MMVU8Wzn2gMWJQQN7SGQLdIVKQ==,iv:C3QsBXVUkXtRXC2mm2OlAL6TB1Js8O15NBpurm0a+zA=,tag:L4n/cNQA5fmnOOTudyQNbg==,type:str]
6 +queue-runner-client.key: ENC[AES256_GCM,data:kRctoguQnH9W088o/PLGf73Vv2YYJkom5r/mwRSMrBcSnQxYoHFcqvbuoX4bz4M0Qvjh8nX+yMacNP3n36HlYBaUv8tRoxwyH1Kf6F/WqBiEp6Ilrd+f8kZbPEL1VqA5ESQVQ3N2szUBOfCJDnk3wnCa4ZVj1jA=,iv:2lWsWdcFDmOQuusZx2TOIsl/49GWE2dlqseL0+UgLFE=,tag:lxRnciShgszhiP0itaceSQ==,type:str]
7 +sops:
8 + age:
9 + - recipient: age1yssfznyq8rljcpfthpulnvfls0l5t36fpqxkk5taxcwpkqhv9gcqrvvwh7
10 + enc: |
11 + -----BEGIN AGE ENCRYPTED FILE-----
12 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtZXR5WC9VRFNPMHRXSXRJ
13 + ZE5yZjlMRGV2bVpzMUx3cUloN0I4TGowOFQwCnRuS3Z3aDdnV01QQUF3dFlveHRY
14 + aUpoWXdmSk8vT2o4U1ZLS29OTUhkWm8KLS0tIGF0Uy9JQ0t3TkQxY0hyOWp4Yjd4
15 + NWo2N0hQSTJoRUNEYmpUZW9LUktKS1EKVl8MPhroHW4NJ7jcZo7uzwtjP3DmLqqj
16 + zWlITjyZATB8I2OsaricBocdtxlJDNtVRHCpimxjqUpFmItbMbrzQA==
17 + -----END AGE ENCRYPTED FILE-----
18 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
19 + enc: |
20 + -----BEGIN AGE ENCRYPTED FILE-----
21 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLZkhjeFBnVHZSdHlMRmtU
22 + MWp5NWNEWkFrdUFFUEU5M05xNE4zYnFjL1FnCkVEZkxJOGZQUzEvazYycG95TzJl
23 + MWVvTW1BdzJ1TStGN0JtbGl1N2o0UkUKLS0tIERJRStwR1hPaUpvL0Y0ZFlZeWJG
24 + cC9KdEhCa0IraitrMkNUNWRVMm1JM3MKUUWWGTmpRwB6HYMb7kZ4KDH2jBUGsGuv
25 + 8eSTpyXXYbHCgkLAJIn7J+ET8agpEg5X9bNJc/uG0dxVYRgV0hQxUw==
26 + -----END AGE ENCRYPTED FILE-----
27 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
28 + enc: |
29 + -----BEGIN AGE ENCRYPTED FILE-----
30 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmVXFwdklma0F2OUkyQk5a
31 + VGN5Zkc1SXNkcnNvL2w1L084Rm5POG83NVNJCnU3VFVHak1ZVmpmU3p0aHFQeHdL
32 + Uk9QcmJsekcxT0wyOEtDN2JjQVBNY3MKLS0tIGhxRFQrL0ZVYnJpYURTczlPbWFD
33 + S2w3eW5ZTHBYSEExZUk4SmtxdnJCTmcKwcxD6oLROx2Y4aCEYVL1CHV273/ts54x
34 + mZSuD9kssOPc5GC6Wa/XIYbcGbXMlD+psveNpaNtMY/WS7lX8IwoEQ==
35 + -----END AGE ENCRYPTED FILE-----
36 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
37 + enc: |
38 + -----BEGIN AGE ENCRYPTED FILE-----
39 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMS2IvMGwyZnRqenN4d2pF
40 + eEMvaHR5Y1ZSWEQxcXVRMEFjVjAxaDBNQm5NClJQaUljZjRxME94SkRNMUE4OWRj
41 + dTYycDBoTEZicjRJbFNvWStrQVZwNDAKLS0tIHUxTHZmTk94UzVjREpLRTZ2Y0lo
42 + ME5aODB5OFM4aUpHdnlMbklSejQyMFUKly7wnZ3q6n8Mv05EkcCAj4GyLGba4kcM
43 + IW/gg+vyuYPkoxllFb/lbkpQMs57kWQ32JgEaY0gXBaBjNNYZ7lpEQ==
44 + -----END AGE ENCRYPTED FILE-----
45 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
46 + enc: |
47 + -----BEGIN AGE ENCRYPTED FILE-----
48 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKUEpPdDJGRUJ3bjRLR0k4
49 + d0lKV3NJeWsxdjdSYUVuSG84ZFp6bndpNlRBCk40c0doeUEvdlhoZlgzdkFEZEtS
50 + NmpWdExsR2FNVitLYVhBR1NubTFrTFkKLS0tIDIwSkdTQmx1STZPL1BJa05EanN3
51 + bnYvMGZJdnJadXk2ZkhUcXpTS1NuOGsKDh8RAx/vuN4jYQKOWySdpdhbOD399TR2
52 + cl+Y6dnl6UM81lSAJz1B9eKI9hn2cuDW6TrLPc5fb4kFnwlYWwro2g==
53 + -----END AGE ENCRYPTED FILE-----
54 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
55 + enc: |
56 + -----BEGIN AGE ENCRYPTED FILE-----
57 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6OEs5YkxoT0FHbEpFRjJv
58 + SnpGZExua01Hbyt0WUZhSFV3QkVpcGVXMkFVClFMU2d4cXlSSm4zRmRIWG15L2tu
59 + VDFjSFBGVHZxREJFaTJOY2JPVk5HQWsKLS0tIDREamUvSThrTkdRTUFrOUFrRjFB
60 + UFpzRHFaMkZnYkxFeTZxYzlZbTZ4b28K9Kmul+h7Ltzm/c4stGW5MzQflmFqKctr
61 + kgV1a+1qMkwHgoGFOyFZsCgrU62145EFuQ7X4bIq2ItSpeTAU8EITQ==
62 + -----END AGE ENCRYPTED FILE-----
63 + lastmodified: "2025-07-31T12:40:29Z"
64 + mac: ENC[AES256_GCM,data:ktTeS9q/Nn5OVw1uXgtOIWMQkgBe1VYyXxXEALExm/vK5rk3Y6SViY9xL9mNPySQr81NMzo8Y/5q61Owqqax3a5XrQA3m9x4pj16FvAOdcOFJjhRG+/Z9eZdC62DFa+GQDXL0FcauYmn4IgelcJxxJjeltGZO9T5tjB0d5qVeb8=,iv:zYLb1aBMZeKB4roG6ADKqrR9XDRmPgmpL76ky23/VXo=,tag:YhVMoyxi7T5I2h8gfklNyw==,type:str]
65 + unencrypted_suffix: _unencrypted
66 + version: 3.10.2
non-critical-infra/secrets/ofborg.eval04.ofborg.org.yml new
+66
@@ -0,0 +1,66 @@
1 +ofborg:
2 + mass-rebuilder-rabbitmq-password: ENC[AES256_GCM,data:VGNge1ehls864sKzDJVgpngMrey2E6Kl9Z2n0lljA5hQkHc1fMxoayJofeLiJPQI/NU=,iv:VvTb0V6vFxqhH4RHfVDqhgRWf8X/wDQtoDPGJRL8vCI=,tag:soyUaOTnwEUHrIRAzBcr8g==,type:str]
3 + builder-rabbitmq-password: ENC[AES256_GCM,data:bS1pbz+76nI8+dbqvYe+Qnlh+NuENd1AtKXY9W04n8LW2b0plwdA6JbhRqP7e1q+YNs=,iv:IPL0NKngwD+86NfSaRCK4RHB3d6Ceo7O84EXv6ctz0M=,tag:81T6syiQDyy7BrARgmtEKg==,type:str]
4 +harmonia:
5 + secret: ENC[AES256_GCM,data:kSdrSKY1Gei0wqvz2B/hhKd1ByoHmgyJZl84qvbP4Uc+NkmwM3tJmuunkPKz9na7Q86DLv3TCYz03mYoUskl5QsuePt2Sf9s7/ZOE4uYI5Xy+DWQqDXSQ0YWltiEth4FqOphkJS3SdmTgA==,iv:uDrxPaxL1fCa2YZYc9GqQAOVke/0P69TS+SEMexQ5xc=,tag:iOlSKt7gwMDyIaI6MeHpOw==,type:str]
6 +queue-runner-client.key: ENC[AES256_GCM,data:QJGUhlM7v0+VPfaQK1usjtFzfTvvjeDwjBEef5sxyd2T753Owy1tWUYMxLxNTikkAGqs+uVHOM6yprpTBSMnpB0J38MgrVtxXqTwNNmEQnJv4xkNV+ux743crxQW20GvoHCbpevob/yWeDTUhKJa9kmNxiKkKPk=,iv:9HJ7iWMr3T7xRoUWSsn7wMlY7abB8S2XgIN4UMLWMAI=,tag:kqO3RPidoGagOoXhfQAfmQ==,type:str]
7 +sops:
8 + age:
9 + - recipient: age1vunut833rrdfulgnsjqtuke4yjtzexn2xqjqavwzxlgrg7n4y45qhurzwc
10 + enc: |
11 + -----BEGIN AGE ENCRYPTED FILE-----
12 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3YzlpajQzeEtwVEdqYkhr
13 + bVc5UUhsZ0hWbmxWSkl4azNreVhqK0x0MWlnCmNqbEgvY0c5a20xQklSd09sMXpJ
14 + c1kyVHNqbURIZ3F0dm13ZENXV3VleGMKLS0tIDEwQUMyK0dwNGZFOWZzdi94QUdv
15 + c0xHNE5DSkp4cTZuakRoR0VPYUk4WWcKXFZA1mJIpkynTpgaTl2E0XJuMArkM6vB
16 + GLzuoMqAUzludzzSF+9f6CF+o5FoAyho/Q4scpqqsPcwpMZ1UMpxkA==
17 + -----END AGE ENCRYPTED FILE-----
18 + - recipient: age1j3mkgedmeru63vwww6m44zfw09tg8yw6xdzstaq7ejfkvgcau40qwakm8x
19 + enc: |
20 + -----BEGIN AGE ENCRYPTED FILE-----
21 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5ZlhqU2NoL3RsYVNReEg2
22 + ZTFqNFRmU3RxdmVTRTZtcWFNdmMzVTErZWdjCnU4Y3NURjBSdFdoTzMwYTk0RnVq
23 + Z3l4ZGxxcTFVOWdYK3NhekJ4VHlDaEEKLS0tIHI1RWJYbnhHNkFBSUhDS0M4RUZR
24 + OWordG56clBFWEQ4Y0ZKbEd0N0RHdW8KJLjKAyOIuK7eyBzjo1SaFxC9gN7fdRUy
25 + u0PxzZL7+FjWCecMB3zcFabWbuPyZPTFTrbM2diiqaM7BuCPm9Fhxw==
26 + -----END AGE ENCRYPTED FILE-----
27 + - recipient: age17ez23w2kpxl0gcdx4ehcglkcfcfnv4qz0gq2n8ylxwx4yrtjpvjqxfasua
28 + enc: |
29 + -----BEGIN AGE ENCRYPTED FILE-----
30 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRZDFGOUNyZmpvOXVYU2ti
31 + S1YvOStxbFZRTjBIVzBwdUlkL2xVTWoyazJNCm5FTGE0N2J6VVdGbldqc2t3WHV6
32 + L251TmYxczRCcjhIcGhEQ3NCdUJnOTgKLS0tIG1HN1gybUNXUHMybEdic3lzMFRH
33 + WmtzSmdZelE4S1pIVFZJeWJNUmdnVzQKGvbLhDiGOoAc7jMX7snlIrfNOU9VbN4D
34 + Tn9x350Urx3P2wklqz7xIGEoEriTUScQ7+qb/9XSpORNle0w8wamzA==
35 + -----END AGE ENCRYPTED FILE-----
36 + - recipient: age1lz3mvem0rgfxj7uavth8du4xsw23wp5ts77m5vvclxyj5mjxfujs0jgtcz
37 + enc: |
38 + -----BEGIN AGE ENCRYPTED FILE-----
39 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrTEtqa1JPM1ErT0owLzND
40 + T1hGRDV6ZFBFTHQyaXVKY2FqcGRXWnpjRFVjCi9HcElDTWk1R2FZMy9UUGl3L0FV
41 + aFhUVkEyTDFWQzQwNDBhNTBBdTdrZDgKLS0tIFRJNTQyM3ZUZmNRM05CZ29aR3Ja
42 + dE5nRTJ4TzNzaFI4NEtscmZUTnRmaGcKCyDbriCAE4Lk9t/gnYCmM810hWkkb1VB
43 + XXURC9kDBRksFIfx6kYtzx7o5EarGl5egSoCAHa49xqU5nL7+N7NQA==
44 + -----END AGE ENCRYPTED FILE-----
45 + - recipient: age1m68dw9dltvtsg8e9lf5ts2vwnn4ykraguhjr8v65s0xessk3xqeqyz5jwt
46 + enc: |
47 + -----BEGIN AGE ENCRYPTED FILE-----
48 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPbDV4Z1NNWHhrUE02QkQ3
49 + RFBMT1lRWWpkb05OdjZRNkEvV1EybGhOT2hNCnlZNWtYajJlOWhJZDdERlArdzNh
50 + U2d0UXoxWWt4bW9FRFhXNVBiK3ZmMEkKLS0tIG9iTWs0WFNpd1VjOE03NEdZR1Yy
51 + MWpteUkveTFKbVJoVUVaRStQc0RuK0UKkMxjbNrsq2ccVBqv8lr/yJJ75/CuEso4
52 + V3241AS1shx31IaPh17F11mulDkUCTUpU1jnQLn+IdLqKnQMHD6aXA==
53 + -----END AGE ENCRYPTED FILE-----
54 + - recipient: age1nc9sh92wf62nt89k4vgyvqws2pt49cq6xqxx46jqpz4vqxsh5a4q8ltzp8
55 + enc: |
56 + -----BEGIN AGE ENCRYPTED FILE-----
57 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMVGVQYklyQUdsVXVCR2Nw
58 + Wnprc1Y2VTJSL3VWUURtOGY1RDRFNG1KY0ZrClpxRnl4K2w2YTl1Z3BSRnFDME1L
59 + WWlBMG1LSGpXVXhjMlhGczdRSGpDTkkKLS0tIDgrRGJraU9lT1JwSjBMaWZKRU45
60 + SmhwL09qSUVlbzd0d2ZNQjNhV1p3am8KaX4iGe6V4URDTfe96HjwovLh1I10J3yZ
61 + Mb8Ht1xnGCtJc+MV61P8D20/4qRQQmXupuJ+Zkq+BicLVr+u+H3x+w==
62 + -----END AGE ENCRYPTED FILE-----
63 + lastmodified: "2025-07-31T12:40:44Z"
64 + mac: ENC[AES256_GCM,data:BPfQYeQSi3xp3SnGa3KAcPKrXQ9kDWS2KTc/3w1/rw3Qj9xAl7xPhEhj/I61zugObbVLtuFjilD+V/NzOq9gVg9b1ERq7bYhSAl1nJLQIjhT4IbPKKfkfh8XMRRhz7AxQReOsHS4SIxwf71JM84pwxOaL3KItTTHswxLXpqX0s0=,iv:GgeXMCtY6UzDArHUEwy/9hTo+C9Q6F9+Ib2aWo5MCcs=,tag:XbxBQAl19inpN80GKkGt1g==,type:str]
65 + unencrypted_suffix: _unencrypted
66 + version: 3.10.2