1{
2 lib,
3 stdenv,
4 fetchFromGitea,
5 makeWrapper,
6 bash,
7
8 git,
9 nix-prefetch-git,
10 rWrapper,
11 rPackages,
12
13 unstableGitUpdater,
14}:
15
16stdenv.mkDerivation (finalAttrs: {
17 pname = "git-unroll";
18 version = "0-unstable-2024-11-04";
19
20 src = fetchFromGitea {
21 domain = "codeberg.org";
22 owner = "gm6k";
23 repo = "git-unroll";
24 rev = "9243bb8a6a9f6875e21a5c64320b66f7fdaf9b3f";
25 hash = "sha256-1MjbB1EVgmU0HlUibrKOkjmxQ8wseocSJENiAqyHcjU=";
26 };
27
28 postPatch = ''
29 substituteInPlace unroll \
30 --replace-fail "#! /usr/bin/env nix-shell" "#!/usr/bin/env bash" \
31 --replace-fail \
32 "#! nix-shell -i bash -p git nix rWrapper rPackages.jsonlite rPackages.processx rPackages.dplyr rPackages.plyr rPackages.stringr -I nixpkgs=." \
33 "" \
34 --replace-fail '"$PWD/pkgs/build-support/fetchgit/nix-prefetch-git",' '"nix-prefetch-git",'
35 '';
36
37 nativeBuildInputs = [
38 makeWrapper
39 ];
40
41 buildInputs = [
42 bash
43 ];
44
45 installPhase = ''
46 runHook preInstall
47
48 install -Dm755 unroll $out/bin/unroll
49 wrapProgram $out/bin/unroll \
50 --prefix PATH : ${
51 lib.makeBinPath [
52 git
53 nix-prefetch-git
54 (rWrapper.override {
55 packages = with rPackages; [
56 jsonlite
57 processx
58 dplyr
59 plyr
60 stringr
61 ];
62 })
63 ]
64 }
65
66 runHook postInstall
67 '';
68
69 passthru = {
70 updateScript = unstableGitUpdater { };
71 };
72
73 meta = {
74 description = "Convert Git repositories with submodules to a Nix expression based on non-recursive Git sources";
75 homepage = "https://codeberg.org/gm6k/git-unroll";
76 license = lib.licenses.gpl3Only;
77 maintainers = with lib.maintainers; [ GaetanLepage ];
78 mainProgram = "unroll";
79 platforms = lib.platforms.all;
80 };
81})