Skip to content

Commit 3f91a1a

Browse files
committed
feat: test sops and hercules-ci
1 parent 369d29a commit 3f91a1a

File tree

11 files changed

+158
-10
lines changed

11 files changed

+158
-10
lines changed

.sops.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
keys:
2+
- &nixos_kid age1dghfu7sxwlkf4626eywmgr63y2g7m4x8zs8a6xt2zay3x7dclpnsw776dd
3+
- &pve0 age1p2vm095mfftw3uywqkhwmkseusl0l95dpsx9dtd6zu84m0zspa4sjndx3c
4+
5+
creation_rules:
6+
- key_groups:
7+
- age:
8+
- *nixos_kid
9+
- *pve0
10+
11+
stores:
12+
json:
13+
indent: 2
14+
yaml:
15+
indent: 2

checks/pre-commit-hooks/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ git-hooks-nix.lib.${pkgs.system}.run {
1212
src = ./.;
1313
hooks = {
1414
treefmt = {
15-
enable = true;
15+
# enable = true;
1616
package = treefmt.config.build.wrapper;
1717
};
1818
};

flake.lock

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@
7070

7171
deploy-rs.url = "github:serokell/deploy-rs";
7272
deploy-rs.inputs.nixpkgs.follows = "nixpkgs";
73+
74+
sops-nix.url = "github:Mic92/sops-nix";
75+
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
76+
7377
};
7478

7579
outputs =
@@ -99,21 +103,28 @@
99103

100104
homes.modules = with inputs; [
101105
plasma-manager.homeManagerModules.plasma-manager
106+
sops-nix.homeManagerModules.sops
102107
];
103108

104109
# home.users."kid@nixos".modules = with inputs; [
105110
# # Default to enabled and require a config
106111
# xremap.homeManagerModules.default
107112
# ];
108113

109-
systems.modules.nixos = with inputs; [
110-
nixos-facter-modules.nixosModules.facter
111-
disko.nixosModules.disko
112-
impermanence.nixosModules.impermanence
113-
stylix.nixosModules.stylix
114-
ucodenix.nixosModules.default
115-
# xremap.nixosModules.default
116-
];
114+
systems.modules = {
115+
darwin = with inputs; [
116+
sops-nix.darwinModules.sops
117+
];
118+
nixos = with inputs; [
119+
nixos-facter-modules.nixosModules.facter
120+
disko.nixosModules.disko
121+
impermanence.nixosModules.impermanence
122+
stylix.nixosModules.stylix
123+
ucodenix.nixosModules.default
124+
sops-nix.nixosModules.sops
125+
# xremap.nixosModules.default
126+
];
127+
};
117128

118129
deploy = lib.mkDeploy {
119130
inherit self;
@@ -139,5 +150,8 @@
139150
githubActions = inputs.nix-github-actions.lib.mkGithubMatrix {
140151
checks = inputs.nixpkgs.lib.getAttrs [ "x86_64-linux" "x86_64-darwin" ] self.checks;
141152
};
153+
herculesCI = {
154+
ciSystems = [ "x86_64-linux" ];
155+
};
142156
};
143157
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
config,
3+
lib,
4+
namespace,
5+
...
6+
}:
7+
let
8+
inherit (lib.${namespace}) mkModule;
9+
in
10+
mkModule ./. false config { } (_cfg: {
11+
services.hercules-ci-agent = {
12+
enable = true;
13+
settings = {
14+
clusterJoinTokenPath = config.sops.secrets."hercules_ci/token".path;
15+
binaryCachesPath = config.sops.secrets."hercules_ci/caches".path;
16+
};
17+
};
18+
sops = {
19+
defaultSopsFormat = "yaml";
20+
secrets = {
21+
"hercules_ci/token" = {
22+
owner = config.services.hercules-ci-agent.user;
23+
};
24+
"hercules_ci/caches" = {
25+
owner = config.services.hercules-ci-agent.user;
26+
};
27+
};
28+
};
29+
})
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
config,
3+
lib,
4+
namespace,
5+
...
6+
}:
7+
let
8+
inherit (lib.types) listOf path;
9+
inherit (lib.${namespace}) mkModule mkOpt;
10+
in
11+
mkModule ./. false config
12+
{
13+
defaultSopsFile = mkOpt path null "Default sops file.";
14+
sshKeyPaths = mkOpt (listOf path) [
15+
"/etc/ssh/ssh_host_ed25519_key"
16+
] "SSH key paths to use.";
17+
}
18+
(cfg: {
19+
sops = {
20+
inherit (cfg) defaultSopsFile;
21+
22+
age = {
23+
inherit (cfg) sshKeyPaths;
24+
25+
# keyFile = "${config.users.users.${config.${namespace}.user.name}.home}/.config/sops/age/keys.txt";
26+
};
27+
};
28+
})

modules/nixos/suites/common/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ mkModule ./. false config { } (_cfg: {
1717
firmware = mkDefault enabled;
1818
power = mkDefault enabled;
1919
};
20+
security.sops = mkDefault enabled;
2021
};
2122

2223
environment = {

secrets/pve0/default.sops.yaml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
hercules_ci:
2+
token: ENC[AES256_GCM,data:Odvge3VVOvxJFwzifIjDXIWzM1nqZvCBJ0x8udtX7kwboPJL8k2WJ5K+iZ9DUC54z8DEzU1CpHiFLEWTejp9XQ0XcA4JC1FUlG+omD589sD4k2fOYqMGILacLr6t9BSfiFMSwXkaHPpW43dFuif1kjbKwI2dFjBAgboQCVQPcyXr3dXX3HHjK6kGpiAUmAQzWP1XPDH++OHcfuIoHLO+qOFze8YZfXD2CktkBF/XZgp/RLRnmToFjj6HZgySecK/olQv16c7Qp2GPxbTMS3WP0qQ/b9f+T5W6IWWtJaUFIsBGwRR6o16KN0OAA==,iv:QoSh+GnWOzm5XZPecqHGqsjb0ck8/c8QRC7rr+iNK1w=,tag:xnfV6UuvCinetZANc6OITw==,type:str]
3+
caches: ENC[AES256_GCM,data:5anLYG/zyZsotWoMfsy02Nr9dXA2BvdqxgRb8K/x9WthHQZ3eOV5e5JilBA9wwfPjnSrozciYfPkaHZ91S/2CgMLdiKM2iGikrDRr2TN6YVNTM1IhH03ZP/RMEZJc0QK7T8skPU8uw0yD9oCdclJB4hN+tP7I1K3hnOpDn+m7YcCm9i6vUzQhLTV0wYrG1PDv5rJrMz4Eiyd5QRV3oHIYw27Lh2kO4amVDBevYa8v6v3ZMuj4dl8drwRCHoX0QrajpIm4QMH0eF4DkGw3Z2dEygh8xb8NqCjMBFN0Qk2gkKKSpvYqRNlfKfy5jz+Y7cV0Myc+7zWbBfjgp/zcwMTDfsQbDklKIJOZ3qWA0xlsXugq63UrQ1BstLQLpQ1uS+UBiSkZtBNldQ/k5p9/DQAsF9rXa4rnPts9+GXPJt4+9MTizabp/g/fIayshqxNCt4yhMDK5l6FOaVkHlpgHZQ,iv:dZLgX9UbDN6zoZo7aqG5yyVrhI+TMR7D93kxumRh4kw=,tag:E6h6POSHalfUcmaCOMf45w==,type:str]
4+
sops:
5+
kms: []
6+
gcp_kms: []
7+
azure_kv: []
8+
hc_vault: []
9+
age:
10+
- recipient: age1dghfu7sxwlkf4626eywmgr63y2g7m4x8zs8a6xt2zay3x7dclpnsw776dd
11+
enc: |
12+
-----BEGIN AGE ENCRYPTED FILE-----
13+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUWWprWnFwZHZ1NkdwdU1T
14+
VUNaNXBFNFV2NzlTSVhXSUpDV0VjN2dXaWdJCndUdXZKR0FnQ2I4eTE0NWV6dUdB
15+
VlJReUsxWmNZYy83d2NZbnRncXo3bEEKLS0tIDRUc1haK1NIdTVTa2t2VnlHeXFW
16+
d0FFQ3FwU1NNMGJNMmZyb080Zkh2aTAKAG5dzr4JJvC+wJVMNUCshCDYNymxVXQE
17+
aKc95+GuLeWkDdP5hd+s0GBajRcAJALPDo+gBQE7acelGPWbFR7Tgg==
18+
-----END AGE ENCRYPTED FILE-----
19+
- recipient: age1p2vm095mfftw3uywqkhwmkseusl0l95dpsx9dtd6zu84m0zspa4sjndx3c
20+
enc: |
21+
-----BEGIN AGE ENCRYPTED FILE-----
22+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoVzZqU0JOeFpaeTVmdW9U
23+
aUlLSDE5bXB3WUNESGQ5ZVdlcUJPTzBKRHdVClAybjZvVXlia2lzSkJHUjVzVFFu
24+
WStlUlEwZlVkWlZGKzFETUhYd0VVdUkKLS0tIC84TEhEcTRGM2IxRGtOeGVmcXRh
25+
SG51cDBWVnVWRDhvTEREN2hhcCttU2cKiv9jTp7lJkApAzxYjQYTpU/b04AzBtZs
26+
2/nXJUv5EqwoPZNWJlOqRvF6qefj0tOe0PrEB486A0oXQnjB+wJceA==
27+
-----END AGE ENCRYPTED FILE-----
28+
lastmodified: "2025-03-06T18:08:07Z"
29+
mac: ENC[AES256_GCM,data:/LObjn4X/5oEbvlnnhJZcVKhlq71bImgvw/38RVUF19SAbwjYPF1PwPOJPjMjRzdyoj2HAt7FcKjJTEuLyM86snXB/GQQ9MCGJ6wLlUBTEsHhEHYi+pB7KyGvfLlTOmLUaZrDJCBhOy+1AD01QtiZNDnjDULaZpT3qrx/ylhiA4=,iv:oJfG9nV/jvRCJbaOUC+YKDudhJgo0Df1KU2NfgbvraQ=,tag:LUNhfS4IyRsLA5Pw18Zdvw==,type:str]
30+
pgp: []
31+
unencrypted_suffix: _unencrypted
32+
version: 3.9.4

shells/default/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ mkShell {
1111
just
1212
nil
1313

14+
sops
1415
act
1516

1617
deadnix
@@ -20,7 +21,6 @@ mkShell {
2021
nix-health
2122
nix-index
2223
nix-melt
23-
nix-melt
2424
nix-prefetch-git
2525
nix-search-cli
2626
nix-tree

systems/x86_64-linux/pve0/default.nix

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
lib,
23
inputs,
34
...
45
}:
@@ -21,8 +22,13 @@
2122
nixfiles = {
2223
archetypes.server.enable = true;
2324
# hardware.cpu.amd.enable = true;
25+
roles.hercules-ci.enable = true;
26+
security.sops.defaultSopsFile = lib.snowfall.fs.get-file "secrets/pve0/default.sops.yaml";
2427
};
2528

29+
# sops.secrets."hercules_ci/caches".sopsFile =
30+
# lib.snowfall.fs.get-file "secrets/pve0/hercules_ci_caches.sops.json";
31+
2632
disko.devices.disk.main.imageSize = "10G";
2733

2834
system.stateVersion = "25.05";

0 commit comments

Comments
 (0)