Synit: implement test module

This commit is contained in:
Emery Hemingway 2023-11-27 17:27:18 +02:00
parent 42bd83603c
commit 8e5b6624b3
5 changed files with 91 additions and 5 deletions

View File

@ -15,7 +15,10 @@ let
(args // { processManager = "synit"; } // extraParams);
processes = if exprFile == null then { } else processesFun processesArgs;
in pkgs.buildEnv {
name = "synit";
paths = map (builtins.getAttr "pkg") (builtins.attrValues processes);
}
in pkgs.runCommand "synit-processes.pr" {
nativeBuildInputs = [ pkgs.preserves-tools ];
env.config_inputs =
pkgs.lib.strings.concatMapStringsSep " " (builtins.getAttr "pkg") (builtins.attrValues processes);
} ''
cat $(find $config_inputs -name '*.pr') | preserves-tool convert > "$out"
''

View File

@ -0,0 +1,30 @@
{ profileSettings, exprFile, extraParams, tools, pkgs, system }:
let
executeDeploy =
import ../../../test-driver/util/execute-deploy.nix { inherit (pkgs) lib; };
processesEnvSystem = import ../build-synit-env.nix
({ inherit pkgs system exprFile extraParams; } // profileSettings.params);
in {
inherit (profileSettings) params;
nixosModules = [ ./nixos-syndicate-server.nix ];
systemPackages = [ tools.synit ];
additionalPaths = [ processesEnvSystem ];
deployProcessManager = "";
deploySystem = ''
machine.wait_for_unit("syndicate-server.service")
machine.succeed("${
executeDeploy {
inherit profileSettings;
processManager = "synit";
processesEnv = processesEnvSystem;
}
}")
'';
}

View File

@ -0,0 +1,38 @@
{ lib, pkgs, ... }:
let
syndicate-server = pkgs.syndicate-server or (let
repo = builtins.fetchTarball
"https://git.syndicate-lang.org/ehmry/syndicate-flake/archive/trunk.tar.gz";
pkgs' = import repo { inherit pkgs; };
in pkgs'.syndicate-server);
synit = pkgs.fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "synit";
repo = "synit";
rev = "a2ecd8a4e441f8622a57a99987cb0aa5be9e1dcd";
hash = "sha256-M79AJ8/Synzm4CYkt3+GYViJLJcuYBW+x32Vfy+oFUM=";
};
in {
systemd.services.syndicate-server = {
description = "Syndicate dataspace server";
wantedBy = [ "basic.target" ];
preStart = ''
mkdir -p "/etc/syndicate/services"
${lib.getExe pkgs.rsync} -r \
--exclude 001-console-getty.pr \
--exclude configdirs.pr \
--exclude eudev.pr \
--exclude hostname.pr \
--exclude services \
"${synit}/packaging/packages/synit-config/files/etc/syndicate/" \
"/etc/syndicate"
'';
serviceConfig = {
ExecStart =
"${lib.getExe syndicate-server} --no-banner --config /etc/syndicate";
};
};
}

View File

@ -10,6 +10,7 @@ import ./agnostic.nix {
docker = ../backends/docker/test-module;
s6-rc = ../backends/s6-rc/test-module;
supervisord = ../backends/supervisord/test-module;
synit = ../backends/synit/test-module;
systemd = ../backends/systemd/test-module;
sysvinit = ../backends/sysvinit/test-module;
};

View File

@ -122,7 +122,21 @@ checkNixStateDir
checkProfile
composeOldProfilePath
# TODO
if [ "$profilePath" = "" ]
then
echo "No profile path was provided!" >&2
exit 1
fi
# Initialize all state
nixproc-init-state $stateDirArg $runtimeDirArg $logDirArg $tmpDirArg $cacheDirArg $spoolDirArg $lockDirArg $libDirArg $forceDisableUserChangeArg
# Create new groups and users
createNewGroups
createNewUsers
cp -v $profilePath /etc/syndicate/services/processes.pr
# Delete obsolete users and groups
deleteObsoleteUsers