{ lib, buildGo126Module, makeWrapper, git, bash, coreutils, gzip, nodejs, openssh, fetchPnpmDeps, pnpmConfigHook, pnpm_10, stdenv, sqliteSupport ? true, nixosTests, }: let pname = "gitea"; version = "1.26.2"; src = ./source; pnpm = pnpm_10; frontend = stdenv.mkDerivation { pname = "gitea-frontend"; inherit src version; pnpmDeps = fetchPnpmDeps { pname = "gitea-frontend"; inherit version src; inherit pnpm; fetcherVersion = 3; hash = "sha256-Qo0DLuZv+2GVLsBfCv/6CC9E/qhSE4HwV4StQL4HX4Y="; }; nativeBuildInputs = [ nodejs pnpmConfigHook pnpm ]; buildPhase = '' make frontend ''; installPhase = '' mkdir -p $out cp -R public $out/ ''; }; in buildGo126Module rec { inherit pname version src; proxyVendor = true; vendorHash = "sha256-7+M1n8RSgB3gZ/2na4RF9kYOf90H0bnsJZMDKpgAy64="; outputs = [ "out" "data" ]; patches = [ ./static-root-path.patch ]; overrideModAttrs = _: { postPatch = '' substituteInPlace go.mod \ --replace-fail "go 1.26.3" "go 1.26" ''; }; postPatch = '' substituteInPlace modules/setting/server.go --subst-var data substituteInPlace go.mod \ --replace-fail "go 1.26.3" "go 1.26" ''; subPackages = [ "." ]; nativeBuildInputs = [ makeWrapper ]; tags = lib.optionals sqliteSupport [ "sqlite" "sqlite_unlock_notify" ]; ldflags = [ "-s" "-w" "-X main.Version=${version}" "-X 'main.Tags=${lib.concatStringsSep " " tags}'" ]; postInstall = '' mkdir $data ln -s ${frontend}/public $data/public cp -R ./{templates,options} $data mkdir -p $out cp -R ./options/locale $out/locale wrapProgram $out/bin/gitea \ --prefix PATH : ${ lib.makeBinPath [ bash coreutils git gzip openssh ] } ''; passthru = { tests = nixosTests.gitea; }; meta = { description = "Git with a cup of tea"; homepage = "https://about.gitea.com"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ techknowlogick SuperSandro2000 ]; mainProgram = "gitea"; }; }