fix: 🐛 Fix Nix module errors when importing
Some checks failed
CodeQL Scan / Analyze (javascript-typescript) (push) Failing after 0s
Build Docker Images / lint (push) Failing after 6s
Build Docker Images / check (push) Failing after 6s
Build Docker Images / tests (push) Failing after 6s
Deploy Docs to GitHub Pages / build (push) Failing after 1s
Build Docker Images / build (server, Dockerfile, ${{ github.repository_owner }}/server) (push) Has been skipped
Build Docker Images / build (worker, Worker.Dockerfile, ${{ github.repository_owner }}/worker) (push) Has been skipped
Deploy Docs to GitHub Pages / Deploy (push) Has been skipped
Mirror to Codeberg / Mirror (push) Failing after 1s
Nix Build / check (push) Failing after 1s

This commit is contained in:
Jesse Wierzbinski 2025-04-15 14:15:36 +02:00
parent 404d63f6d0
commit 765348c440
No known key found for this signature in database
3 changed files with 66 additions and 64 deletions

View file

@ -2,6 +2,7 @@
config,
lib,
pkgs,
...
}: let
cfg = config.services.versia-server;
configFormat = pkgs.formats.toml {};
@ -94,81 +95,81 @@ in {
message = "At least one worker node must be defined.";
}
];
};
systemd.services =
builtins.mapAttrs (nodeName: node: let
config = cfg.config // node.configOverrides;
configFile = builtins.toFile (configFormat.generate "config-${nodeName}" config);
in {
after = ["network-online.target"];
wantedBy = ["multi-user.target"];
requires = ["network-online.target"];
systemd.services =
builtins.mapAttrs (nodeName: node: let
config = cfg.config // node.configOverrides;
configFile = builtins.toFile (configFormat.generate "config-${nodeName}" config);
in {
after = ["network-online.target"];
wantedBy = ["multi-user.target"];
requires = ["network-online.target"];
serviceConfig = {
Type = "simple";
Restart = "always";
serviceConfig = {
Type = "simple";
Restart = "always";
User = cfg.user;
Group = cfg.group;
User = cfg.user;
Group = cfg.group;
StateDirectory = "${name}";
StateDirectoryMode = "0700";
RuntimeDirectory = "${name}";
RuntimeDirectoryMode = "0700";
StateDirectory = "${name}";
StateDirectoryMode = "0700";
RuntimeDirectory = "${name}";
RuntimeDirectoryMode = "0700";
# Set the working directory to the data directory
WorkingDirectory = cfg.dataDir;
# Set the working directory to the data directory
WorkingDirectory = cfg.dataDir;
StandardOutput = "journal";
StandardError = "journal";
SyslogIdentifier = "${name}";
StandardOutput = "journal";
StandardError = "journal";
SyslogIdentifier = "${name}";
Environment = [
"CONFIG_FILE=${configFile}"
];
};
path = [pkgs.versia-server];
}) (cfg.nodes.api ++ cfg.nodes.worker)
// builtins.mapAttrs (nodeName: node: let
type = "api";
exe = lib.getExe pkgs.versia-server;
in {
name = "${name}-${type}-${nodeName}";
description = "Versia Server ${node.name} (${type})";
Environment = [
"CONFIG_FILE=${configFile}"
];
};
path = [pkgs.versia-server];
}) (cfg.nodes.api ++ cfg.nodes.worker)
// builtins.mapAttrs (nodeName: node: let
type = "api";
exe = lib.getExe pkgs.versia-server;
in {
name = "${name}-${type}-${nodeName}";
description = "Versia Server ${node.name} (${type})";
serviceConfig.ExecStart = "${exe}";
}) (cfg.nodes.api)
// builtins.mapAttrs (nodeName: node: let
type = "worker";
exe = lib.getExe pkgs.versia-server-worker;
in {
name = "${name}-${type}-${nodeName}";
description = "Versia Server ${node.name} (${type})";
serviceConfig.ExecStart = "${exe}";
}) (cfg.nodes.api)
// builtins.mapAttrs (nodeName: node: let
type = "worker";
exe = lib.getExe pkgs.versia-server-worker;
in {
name = "${name}-${type}-${nodeName}";
description = "Versia Server ${node.name} (${type})";
serviceConfig.ExecStart = "${exe}";
}) (cfg.nodes.worker);
serviceConfig.ExecStart = "${exe}";
}) (cfg.nodes.worker);
systemd.tmpfiles.rules = [
{
# Create the data directory with the correct permissions
line = "d ${cfg.dataDir} - - - - ${cfg.user} ${cfg.group}";
}
];
users = {
groups = {
"${cfg.group}" = {
description = "Group for the Versia Server";
};
};
systemd.tmpfiles.rules = [
{
# Create the data directory with the correct permissions
line = "d ${cfg.dataDir} - - - - ${cfg.user} ${cfg.group}";
}
];
users = {
"${cfg.user}" = {
isSystemUser = true;
group = cfg.group;
home = cfg.dataDir;
packages = [pkgs.versia-server pkgs.versia-server-worker];
groups = {
"${cfg.group}" = {
description = "Group for the Versia Server";
};
};
users = {
"${cfg.user}" = {
isSystemUser = true;
group = cfg.group;
home = cfg.dataDir;
packages = [pkgs.versia-server pkgs.versia-server-worker];
};
};
};
};

View file

@ -1,5 +1,5 @@
# Simply edit the server to run "bun run build:worker" instead of "bun run build"
{versia-server}:
{versia-server, ...}:
versia-server.overrideAttrs (oldAttrs: {
pname = "${oldAttrs.pname}-worker";
buildPhase = ''

View file

@ -6,6 +6,7 @@
nodejs,
vips,
makeWrapper,
...
}: let
packageJson = builtins.fromJSON (builtins.readFile ../package.json);
in