2025-07-26 02:17:42 +02:00

92 lines
1.9 KiB
Nix

{
lib,
buildGoModule,
fetchFromGitHub,
nixosTests,
stdenv,
buildNpmPackage,
esbuild,
brotli,
zstd,
}:
buildGoModule (finalAttrs: {
pname = "anubis";
version = "1.21.3";
src = fetchFromGitHub {
owner = "TecharoHQ";
repo = "anubis";
tag = "v${finalAttrs.version}";
hash = "sha256-CMFd9che+D1ot1Iqk0VcJmna0xIqHlRIvNnzYo+q+RU=";
};
vendorHash = "sha256-cWkC3Bqut5h3hHh5tPIPeHMnkwoqKMnG1x40uCtUIwI=";
nativeBuildInputs = [
esbuild
brotli
zstd
];
xess = buildNpmPackage {
pname = "anubis-xess";
inherit (finalAttrs) version src;
npmDepsHash = "sha256-NJMUXGXcaY8l1WIbvCn+aIknVuagR7X8gRkme9xpYQ0=";
buildPhase = ''
runHook preBuild
npx postcss ./xess/xess.css -o xess.min.css
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm644 xess.min.css $out/xess.min.css
runHook postInstall
'';
};
subPackages = [ "cmd/anubis" ];
ldflags = [
"-s"
"-w"
"-X=github.com/TecharoHQ/anubis.Version=v${finalAttrs.version}"
]
++ lib.optionals stdenv.hostPlatform.isLinux [ "-extldflags=-static" ];
postPatch = ''
patchShebangs ./web/build.sh
'';
preBuild = ''
go generate ./... && ./web/build.sh && cp -r ${finalAttrs.xess}/xess.min.css ./xess
'';
preCheck = ''
export DONT_USE_NETWORK=1
'';
passthru.tests = { inherit (nixosTests) anubis; };
passthru.updateScript = ./update.sh;
meta = {
description = "Weighs the soul of incoming HTTP requests using proof-of-work to stop AI crawlers";
homepage = "https://anubis.techaro.lol/";
downloadPage = "https://github.com/TecharoHQ/anubis";
changelog = "https://github.com/TecharoHQ/anubis/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
knightpp
soopyc
ryand56
sigmasquadron
defelo
];
mainProgram = "anubis";
};
})