exprs: add reposilite

This commit is contained in:
uku 2024-02-03 21:55:48 +01:00
parent 5aa89cd844
commit 2f49cefb0d
Signed by: uku
SSH key fingerprint: SHA256:4P0aN6M8ajKukNi6aPOaX0LacanGYtlfjmN+m/sHY/o
5 changed files with 125 additions and 0 deletions

5
exprs/modules.nix Normal file
View file

@ -0,0 +1,5 @@
{self, ...}: {
flake.nixosModules = {
reposilite = import ./reposilite/module.nix self;
};
}

View file

@ -7,4 +7,6 @@ final: prev: {
wine-discord-ipc-bridge = prev.callPackage ./wine-discord-ipc-bridge.nix {
inherit (prev.pkgsCross.mingw32) stdenv;
};
reposilite = prev.callPackage ./reposilite/derivation.nix {};
}

View file

@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchurl,
makeWrapper,
jdk21,
}:
stdenv.mkDerivation rec {
name = "reposilite";
version = "3.5.3";
src = fetchurl {
url = "https://maven.reposilite.com/releases/com/reposilite/reposilite/${version}/reposilite-${version}-all.jar";
hash = "sha256-ZqewhOWb49ykmzvIebolXkxtNKA46bCgM7L7yvkVgfE=";
};
nativeBuildInputs = [makeWrapper];
phases = ["installPhase"];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/${name}
cp ${src} $out/share/${name}/${name}.jar
makeWrapper ${jdk21}/bin/java $out/bin/${name} --add-flags "-jar $out/share/${name}/${name}.jar"
runHook postInstall
'';
meta = with lib; {
description = "Lightweight and easy-to-use repository management software dedicated for the Maven based artifacts in the JVM ecosystem";
homepage = "https://reposilite.com/";
license = licenses.asl20;
platforms = platforms.unix;
mainProgram = "reposilite";
};
}

View file

@ -0,0 +1,79 @@
self: {
lib,
config,
pkgs,
...
}: let
cfg = config.services.reposilite;
inherit (pkgs.stdenv.hostPlatform) system;
inherit
(lib)
getExe
literalExpression
mdDoc
mkDefault
mkEnableOption
mkIf
mkOption
mkPackageOption
types
;
in {
options.services.reposilite = {
enable = mkEnableOption "reposilite";
package = mkPackageOption self.packages.${system} "reposilite" {};
environmentFile = mkOption {
description = mdDoc ''
Environment file as defined in {manpage}`systemd.exec(5)`
'';
type = types.nullOr types.path;
default = null;
example = literalExpression ''
"/run/agenix.d/1/reposilite"
'';
};
};
config = mkIf cfg.enable {
users = {
users.reposilite = {
isSystemUser = true;
group = "reposilite";
};
groups.reposilite = {};
};
systemd.services."reposilite" = {
enable = true;
wantedBy = mkDefault ["multi-user.target"];
after = mkDefault ["network.target"];
script = ''
${getExe cfg.package}
'';
serviceConfig = {
Type = "simple";
Restart = "always";
EnvironmentFile = mkIf (cfg.environmentFile != null) cfg.environmentFile;
StateDirectory = "reposilite";
StateDirectoryMode = "0700";
WorkingDirectory = "/var/lib/reposilite";
User = "reposilite";
Group = "reposilite";
LimitNOFILE = "1048576";
PrivateTmp = true;
PrivateDevices = true;
ProtectHome = true;
ProtectSystem = "strict";
AmbientCapabilities = "CAP_NET_BIND_SERVICE";
};
};
};
}

View file

@ -70,6 +70,7 @@
imports = [
./parts
./systems
./exprs/modules.nix
];
};
}