diff --git a/default.nix b/default.nix index d72b66f..45d421f 100644 --- a/default.nix +++ b/default.nix @@ -15,4 +15,5 @@ overlays = import ./overlays; # nixpkgs overlays firefox-addons = pkgs.recurseIntoAttrs (pkgs.callPackage ./pkgs/firefox-addons { }); + gitea-nyx = pkgs.recurseIntoAttrs (pkgs.callPackage ./pkgs/gitea-nyx { }); } diff --git a/pkgs/gitea-nyx/build.nix b/pkgs/gitea-nyx/build.nix new file mode 100644 index 0000000..ce3c481 --- /dev/null +++ b/pkgs/gitea-nyx/build.nix @@ -0,0 +1,48 @@ +{ pkgs, giteaVersion, ... }: +let + src = pkgs.fetchgit { + url = "https://gitea.pid1.sh/sanctureplicum/gitea.git"; + rev = "refs/tags/${giteaVersion}"; + hash = "sha256-KQEBq1BFQRLJW9fJq4W1sOsAqOCfNHKY/+cT8rkXxv4="; + }; + nodeNix = (import ./node.nix { inherit pkgs giteaVersion src; }); + nodeEnv = (pkgs.callPackage (nodeNix + "/default.nix") { }); +in +pkgs.buildGoModule rec { + pname = "gitea-build"; + version = "${giteaVersion}-nyx"; + vendorSha256 = "sha256-gfHyssQrY5r3rQAzonM3Rv/BDIYGEY/PiOZEyoGGeiw="; + + inherit src; + + nativeBuildInputs = [ + pkgs.gnumake + pkgs.go + pkgs.nodejs + pkgs.nodePackages.npm + pkgs.git + ]; + + buildPhase = '' + ln -s ${nodeEnv.nodeDependencies}/lib/node_modules ./node_modules + export PATH="${nodeEnv.nodeDependencies}/bin:$PATH" + TAGS="bindata" VERSION="${version}" make frontend vendor generate release-sources + ''; + + installPhase = '' + mkdir -p $out + cp dist/release/gitea-src-${version}.tar.gz $out + ''; + + outputs = [ "out" ]; + + enableParallelBuilding = false; + + meta = with pkgs.lib; { + description = "Build helper for Gitea"; + homepage = "https://gitea.com/"; + license = licenses.mit; + maintainers = with maintainers; [ nyxkrage ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/gitea-nyx/default.nix b/pkgs/gitea-nyx/default.nix new file mode 100644 index 0000000..b6ccde6 --- /dev/null +++ b/pkgs/gitea-nyx/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: pkgs.gitea.overrideAttrs (old: rec { + pname = "gitea"; + version = "v1.19.3"; + + src = "${import ./build.nix { inherit pkgs; giteaVersion = version; }}/gitea-src-${version}-nyx.tar.gz"; +}) \ No newline at end of file diff --git a/pkgs/gitea-nyx/node.nix b/pkgs/gitea-nyx/node.nix new file mode 100644 index 0000000..2326a61 --- /dev/null +++ b/pkgs/gitea-nyx/node.nix @@ -0,0 +1,23 @@ +{ pkgs, giteaVersion, src, ... }: +let + escapeSlash = str: builtins.replaceStrings [ "/" ] [ "\\/"] str; +in +pkgs.stdenv.mkDerivation rec { + pname = "gitea-node-env"; + version = "${giteaVersion}-nyx"; + + inherit src; + + nativeBuildInputs = [ pkgs.node2nix ]; + + buildPhase = '' + mkdir nix + node2nix -i ${src}/package.json -l ${src}/package-lock.json + sed -r -i 's/src = .+?nix\/store.+?;/src = fetchgit { url = "${escapeSlash src.url}"; rev = "${escapeSlash src.rev}"; hash = "${escapeSlash src.outputHash}"; };/' node-packages.nix + ''; + + installPhase = '' + mkdir $out + cp *.nix $out + ''; +} \ No newline at end of file