diff --git a/pkgs/applications/version-management/forgejo/default.nix b/pkgs/applications/version-management/forgejo/default.nix index 0060dea785dd..5b0c24140107 100644 --- a/pkgs/applications/version-management/forgejo/default.nix +++ b/pkgs/applications/version-management/forgejo/default.nix @@ -46,7 +46,23 @@ buildGoModule rec { owner = "forgejo"; repo = "forgejo"; rev = "v${version}"; - hash = "sha256-nufhGsibpPrGWpVg75Z6qdzlc1K+p36mMjlS2MtsuAI="; + hash = "sha256-eIxITMvb1q4L2lejbmuPPQ8XG5YYjTo+9RosPEJgZ3g="; + # Forgejo has multiple different version strings that need to be provided + # via ldflags. main.ForgejoVersion for example is a combination of a + # hardcoded gitea compatibility version string (in the Makefile) and + # git describe and is easiest to get by invoking the Makefile. + # So we do that, store it the src FOD to then extend the ldflags array + # in preConfigure. + # The `echo -e >> Makefile` is temporary and already part of the next + # major release. Furthermore, the ldflags will change next major release + # and need to be updated accordingly. + leaveDotGit = true; + postFetch = '' + cd "$out" + echo -e 'show-version-full:\n\t@echo ''${FORGEJO_VERSION}' >> Makefile + make show-version-full > FULL_VERSION + find "$out" -name .git -print0 | xargs -0 rm -rf + ''; }; vendorHash = "sha256-+1apPnqbIfp2Nu1ieI2DdHo4gndZObmcq/Td+ZtkILM="; @@ -76,6 +92,10 @@ buildGoModule rec { "-X 'main.Tags=${lib.concatStringsSep " " tags}'" ]; + preConfigure = '' + export ldflags+=" -X code.gitea.io/gitea/routers/api/forgejo/v1.ForgejoVersion=$(cat FULL_VERSION) -X main.ForgejoVersion=$(cat FULL_VERSION)" + ''; + preBuild = '' go run build/merge-forgejo-locales.go '';