diff --git a/nix/module.nix b/nix/module.nix index 178c943c..db602493 100644 --- a/nix/module.nix +++ b/nix/module.nix @@ -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]; + }; }; }; }; diff --git a/nix/package-worker.nix b/nix/package-worker.nix index b62ee97c..d66dbe57 100644 --- a/nix/package-worker.nix +++ b/nix/package-worker.nix @@ -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 = '' diff --git a/nix/package.nix b/nix/package.nix index 459f26dc..6d900c57 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -6,6 +6,7 @@ nodejs, vips, makeWrapper, + ... }: let packageJson = builtins.fromJSON (builtins.readFile ../package.json); in