2025-07-25 02:13:51 +00:00

102 lines
2.0 KiB
Nix

{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
stdenvNoCC,
nix-update-script,
nodejs,
pnpm_9,
typescript,
versionCheckHook,
}:
let
pname = "autobrr";
version = "1.64.0";
src = fetchFromGitHub {
owner = "autobrr";
repo = "autobrr";
tag = "v${version}";
hash = "sha256-1P6YvwmVDbtSAK5yEpHJM6XjROGtPHj1gC2vremb8PM=";
};
autobrr-web = stdenvNoCC.mkDerivation {
pname = "${pname}-web";
inherit src version;
nativeBuildInputs = [
nodejs
pnpm_9.configHook
typescript
];
sourceRoot = "${src.name}/web";
pnpmDeps = pnpm_9.fetchDeps {
inherit (autobrr-web)
pname
version
src
sourceRoot
;
fetcherVersion = 1;
hash = "sha256-KiM/G9W1C+VnMx1uaQFE2dOPHJYU53B8i+7BqUTzo0w=";
};
postBuild = ''
pnpm run build
'';
installPhase = ''
cp -r dist $out
'';
};
in
buildGoModule rec {
inherit
autobrr-web
pname
version
src
;
vendorHash = "sha256-JX4VkvFgNeq2QhgxgYloPF5XOQUQxM/cKAWp1L+kT/c=";
preBuild = ''
cp -r ${autobrr-web}/* web/dist
'';
ldflags = [
"-X main.version=${version}"
"-X main.commit=${src.tag}"
];
# In darwin, tests try to access /etc/protocols, which is not permitted.
doCheck = !stdenv.hostPlatform.isDarwin;
doInstallCheck = !stdenv.hostPlatform.isDarwin;
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgram = "${placeholder "out"}/bin/autobrrctl";
versionCheckProgramArg = "version";
passthru.updateScript = nix-update-script {
extraArgs = [
"--subpackage"
"autobrr-web"
];
};
meta = {
description = "Modern, easy to use download automation for torrents and usenet";
license = lib.licenses.gpl2Plus;
homepage = "https://autobrr.com/";
changelog = "https://autobrr.com/release-notes/v${version}";
maintainers = with lib.maintainers; [ av-gal ];
mainProgram = "autobrr";
platforms = with lib.platforms; darwin ++ freebsd ++ linux;
};
}