diff --git a/flake.nix b/flake.nix index 87246185..f8a2665a 100644 --- a/flake.nix +++ b/flake.nix @@ -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) + ''; + }; + }); }; } \ No newline at end of file diff --git a/nix/default.nix b/nix/default.nix index 51337382..7830babf 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -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; [ diff --git a/nix/service.nix b/nix/service.nix index 2b3bab9c..a6ad52c5 100644 --- a/nix/service.nix +++ b/nix/service.nix @@ -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;