Skip to content

Commit 38b997b

Browse files
committed
chore: cleanup flake and add nix tests for sops
1 parent 659e24d commit 38b997b

File tree

8 files changed

+64
-20
lines changed

8 files changed

+64
-20
lines changed

flake.nix

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,13 @@
165165
};
166166
in
167167
{
168-
packages.default = self.packages."${system}".deploy-rs;
168+
packages.default = self.packages.${system}.deploy-rs;
169169
packages.deploy-rs = pkgs.deploy-rs.deploy-rs;
170170

171-
apps.default = self.apps."${system}".deploy-rs;
171+
apps.default = self.apps.${system}.deploy-rs;
172172
apps.deploy-rs = {
173173
type = "app";
174-
program = "${self.packages."${system}".default}/bin/deploy";
174+
program = "${self.packages.${system}.default}/bin/deploy";
175175
};
176176

177177
devShells.default = pkgs.mkShell {

nix/tests/default.nix

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ let
2020
done <$refs
2121
'';
2222

23-
mkTest = { name ? "", user ? "root", flakes ? true, isLocal ? true, deployArgs }: let
23+
mkTest = { name ? "", user ? "root", flakes ? true, isLocal ? true, sops ? false, deployArgs }: let
2424
nodes = {
2525
server = { nodes, ... }: {
2626
imports = [
27-
./server.nix
27+
(import ./server.nix { inherit pkgs sops; })
2828
(import ./common.nix { inherit inputs pkgs flakes; })
2929
];
3030
virtualisation.additionalPaths = lib.optionals (!isLocal) [
@@ -36,7 +36,7 @@ let
3636
};
3737
client = { nodes, ... }: {
3838
imports = [ (import ./common.nix { inherit inputs pkgs flakes; }) ];
39-
environment.systemPackages = [ pkgs.deploy-rs.deploy-rs ];
39+
environment.systemPackages = [ pkgs.deploy-rs.deploy-rs ] ++ lib.optionals sops [ pkgs.sops ];
4040
# nix evaluation takes a lot of memory, especially in non-flake usage
4141
virtualisation.memorySize = lib.mkForce 4096;
4242
virtualisation.additionalPaths = lib.optionals isLocal [
@@ -61,6 +61,8 @@ let
6161
6262
enable-flakes.url = "${builtins.toFile "use-flakes" (if flakes then "true" else "false")}";
6363
enable-flakes.flake = false;
64+
enable-sops.url = "${builtins.toFile "use-sops" (if sops then "true" else "false")}";
65+
enable-sops.flake = false;
6466
'';
6567

6668
flake = builtins.toFile "flake.nix"
@@ -97,6 +99,14 @@ let
9799
client.succeed("cp ${./server.nix} ./server.nix")
98100
client.succeed("cp ${./common.nix} ./common.nix")
99101
client.succeed("cp ${serverNetworkJSON} ./network.json")
102+
103+
# Prepare sops keys
104+
client.succeed("cp ${./sops/.sops.yaml} ./.sops.yaml")
105+
client.succeed("cp ${./sops/password.yaml} ./password.yaml")
106+
# this is where sops looks for private keys
107+
client.succeed("mkdir -p /root/.config/sops/age/")
108+
client.succeed("cp ${./sops/age_private.txt} /root/.config/sops/age/keys.txt")
109+
100110
client.succeed("nix --extra-experimental-features flakes flake lock")
101111
102112
# Setup SSH key
@@ -173,4 +183,9 @@ in {
173183
flakes = true;
174184
deployArgs = "--file . --targets server";
175185
};
186+
sops = mkTest {
187+
name = "sops";
188+
sops = true;
189+
deployArgs = "-s .#server --sudo-file ./password.yaml --sudo-secret deploy";
190+
};
176191
}

nix/tests/deploy-flake.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
in {
1616
nixosConfigurations.server = nixpkgs.lib.nixosSystem {
1717
inherit system pkgs;
18-
specialArgs = { inherit inputs; flakes = import inputs.enable-flakes; };
18+
specialArgs = { inherit inputs; flakes = import inputs.enable-flakes; sops = import inputs.enable-sops; };
1919
modules = [
2020
./server.nix
2121
./common.nix

nix/tests/server.nix

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
# SPDX-FileCopyrightText: 2024 Serokell <https://serokell.io/>
22
#
33
# SPDX-License-Identifier: MPL-2.0
4-
{ pkgs, ... }:
4+
{ pkgs, sops, ... }:
55
{
66
nix.settings.trusted-users = [ "deploy" ];
7-
users = let
8-
inherit (import "${pkgs.path}/nixos/tests/ssh-keys.nix" pkgs) snakeOilPublicKey;
9-
in {
10-
mutableUsers = false;
11-
users = {
12-
deploy = {
13-
password = "";
14-
isNormalUser = true;
15-
createHome = true;
16-
openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
7+
users =
8+
let
9+
inherit (import "${pkgs.path}/nixos/tests/ssh-keys.nix" pkgs) snakeOilPublicKey;
10+
in
11+
{
12+
mutableUsers = false;
13+
users = {
14+
deploy = {
15+
password = if sops then "rootIsAGoodRootPassword" else "";
16+
isNormalUser = true;
17+
createHome = true;
18+
openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
19+
};
20+
root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
1721
};
18-
root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
1922
};
20-
};
2123
services.openssh.enable = true;
2224
virtualisation.writableStore = true;
2325
}

nix/tests/sops/.sops.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
keys:
2+
- &primary age179s8jnppgy9kwakmva8av6frpnhgg9myrvk3xlfpanmhvvzyh96sdygfcm
3+
creation_rules:
4+
- path_regex: password.yaml
5+
key_groups:
6+
- age:
7+
- *primary

nix/tests/sops/age_private.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# created: 2025-06-05T11:36:08+02:00
2+
# public key: age179s8jnppgy9kwakmva8av6frpnhgg9myrvk3xlfpanmhvvzyh96sdygfcm
3+
AGE-SECRET-KEY-1L8HTRL2THGGZLXQQDTDLDG0U8EL4RSSAMVT9RYUG5JWPUJW49N9QS0EFSZ

nix/tests/sops/age_public.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
age179s8jnppgy9kwakmva8av6frpnhgg9myrvk3xlfpanmhvvzyh96sdygfcm

nix/tests/sops/password.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
deploy: ENC[AES256_GCM,data:/9Y3WUsK5aamlfW7ImSkEb24IGE0wiE=,iv:+gz2H5b2BlLhmGMIPKHInM/p0eJrnhRz07KKro0nOPM=,tag:q2upCUnqXN4DlGsh8aWHcA==,type:str]
2+
sops:
3+
age:
4+
- recipient: age179s8jnppgy9kwakmva8av6frpnhgg9myrvk3xlfpanmhvvzyh96sdygfcm
5+
enc: |
6+
-----BEGIN AGE ENCRYPTED FILE-----
7+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMckNqSWF3MUpNOU91T2Zh
8+
dU9ZQlozVWd3bnhsakZRSlFxcGVCZ3Z1dGpvCkVtbkhDNkNhTU5PUHhuVm5BaTJa
9+
dGRhU0c5MmQ2bVdyc1JnVVB0aCt1YW8KLS0tIHd4NWlDZEQvdEhxb2lVaUtmSktO
10+
MDExNzUwUG5KZ2JyZHhKTmFLZEpleWcKDNxV1CKbEeQ4ixX4PMSj60egj31bN2KG
11+
Zm0wfO8UtuGkLVcPKLL7jUhgQXzN9jHg/fDzT11tTnmFaEwtfhHzWg==
12+
-----END AGE ENCRYPTED FILE-----
13+
lastmodified: "2025-06-05T16:22:23Z"
14+
mac: ENC[AES256_GCM,data:Q7ctfJ2UaY7F8eNYDG4Qt5/vLQL2btNU4USe1UEwf8hnSiPJ8Fh8eDgZnXo8F5RZsx3/tPJq+5F1r/ENIturr8ZXYW+101r1pnwEIXz6BEABotCIJArnm3dOR4C4OwrvOPKLNMI0OkDCSTWL2WV3aNIq41TnjBrTrPVP4aZZPlU=,iv:tiDMG0LfAgjoXz8hFhCisZx59BZQRVWFeCuRhQdYiUI=,tag:qQ6vPzCJ7S6j0wIA+/ilxw==,type:str]
15+
unencrypted_suffix: _unencrypted
16+
version: 3.9.4

0 commit comments

Comments
 (0)