nixpkgs/pkgs/by-name/fo/forgejo/package.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

132 lines
2.9 KiB
Nix
Raw Normal View History

{ bash
, brotli
2023-01-25 11:44:31 +00:00
, buildGoModule
, forgejo
2023-01-01 13:14:13 +00:00
, git
2023-01-25 11:44:31 +00:00
, gzip
, lib
, makeWrapper
2023-07-30 17:34:42 +00:00
, nix-update-script
, nixosTests
, openssh
2023-01-01 13:14:13 +00:00
, pam
, pamSupport ? true
, sqliteSupport ? true
, xorg
, runCommand
, stdenv
, fetchFromGitea
, buildNpmPackage
2023-01-01 13:14:13 +00:00
}:
let
2023-07-05 21:58:48 +00:00
frontend = buildNpmPackage {
pname = "forgejo-frontend";
inherit (forgejo) src version;
2024-04-23 22:35:34 +00:00
npmDepsHash = "sha256-BffoEbIzTU61bw3ECEm5eDHcav4S27MB5jQKsMprkcw=";
patches = [
./package-json-npm-build-frontend.patch
];
# override npmInstallHook
installPhase = ''
mkdir $out
cp -R ./public $out/
'';
};
in
2023-01-25 11:44:31 +00:00
buildGoModule rec {
pname = "forgejo";
2024-04-23 22:35:34 +00:00
version = "7.0.0";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "forgejo";
repo = "forgejo";
rev = "v${version}";
2024-04-23 22:35:34 +00:00
hash = "sha256-oIx1aPrHgOWx13ocA3t7N5UdTgr+64tgC0XcEnhA/eE=";
};
2024-04-23 22:35:34 +00:00
vendorHash = "sha256-UcjaMi/4XYLdaJhi2j3UWqHqkpTbZBo6EwNXxdRIKLw=";
2023-01-25 11:44:31 +00:00
subPackages = [ "." ];
2023-01-01 13:14:13 +00:00
outputs = [ "out" "data" ];
nativeBuildInputs = [ makeWrapper ];
buildInputs = lib.optional pamSupport pam;
patches = [
./static-root-path.patch
2023-01-01 13:14:13 +00:00
];
postPatch = ''
substituteInPlace modules/setting/server.go --subst-var data
'';
2023-01-01 13:14:13 +00:00
tags = lib.optional pamSupport "pam"
++ lib.optionals sqliteSupport [ "sqlite" "sqlite_unlock_notify" ];
2023-01-25 11:44:31 +00:00
2023-01-01 13:14:13 +00:00
ldflags = [
2023-01-25 11:44:31 +00:00
"-s"
"-w"
2023-01-01 13:14:13 +00:00
"-X main.Version=${version}"
"-X 'main.Tags=${lib.concatStringsSep " " tags}'"
];
preConfigure = ''
2024-04-23 22:35:34 +00:00
export ldflags+=" -X main.ForgejoVersion=$(GITEA_VERSION=${version} make show-version-api)"
'';
preBuild = ''
go run build/merge-forgejo-locales.go
'';
2023-01-01 13:14:13 +00:00
postInstall = ''
mkdir $data
cp -R ./{templates,options} ${frontend}/public $data
2023-01-01 13:14:13 +00:00
mkdir -p $out
2023-01-25 11:44:31 +00:00
cp -R ./options/locale $out/locale
2023-01-01 13:14:13 +00:00
wrapProgram $out/bin/gitea \
--prefix PATH : ${lib.makeBinPath [ bash git gzip openssh ]}
'';
# $data is not available in goModules.drv and preBuild isn't needed
overrideModAttrs = (_: {
postPatch = null;
preBuild = null;
});
passthru = {
2023-07-30 17:34:42 +00:00
# allow nix-update to handle npmDepsHash
inherit (frontend) npmDeps;
data-compressed = runCommand "forgejo-data-compressed" {
nativeBuildInputs = [ brotli xorg.lndir ];
} ''
mkdir $out
lndir ${forgejo.data}/ $out/
# Create static gzip and brotli files
find -L $out -type f -regextype posix-extended -iregex '.*\.(css|html|js|svg|ttf|txt)' \
-exec gzip --best --keep --force {} ';' \
-exec brotli --best --keep --no-copy-stat {} ';'
'';
tests = nixosTests.forgejo;
2023-07-30 17:34:42 +00:00
updateScript = nix-update-script { };
};
2023-07-05 21:58:48 +00:00
meta = {
description = "A self-hosted lightweight software forge";
homepage = "https://forgejo.org";
2023-07-05 21:58:48 +00:00
changelog = "https://codeberg.org/forgejo/forgejo/releases/tag/${src.rev}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ emilylange urandom bendlas adamcstephens ];
2023-01-01 13:14:13 +00:00
broken = stdenv.isDarwin;
mainProgram = "gitea";
};
2023-01-01 13:14:13 +00:00
}