59 lines
1.4 KiB
Nix
59 lines
1.4 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (lib) mkIf mkEnableOption mkDefault mkOption types;
|
|
cfg = config.services.onedev;
|
|
|
|
onedev-package = pkgs.fetchurl {
|
|
url = "https://code.onedev.io/~downloads/projects/160/builds/3835/artifacts/onedev-8.4.2.tar.gz";
|
|
sha256 = "01spl71zdl0ywh5hf83p5d2pxqb9zqhi0akijxv04j3jzkgv2dm6";
|
|
};
|
|
in {
|
|
options = {
|
|
services.onedev = {
|
|
enable = mkEnableOption "Onedev server";
|
|
package = mkOption {
|
|
default = onedev-package;
|
|
type = types.raw;
|
|
};
|
|
|
|
javaPackage = mkOption {
|
|
default = pkgs.jdk11_headless;
|
|
type = types.package;
|
|
};
|
|
|
|
user = mkOption {
|
|
default = "onedev";
|
|
type = with types; nullOr str;
|
|
};
|
|
};
|
|
};
|
|
|
|
config = let
|
|
user =
|
|
if cfg.user == null
|
|
then "onedev"
|
|
else "${cfg.user}";
|
|
in
|
|
mkIf cfg.enable {
|
|
systemd.user.services."onedev-agent-${toString user}" = {
|
|
enable = true;
|
|
unitConfig = {
|
|
ConditionUser = "${toString user}";
|
|
};
|
|
wantedBy = ["default.target"];
|
|
after = ["network.target"];
|
|
description = "onedev-agent-${toString user}";
|
|
path = [config.system.path];
|
|
serviceConfig = let
|
|
java = "${lib.getExe cfg.javaPackage}";
|
|
in {
|
|
ExecStart = "${java} -cp '${cfg.package}/lib/1.8.21/*' io.onedev.agent.Agent";
|
|
Type = "simple";
|
|
};
|
|
};
|
|
};
|
|
}
|