nix: test forwarding of src in service

Signed-off-by: markoburcul <marko@status.im>
This commit is contained in:
Marko Burčul 2025-01-10 13:45:09 +01:00
parent 95ae2e9db2
commit 77fef0adee
No known key found for this signature in database
GPG Key ID: FC4CD2F9A040D54A
3 changed files with 46 additions and 38 deletions

View File

@ -30,29 +30,9 @@
default = nim-codex;
});
nixosModules.nim-codex = import ./nix/service.nix;
checks = forAllSystems (system: let
pkgs = pkgsFor.${system};
in {
nim-codex-test = pkgs.nixosTest {
name = "nim-codex-test";
nodes = {
server = { config, pkgs, ... }: {
imports = [ self.nixosModules.nim-codex ];
services.nim-codex.enable = true;
services.nim-codex.dataDir = "/var/lib/nim-codex-test";
};
};
testScript = ''
print("Starting test: nim-codex-test")
machine.start()
machine.wait_for_unit("nim-codex.service")
machine.succeed("test -d /var/lib/nim-codex-test")
machine.wait_until_succeeds("journalctl -u nim-codex.service | grep 'Started codex node'", 10)
'';
};
});
nixosModules.nim-codex = { config, lib, pkgs, ... }: import ./nix/service.nix {
inherit self config lib pkgs;
};
devShells = forAllSystems (system: let
pkgs = pkgsFor.${system};
@ -66,5 +46,30 @@
nativeBuildInputs = with pkgs; [ git cargo nodejs_18 ];
};
});
checks = forAllSystems (system: let
pkgs = pkgsFor.${system};
in {
nim-codex-test = pkgs.nixosTest {
name = "nim-codex-test";
nodes = {
server = { config, pkgs, ... }: {
imports = [ self.nixosModules.nim-codex ];
services.nim-codex.enable = true;
services.nim-codex.settings = {
data-dir = "/var/lib/nim-codex-test";
};
systemd.services.nim-codex.serviceConfig.StateDirectory = "nim-codex-test";
};
};
testScript = ''
print("Starting test: nim-codex-test")
machine.start()
machine.wait_for_unit("nim-codex.service")
machine.succeed("test -d /var/lib/nim-codex-test")
machine.wait_until_succeeds("journalctl -u nim-codex.service | grep 'Started codex node'", 10)
'';
};
});
};
}

View File

@ -25,17 +25,19 @@ let
tools = callPackage ./tools.nix {};
in pkgs.gcc11Stdenv.mkDerivation rec {
pname = "nim-codex";
pname = "codex";
version = "${tools.findKeyValue "version = \"([0-9]+\.[0-9]+\.[0-9]+)\"" ../codex.nimble}-${revision}";
src = pkgs.fetchFromGitHub {
owner = "codex-storage";
repo = "nim-codex";
rev = "HEAD";
sha256 = "sha256-cPQDV46Z9z27Hd32eW726fC3J1dAhXyljbhAgFXVEXQ=";
fetchSubmodules = true;
};
#src = pkgs.fetchFromGitHub {
# owner = "codex-storage";
# repo = "nim-codex";
# rev = "HEAD";
# sha256 = "sha256-dncPKKj5W17AvRrK4AndtGm/MdwphPHUJj36tcU2XTU=";
# fetchSubmodules = true;
#};
inherit src;
# Dependencies that should exist in the runtime environment.
buildInputs = with pkgs; [

View File

@ -1,8 +1,9 @@
{ config, lib, pkgs, ... }:
{ self, config, lib, pkgs, ... }:
let
inherit (lib)
types mkEnableOption mkOption mkIf literalExpression;
types mkEnableOption mkOption mkIf literalExpression
mdDoc;
toml = pkgs.formats.toml { };
@ -15,12 +16,12 @@ in
package = mkOption {
type = types.package;
default = pkgs.callPackage ./default.nix { };
defaultText = literalExpression "pkgs.nim-codex";
description = lib.mdDoc "Package to use as Nim Codex node.";
default = pkgs.callPackage ./default.nix { src = self; };
defaultText = literalExpression "pkgs.codex";
description = mdDoc "Package to use as Nim Codex node.";
};
settings = lib.mkOption {
settings = mkOption {
default = { };
type = toml.type;
description = ''Structured settings object that will be used to generate a TOML config file.'';
@ -44,7 +45,7 @@ in
NoNewPrivileges = true;
PrivateDevices = true;
MemoryDenyWriteExecute = true;
ExecStart = "${cfg.package}/bin/nim-codex --config-file=/etc/nim-codex/config.toml";
ExecStart = "${cfg.package}/bin/codex --config-file=/etc/nim-codex/config.toml";
Restart = "on-failure";
};
restartIfChanged = true;