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

View file

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