uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,48 @@
{ lib, stdenv, fetchurl, jre, makeWrapper }:
stdenv.mkDerivation rec {
pname = "bfg-repo-cleaner";
version = "1.13.0";
jarName = "bfg-${version}.jar";
src = fetchurl {
url = "mirror://maven/com/madgag/bfg/${version}/${jarName}";
sha256 = "1kn84rsvms1v5l1j2xgrk7dc7mnsmxkc6sqd94mnim22vnwvl8mz";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ jre ];
dontUnpack = true;
installPhase = ''
mkdir -p $out/share/java
mkdir -p $out/bin
cp $src $out/share/java/$jarName
makeWrapper "${jre}/bin/java" $out/bin/bfg --add-flags "-cp $out/share/java/$jarName com.madgag.git.bfg.cli.Main"
'';
meta = with lib; {
homepage = "https://rtyley.github.io/bfg-repo-cleaner/";
# Descriptions taken with minor modification from the homepage of bfg-repo-cleaner
description = "Removes large or troublesome blobs in a git repository like git-filter-branch does, but faster";
longDescription = ''
The BFG is a simpler, faster alternative to git-filter-branch for
cleansing bad data out of your Git repository history, in particular removing
crazy big files and removing passwords, credentials, and other private data.
The git-filter-branch command is enormously powerful and can do things
that the BFG can't - but the BFG is much better for the tasks above, because
it's faster (10-720x), simpler (dedicated to just removing things), and
beautiful (can use Scala instead of bash to script customizations).
'';
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.gpl3;
maintainers = [ maintainers.changlinli ];
mainProgram = "bfg";
platforms = platforms.unix;
downloadPage = "https://mvnrepository.com/artifact/com.madgag/bfg/${version}";
};
}

View file

@ -0,0 +1,31 @@
{ lib
, buildGoModule
, fetchFromGitHub
, git
}:
buildGoModule rec {
pname = "bit";
version = "1.1.2";
src = fetchFromGitHub {
owner = "chriswalz";
repo = pname;
rev = "v${version}";
sha256 = "sha256-18R0JGbG5QBDghF4SyhXaKe9UY5UzF7Ap0Y061Z1SZ8=";
};
vendorSha256 = "sha256-3Y/B14xX5jaoL44rq9+Nn4niGViLPPXBa8WcJgTvYTA=";
propagatedBuildInputs = [ git ];
# Tests require a repository
doCheck = false;
meta = with lib; {
description = "Command-line tool for git";
homepage = "https://github.com/chriswalz/bit";
license = with licenses; [ asl20 ];
maintainers = with maintainers; [ fab ];
};
}

View file

@ -0,0 +1,2 @@
source 'https://rubygems.org'
gem 'atlassian-stash'

View file

@ -0,0 +1,27 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.5.0)
public_suffix (~> 2.0, >= 2.0.2)
atlassian-stash (0.7.0)
commander (~> 4.1.2)
git (>= 1.2.5)
json (>= 1.7.5)
launchy (~> 2.4.2)
commander (4.1.6)
highline (~> 1.6.11)
git (1.3.0)
highline (1.6.21)
json (2.0.2)
launchy (2.4.3)
addressable (~> 2.3)
public_suffix (2.0.5)
PLATFORMS
ruby
DEPENDENCIES
atlassian-stash
BUNDLED WITH
2.1.4

View file

@ -0,0 +1,22 @@
{ lib, bundlerEnv, ruby, bundlerUpdateScript }:
bundlerEnv rec {
name = "bitbucket-server-cli-${version}";
version = (import ./gemset.nix).atlassian-stash.version;
inherit ruby;
gemdir = ./.;
pname = "atlassian-stash";
passthru.updateScript = bundlerUpdateScript "bitbucket-server-cli";
meta = with lib; {
description = "A command line interface to interact with BitBucket Server (formerly Atlassian Stash)";
homepage = "https://bitbucket.org/atlassian/bitbucket-server-cli";
license = licenses.mit;
maintainers = with maintainers; [ jgertm nicknovitski ];
mainProgram = "stash";
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,66 @@
{
addressable = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1j5r0anj8m4qlf2psnldip4b8ha2bsscv11lpdgnfh4nnchzjnxw";
type = "gem";
};
version = "2.5.0";
};
atlassian-stash = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1rsf9h5w5wiglwv0fqwp45fq06fxbg68cqkc3bpqvps1i1qm0p6i";
type = "gem";
};
version = "0.7.0";
};
commander = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0x9i8hf083wjlgj09nl1p9j8sr5g7amq0fdmxjqs4cxdbg3wpmsb";
type = "gem";
};
version = "4.1.6";
};
git = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3";
type = "gem";
};
version = "1.3.0";
};
highline = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "06bml1fjsnrhd956wqq5k3w8cyd09rv1vixdpa3zzkl6xs72jdn1";
type = "gem";
};
version = "1.6.21";
};
json = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "1lhinj9vj7mw59jqid0bjn2hlfcnq02bnvsx9iv81nl2han603s0";
type = "gem";
};
version = "2.0.2";
};
launchy = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
type = "gem";
};
version = "2.4.3";
};
public_suffix = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "040jf98jpp6w140ghkhw2hvc1qx41zvywx5gj7r2ylr1148qnj7q";
type = "gem";
};
version = "2.0.5";
};
}

View file

@ -0,0 +1,46 @@
{ lib
, buildPythonApplication
, fetchFromGitHub
, pytestCheckHook
, pythonOlder
, testfixtures
}:
buildPythonApplication rec {
pname = "bump2version";
version = "1.0.1";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "c4urself";
repo = pname;
rev = "v${version}";
sha256 = "sha256-j6HKi3jTwSgGBrA8PCJJNg+yQqRMo1aqaLgPGf4KAKU=";
};
checkInputs = [
pytestCheckHook
testfixtures
];
disabledTests = [
# X's in pytest are git tests which won't run in sandbox
"usage_string_fork"
"test_usage_string"
"test_defaults_in_usage_with_config"
];
pythonImportsCheck = [ "bumpversion" ];
meta = with lib; {
description = "Version-bump your software with a single command";
longDescription = ''
A small command line tool to simplify releasing software by updating
all version strings in your source code by the correct increment.
'';
homepage = "https://github.com/c4urself/bump2version";
license = licenses.mit;
maintainers = with maintainers; [ jefflabonte ];
};
}

View file

@ -0,0 +1,79 @@
{ pname, version, src, gitSrc, buildInputs ? []
, homepage, description, maintainers
}:
{ lib, stdenv, openssl, zlib, asciidoc, libxml2, libxslt
, docbook_xsl, pkg-config
, coreutils, gnused, groff, docutils
, gzip, bzip2, lzip, xz, zstd
, python3Packages
}:
stdenv.mkDerivation {
inherit pname version src gitSrc;
nativeBuildInputs = [
pkg-config asciidoc
] ++ (with python3Packages; [ python wrapPython ]);
buildInputs = buildInputs ++ [
openssl zlib libxml2 libxslt docbook_xsl
];
pythonPath = with python3Packages; [ pygments markdown ];
postPatch = ''
sed -e 's|"gzip"|"${gzip}/bin/gzip"|' \
-e 's|"bzip2"|"${bzip2.bin}/bin/bzip2"|' \
-e 's|"lzip"|"${lzip}/bin/lzip"|' \
-e 's|"xz"|"${xz.bin}/bin/xz"|' \
-e 's|"zstd"|"${zstd}/bin/zstd"|' \
-i ui-snapshot.c
substituteInPlace filters/html-converters/man2html \
--replace 'groff' '${groff}/bin/groff'
substituteInPlace filters/html-converters/rst2html \
--replace 'rst2html.py' '${docutils}/bin/rst2html.py'
'';
# Give cgit a git source tree and pass configuration parameters (as make
# variables).
preBuild = ''
mkdir -p git
tar --strip-components=1 -xf "$gitSrc" -C git
'';
makeFlags = [
"prefix=$(out)"
"CGIT_SCRIPT_PATH=$(out)/cgit/"
"CC=${stdenv.cc.targetPrefix}cc"
"AR=${stdenv.cc.targetPrefix}ar"
];
# Install manpage.
postInstall = ''
# xmllint fails:
#make install-man
# bypassing xmllint works:
a2x --no-xmllint -f manpage cgitrc.5.txt
mkdir -p "$out/share/man/man5"
cp cgitrc.5 "$out/share/man/man5"
wrapPythonProgramsIn "$out/lib/cgit/filters" "$out $pythonPath"
for script in $out/lib/cgit/filters/*.sh $out/lib/cgit/filters/html-converters/txt2html; do
wrapProgram $script --prefix PATH : '${lib.makeBinPath [ coreutils gnused ]}'
done
'';
stripDebugList = [ "cgit" ];
enableParallelBuilding = true;
meta = {
inherit homepage description;
license = lib.licenses.gpl2;
platforms = lib.platforms.linux;
maintainers = maintainers ++ (with lib.maintainers; [ qyliss ]);
};
}

View file

@ -0,0 +1,25 @@
{ lib, fetchurl, callPackage, luajit }:
callPackage (import ./common.nix rec {
pname = "cgit";
version = "1.2.3";
src = fetchurl {
url = "https://git.zx2c4.com/cgit/snapshot/${pname}-${version}.tar.xz";
sha256 = "193d990ym10qlslk0p8mjwp2j6rhqa7fq0y1iff65lvbyv914pss";
};
# cgit is tightly coupled with git and needs a git source tree to build.
# IMPORTANT: Remember to check which git version cgit needs on every version
# bump (look for "GIT_VER" in the top-level Makefile).
gitSrc = fetchurl {
url = "mirror://kernel/software/scm/git/git-2.25.1.tar.xz";
sha256 = "09lzwa183nblr6l8ib35g2xrjf9wm9yhk3szfvyzkwivdv69c9r2";
};
buildInputs = [ luajit ];
homepage = "https://git.zx2c4.com/cgit/about/";
description = "Web frontend for git repositories";
maintainers = with lib.maintainers; [ bjornfor ];
}) {}

View file

@ -0,0 +1,23 @@
{ lib, fetchurl, callPackage }:
callPackage (import ./common.nix rec {
pname = "cgit-pink";
version = "1.4.1";
src = fetchurl {
url = "https://git.causal.agency/cgit-pink/snapshot/cgit-pink-${version}.tar.gz";
sha256 = "1ma6j3r4ba5fhd47pc6xn5bmxaqr8ci2pvky9v100n1hh5n6q97i";
};
# cgit-pink is tightly coupled with git and needs a git source tree to build.
# IMPORTANT: Remember to check which git version cgit-pink needs on every
# version bump (look for "GIT_VER" in the top-level Makefile).
gitSrc = fetchurl {
url = "mirror://kernel/software/scm/git/git-2.36.1.tar.xz";
sha256 = "0w43a35mhc2qf2gjkxjlnkf2lq8g0snf34iy5gqx2678yq7llpa0";
};
homepage = "https://git.causal.agency/cgit-pink/about/";
description = "cgit fork aiming for better maintenance";
maintainers = with lib.maintainers; [ sternenseemann ];
}) {}

View file

@ -0,0 +1,30 @@
{ lib, buildGoModule, fetchFromGitHub, git }:
buildGoModule rec {
pname = "conform";
version = "0.1.0-alpha.25";
src = fetchFromGitHub {
owner = "siderolabs";
repo = "conform";
rev = "v${version}";
sha256 = "sha256-WgWgigpqPoEBY4tLjbzK02WFwrCWPGQWJ5eakLv5IWw=";
};
vendorSha256 = "sha256-Oigt7tAK4jhBQtfG1wdLHqi11NWu6uJn5fmuqTmR76E=";
ldflags = [
"-s"
"-w"
"-X github.com/talos-systems/conform/internal/version.Tag=v${version}"
];
checkInputs = [ git ];
meta = with lib; {
description = "Policy enforcement for your pipelines";
homepage = "https://github.com/siderolabs/conform";
license = licenses.mpl20;
maintainers = with maintainers; [ jmgilman jk ];
};
}

View file

@ -0,0 +1,81 @@
{ lib, stdenv, fetchFromGitHub, ruby, gnugrep, diffutils, git, darcs }:
stdenv.mkDerivation {
pname = "darcs-to-git";
version = "2015-06-04";
src = fetchFromGitHub {
owner = "purcell";
repo = "darcs-to-git";
rev = "e5fee32495908fe0f7d700644c7b37347b7a0a5b";
sha256 = "sha256-UQI3av+0zj1SNwEonwuk5n2RjZN3+tSJFJuFCjrorFM=";
};
patchPhase = let
matchExecution = ''(\<(output_of|system|run)\([^"%]*("|%w\()|^[^"`]*`)'';
in ''
sed -r -i \
-e '1s|^#!.*|#!${ruby}/bin/ruby|' \
-e 's!${matchExecution}git\>!\1${git}/bin/git!' \
-e 's!${matchExecution}darcs\>!\1${darcs}/bin/darcs!' \
-e 's!${matchExecution}diff\>!\1${diffutils}/bin/diff!' \
-e 's!\<egrep\>!${gnugrep}/bin/egrep!g' \
-e 's!%w\(darcs init\)!%w(${darcs}/bin/darcs init)!' \
darcs-to-git
'';
installPhase = ''
install -vD darcs-to-git "$out/bin/darcs-to-git"
'';
doCheck = true;
checkPhase = ''
orig_dir="$(pwd)"
darcs_repos="$(pwd)/darcs_test_repos"
git_repos="$(pwd)/git_test_repos"
test_home="$(pwd)/test_home"
mkdir "$darcs_repos" "$git_repos" "$test_home"
cd "$darcs_repos"
${darcs}/bin/darcs init
echo "this is a test file" > new_file1
${darcs}/bin/darcs add new_file1
HOME="$test_home" ${darcs}/bin/darcs record -a -m c1 -A none
echo "testfile1" > new_file1
echo "testfile2" > new_file2
${darcs}/bin/darcs add new_file2
HOME="$test_home" ${darcs}/bin/darcs record -a -m c2 -A none
${darcs}/bin/darcs mv new_file2 only_one_file
rm -f new_file1
HOME="$test_home" ${darcs}/bin/darcs record -a -m c3 -A none
cd "$git_repos"
HOME="$test_home" PATH= "$orig_dir/darcs-to-git" "$darcs_repos"
assertFileContents() {
echo -n "File $1 contains '$2'..." >&2
if [ "x$(cat "$1")" = "x$2" ]; then
echo " passed." >&2
return 0
else
echo " failed: '$(cat "$1")' != '$2'" >&2
return 1
fi
}
echo "Checking if converted repository matches original repository:" >&2
assertFileContents only_one_file testfile2
${git}/bin/git reset --hard HEAD^
assertFileContents new_file1 testfile1
assertFileContents new_file2 testfile2
${git}/bin/git reset --hard HEAD^
assertFileContents new_file1 "this is a test file"
echo "All checks passed." >&2
cd "$orig_dir"
rm -rf "$darcs_repos" "$git_repos" "$test_home"
'';
meta = {
description = "Converts a Darcs repository into a Git repository";
homepage = "http://www.sanityinc.com/articles/converting-darcs-repositories-to-git";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
};
}

View file

@ -0,0 +1,41 @@
{ stdenv
, lib
, fetchFromGitHub
, rustPlatform
, installShellFiles
, DiskArbitration
, Foundation
, libiconv
, Security
}:
rustPlatform.buildRustPackage rec {
pname = "delta";
version = "0.13.0";
src = fetchFromGitHub {
owner = "dandavison";
repo = pname;
rev = version;
sha256 = "sha256-5h4epV3RORZiynW1fkFLImqPunC3PZ/YzLiSrzescww=";
};
cargoSha256 = "sha256-4dPTcrT8Gx3WfT0sauqnCSmcGE9LrgIqgHrY5l503ZA=";
nativeBuildInputs = [ installShellFiles ];
buildInputs = lib.optionals stdenv.isDarwin [ DiskArbitration Foundation libiconv Security ];
postInstall = ''
installShellCompletion --bash --name delta.bash etc/completion/completion.bash
installShellCompletion --zsh --name _delta etc/completion/completion.zsh
'';
meta = with lib; {
homepage = "https://github.com/dandavison/delta";
description = "A syntax-highlighting pager for git";
changelog = "https://github.com/dandavison/delta/releases/tag/${version}";
license = licenses.mit;
maintainers = with maintainers; [ marsam zowoq SuperSandro2000 ];
};
}

View file

@ -0,0 +1,57 @@
{lib, stdenv, git, perl, ncurses, coreutils, fetchFromGitHub, makeWrapper, ...}:
stdenv.mkDerivation rec {
pname = "diff-so-fancy";
version = "1.4.3";
src = fetchFromGitHub {
owner = "so-fancy";
repo = "diff-so-fancy";
rev = "v${version}";
sha256 = "sha256-/xdBvq2u1s5/yzjwr3MLxpaD1CNktcPijXJTKW3Bc4c=";
};
nativeBuildInputs = [
makeWrapper
];
buildInputs = [
perl # needed for patchShebangs
];
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/lib/diff-so-fancy
# diff-so-fancy executable searches for it's library relative to
# itself, so we are copying executable to lib, and only symlink it
# from bin/
cp diff-so-fancy $out/lib/diff-so-fancy
cp -r lib $out/lib/diff-so-fancy
ln -s $out/lib/diff-so-fancy/diff-so-fancy $out/bin
# ncurses is needed for `tput`
wrapProgram $out/lib/diff-so-fancy/diff-so-fancy \
--prefix PATH : "${git}/share/git/contrib/diff-highlight" \
--prefix PATH : "${git}/bin" \
--prefix PATH : "${coreutils}/bin" \
--prefix PATH : "${ncurses.out}/bin"
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/so-fancy/diff-so-fancy";
description = "Good-looking diffs filter for git";
license = licenses.mit;
platforms = platforms.all;
longDescription = ''
diff-so-fancy builds on the good-lookin' output of git contrib's
diff-highlight to upgrade your diffs' appearances.
'';
maintainers = with maintainers; [ fpletz globin ma27 ];
};
}

View file

@ -0,0 +1,67 @@
{lib, stdenv, fetchFromGitHub, git, mercurial, makeWrapper}:
stdenv.mkDerivation rec {
pname = "fast-export";
version = "210917";
src = fetchFromGitHub {
owner = "frej";
repo = pname;
rev = "v${version}";
sha256 = "0xg8r9rbqv7mriraqxdks2mgj7j4c9gap3kc05y1kxi3nniywyd3";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [mercurial.python mercurial];
installPhase = ''
binPath=$out/bin
libexecPath=$out/libexec/${pname}
sitepackagesPath=$out/${mercurial.python.sitePackages}
mkdir -p $binPath $libexecPath $sitepackagesPath
# Patch shell scripts so they can execute the Python scripts
sed -i "s|ROOT=.*|ROOT=$libexecPath|" *.sh
mv hg-fast-export.sh hg-reset.sh $binPath
mv hg-fast-export.py hg-reset.py $libexecPath
mv hg2git.py pluginloader plugins $sitepackagesPath
for script in $out/bin/*.sh; do
wrapProgram $script \
--prefix PATH : "${git}/bin":"${mercurial.python}/bin":$libexec \
--prefix PYTHONPATH : "${mercurial}/${mercurial.python.sitePackages}":$sitepackagesPath
done
'';
doInstallCheck = true;
# deliberately not adding git or hg into installCheckInputs - package should
# be able to work without them in runtime env
installCheckPhase = ''
mkdir repo-hg
pushd repo-hg
${mercurial}/bin/hg init
echo foo > bar
${mercurial}/bin/hg add bar
${mercurial}/bin/hg commit --message "baz"
popd
mkdir repo-git
pushd repo-git
${git}/bin/git init
${git}/bin/git config core.ignoreCase false # for darwin
$out/bin/hg-fast-export.sh -r ../repo-hg/ --hg-hash
for s in "foo" "bar" "baz" ; do
(${git}/bin/git show | grep $s > /dev/null) && echo $s found
done
popd
'';
meta = with lib; {
description = "Import mercurial into git";
homepage = "https://repo.or.cz/w/fast-export.git";
license = licenses.gpl2;
maintainers = [ maintainers.koral ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,45 @@
{ fetchFromGitHub
, gitMinimal
, gfold
, lib
, libiconv
, makeWrapper
, rustPlatform
, Security
, stdenv
, testVersion
}:
let
pname = "gfold";
version = "4.0.0";
in
rustPlatform.buildRustPackage {
inherit pname version;
src = fetchFromGitHub {
owner = "nickgerace";
repo = pname;
rev = version;
sha256 = "1yh5173qhi9bd41zss9k21nm0xnr2sa918kvlyr5xvzhq47rrwz5";
};
cargoSha256 = "sha256-o2fMIlj+veTmhfqi7BVpxr3520SOwWLmVS2UU83EVjo=";
buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
passthru.tests.version = testVersion {
package = gfold;
command = "gfold --version";
inherit version;
};
meta = with lib; {
description =
"CLI tool to help keep track of your Git repositories, written in Rust";
homepage = "https://github.com/nickgerace/gfold";
license = licenses.asl20;
maintainers = [ maintainers.shanesveller ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,64 @@
{ lib
, buildGoModule
, fetchFromGitHub
, installShellFiles
, makeWrapper
, bash
, coreutils
, git
, pandoc
}:
let
version = "1.3.0";
commit = "5bfe79b3632f15c442e8dc51ec206ab76354487f";
in buildGoModule {
pname = "gg-scm";
inherit version;
src = fetchFromGitHub {
owner = "gg-scm";
repo = "gg";
rev = "v${version}";
sha256 = "e628aeddb94d2470de860df09ef65499f8c5493fb336bf3df8502842ee02487f";
};
postPatch = ''
substituteInPlace cmd/gg/editor_unix.go \
--replace /bin/sh ${bash}/bin/sh
'';
subPackages = [ "cmd/gg" ];
ldflags = [
"-s" "-w"
"-X" "main.versionInfo=${version}"
"-X" "main.buildCommit=${commit}"
];
vendorSha256 = "214dc073dad7b323ea449acf24c5b578d573432eeaa1506cf5761a2d7f5ce405";
nativeBuildInputs = [ pandoc installShellFiles makeWrapper ];
checkInputs = [ bash coreutils git ];
buildInputs = [ bash git ];
postInstall = ''
wrapProgram $out/bin/gg --suffix PATH : ${git}/bin
pandoc --standalone --to man misc/gg.1.md -o misc/gg.1
installManPage misc/gg.1
installShellCompletion --cmd gg \
--bash misc/gg.bash \
--zsh misc/_gg.zsh
'';
meta = with lib; {
mainProgram = "gg";
description = "Git with less typing";
longDescription = ''
gg is an alternative command-line interface for Git heavily inspired by Mercurial.
It's designed for less typing in common workflows,
making Git easier to use for both novices and advanced users alike.
'';
homepage = "https://gg-scm.io/";
changelog = "https://github.com/gg-scm/gg/blob/v${version}/CHANGELOG.md";
license = licenses.asl20;
maintainers = with maintainers; [ zombiezen ];
};
}

View file

@ -0,0 +1,52 @@
{ lib, fetchFromGitHub, buildGoModule, installShellFiles }:
buildGoModule rec {
pname = "gh";
version = "2.11.3";
src = fetchFromGitHub {
owner = "cli";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-b00bP0usTpYr5EShyckmZ+a1Mw48payU/KllSck47fI=";
};
vendorSha256 = "sha256-soNQXtpQ217scP606UA05+r9WIrUAMOCDBsfLKrVD+Q=";
nativeBuildInputs = [ installShellFiles ];
# upstream unsets these to handle cross but it breaks our build
postPatch = ''
substituteInPlace Makefile \
--replace "GOOS= GOARCH= GOARM= GOFLAGS= CGO_ENABLED=" ""
'';
buildPhase = ''
runHook preBuild
make GO_LDFLAGS="-s -w" GH_VERSION=${version} bin/gh manpages
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm755 bin/gh -t $out/bin
installManPage share/man/*/*.[1-9]
for shell in bash fish zsh; do
$out/bin/gh completion -s $shell > gh.$shell
installShellCompletion gh.$shell
done
runHook postInstall
'';
# fails with `unable to find git executable in PATH`
doCheck = false;
meta = with lib; {
description = "GitHub CLI tool";
homepage = "https://cli.github.com/";
changelog = "https://github.com/cli/cli/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ zowoq ];
};
}

View file

@ -0,0 +1,36 @@
{ lib, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "ghorg";
version = "1.7.13";
src = fetchFromGitHub {
owner = "gabrie30";
repo = "ghorg";
rev = "v${version}";
sha256 = "sha256-EQCu+2qMKu+e6G5iXAQn5cz0MZqHrF2wnKNO8Fkpp/Y=";
};
doCheck = false;
vendorSha256 = null;
subPackages = [ "." ];
ldflags = [ "-s" "-w" "-X main.version=${version}" ];
meta = with lib; {
description = "Quickly clone an entire org/users repositories into one directory";
longDescription = ''
ghorg allows you to quickly clone all of an orgs, or users repos into a
single directory. This can be useful in many situations including
- Searching an orgs/users codebase with ack, silver searcher, grep etc..
- Bash scripting
- Creating backups
- Onboarding
- Performing Audits
'';
homepage = "https://github.com/gabrie30/ghorg";
license = licenses.asl20;
maintainers = with maintainers; [ vidbina ];
};
}

View file

@ -0,0 +1,33 @@
{ lib, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "ghq";
version = "1.3.0";
src = fetchFromGitHub {
owner = "x-motemen";
repo = "ghq";
rev = "v${version}";
sha256 = "sha256-tGublfC6EeY3T/45lxmsm5zsmlgq/guS64OutAWy6AY=";
};
vendorSha256 = "sha256-ZUnnvZERWXnOs4hybw8JDlGdM7QFaMfs6o3SYy0UwTM=";
doCheck = false;
ldflags = [
"-X=main.Version=${version}"
];
postInstall = ''
install -m 444 -D ${src}/misc/zsh/_ghq $out/share/zsh/site-functions/_ghq
install -m 444 -D ${src}/misc/bash/_ghq $out/share/bash-completion/completions/_ghq
'';
meta = {
description = "Remote repository management made easy";
homepage = "https://github.com/x-motemen/ghq";
maintainers = with lib.maintainers; [ sigma ];
license = lib.licenses.mit;
};
}

View file

@ -0,0 +1,30 @@
{ lib, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "ghr";
version = "0.14.0";
src = fetchFromGitHub {
owner = "tcnksm";
repo = "ghr";
rev = "v${version}";
sha256 = "sha256-pF1TPvQLPa5BbXZ9rRCq7xWofXCBRa9CDgNxX/kaTMo=";
};
vendorSha256 = "sha256-+e9Q4Pw9pJyOXVz85KhOSuybj1PBcJi51fGR3a2Gixk=";
# Tests require a Github API token, and networking
doCheck = false;
doInstallCheck = true;
installCheckPhase = ''
$out/bin/ghr --version
'';
meta = with lib; {
homepage = "https://github.com/tcnksm/ghr";
description = "Upload multiple artifacts to GitHub Release in parallel";
license = licenses.mit;
maintainers = [ maintainers.ivar ];
};
}

View file

@ -0,0 +1,34 @@
{ lib, stdenv, fetchFromGitHub, rustPlatform, installShellFiles, Security }:
rustPlatform.buildRustPackage rec {
pname = "git-absorb";
version = "0.6.7";
src = fetchFromGitHub {
owner = "tummychow";
repo = pname;
rev = "refs/tags/${version}";
sha256 = "sha256-qhUw1wjXn1tyiH175+BadcoKoZ0wHxpMTKDIKOcJjQ0=";
};
nativeBuildInputs = [ installShellFiles ];
buildInputs = lib.optionals stdenv.isDarwin [ Security ];
cargoSha256 = "sha256-Wh2kA12CggbgdofWJwPAy+587qfMUPSy9nQmO11+keY=";
postInstall = ''
installManPage Documentation/git-absorb.1
installShellCompletion --cmd git-absorb \
--bash <($out/bin/git-absorb --gen-completions bash) \
--fish <($out/bin/git-absorb --gen-completions fish) \
--zsh <($out/bin/git-absorb --gen-completions zsh)
'';
meta = with lib; {
homepage = "https://github.com/tummychow/git-absorb";
description = "git commit --fixup, but automatic";
license = [ licenses.bsd3 ];
maintainers = [ maintainers.marsam ];
};
}

View file

@ -0,0 +1,33 @@
{ lib, buildPythonApplication, fetchFromGitHub, pyqt5, qt5, git-annex-adapter }:
buildPythonApplication rec {
pname = "git-annex-metadata-gui";
version = "0.2.0";
src = fetchFromGitHub {
owner = "alpernebbi";
repo = "git-annex-metadata-gui";
rev = "v${version}";
sha256 = "03kch67k0q9lcs817906g864wwabkn208aiqvbiyqp1qbg99skam";
};
prePatch = ''
substituteInPlace setup.py --replace "'PyQt5', " ""
'';
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
preFixup = ''
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
'';
propagatedBuildInputs = [ pyqt5 git-annex-adapter ];
meta = with lib; {
homepage = "https://github.com/alpernebbi/git-annex-metadata-gui";
description = "Graphical interface for git-annex metadata commands";
maintainers = with maintainers; [ dotlambda ];
license = licenses.gpl3Plus;
platforms = with platforms; linux;
};
}

View file

@ -0,0 +1,25 @@
{ lib
, buildPythonApplication
, fetchPypi
, dropbox
, annexremote
, humanfriendly
}:
buildPythonApplication rec {
pname = "git-annex-remote-dbx";
version = "1.0.3";
src = fetchPypi {
inherit pname version;
sha256 = "5b6f8025ed1e9877f06882ddbd81f701a8e094647ab97595e2afc09016835a7c";
};
propagatedBuildInputs = [ dropbox annexremote humanfriendly ];
meta = with lib; {
description = "A git-annex special remote for Dropbox";
homepage = "https://pypi.org/project/git-annex-remote-dbx/";
license = licenses.mit;
};
}

View file

@ -0,0 +1,34 @@
{ lib
, buildPythonApplication
, fetchPypi
, annexremote
, drivelib
, GitPython
, tenacity
, humanfriendly
}:
buildPythonApplication rec {
pname = "git-annex-remote-googledrive";
version = "1.3.2";
src = fetchPypi {
inherit pname version;
sha256 = "0rwjcdvfgzdlfgrn1rrqwwwiqqzyh114qddrbfwd46ld5spry6r1";
};
propagatedBuildInputs = [ annexremote drivelib GitPython tenacity humanfriendly ];
# while git-annex does come with a testremote command that *could* be used,
# testing this special remote obviously depends on authenticating with google
doCheck = false;
pythonImportsCheck = [ "git_annex_remote_googledrive" ];
meta = with lib; {
description = "A git-annex special remote for Google Drive";
homepage = "https://pypi.org/project/git-annex-remote-googledrive/";
license = licenses.gpl3Only;
maintainers = with maintainers; [ gravndal ];
};
}

View file

@ -0,0 +1,30 @@
{ lib, stdenv, fetchFromGitHub, rclone, makeWrapper }:
stdenv.mkDerivation rec {
pname = "git-annex-remote-rclone";
version = "0.6";
rev = "v${version}";
src = fetchFromGitHub {
inherit rev;
owner = "DanielDent";
repo = "git-annex-remote-rclone";
sha256 = "0j0hlxji8d974fq7zd4xc02n0jpi31ylhxc7z4zp8iiwad5mkpxp";
};
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
mkdir -p $out/bin
cp git-annex-remote-rclone $out/bin
wrapProgram "$out/bin/git-annex-remote-rclone" \
--prefix PATH ":" "${lib.makeBinPath [ rclone ]}"
'';
meta = with lib; {
homepage = "https://github.com/DanielDent/git-annex-remote-rclone";
description = "Use rclone supported cloud storage providers with git-annex";
license = licenses.gpl3;
maintainers = [ maintainers.montag451 ];
};
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, fetchgit, autoconf, automake, libtool, gmp }:
stdenv.mkDerivation rec {
pname = "git-annex-utils";
version = "0.04-3-g531bb33";
src = fetchgit {
url = "http://git.mysteryvortex.com/repositories/git-annex-utils.git";
rev = "531bb33";
sha256 = "1sv7s2ykc840cjwbfn7ayy743643x9i1lvk4cd55w9l052xvzj65";
};
nativeBuildInputs = [ autoconf automake ];
buildInputs = [ libtool gmp ];
preConfigure = "./autogen.sh";
meta = {
description = "gadu, a du like utility for annexed files";
longDescription = ''
This is a set of utilities that are handy to use with git-annex repositories.
Currently there is only one utility gadu, a du like utility for annexed files.
'';
homepage = "http://git-annex.mysteryvortex.com/git-annex-utils.html";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ woffs ];
mainProgram = "gadu";
platforms = lib.platforms.all;
};
}

View file

@ -0,0 +1,23 @@
{ lib, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
pname = "git-appraise-unstable";
version = "2018-02-26";
rev = "2414523905939525559e4b2498c5597f86193b61";
goPackagePath = "github.com/google/git-appraise";
src = fetchFromGitHub {
inherit rev;
owner = "google";
repo = "git-appraise";
sha256 = "04xkp1jpas1dfms6i9j09bgkydih0q10nhwn75w9ds8hi2qaa3sa";
};
meta = {
description = "Distributed code review system for Git repos";
homepage = "https://github.com/google/git-appraise";
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.vdemeester ];
};
}

View file

@ -0,0 +1,26 @@
{ python3Packages, lib, git, graphviz }:
python3Packages.buildPythonApplication rec {
pname = "git-big-picture";
version = "1.1.1";
format = "wheel";
src = python3Packages.fetchPypi {
inherit format version;
pname = "git_big_picture"; # underscores needed for working download URL
python = "py3"; # i.e. no Python 2.7
sha256 = "a20a480057ced1585c4c38497d27a5012f12dd29697313f0bb8fa6ddbb5c17d8";
};
postFixup = ''
wrapProgram $out/bin/git-big-picture \
--prefix PATH ":" ${ lib.makeBinPath [ git graphviz ] }
'';
meta = {
description = "Tool for visualization of Git repositories";
homepage = "https://github.com/git-big-picture/git-big-picture";
license = lib.licenses.gpl3Plus;
maintainers = [ lib.maintainers.nthorne ];
};
}

View file

@ -0,0 +1,57 @@
{ lib
, fetchFromGitHub
, fetchpatch
, git
, libiconv
, ncurses
, openssl
, pkg-config
, rustPlatform
, sqlite
, stdenv
, Security
, SystemConfiguration
}:
rustPlatform.buildRustPackage rec {
pname = "git-branchless";
version = "0.3.12";
src = fetchFromGitHub {
owner = "arxanas";
repo = "git-branchless";
rev = "v${version}";
sha256 = "sha256-1bUHltONLfJumkxPnzGJFMMyS02LVqjpDL+KgiewyoQ=";
};
cargoSha256 = "sha256-3+ULHqtKAhf4AdoLPK/3IqnfOcskoh6ctlQnY1oTHJ8=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [
ncurses
openssl
sqlite
] ++ lib.optionals stdenv.isDarwin [
Security
SystemConfiguration
libiconv
];
preCheck = ''
export TEST_GIT=${git}/bin/git
export TEST_GIT_EXEC_PATH=$(${git}/bin/git --exec-path)
'';
# FIXME: these tests deadlock when run in the Nix sandbox
checkFlags = [
"--skip=test_checkout_pty"
"--skip=test_next_ambiguous_interactive"
];
meta = with lib; {
description = "A suite of tools to help you visualize, navigate, manipulate, and repair your commit history";
homepage = "https://github.com/arxanas/git-branchless";
license = licenses.gpl2Only;
maintainers = with maintainers; [ msfjarvis nh2 hmenke ];
};
}

View file

@ -0,0 +1,37 @@
{ lib, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "git-bug";
version = "0.7.2"; # the `rev` below pins the version of the source to get
rev = "cc4a93c8ce931b1390c61035b888ad17110b7bd6";
src = fetchFromGitHub {
inherit rev;
owner = "MichaelMure";
repo = "git-bug";
sha256 = "0r6wh0y1fj3d3fbbrzq5n9k6z94xvwqww3xfbslkgyrin5bmziiq";
};
vendorSha256 = "15hhsrwwjc4krfc2d0r15lys3vr9rb9xk62pan4jr9ycbv0dny90";
doCheck = false;
ldflags = [
"-X github.com/MichaelMure/git-bug/commands.GitCommit=${rev}"
"-X github.com/MichaelMure/git-bug/commands.GitLastTag=${version}"
"-X github.com/MichaelMure/git-bug/commands.GitExactTag=${version}"
];
postInstall = ''
install -D -m 0644 misc/bash_completion/git-bug "$out/share/bash-completion/completions/git-bug"
install -D -m 0644 misc/zsh_completion/git-bug "$out/share/zsh/site-functions/git-bug"
install -D -m 0644 -t "$out/share/man/man1" doc/man/*
'';
meta = with lib; {
description = "Distributed bug tracker embedded in Git";
homepage = "https://github.com/MichaelMure/git-bug";
license = licenses.gpl3Only;
maintainers = with maintainers; [ royneary ];
};
}

View file

@ -0,0 +1,26 @@
{ lib, fetchFromGitHub, buildGoModule }:
buildGoModule rec {
pname = "git-chglog";
version = "0.15.1";
src = fetchFromGitHub {
owner = "git-chglog";
repo = "git-chglog";
rev = "v${version}";
sha256 = "sha256-UlhJ004ceXpdB/9296cL2sbBYsjV8D+3YS1vmFgnko8=";
};
vendorSha256 = "sha256-FLFPcmkrhZ+/UX1xpexsDv3cgC/Ocj4qTFJOX+rmdyQ=";
ldflags = [ "-s" "-w" "-X=main.Version=v${version}" ];
subPackages = [ "cmd/git-chglog" ];
meta = with lib; {
description = "CHANGELOG generator implemented in Go (Golang)";
homepage = "https://github.com/git-chglog/git-chglog";
license = licenses.mit;
maintainers = with maintainers; [ ldenefle ];
};
}

View file

@ -0,0 +1,54 @@
{ stdenv, lib, fetchFromGitHub, autoconf, makeWrapper
, curl, libiconv, mercurial, zlib
}:
let
python3 = mercurial.python;
in
stdenv.mkDerivation rec {
pname = "git-cinnabar";
version = "0.5.7";
src = fetchFromGitHub {
owner = "glandium";
repo = "git-cinnabar";
rev = version;
sha256 = "04dsjlsw98avrckldx7rc70b2zsbajzkyqqph4c7d9xd5djh3yaj";
fetchSubmodules = true;
};
nativeBuildInputs = [ autoconf makeWrapper ];
buildInputs = [ curl zlib ] ++ lib.optional stdenv.isDarwin libiconv;
# Ignore submodule status failing due to no git in environment.
makeFlags = [ "SUBMODULE_STATUS=yes" ];
enableParallelBuilding = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/libexec
install git-cinnabar-helper $out/bin
install git-cinnabar git-remote-hg $out/libexec
cp -r cinnabar mercurial $out/libexec
for pythonBin in git-cinnabar git-remote-hg; do
makeWrapper $out/libexec/$pythonBin $out/bin/$pythonBin \
--prefix PATH : ${lib.getBin python3}/bin \
--prefix GIT_CINNABAR_EXPERIMENTS , python3 \
--set PYTHONPATH ${mercurial}/${python3.sitePackages}
done
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/glandium/git-cinnabar";
description = "git remote helper to interact with mercurial repositories";
license = licenses.gpl2Only;
maintainers = with maintainers; [ qyliss ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, fetchFromGitHub, rustPlatform, Security }:
rustPlatform.buildRustPackage rec {
pname = "git-cliff";
version = "0.7.0";
src = fetchFromGitHub {
owner = "orhun";
repo = "git-cliff";
rev = "v${version}";
sha256 = "sha256-wVHL2+didmiN7UlEeIuSr+8LhkFKCOD3of4rKVg1i1o=";
};
cargoSha256 = "sha256-5jhloUnaGXXDu2LCO86SMJo8ETIxLAivv3hx9gEqtJ4=";
# attempts to run the program on .git in src which is not deterministic
doCheck = false;
buildInputs = lib.optionals stdenv.isDarwin [ Security ];
meta = with lib; {
description = "A highly customizable Changelog Generator that follows Conventional Commit specifications";
homepage = "https://github.com/orhun/git-cliff";
license = licenses.gpl3Only;
maintainers = with maintainers; [ siraben ];
};
}

View file

@ -0,0 +1,21 @@
{ lib, rustPlatform, fetchFromGitHub }:
rustPlatform.buildRustPackage rec {
pname = "git-codeowners";
version = "0.1.2";
src = fetchFromGitHub {
owner = "softprops";
repo = "git-codeowners";
rev = "v${version}";
sha256 = "0bzq4ridzb4l1zqrj1r0vlzkjpgfaqwky5jf49cwjhz4ybwrfpkq";
};
cargoSha256 = "00wi64v2zn8rp8fjwbdwyvl3pva5sn9xclaawp2m222dqnlszb2d";
meta = with lib; {
homepage = "https://github.com/softprops/git-codeowners";
description = "a git extension to work with CODEOWNERS files";
license = licenses.mit;
maintainers = with maintainers; [ zimbatm ];
};
}

View file

@ -0,0 +1,26 @@
{ lib, buildGoModule, fetchFromGitHub, git }:
buildGoModule rec {
pname = "git-codereview";
version = "1.0.3";
src = fetchFromGitHub {
owner = "golang";
repo = "review";
rev = "v${version}";
sha256 = "sha256-Hyo2UWGlxxeSz3E73DeA0VoOnBJ1VedvpshnATJGbFo=";
};
vendorSha256 = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo=";
ldflags = [ "-s" "-w" ];
checkInputs = [ git ];
meta = with lib; {
description = "Manage the code review process for Git changes using a Gerrit server";
homepage = "https://golang.org/x/review/git-codereview";
license = licenses.bsd3;
maintainers = [ maintainers.edef ];
};
}

View file

@ -0,0 +1,34 @@
{ lib, fetchFromGitHub, python3Packages, gettext, git, qt5 }:
let
inherit (python3Packages) buildPythonApplication pyqt5 sip_4 pyinotify;
in buildPythonApplication rec {
pname = "git-cola";
version = "3.12.0";
src = fetchFromGitHub {
owner = "git-cola";
repo = "git-cola";
rev = "v${version}";
sha256 = "1f8jpfa916nszj431cmp41bxj2m76k2n8qnscqgxrc0k3pnnp3wc";
};
buildInputs = [ git gettext ];
propagatedBuildInputs = [ pyqt5 sip_4 pyinotify ];
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
doCheck = false;
preFixup = ''
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
'';
meta = with lib; {
homepage = "https://github.com/git-cola/git-cola";
description = "A sleek and powerful Git GUI";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ maintainers.bobvanderlinden ];
};
}

View file

@ -0,0 +1,23 @@
{ lib, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "git-credential-1password";
version = "1.0.0";
src = fetchFromGitHub {
owner = "develerik";
repo = pname;
rev = "v${version}";
sha256 = "sha256-WMEUa0mSxmeFXQBejwxtlhWuuLKguugavRaBUVpYA3g=";
};
vendorSha256 = "sha256-eUjaSpmQpSOvSBW+7ajXiEDepkyvHsIiEY0RGpfnao0=";
meta = with lib; {
description = "A git credential helper for 1Password";
homepage = "https://github.com/develerik/git-credential-1password";
changelog = "https://github.com/develerik/git-credential-1password/releases/tag/v${version}";
license = licenses.isc;
maintainers = [ maintainers.ivankovnatsky ];
};
}

View file

@ -0,0 +1,65 @@
{ fetchFromGitHub
, git
, gnupg
, makeWrapper
, openssl
, lib
, stdenv
, libxslt
, docbook_xsl
}:
stdenv.mkDerivation rec {
pname = "git-crypt";
version = "0.7.0";
src = fetchFromGitHub {
owner = "AGWA";
repo = pname;
rev = version;
sha256 = "sha256-GcGCX6hoKL+sNLAeGEzZpaM+cdFjcNlwYExfOFEPi0I=";
};
strictDeps = true;
nativeBuildInputs = [ libxslt makeWrapper ];
buildInputs = [ openssl ];
postPatch = ''
substituteInPlace commands.cpp \
--replace '(escape_shell_arg(our_exe_path()))' '= "git-crypt"'
'';
makeFlags = [
"PREFIX=${placeholder "out"}"
"ENABLE_MAN=yes"
"DOCBOOK_XSL=${docbook_xsl}/share/xml/docbook-xsl-nons/manpages/docbook.xsl"
];
postFixup = ''
wrapProgram $out/bin/git-crypt \
--suffix PATH : ${lib.makeBinPath [ git gnupg ]}
'';
meta = with lib; {
homepage = "https://www.agwa.name/projects/git-crypt";
description = "Transparent file encryption in git";
longDescription = ''
git-crypt enables transparent encryption and decryption of files in a git
repository. Files which you choose to protect are encrypted when
committed, and decrypted when checked out. git-crypt lets you freely
share a repository containing a mix of public and private
content. git-crypt gracefully degrades, so developers without the secret
key can still clone and commit to a repository with encrypted files. This
lets you store your secret material (such as keys or passwords) in the
same repository as your code, without requiring you to lock down your
entire repository.
'';
downloadPage = "https://github.com/AGWA/git-crypt/releases";
license = licenses.gpl3;
maintainers = with maintainers; [ dochang SuperSandro2000 ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,28 @@
{ lib, python3Packages, fetchFromGitHub, git }:
python3Packages.buildPythonApplication rec {
pname = "git-delete-merged-branches";
version = "6.4.0";
src = fetchFromGitHub {
owner = "hartwork";
repo = pname;
rev = version;
sha256 = "sha256-swAc8ObZY78nVQyjTrVG81xBqTYnWHVDFpiUApbowqU=";
};
propagatedBuildInputs = with python3Packages; [
colorama
prompt-toolkit
];
checkInputs = [ git ]
++ (with python3Packages; [ parameterized ]);
meta = with lib; {
description = "Command-line tool to delete merged Git branches";
homepage = "https://pypi.org/project/git-delete-merged-branches/";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ SuperSandro2000 ];
};
}

View file

@ -0,0 +1,42 @@
{ lib, stdenv, fetchFromGitHub, unixtools, which }:
stdenv.mkDerivation rec {
pname = "git-extras";
version = "6.4.0";
src = fetchFromGitHub {
owner = "tj";
repo = "git-extras";
rev = version;
sha256 = "sha256-Cn7IXMzgg0QIsNIHz+X14Gkmop0UbsSBlGlGkmg71ek=";
};
postPatch = ''
patchShebangs check_dependencies.sh
'';
nativeBuildInputs = [
unixtools.column
which
];
dontBuild = true;
installFlags = [
"PREFIX=${placeholder "out"}"
"SYSCONFDIR=${placeholder "out"}/share"
];
postInstall = ''
# bash completion is already handled by make install
install -D etc/git-extras-completion.zsh $out/share/zsh/site-functions/_git_extras
'';
meta = with lib; {
homepage = "https://github.com/tj/git-extras";
description = "GIT utilities -- repo summary, repl, changelog population, author commit percentages and more";
license = licenses.mit;
platforms = platforms.all;
maintainers = with maintainers; [ spwhitt cko SuperSandro2000 ];
};
}

View file

@ -0,0 +1,4 @@
source 'https://rubygems.org'
# Specify your gem's dependencies in git_fame.gemspec
gem "git_fame"

View file

@ -0,0 +1,26 @@
GEM
remote: https://rubygems.org/
specs:
git_fame (2.5.2)
hirb (~> 0.7.3)
memoist (~> 0.14.0)
method_profiler (~> 2.0.1)
progressbar (~> 0.21.0)
scrub_rb (~> 1.0.1)
trollop (~> 2.1.2)
hirb (0.7.3)
memoist (0.14.0)
method_profiler (2.0.1)
hirb (>= 0.6.0)
progressbar (0.21.0)
scrub_rb (1.0.1)
trollop (2.1.2)
PLATFORMS
ruby
DEPENDENCIES
git_fame
BUNDLED WITH
2.1.4

View file

@ -0,0 +1,21 @@
{ lib, bundlerEnv, ruby, bundlerUpdateScript }:
bundlerEnv {
inherit ruby;
pname = "git_fame";
gemdir = ./.;
passthru.updateScript = bundlerUpdateScript "git-fame";
meta = with lib; {
description = ''
A command-line tool that helps you summarize and pretty-print collaborators based on contributions
'';
homepage = "http://oleander.io/git-fame-rb";
license = licenses.mit;
maintainers = with maintainers; [ expipiplus1 nicknovitski ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,60 @@
{
git_fame = {
dependencies = ["hirb" "memoist" "method_profiler" "progressbar" "scrub_rb" "trollop"];
source = {
remotes = ["https://rubygems.org"];
sha256 = "02k5ls5zyif8skdbnym6zw9y76whlnksw2m94jsh2n1ygk98izdd";
type = "gem";
};
version = "2.5.2";
};
hirb = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0mzch3c2lvmf8gskgzlx6j53d10j42ir6ik2dkrl27sblhy76cji";
type = "gem";
};
version = "0.7.3";
};
memoist = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "03d3h6kp16bf0crqg1cxdgp1d2iyzn53d3phbmjh4pjybqls0gcm";
type = "gem";
};
version = "0.14.0";
};
method_profiler = {
dependencies = ["hirb"];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1ax04qrrv7fqp5ayxaxhn72660pybdkpkvmgiwbg7bs7x5ijjzd8";
type = "gem";
};
version = "2.0.1";
};
progressbar = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "17haw9c6c9q6imsn83pii32jnihpg76jgd09x7y4hjqq45n3qcdh";
type = "gem";
};
version = "0.21.0";
};
scrub_rb = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0dwg33w83w17aiij9kcbi7irj7lh045nh9prjgkzjya3f1j60d3x";
type = "gem";
};
version = "1.0.1";
};
trollop = {
source = {
remotes = ["https://rubygems.org"];
sha256 = "0415y63df86sqj43c0l82and65ia5h64if7n0znkbrmi6y0jwhl8";
type = "gem";
};
version = "2.1.2";
};
}

View file

@ -0,0 +1,39 @@
{ lib
, stdenv
, fetchFromGitea
, rustPlatform
, libiconv
, Security
, installShellFiles
}:
rustPlatform.buildRustPackage rec {
pname = "git-gone";
version = "0.3.8";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "flausch";
repo = pname;
rev = "v${version}";
sha256 = "sha256-hKbq2rJwEZI3391RsZXsQSjjp7rSqglUckRDYAu42KE=";
};
cargoSha256 = "sha256-gBQ4V8Bwx6Di8aVnOYwx0UZZIIOFxZAXT7Tl1Yli0Fk=";
nativeBuildInputs = [ installShellFiles ];
buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
postInstall = ''
installManPage git-gone.1
'';
meta = with lib; {
description = "Cleanup stale Git branches of merge requests";
homepage = "https://codeberg.org/flausch/git-gone";
changelog = "https://codeberg.org/flausch/git-gone/raw/tag/v${version}/CHANGELOG.md";
license = licenses.asl20;
maintainers = [ maintainers.marsam ];
};
}

View file

@ -0,0 +1,43 @@
{ lib, stdenv, fetchFromGitHub, gitMinimal, docutils }:
stdenv.mkDerivation rec {
pname = "git-hub";
version = "2.1.3";
src = fetchFromGitHub {
owner = "sociomantic-tsunami";
repo = "git-hub";
rev = "v${version}";
sha256 = "sha256-fb/WDmBx1Vayu4fLeG+D1nmHJJawgIAAXcQsABsenBo=";
};
nativeBuildInputs = [
gitMinimal # Used during build to generate Bash completion.
docutils
];
postPatch = ''
patchShebangs .
'';
enableParallelBuilding = true;
installFlags = [ "prefix=$(out)" "sysconfdir=$(out)/etc" ];
postInstall = ''
# Remove inert ftdetect vim plugin and a README that's a man page subset:
rm -r $out/share/{doc,vim}
'';
meta = with lib; {
inherit (src.meta) homepage;
description = "Git command line interface to GitHub";
longDescription = ''
A simple command line interface to GitHub, enabling most useful GitHub
tasks (like creating and listing pull request or issues) to be accessed
directly through the Git command line.
'';
license = licenses.gpl3Plus;
platforms = platforms.all;
};
}

View file

@ -0,0 +1,36 @@
{ lib, stdenv, fetchFromGitHub, installShellFiles, rustPlatform, pkg-config, openssl, darwin }:
with rustPlatform;
buildRustPackage rec {
pname = "git-ignore";
version = "1.2.0";
src = fetchFromGitHub {
owner = "sondr3";
repo = pname;
rev = "v${version}";
sha256 = "sha256-Bfr+4zDi6QqirlqccW1jU95eb4q82ZFG9LtT2mCPYLc=";
};
cargoSha256 = "sha256-ehEUI4M2IxqS6QhyqOncwP+w6IGbIlSFNIP/FEVH/JI=";
nativeBuildInputs = [ pkg-config installShellFiles ];
buildInputs = [ openssl ]
++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
];
postInstall = ''
installManPage assets/git-ignore.1
# There's also .elv and .ps1 completion files but I don't know where to install those
installShellCompletion assets/git-ignore.{bash,fish} --zsh assets/_git-ignore
'';
meta = with lib; {
description = "Quickly and easily fetch .gitignore templates from gitignore.io";
homepage = "https://github.com/sondr3/git-ignore";
license = licenses.gpl3Plus;
maintainers = [ maintainers.sondr3 ];
};
}

View file

@ -0,0 +1,24 @@
{ lib, buildPythonApplication, fetchPypi, installShellFiles }:
buildPythonApplication rec {
pname = "git-imerge";
version = "1.2.0";
src = fetchPypi {
inherit pname version;
sha256 = "df5818f40164b916eb089a004a47e5b8febae2b4471a827e3aaa4ebec3831a3f";
};
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
installShellCompletion --bash completions/git-imerge
'';
meta = with lib; {
homepage = "https://github.com/mhagger/git-imerge";
description = "Perform a merge between two branches incrementally";
license = licenses.gpl2Plus;
maintainers = [ maintainers.spwhitt ];
};
}

View file

@ -0,0 +1,36 @@
{ lib, stdenv, fetchFromGitHub, rustPlatform, libiconv, Security }:
rustPlatform.buildRustPackage rec {
pname = "git-interactive-rebase-tool";
version = "2.2.0";
src = fetchFromGitHub {
owner = "MitMaro";
repo = pname;
rev = version;
sha256 = "sha256-++KTMzTt84dowoZP+Bc9E/jUS21YN5ybKrlpQUKCir0=";
};
cargoSha256 = "sha256-OUaP/nDs589FYaGYcleRMTQNu3/q/2wBjHSv2q8OyjA=";
buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
checkFlags = [
"--skip=external_editor::tests::edit_success"
"--skip=external_editor::tests::editor_non_zero_exit"
"--skip=external_editor::tests::empty_edit_abort_rebase"
"--skip=external_editor::tests::empty_edit_error"
"--skip=external_editor::tests::empty_edit_noop"
"--skip=external_editor::tests::empty_edit_re_edit_rebase_file"
"--skip=external_editor::tests::empty_edit_undo_and_edit"
];
meta = with lib; {
homepage = "https://github.com/MitMaro/git-interactive-rebase-tool";
description = "Native cross platform full feature terminal based sequence editor for git interactive rebase";
changelog = "https://github.com/MitMaro/git-interactive-rebase-tool/releases/tag/${version}";
license = licenses.mit;
maintainers = with maintainers; [ masaeedu SuperSandro2000 zowoq ];
mainProgram = "interactive-rebase-tool";
};
}

View file

@ -0,0 +1,50 @@
{ lib
, buildPythonApplication
, pytest-mock
, pytestCheckHook
, fetchFromGitHub
, installShellFiles
, git
, nix-update-script
, testers
, git-machete
}:
buildPythonApplication rec {
pname = "git-machete";
version = "3.10.0";
src = fetchFromGitHub {
owner = "virtuslab";
repo = pname;
rev = "v${version}";
sha256 = "sha256-jZkc9YA4kE/Gr4/FRzgd0VvEjSrw5rk7DB5qH8Z5o6c=";
};
nativeBuildInputs = [ installShellFiles ];
checkInputs = [ git pytest-mock pytestCheckHook ];
postInstall = ''
installShellCompletion --bash --name git-machete completion/git-machete.completion.bash
installShellCompletion --zsh --name _git-machete completion/git-machete.completion.zsh
installShellCompletion --fish completion/git-machete.fish
'';
postInstallCheck = ''
test "$($out/bin/git-machete version)" = "git-machete version ${version}"
'';
passthru = {
updateScript = nix-update-script {
attrPath = pname;
};
};
meta = with lib; {
homepage = "https://github.com/VirtusLab/git-machete";
description = "Git repository organizer and rebase/merge workflow automation tool";
license = licenses.mit;
maintainers = with maintainers; [ blitz ];
};
}

View file

@ -0,0 +1,29 @@
{ lib, stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "git-my";
version = "1.1.2";
src = fetchFromGitHub {
owner = "davidosomething";
repo = "git-my";
rev = version;
sha256 = "0jji5zw25jygj7g4f6f3k0p0s9g37r8iad8pa0s67cxbq2v4sc0v";
};
dontBuild = true;
installPhase = ''
install -Dm755 -t "$out"/bin ./git-my
'';
meta = with lib; {
description =
"List remote branches if they're merged and/or available locally";
homepage = "https://github.com/davidosomething/git-my";
license = licenses.free;
maintainers = with maintainers; [ bb010g ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,34 @@
{ lib, stdenv, fetchFromGitHub, git, perl, makeWrapper }:
with lib;
stdenv.mkDerivation rec {
pname = "git-octopus";
version = "1.4";
installFlags = [ "prefix=$(out)" ];
nativeBuildInputs = [ makeWrapper ];
# perl provides shasum
postInstall = ''
for f in $out/bin/*; do
wrapProgram $f --prefix PATH : ${makeBinPath [ git perl ]}
done
'';
src = fetchFromGitHub {
owner = "lesfurets";
repo = "git-octopus";
rev = "v${version}";
sha256 = "14p61xk7jankp6gc26xciag9fnvm7r9vcbhclcy23f4ghf4q4sj1";
};
meta = {
homepage = "https://github.com/lesfurets/git-octopus";
description = "The continuous merge workflow";
license = licenses.lgpl3;
platforms = platforms.unix;
maintainers = [maintainers.mic92];
};
}

View file

@ -0,0 +1,39 @@
{ lib, stdenv, git, xdg-utils, gnugrep, fetchFromGitHub, installShellFiles, makeWrapper, pandoc }:
stdenv.mkDerivation rec {
pname = "git-open";
version = "2.1.0";
src = fetchFromGitHub {
owner = "paulirish";
repo = "git-open";
rev = "v${version}";
sha256 = "11n46bngvca5wbdbfcxzjhjbfdbad7sgf7h9gf956cb1q8swsdm0";
};
nativeBuildInputs = [ installShellFiles makeWrapper pandoc ];
buildPhase = ''
# marked-man is broken and severly outdated.
# pandoc with some extra metadata is good enough and produces a by man readable file.
cat <(echo echo '% git-open (1) Version ${version} | Git manual') git-open.1.md > tmp
mv tmp git-open.1.md
pandoc --standalone --to man git-open.1.md -o git-open.1
'';
installPhase = ''
mkdir -p $out/bin
cp git-open $out/bin
installManPage git-open.1
wrapProgram $out/bin/git-open \
--prefix PATH : "${lib.makeBinPath [ git xdg-utils gnugrep ]}"
'';
meta = with lib; {
homepage = "https://github.com/paulirish/git-open";
description = "Open the GitHub page or website for a repository in your browser";
license = licenses.mit;
platforms = platforms.all;
maintainers = with maintainers; [ jlesquembre SuperSandro2000 ];
};
}

View file

@ -0,0 +1,38 @@
{ lib, fetchFromGitHub
, libiconv
, openssl
, pkg-config
, rustPlatform
, stdenv
, Security
, SystemConfiguration
}:
rustPlatform.buildRustPackage rec {
pname = "git-quickfix";
version = "0.0.5";
src = fetchFromGitHub {
owner = "siedentop";
repo = pname;
rev = "v${version}";
sha256 = "sha256-LDA94pH5Oodf80mEENoURh+MJSg122SVWFVo9i1TEQg=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [
Security
SystemConfiguration
libiconv
];
cargoSha256 = "sha256-QTPy0w45AawEU4fHf2FMGpL3YM+iTNnyiI4+mDJzWaE=";
meta = with lib; {
description = "Quickfix allows you to commit changes in your git repository to a new branch without leaving the current branch";
homepage = "https://github.com/siedentop/git-quickfix";
license = licenses.gpl3;
platforms = platforms.all;
maintainers = with maintainers; [ msfjarvis ];
};
}

View file

@ -0,0 +1,29 @@
{lib, stdenv, fetchFromGitHub}:
stdenv.mkDerivation rec {
pname = "git-radar";
version = "0.6";
src = fetchFromGitHub {
owner = "michaeldfallen";
repo = "git-radar";
rev = "v${version}";
sha256 = "0c3zp8s4w7m4s71qgwk1jyfc8yzw34f2hi43x1w437ypgabwg81j";
};
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
cp git-radar fetch.sh prompt.bash prompt.zsh radar-base.sh $out
ln -s $out/git-radar $out/bin
'';
meta = with lib; {
homepage = "https://github.com/michaeldfallen/git-radar";
license = licenses.mit;
description = "A tool you can add to your prompt to provide at-a-glance information on your git repo";
platforms = with platforms; linux ++ darwin;
maintainers = with maintainers; [ kamilchm ];
};
}

View file

@ -0,0 +1,35 @@
{lib, stdenv, git, less, fetchFromGitHub, makeWrapper
# util-linuxMinimal is included because we need the column command
, util-linux
}:
stdenv.mkDerivation rec {
pname = "git-recent";
version = "1.1.1";
src = fetchFromGitHub {
owner = "paulirish";
repo = "git-recent";
rev = "v${version}";
sha256 = "1g8i6vpjnnfh7vc1269c91bap267w4bxdqqwnzb8x18vqgn2fx8i";
};
nativeBuildInputs = [ makeWrapper ];
buildPhase = null;
installPhase = ''
mkdir -p $out/bin
cp git-recent $out/bin
wrapProgram $out/bin/git-recent \
--prefix PATH : "${lib.makeBinPath [ git less util-linux ]}"
'';
meta = with lib; {
homepage = "https://github.com/paulirish/git-recent";
description = "See your latest local git branches, formatted real fancy";
license = licenses.mit;
platforms = platforms.all;
maintainers = [ maintainers.jlesquembre ];
};
}

View file

@ -0,0 +1,31 @@
{ lib, buildPythonApplication, fetchFromGitHub, isPy3k, botocore, pytest, mock
, flake8, tox, awscli }:
buildPythonApplication rec {
pname = "git-remote-codecommit";
version = "1.15.1";
disabled = !isPy3k;
src = fetchFromGitHub {
owner = "aws";
repo = pname;
rev = version;
sha256 = "1vvp7i8ghmq72v57f6smh441h35xnr5ar628q2mr40bzvcifwymw";
};
propagatedBuildInputs = [ botocore ];
checkInputs = [ pytest mock flake8 tox awscli ];
checkPhase = ''
pytest
'';
meta = {
description =
"Git remote prefix to simplify pushing to and pulling from CodeCommit";
maintainers = [ lib.maintainers.zaninime ];
homepage = "https://github.com/awslabs/git-remote-codecommit";
license = lib.licenses.asl20;
};
}

View file

@ -0,0 +1,36 @@
{ lib, stdenv, fetchFromGitHub, docutils, makeWrapper
, gnupg, curl, rsync, coreutils
, gawk, gnused, gnugrep
}:
stdenv.mkDerivation rec {
pname = "git-remote-gcrypt";
version = "1.4";
rev = version;
src = fetchFromGitHub {
inherit rev;
owner = "spwhitton";
repo = "git-remote-gcrypt";
sha256 = "sha256-uHgz8Aj5w8UOo/XbptCRKON1RAdDfFsLL9ZDEF1QrPQ=";
};
outputs = [ "out" "man" ];
nativeBuildInputs = [ docutils makeWrapper ];
installPhase = ''
prefix="$out" ./install.sh
wrapProgram "$out/bin/git-remote-gcrypt" \
--prefix PATH ":" "${lib.makeBinPath [ gnupg curl rsync coreutils
gawk gnused gnugrep ]}"
'';
meta = with lib; {
homepage = "https://spwhitton.name/tech/code/git-remote-gcrypt";
description = "A git remote helper for GPG-encrypted remotes";
license = licenses.gpl3;
maintainers = with maintainers; [ ellis montag451 ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,32 @@
{ lib, fetchFromGitHub, python3Packages
, asciidoc, xmlto, docbook_xsl, docbook_xml_dtd_45, libxslt, libxml2
}:
python3Packages.buildPythonApplication rec {
pname = "git-remote-hg";
version = "1.0.3.2";
src = fetchFromGitHub {
owner = "mnauw";
repo = "git-remote-hg";
rev = "v${version}";
sha256 = "0b5lfbrcrvzpz380817md00lbgy5yl4y76vs3vm0bpm5wmr7c027";
};
nativeBuildInputs = [
asciidoc xmlto docbook_xsl docbook_xml_dtd_45 libxslt libxml2
];
propagatedBuildInputs = with python3Packages; [ mercurial ];
postInstall = ''
make install-doc prefix=$out
'';
meta = with lib; {
homepage = "https://github.com/mnauw/git-remote-hg";
description = "Semi-official Mercurial bridge from Git project";
license = licenses.gpl2;
maintainers = with maintainers; [ qyliss ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,33 @@
{ lib, stdenv, fetchFromGitHub, makeWrapper, git, gnused }:
stdenv.mkDerivation rec {
pname = "git-reparent";
version = "unstable-2017-09-03";
src = fetchFromGitHub {
owner = "MarkLodato";
repo = "git-reparent";
rev = "a99554a32524a86421659d0f61af2a6c784b7715";
sha256 = "0v0yxydpw6r4awy0hb7sbnh520zsk86ibzh1xjf3983yhsvkfk5v";
};
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
install -m755 -Dt $out/bin git-reparent
'';
postFixup = ''
wrapProgram $out/bin/git-reparent --prefix PATH : "${lib.makeBinPath [ git gnused ]}"
'';
meta = with lib; {
inherit (src.meta) homepage;
description = "Git command to recommit HEAD with a new set of parents";
maintainers = [ maintainers.marsam ];
license = licenses.gpl2;
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,33 @@
{ stdenv, lib, fetchFromGitHub, makeWrapper, git, gnupg, gawk }:
stdenv.mkDerivation rec {
pname = "git-secret";
version = "0.4.0";
src = fetchFromGitHub {
repo = "git-secret";
owner = "sobolevn";
rev = "v${version}";
sha256 = "sha256-Mtuj+e/yCDr4XkmYkWUFJB3cqOT5yOMOq9P/QJV1S80=";
};
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
install -D git-secret $out/bin/git-secret
wrapProgram $out/bin/git-secret \
--prefix PATH : "${lib.makeBinPath [ git gnupg gawk ]}"
mkdir $out/share
cp -r man $out/share
'';
meta = {
description = "A bash-tool to store your private data inside a git repository";
homepage = "https://git-secret.io";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.lo1tuma ];
platforms = lib.platforms.all;
};
}

View file

@ -0,0 +1,32 @@
{ lib, stdenv, fetchFromGitHub, makeWrapper, git, coreutils }:
stdenv.mkDerivation rec {
pname = "git-secrets";
version = "1.3.0";
src = fetchFromGitHub {
owner = "awslabs";
repo = "git-secrets";
rev = version;
sha256 = "10lnxg0q855zi3d6804ivlrn6dc817kilzdh05mmz8a0ccvm2qc7";
};
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
install -m755 -Dt $out/bin git-secrets
install -m444 -Dt $out/share/man/man1 git-secrets.1
wrapProgram $out/bin/git-secrets \
--prefix PATH : "${lib.makeBinPath [ git coreutils ]}"
'';
meta = with lib; {
description = "Prevents you from committing secrets and credentials into git repositories";
homepage = "https://github.com/awslabs/git-secrets";
license = licenses.asl20;
platforms = platforms.all;
};
}

View file

@ -0,0 +1,32 @@
{ lib, stdenv, fetchFromGitHub, makeWrapper, git }:
stdenv.mkDerivation rec {
pname = "git-standup";
version = "2.3.2";
src = fetchFromGitHub {
owner = "kamranahmedse";
repo = pname;
rev = version;
sha256 = "1xnn0jjha56v7l2vj45zzxncl6m5x2hq6nkffgc1bcikhp1pidn7";
};
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
install -Dm755 -t $out/bin git-standup
wrapProgram $out/bin/git-standup \
--prefix PATH : "${lib.makeBinPath [ git ]}"
'';
meta = with lib; {
description = "Recall what you did on the last working day";
homepage = "https://github.com/kamranahmedse/git-standup";
license = licenses.mit;
maintainers = [ maintainers.marsam ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,27 @@
{ stdenv, lib, fetchFromGitHub, ... }:
stdenv.mkDerivation {
pname = "git-stree";
version = "0.4.5";
src = fetchFromGitHub {
owner = "tdd";
repo = "git-stree";
rev = "0.4.5";
sha256 = "0y5h44n38w6rhy9m591dvibxpfggj3q950ll7y4h49bhpks4m0l9";
};
installPhase = ''
mkdir -p $out/bin $out/share/bash-completion/completions
install -m 0755 git-stree $out/bin/
install -m 0644 git-stree-completion.bash $out/share/bash-completion/completions/
'';
meta = with lib; {
description = "A better Git subtree helper command";
homepage = "http://deliciousinsights.github.io/git-stree";
license = licenses.mit;
maintainers = [ maintainers.benley ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,58 @@
{ lib, stdenv, fetchFromGitHub, git, makeWrapper, which }:
stdenv.mkDerivation rec {
pname = "git-subrepo";
version = "0.4.1";
src = fetchFromGitHub {
owner = "ingydotnet";
repo = "git-subrepo";
rev = version;
sha256 = "0n10qnc8kyms6cv65k1n5xa9nnwpwbjn9h2cq47llxplawzqgrvp";
};
nativeBuildInputs = [
makeWrapper
which
];
buildInputs = [
git
];
makeFlags = [
"PREFIX=${placeholder "out"}"
"INSTALL_LIB=${placeholder "out"}/bin"
"INSTALL_MAN=${placeholder "out"}/share/man/man1"
];
patches = [
# Allow zsh completion to work even though we aren't installing from a git
# clone. Also submitted upstream as
# https://github.com/ingydotnet/git-subrepo/pull/420
./zsh-completion.patch
];
postInstall = ''
ZSH_COMP_DIR="$out/share/zsh/vendor-completions"
mkdir -p "$ZSH_COMP_DIR"
cp share/zsh-completion/_git-subrepo "$ZSH_COMP_DIR/"
BASH_COMP_DIR="$out/share/bash-completion/completions"
mkdir -p "$BASH_COMP_DIR"
cp share/completion.bash "$BASH_COMP_DIR/git-subrepo"
'';
postFixup = ''
wrapProgram $out/bin/git-subrepo \
--prefix PATH : "${git}/bin"
'';
meta = with lib; {
homepage = "https://github.com/ingydotnet/git-subrepo";
description = "Git submodule alternative";
license = licenses.mit;
platforms = platforms.unix ++ platforms.darwin;
maintainers = [ maintainers.ryantrinkle ];
};
}

View file

@ -0,0 +1,32 @@
diff --git a/pkg/bin/generate-completion.pl b/pkg/bin/generate-completion.pl
index 85ae3b8..d3e423c 100644
--- a/pkg/bin/generate-completion.pl
+++ b/pkg/bin/generate-completion.pl
@@ -82,11 +82,6 @@ sub generate_zsh {
# DO NOT EDIT. This file generated by pkg/bin/generate-completion.pl.
-if [[ -z $GIT_SUBREPO_ROOT ]]; then
- echo 'GIT_SUBREPO_ROOT is null; has `/path/to/git-subrepo/.rc` been sourced?'
- return 3
-fi
-
_git-subrepo() {
typeset -A opt_args
local curcontext="$curcontext" state line context
diff --git a/share/zsh-completion/_git-subrepo b/share/zsh-completion/_git-subrepo
index fc82be2..a8069d9 100644
--- a/share/zsh-completion/_git-subrepo
+++ b/share/zsh-completion/_git-subrepo
@@ -3,11 +3,6 @@
# DO NOT EDIT. This file generated by pkg/bin/generate-completion.pl.
-if [[ -z $GIT_SUBREPO_ROOT ]]; then
- echo 'GIT_SUBREPO_ROOT is null; has `/path/to/git-subrepo/.rc` been sourced?'
- return 3
-fi
-
_git-subrepo() {
typeset -A opt_args
local curcontext="$curcontext" state line context

View file

@ -0,0 +1,26 @@
{ lib, stdenv, rustPlatform, fetchFromGitHub, pkg-config, openssl, curl, libiconv, Security }:
rustPlatform.buildRustPackage rec {
pname = "git-subset";
version = "0.1.1";
src = fetchFromGitHub {
owner = "jasonwhite";
repo = pname;
rev = "v${version}";
sha256 = "02z2r0kcd0nnn1zjslp6xxam5ddbhrmzn67qzxhlamsw0p9vvkbb";
};
cargoSha256 = "0lc9m9prmhr4ipjh95cfczvlmpp9scryksvqd49h4acyr904n7ry";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ curl libiconv Security ];
meta = with lib; {
description = "Super fast Git tree filtering";
homepage = "https://github.com/jasonwhite/git-subset";
license = licenses.mit;
maintainers = [ maintainers.marsam ];
};
}

View file

@ -0,0 +1,24 @@
{ lib, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "git-subtrac";
version = "0.04";
src = fetchFromGitHub {
owner = "apenwarr";
repo = pname;
rev = "v${version}";
sha256 = "0p1n29k2a2rpznwxlwzkmx38ic6g041k9vx7msvick7cydn417fx";
};
vendorSha256 = "0m64grnmhjvfsw7a56474s894sgd24rvcp5kamhzzyc4q556hqny";
doCheck = false;
meta = with lib; {
description = "Keep the content for your git submodules all in one place: the parent repo";
homepage = "https://github.com/apenwarr/git-subtrac";
license = licenses.asl20;
maintainers = [ maintainers.marsam ];
};
}

View file

@ -0,0 +1,49 @@
{ lib, stdenv, fetchFromGitHub, coreutils, git, gnugrep, gnused, makeWrapper, inotify-tools }:
stdenv.mkDerivation rec {
pname = "git-sync";
version = "unstable-2022-03-20";
src = fetchFromGitHub {
owner = "simonthum";
repo = "git-sync";
rev = "8466b77a38b3d5e8b4ed9e3cb1b635e475eeb415";
sha256 = "sha256-8rCwpmHV6wgFCLzPJOKzwN5mG8uD5KIlGFwcgQD+SK4=";
};
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
cp -a git-* $out/bin/
cp -a contrib/git-* $out/bin/
'';
wrapperPath = with lib; makeBinPath [
inotify-tools
coreutils
git
gnugrep
gnused
];
postFixup = ''
wrap_path="${wrapperPath}":$out/bin
wrapProgram $out/bin/git-sync \
--prefix PATH : $wrap_path
wrapProgram $out/bin/git-sync-on-inotify \
--prefix PATH : $wrap_path
'';
meta = {
description = "A script to automatically synchronize a git repository";
homepage = "https://github.com/simonthum/git-sync";
maintainers = with lib.maintainers; [ imalison ];
license = lib.licenses.cc0;
platforms = with lib.platforms; unix;
};
}

View file

@ -0,0 +1,31 @@
{ lib, buildGoModule, fetchFromGitHub, installShellFiles }:
buildGoModule rec {
pname = "git-team";
version = "1.7.0";
src = fetchFromGitHub {
owner = "hekmekk";
repo = "git-team";
rev = "v${version}";
sha256 = "0nl5j64b61jw4bkf29y51svjbndmqqrqx96yaip4vjzj2dx9ywm4";
};
vendorSha256 = "sha256-xJMWPDuqoNtCCUnKuUvwlYztyrej1uZttC0NsDvYnXI=";
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
go run main.go --generate-man-page > ${pname}.1
installManPage ${pname}.1
# Currently only bash completions are provided
installShellCompletion --cmd git-team --bash <($out/bin/git-team completion bash)
'';
meta = with lib; {
description = "Command line interface for managing and enhancing git commit messages with co-authors";
homepage = "https://github.com/hekmekk/git-team";
license = licenses.mit;
maintainers = with maintainers; [ lockejan ];
};
}

View file

@ -0,0 +1,33 @@
{ lib, stdenv, fetchFromGitHub, makeWrapper, git }:
stdenv.mkDerivation rec {
pname = "git-test";
version = "1.0.4";
src = fetchFromGitHub {
owner = "spotify";
repo = "git-test";
rev = "v${version}";
sha256 = "01h3f0andv1p7pwir3k6n01v92hgr5zbjadfwl144yjw9x37fm2f";
};
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
installPhase = ''
install -m755 -Dt $out/bin git-test
install -m444 -Dt $out/share/man/man1 git-test.1
wrapProgram $out/bin/git-test \
--prefix PATH : "${lib.makeBinPath [ git ]}"
'';
meta = with lib; {
description = "Test your commits";
homepage = "https://github.com/spotify/git-test";
license = licenses.asl20;
maintainers = [ maintainers.marsam ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,33 @@
{ lib, stdenv, rustPlatform, fetchFromGitHub, pkg-config, openssl, libiconv, Security }:
rustPlatform.buildRustPackage rec {
pname = "git-trim";
version = "0.4.2";
src = fetchFromGitHub {
owner = "foriequal0";
repo = pname;
rev = "v${version}";
sha256 = "1rb9dhj7b7mjrhsvm9vw5gzjfxj10idnzv488jkfdz7sfhd3fcvz";
};
cargoSha256 = "1gy77c1cnm2qpgf0fr03alvxi3936x36c032865a6ch8bzns7k5v";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ libiconv Security ];
postInstall = ''
install -Dm644 -t $out/share/man/man1/ docs/git-trim.1
'';
# fails with sandbox
doCheck = false;
meta = with lib; {
description = "Automatically trims your branches whose tracking remote refs are merged or gone";
homepage = "https://github.com/foriequal0/git-trim";
license = licenses.mit;
maintainers = [ maintainers.marsam ];
};
}

View file

@ -0,0 +1,27 @@
{ lib, fetchFromGitHub, rustPlatform }:
rustPlatform.buildRustPackage rec {
pname = "git-vanity-hash";
version = "2020-02-26-unstable";
src = fetchFromGitHub {
owner = "prasmussen";
repo = "git-vanity-hash";
rev = "000004122124005af8d118a3f379bfc6ecc1e7c7";
sha256 = "1wf342zawbphlzvji0yba0qg4f6v67h81nhxqcsir132jv397ma7";
};
cargoSha256 = "1frdw9bs7y6ch5rrbsgvhrs0wxw4hbwm2n3crslp12w55m7k39fc";
postInstall = ''
mkdir -p $out/share/doc/git-vanity-hash
cp README.md $out/share/doc/git-vanity-hash
'';
meta = with lib; {
homepage = "https://github.com/prasmussen/git-vanity-hash";
description = "Tool for creating commit hashes with a specific prefix";
license = [ licenses.mit ];
maintainers = [ maintainers.kaction ];
};
}

View file

@ -0,0 +1,66 @@
{ lib, stdenv, fetchFromGitHub, writeShellScriptBin, skawarePackages
}:
let
version = "1.3.0";
sha256 = "sha256-CFv9gZQHeEiZctJFyB6PJ1dVNkrQ7PlVtgZuteQQTJ0=";
in stdenv.mkDerivation {
pname = "git-vendor";
inherit version;
src = fetchFromGitHub {
owner = "brettlangdon";
repo = "git-vendor";
rev = "v${version}";
inherit sha256;
};
outputs = [ "bin" "man" "doc" "out" ];
PREFIX = (placeholder "out");
BINPREFIX = "${placeholder "bin"}/bin";
MANPREFIX = "${placeholder "man"}/share/man/man1";
buildInputs = [
# stubbing out a `git config` check that `make install` tries to do
(writeShellScriptBin "git" "")
];
postInstall = ''
${skawarePackages.cleanPackaging.commonFileActions {
docFiles = [
"LICENSE"
"README.md"
];
noiseFiles = [
"bin/git-vendor"
"Makefile"
"etc/bash_completion.sh"
"man"
"install.sh"
];
}} $doc/share/doc/git-vendor
'';
postFixup = ''
${skawarePackages.cleanPackaging.checkForRemainingFiles}
'';
meta = {
description = "A git command for managing vendored dependencies";
longDescription = ''
git-vendor is a wrapper around git-subtree commands for checking out and updating vendored dependencies.
By default git-vendor conforms to the pattern used for vendoring golang dependencies:
* Dependencies are stored under vendor/ directory in the repo.
* Dependencies are stored under the fully qualified project path.
e.g. https://github.com/brettlangdon/forge will be stored under vendor/github.com/brettlangdon/forge.
'';
homepage = "https://github.com/brettlangdon/git-vendor";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.Profpatsch ];
platforms = lib.platforms.all;
};
}

View file

@ -0,0 +1,40 @@
{ lib, stdenv, fetchFromGitHub, python3 }:
stdenv.mkDerivation rec {
pname = "git-when-merged";
version = "1.2.0";
src = fetchFromGitHub {
owner = "mhagger";
repo = pname;
rev = "v${version}";
sha256 = "0sw98gmsnd4iki9fx455jga9m80bxvvfgys8i1r2fc7d5whc2qa6";
};
buildInputs = [ python3 ];
installPhase = ''
install -D --target-directory $out/bin/ bin/git-when-merged
'';
meta = with lib; {
description =
"Helps you figure out when and why a commit was merged into a branch";
longDescription = ''
If you use standard Git workflows, then you create a feature
branch for each feature that you are working on. When the feature
is complete, you merge it into your master branch. You might even
have sub-feature branches that are merged into a feature branch
before the latter is merged.
In such a workflow, the first-parent history of master consists
mainly of merges of feature branches into the mainline. git
when-merged can be used to ask, "When (and why) was commit C
merged into the current branch?"
'';
homepage = "https://github.com/mhagger/git-when-merged";
license = licenses.gpl2Only;
platforms = python3.meta.platforms;
maintainers = with maintainers; [ DamienCassou ];
};
}

View file

@ -0,0 +1,31 @@
{ lib, stdenv
, fetchFromGitHub
, rustPlatform
, libiconv, Security
, pkg-config, openssl
}:
rustPlatform.buildRustPackage rec {
pname = "git-workspace";
version = "1.0.3";
src = fetchFromGitHub {
owner = "orf";
repo = pname;
rev = "v${version}";
sha256 = "sha256-sPvb8EKrr9ZUMV1yMTXkFYgjW+LRJwJAXoc7lrWykaI=";
};
cargoSha256 = "sha256-WAoYFCJCWKFvWN8XyRBZdzjCrcR6jMp8ZztSLHDP+r0=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ]
++ lib.optionals stdenv.isDarwin [ libiconv Security ];
meta = with lib; {
description = "Sync personal and work git repositories from multiple providers";
homepage = "https://github.com/orf/git-workspace";
license = with licenses; [ mit ];
maintainers = with maintainers; [ misuzu ];
};
}

View file

@ -0,0 +1,390 @@
{ fetchurl, lib, stdenv, buildPackages
, curl, openssl, zlib, expat, perlPackages, python3, gettext, cpio
, gnugrep, gnused, gawk, coreutils # needed at runtime by git-filter-branch etc
, openssh, pcre2, bash
, asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45
, libxslt, tcl, tk, makeWrapper, libiconv
, svnSupport ? false, subversionClient, perlLibs, smtpPerlLibs
, perlSupport ? stdenv.buildPlatform == stdenv.hostPlatform
, nlsSupport ? true
, osxkeychainSupport ? stdenv.isDarwin
, guiSupport ? false
, withManual ? true
, pythonSupport ? true
, withpcre2 ? true
, sendEmailSupport ? false
, Security, CoreServices
, nixosTests
, withLibsecret ? false
, pkg-config, glib, libsecret
, gzip # needed at runtime by gitweb.cgi
, withSsh ? false
}:
assert osxkeychainSupport -> stdenv.isDarwin;
assert sendEmailSupport -> perlSupport;
assert svnSupport -> perlSupport;
let
version = "2.36.1";
svn = subversionClient.override { perlBindings = perlSupport; };
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
in
stdenv.mkDerivation {
pname = "git"
+ lib.optionalString svnSupport "-with-svn"
+ lib.optionalString (!svnSupport && !guiSupport && !sendEmailSupport && !withManual && !pythonSupport && !withpcre2) "-minimal";
inherit version;
src = fetchurl {
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
sha256 = "0w43a35mhc2qf2gjkxjlnkf2lq8g0snf34iy5gqx2678yq7llpa0";
};
outputs = [ "out" ] ++ lib.optional withManual "doc";
separateDebugInfo = true;
hardeningDisable = [ "format" ];
enableParallelBuilding = true;
patches = [
./docbook2texi.patch
./git-sh-i18n.patch
./git-send-email-honor-PATH.patch
./installCheck-path.patch
] ++ lib.optionals withSsh [
./ssh-path.patch
];
postPatch = ''
# Fix references to gettext introduced by ./git-sh-i18n.patch
substituteInPlace git-sh-i18n.sh \
--subst-var-by gettext ${gettext}
# ensure we are using the correct shell when executing the test scripts
patchShebangs t/*.sh
'' + lib.optionalString withSsh ''
for x in connect.c git-gui/lib/remote_add.tcl ; do
substituteInPlace "$x" \
--subst-var-by ssh "${openssh}/bin/ssh"
done
'';
nativeBuildInputs = [ gettext perlPackages.perl makeWrapper ]
++ lib.optionals withManual [ asciidoc texinfo xmlto docbook2x
docbook_xsl docbook_xml_dtd_45 libxslt ];
buildInputs = [ curl openssl zlib expat cpio libiconv bash ]
++ lib.optionals perlSupport [ perlPackages.perl ]
++ lib.optionals guiSupport [tcl tk]
++ lib.optionals withpcre2 [ pcre2 ]
++ lib.optionals stdenv.isDarwin [ Security CoreServices ]
++ lib.optionals withLibsecret [ pkg-config glib libsecret ];
# required to support pthread_cancel()
NIX_LDFLAGS = lib.optionalString (stdenv.cc.isGNU && stdenv.hostPlatform.libc == "glibc") "-lgcc_s"
+ lib.optionalString (stdenv.isFreeBSD) "-lthr";
configureFlags = [
"ac_cv_prog_CURL_CONFIG=${lib.getDev curl}/bin/curl-config"
] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"ac_cv_fread_reads_directories=yes"
"ac_cv_snprintf_returns_bogus=no"
"ac_cv_iconv_omits_bom=no"
];
preBuild = ''
makeFlagsArray+=( perllibdir=$out/$(perl -MConfig -wle 'print substr $Config{installsitelib}, 1 + length $Config{siteprefixexp}') )
'';
makeFlags = [
"prefix=\${out}"
]
# Git does not allow setting a shell separately for building and run-time.
# Therefore lets leave it at the default /bin/sh when cross-compiling
++ lib.optional (stdenv.buildPlatform == stdenv.hostPlatform) "SHELL_PATH=${stdenv.shell}"
++ (if perlSupport then ["PERL_PATH=${perlPackages.perl}/bin/perl"] else ["NO_PERL=1"])
++ (if pythonSupport then ["PYTHON_PATH=${python3}/bin/python"] else ["NO_PYTHON=1"])
++ lib.optionals stdenv.isSunOS ["INSTALL=install" "NO_INET_NTOP=" "NO_INET_PTON="]
++ (if stdenv.isDarwin then ["NO_APPLE_COMMON_CRYPTO=1"] else ["sysconfdir=/etc"])
++ lib.optionals stdenv.hostPlatform.isMusl ["NO_SYS_POLL_H=1" "NO_GETTEXT=YesPlease"]
++ lib.optional withpcre2 "USE_LIBPCRE2=1"
++ lib.optional (!nlsSupport) "NO_GETTEXT=1"
# git-gui refuses to start with the version of tk distributed with
# macOS Catalina. We can prevent git from building the .app bundle
# by specifying an invalid tk framework. The postInstall step will
# then ensure that git-gui uses tcl/tk from nixpkgs, which is an
# acceptable version.
#
# See https://github.com/Homebrew/homebrew-core/commit/dfa3ccf1e7d3901e371b5140b935839ba9d8b706
++ lib.optional stdenv.isDarwin "TKFRAMEWORK=/nonexistent";
disallowedReferences = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
stdenv.shellPackage
];
postBuild = ''
make -C contrib/subtree
'' + (lib.optionalString perlSupport ''
make -C contrib/diff-highlight
'') + (lib.optionalString osxkeychainSupport ''
make -C contrib/credential/osxkeychain
'') + (lib.optionalString withLibsecret ''
make -C contrib/credential/libsecret
'');
## Install
# WARNING: Do not `rm` or `mv` files from the source tree; use `cp` instead.
# We need many of these files during the installCheckPhase.
installFlags = [ "NO_INSTALL_HARDLINKS=1" ];
preInstall = (lib.optionalString osxkeychainSupport ''
mkdir -p $out/bin
ln -s $out/share/git/contrib/credential/osxkeychain/git-credential-osxkeychain $out/bin/
rm -f $PWD/contrib/credential/osxkeychain/git-credential-osxkeychain.o
'') + (lib.optionalString withLibsecret ''
mkdir -p $out/bin
ln -s $out/share/git/contrib/credential/libsecret/git-credential-libsecret $out/bin/
rm -f $PWD/contrib/credential/libsecret/git-credential-libsecret.o
'');
postInstall =
''
notSupported() {
unlink $1 || true
}
# Install git-subtree.
make -C contrib/subtree install ${lib.optionalString withManual "install-doc"}
rm -rf contrib/subtree
# Install contrib stuff.
mkdir -p $out/share/git
cp -a contrib $out/share/git/
mkdir -p $out/share/bash-completion/completions
ln -s $out/share/git/contrib/completion/git-completion.bash $out/share/bash-completion/completions/git
ln -s $out/share/git/contrib/completion/git-prompt.sh $out/share/bash-completion/completions/
# only readme, developed in another repo
rm -r contrib/hooks/multimail
mkdir -p $out/share/git-core/contrib
cp -a contrib/hooks/ $out/share/git-core/contrib/
substituteInPlace $out/share/git-core/contrib/hooks/pre-auto-gc-battery \
--replace ' grep' ' ${gnugrep}/bin/grep' \
# grep is a runtime dependency, need to patch so that it's found
substituteInPlace $out/libexec/git-core/git-sh-setup \
--replace ' grep' ' ${gnugrep}/bin/grep' \
--replace ' egrep' ' ${gnugrep}/bin/egrep'
# Fix references to the perl, sed, awk and various coreutil binaries used by
# shell scripts that git calls (e.g. filter-branch)
SCRIPT="$(cat <<'EOS'
BEGIN{
@a=(
'${gnugrep}/bin/grep', '${gnused}/bin/sed', '${gawk}/bin/awk',
'${coreutils}/bin/cut', '${coreutils}/bin/basename', '${coreutils}/bin/dirname',
'${coreutils}/bin/wc', '${coreutils}/bin/tr'
${lib.optionalString perlSupport ", '${perlPackages.perl}/bin/perl'"}
);
}
foreach $c (@a) {
$n=(split("/", $c))[-1];
s|(?<=[^#][^/.-])\b''${n}(?=\s)|''${c}|g
}
EOS
)"
perl -0777 -i -pe "$SCRIPT" \
$out/libexec/git-core/git-{sh-setup,filter-branch,merge-octopus,mergetool,quiltimport,request-pull,submodule,subtree,web--browse}
# Also put git-http-backend into $PATH, so that we can use smart
# HTTP(s) transports for pushing
ln -s $out/libexec/git-core/git-http-backend $out/bin/git-http-backend
'' + lib.optionalString perlSupport ''
# wrap perl commands
makeWrapper "$out/share/git/contrib/credential/netrc/git-credential-netrc.perl" $out/bin/git-credential-netrc \
--set PERL5LIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
wrapProgram $out/libexec/git-core/git-cvsimport \
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
wrapProgram $out/libexec/git-core/git-add--interactive \
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
wrapProgram $out/libexec/git-core/git-archimport \
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
wrapProgram $out/libexec/git-core/git-instaweb \
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
wrapProgram $out/libexec/git-core/git-cvsexportcommit \
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
# gzip (and optionally bzip2, xz, zip) are runtime dependencies for
# gitweb.cgi, need to patch so that it's found
sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \
$out/share/gitweb/gitweb.cgi
# Give access to CGI.pm and friends (was removed from perl core in 5.22)
for p in ${lib.concatStringsSep " " gitwebPerlLibs}; do
sed -i -e "/use CGI /i use lib \"$p/${perlPackages.perl.libPrefix}\";" \
"$out/share/gitweb/gitweb.cgi"
done
''
+ (if svnSupport then ''
# wrap git-svn
wrapProgram $out/libexec/git-core/git-svn \
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath (perlLibs ++ [svn.out])}" \
--prefix PATH : "${svn.out}/bin" ''
else '' # replace git-svn by notification script
notSupported $out/libexec/git-core/git-svn
'')
+ (if sendEmailSupport then ''
# wrap git-send-email
wrapProgram $out/libexec/git-core/git-send-email \
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath smtpPerlLibs}"
'' else ''
# replace git-send-email by notification script
notSupported $out/libexec/git-core/git-send-email
'')
+ lib.optionalString withManual ''# Install man pages
make -j $NIX_BUILD_CORES -l $NIX_BUILD_CORES PERL_PATH="${buildPackages.perl}/bin/perl" cmd-list.made install install-html \
-C Documentation ''
+ (if guiSupport then ''
# Wrap Tcl/Tk programs
for prog in bin/gitk libexec/git-core/{git-gui,git-citool,git-gui--askpass}; do
sed -i -e "s|exec 'wish'|exec '${tk}/bin/wish'|g" \
-e "s|exec wish|exec '${tk}/bin/wish'|g" \
"$out/$prog"
done
ln -s $out/share/git/contrib/completion/git-completion.bash $out/share/bash-completion/completions/gitk
'' else ''
# Don't wrap Tcl/Tk, replace them by notification scripts
for prog in bin/gitk libexec/git-core/git-gui; do
notSupported "$out/$prog"
done
'')
+ lib.optionalString osxkeychainSupport ''
# enable git-credential-osxkeychain on darwin if desired (default)
mkdir -p $out/etc
cat > $out/etc/gitconfig << EOF
[credential]
helper = osxkeychain
EOF
'';
## InstallCheck
doCheck = false;
doInstallCheck = true;
installCheckTarget = "test";
# see also installCheckFlagsArray
installCheckFlags = [
"DEFAULT_TEST_TARGET=prove"
"PERL_PATH=${buildPackages.perl}/bin/perl"
];
preInstallCheck = ''
installCheckFlagsArray+=(
GIT_PROVE_OPTS="--jobs $NIX_BUILD_CORES --failures --state=failed,save"
GIT_TEST_INSTALLED=$out/bin
${lib.optionalString (!svnSupport) "NO_SVN_TESTS=y"}
)
function disable_test {
local test=$1 pattern=$2
if [ $# -eq 1 ]; then
mv t/{,skip-}$test.sh || true
else
sed -i t/$test.sh \
-e "/^\s*test_expect_.*$pattern/,/^\s*' *\$/{s/^/: #/}"
fi
}
# Shared permissions are forbidden in sandbox builds:
substituteInPlace t/test-lib.sh \
--replace "test_set_prereq POSIXPERM" ""
# TODO: Investigate while these still fail (without POSIXPERM):
disable_test t0001-init 'shared overrides system'
disable_test t0001-init 'init honors global core.sharedRepository'
disable_test t1301-shared-repo
# git-completion.bash: line 405: compgen: command not found:
disable_test t9902-completion 'option aliases are shown with GIT_COMPLETION_SHOW_ALL'
# Our patched gettext never fallbacks
disable_test t0201-gettext-fallbacks
${lib.optionalString (!sendEmailSupport) ''
# Disable sendmail tests
disable_test t9001-send-email
''}
# XXX: I failed to understand why this one fails.
# Could someone try to re-enable it on the next release ?
# Tested to fail: 2.18.0 and 2.19.0
disable_test t1700-split-index "null sha1"
# Tested to fail: 2.18.0
disable_test t9902-completion "sourcing the completion script clears cached --options"
# Flaky tests:
disable_test t5319-multi-pack-index
disable_test t6421-merge-partial-clone
${lib.optionalString (!perlSupport) ''
# request-pull is a Bash script that invokes Perl, so it is not available
# when NO_PERL=1, and the test should be skipped, but the test suite does
# not check for the Perl prerequisite.
disable_test t5150-request-pull
''}
'' + lib.optionalString stdenv.isDarwin ''
# XXX: Some tests added in 2.24.0 fail.
# Please try to re-enable on the next release.
disable_test t7816-grep-binary-pattern
# fail (as of 2.33.0)
#===( 18623;1208 8/? 224/? 2/? )= =fatal: Not a valid object name refs/tags/signed-empty
disable_test t6300-for-each-ref
#===( 22665;1651 9/? 1/? 0/? 0/? )= =/private/tmp/nix-build-git-2.33.0.drv-2/git-2.33.0/t/../contrib/completion/git-completion.bash: line 405: compgen: command not found
disable_test t9902-completion
# not ok 1 - populate workdir (with 2.33.1 on x86_64-darwin)
disable_test t5003-archive-zip
'' + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
disable_test t7527-builtin-fsmonitor
'' + lib.optionalString stdenv.hostPlatform.isMusl ''
# Test fails (as of 2.17.0, musl 1.1.19)
disable_test t3900-i18n-commit
# Fails largely due to assumptions about BOM
# Tested to fail: 2.18.0
disable_test t0028-working-tree-encoding
'';
stripDebugList = [ "lib" "libexec" "bin" "share/git/contrib/credential/libsecret" ];
passthru = {
shellPath = "/bin/git-shell";
tests = {
buildbot-integration = nixosTests.buildbot;
};
};
meta = {
homepage = "https://git-scm.com/";
description = "Distributed version control system";
license = lib.licenses.gpl2;
changelog = "https://github.com/git/git/blob/v${version}/Documentation/RelNotes/${version}.txt";
longDescription = ''
Git, a popular distributed version control system designed to
handle very large projects with speed and efficiency.
'';
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ primeos wmertens globin ];
};
}

View file

@ -0,0 +1,38 @@
This patch does two things: (1) use the right name for `docbook2texi',
and (2) make sure `gitman.info' isn't produced since it's broken (duplicate
node names).
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 26a2342bea..ceccd67ebb 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -132,7 +132,7 @@ HTML_REPO = ../../git-htmldocs
MAKEINFO = makeinfo
INSTALL_INFO = install-info
-DOCBOOK2X_TEXI = docbook2x-texi
+DOCBOOK2X_TEXI = docbook2texi
DBLATEX = dblatex
ASCIIDOC_DBLATEX_DIR = /etc/asciidoc/dblatex
DBLATEX_COMMON = -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty
@@ -250,7 +250,7 @@ man1: $(DOC_MAN1)
man5: $(DOC_MAN5)
man7: $(DOC_MAN7)
-info: git.info gitman.info
+info: git.info
pdf: user-manual.pdf
@@ -266,10 +266,9 @@ install-man: man
install-info: info
$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
- $(INSTALL) -m 644 git.info gitman.info $(DESTDIR)$(infodir)
+ $(INSTALL) -m 644 git.info $(DESTDIR)$(infodir)
if test -r $(DESTDIR)$(infodir)/dir; then \
$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) git.info ;\
- $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) gitman.info ;\
else \
echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \
fi

View file

@ -0,0 +1,31 @@
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 3db4eab4ba..39bc0e77c9 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -220,9 +220,9 @@ a password is obtained using 'git-credential'.
--smtp-server=<host>::
If set, specifies the outgoing SMTP server to use (e.g.
`smtp.example.com` or a raw IP address). If unspecified, and if
- `--sendmail-cmd` is also unspecified, the default is to search
- for `sendmail` in `/usr/sbin`, `/usr/lib` and $PATH if such a
- program is available, falling back to `localhost` otherwise.
+ `--sendmail-cmd` is also unspecified, the default is to search for
+ `sendmail` in $PATH if such a program is available, falling back to
+ `localhost` otherwise.
+
For backward compatibility, this option can also specify a full pathname
of a sendmail-like program instead; the program must support the `-i`
diff --git a/git-send-email.perl b/git-send-email.perl
index e65d969d0b..508d49483d 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1066,8 +1066,7 @@ sub expand_one_alias {
}
if (!defined $sendmail_cmd && !defined $smtp_server) {
- my @sendmail_paths = qw( /usr/sbin/sendmail /usr/lib/sendmail );
- push @sendmail_paths, map {"$_/sendmail"} split /:/, $ENV{PATH};
+ my @sendmail_paths = map {"$_/sendmail"} split /:/, $ENV{PATH};
foreach (@sendmail_paths) {
if (-x $_) {
$sendmail_cmd = $_;

View file

@ -0,0 +1,23 @@
diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh
index e1d917fd27..e90f8e1414 100644
--- a/git-sh-i18n.sh
+++ b/git-sh-i18n.sh
@@ -26,7 +26,7 @@ then
elif test -n "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS"
then
: no probing necessary
-elif type gettext.sh >/dev/null 2>&1
+elif type @gettext@/bin/gettext.sh >/dev/null 2>&1
then
# GNU libintl's gettext.sh
GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu
@@ -43,7 +43,8 @@ export GIT_INTERNAL_GETTEXT_SH_SCHEME
case "$GIT_INTERNAL_GETTEXT_SH_SCHEME" in
gnu)
# Use libintl's gettext.sh, or fall back to English if we can't.
- . gettext.sh
+ . @gettext@/bin/gettext.sh
+ export PATH=@gettext@/bin:$PATH
;;
gettext_without_eval_gettext)
# Solaris has a gettext(1) but no eval_gettext(1)

View file

@ -0,0 +1,13 @@
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 8665b0a9b6..8bb892b1af 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1227,7 +1227,7 @@ elif test -n "$GIT_TEST_INSTALLED"
then
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
error "Cannot run git from $GIT_TEST_INSTALLED."
- PATH=$GIT_TEST_INSTALLED:$GIT_BUILD_DIR/t/helper:$PATH
+ PATH=$GIT_TEST_INSTALLED:$GIT_BUILD_DIR/t/helper:$GIT_BUILD_DIR:$PATH
GIT_EXEC_PATH=${GIT_TEST_EXEC_PATH:-$GIT_EXEC_PATH}
else # normal case, use ../bin-wrappers only unless $with_dashes:
if test -n "$no_bin_wrappers"

View file

@ -0,0 +1,26 @@
diff --git a/connect.c b/connect.c
index 4813f005ab..b3f12f3268 100644
--- a/connect.c
+++ b/connect.c
@@ -1183,7 +1183,7 @@ static void fill_ssh_args(struct child_process *conn, const char *ssh_host,
ssh = getenv("GIT_SSH");
if (!ssh)
- ssh = "ssh";
+ ssh = "@ssh@";
variant = determine_ssh_variant(ssh, 0);
}
diff --git a/git-gui/lib/remote_add.tcl b/git-gui/lib/remote_add.tcl
index 480a6b30d0..7817204241 100644
--- a/git-gui/lib/remote_add.tcl
+++ b/git-gui/lib/remote_add.tcl
@@ -139,7 +139,7 @@ method _add {} {
# Parse the location
if { [regexp {(?:git\+)?ssh://([^/]+)(/.+)} $location xx host path]
|| [regexp {([^:][^:]+):(.+)} $location xx host path]} {
- set ssh ssh
+ set ssh @ssh@
if {[info exists env(GIT_SSH)]} {
set ssh $env(GIT_SSH)
}

View file

@ -0,0 +1,19 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts jq git
set -eu -o pipefail
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion git" | tr -d '"')"
latestTag="$(git ls-remote --tags --sort="v:refname" https://github.com/git/git.git | grep -v '\{\}' | grep -v '\-rc' | tail -1 | sed 's|^.*/v\(.*\)|\1|')"
targetVersion="${1:-$latestTag}"
if [ ! "${oldVersion}" = "${targetVersion}" ]; then
update-source-version git "${targetVersion}"
nixpkgs="$(git rev-parse --show-toplevel)"
default_nix="$nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix"
nix-build -A git
git add "${default_nix}"
git commit -m "git: ${oldVersion} -> ${targetVersion}"
else
echo "git is already up-to-date"
fi

View file

@ -0,0 +1,24 @@
{ fetchgit, lib, stdenv, perl }:
stdenv.mkDerivation rec {
pname = "git2cl";
version = "unstable-2008-08-27";
src = fetchgit {
url = "git://repo.or.cz/git2cl.git";
rev = "8373c9f74993e218a08819cbcdbab3f3564bbeba";
sha256 = "b0d39379640c8a12821442431e2121f7908ce1cc88ec8ec6bede218ea8c21f2f";
};
buildInputs = [ perl ];
installPhase = ''
install -D -m755 git2cl $out/bin/git2cl
install -D -m644 README $out/share/doc/git2cl/README
'';
meta = {
homepage = "https://savannah.nongnu.org/projects/git2cl";
description = "Convert git logs to GNU style ChangeLog files";
platforms = lib.platforms.unix;
};
}

View file

@ -0,0 +1,57 @@
{ lib
, buildPythonApplication
, fetchFromGitHub
, git
, pytest
, pyyaml
, setuptools
, installShellFiles
}:
buildPythonApplication rec {
version = "0.11.9";
pname = "gita";
src = fetchFromGitHub {
sha256 = "9+zuLAx9lMfltsBqjvsivJ5wPnStPfq11XgGMv/JDpY=";
rev = version;
repo = "gita";
owner = "nosarthur";
};
propagatedBuildInputs = [
pyyaml
setuptools
];
nativeBuildInputs = [ installShellFiles ];
postUnpack = ''
for case in "\n" ""; do
substituteInPlace source/tests/test_main.py \
--replace "'gita$case'" "'source$case'"
done
'';
checkInputs = [
git
pytest
];
checkPhase = ''
git init
pytest tests
'';
postInstall = ''
installShellCompletion --bash --name gita ${src}/.gita-completion.bash
installShellCompletion --zsh --name gita ${src}/.gita-completion.zsh
'';
meta = with lib; {
description = "A command-line tool to manage multiple git repos";
homepage = "https://github.com/nosarthur/gita";
license = licenses.mit;
maintainers = with maintainers; [ seqizz ];
};
}

View file

@ -0,0 +1,27 @@
{ lib, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "gitbatch";
version = "0.6.1";
src = fetchFromGitHub {
owner = "isacikgoz";
repo = "gitbatch";
rev = "v${version}";
sha256 = "sha256-ovmdbyPRSebwmW6AW55jBgBKaNdY6w5/wrpUF2cMKw8=";
};
vendorSha256 = "sha256-wwpaJO5cXMsvqFXj+qGiIm4zg/SL4YCm2mNnG/qdilw=";
ldflags = [ "-s" "-w" ];
checkFlags = [ "-short" ];
meta = with lib; {
description = "Running git UI commands";
homepage = "https://github.com/isacikgoz/gitbatch";
license = licenses.mit;
maintainers = with maintainers; [ teto ];
platforms = with platforms; linux;
};
}

View file

@ -0,0 +1,42 @@
{ pkgs, lib, stdenv, fetchFromGitHub }:
with pkgs.lib;
stdenv.mkDerivation rec {
pname = "gitflow";
version = "1.12.3";
src = fetchFromGitHub {
owner = "petervanderdoes";
repo = pname;
rev = version;
sha256 = "sha256-kHirHG/bfsU6tKyQ0khNSTyChhzHfzib+HyA3LOtBI8=";
};
nativeBuildInputs = [ pkgs.makeWrapper ];
preBuild = ''
makeFlagsArray+=(prefix="$out")
'';
postInstall = ''
wrapProgram $out/bin/git-flow \
--set FLAGS_GETOPT_CMD ${pkgs.getopt}/bin/getopt \
--suffix PATH : ${pkgs.git}/bin \
--prefix PATH : ${pkgs.coreutils}/bin
'';
meta = with lib; {
homepage = "https://github.com/petervanderdoes/gitflow";
description = "Extend git with the Gitflow branching model";
longDescription = ''
A set of scripts that provide high-level repository operations
for managing feature/release/hotfix branches in a Git repository,
particularly suited to be utilised to follow Vincent Driessen's
branching model.
'';
license = licenses.bsd2;
platforms = platforms.all;
maintainers = with maintainers; [ offline ];
};
}

View file

@ -0,0 +1,90 @@
{ callPackage, lib, stdenv, fetchFromGitHub, git, zsh }:
stdenv.mkDerivation rec {
pname = "gitstatus";
version = "1.5.4";
src = fetchFromGitHub {
owner = "romkatv";
repo = "gitstatus";
rev = "v${version}";
sha256 = "sha256-mVfB3HWjvk4X8bmLEC/U8SKBRytTh/gjjuReqzN5qTk=";
};
buildInputs = [ (callPackage ./romkatv_libgit2.nix { }) ];
postPatch = ''
sed -i '1i GITSTATUS_AUTO_INSTALL=''${GITSTATUS_AUTO_INSTALL-0}' gitstatus.plugin.sh
sed -i '1i GITSTATUS_AUTO_INSTALL=''${GITSTATUS_AUTO_INSTALL-0}' gitstatus.plugin.zsh
sed -i "1a GITSTATUS_DAEMON=$out/bin/gitstatusd" install
'';
installPhase = ''
install -Dm755 usrbin/gitstatusd $out/bin/gitstatusd
install -Dm444 gitstatus.plugin.sh -t $out/share/gitstatus/
install -Dm444 gitstatus.plugin.zsh -t $out/share/gitstatus/
install -Dm555 install -t $out/share/gitstatus/
install -Dm444 build.info -t $out/share/gitstatus/
# the fallback path is wrong in the case of home-manager
# because the FHS directories don't start at /
substituteInPlace install \
--replace "_gitstatus_install_main ." "_gitstatus_install_main $out"
'';
# Don't install the "install" and "build.info" files, which the end user
# should not need to worry about.
pathsToLink = [
"/bin/gitstatusd"
"/share/gitstatus/gitstatus.plugin.sh"
"/share/gitstatus/gitstatus.plugin.zsh"
];
# The install check sets up an empty Git repository and a minimal zshrc that
# invokes gitstatus.plugin.zsh. It runs zsh against this zshrc and verifies
# that the script was sourced successfully and that the "gitstatus_query"
# command ran successfully. This tests the binary itself and the zsh
# integration.
installCheckInputs = [ git zsh ];
doInstallCheck = true;
installCheckPhase = ''
TEMP=$(mktemp -d)
cd "$TEMP"
git init
echo '
GITSTATUS_LOG_LEVEL=DEBUG
. $out/share/gitstatus/gitstatus.plugin.zsh || exit 1
gitstatus_stop NIX_TEST && gitstatus_start NIX_TEST
gitstatus_query NIX_TEST
if [[ $? -ne 0 ]]; then
print -- "Something went wrong with gitstatus"
exit 1
elif [[ $VCS_STATUS_RESULT != "ok-sync" ]]; then
print -- "Not in a Git repo"
exit 1
else
print -- "OK"
exit 0
fi
' > .zshrc
# If we try to run zsh like "zsh -i -c true" or "zsh -i > output" then job
# control will be disabled in the shell and the gitstatus plugin script
# will fail when it tries to set the MONITOR option. As a workaround, we
# run zsh as a full-fledged independent process and then wait for it to
# exit. (The "exit" statements in the zshrc ensure that zsh will exit
# almost immediately after starting.)
ZDOTDIR=. zsh -i &
wait $!
'';
meta = with lib; {
description = "10x faster implementation of `git status` command";
homepage = "https://github.com/romkatv/gitstatus";
license = licenses.gpl3Only;
maintainers = with maintainers; [ mmlb hexa SuperSandro2000 ];
};
}

View file

@ -0,0 +1,25 @@
{ fetchFromGitHub, libgit2, ... }:
libgit2.overrideAttrs (oldAttrs: {
cmakeFlags = oldAttrs.cmakeFlags ++ [
"-DBUILD_CLAR=OFF"
"-DBUILD_SHARED_LIBS=OFF"
"-DREGEX_BACKEND=builtin"
"-DUSE_BUNDLED_ZLIB=ON"
"-DUSE_GSSAPI=OFF"
"-DUSE_HTTPS=OFF"
"-DUSE_HTTP_PARSER=builtin" # overwritten from libgit2
"-DUSE_NTLMCLIENT=OFF"
"-DUSE_SSH=OFF"
"-DZERO_NSEC=ON"
];
src = fetchFromGitHub {
owner = "romkatv";
repo = "libgit2";
rev = "tag-0ad3d776aa86dd607dc86dcd7f77ad3ed7ebec61";
sha256 = "sha256-mXCmspM3fqI14DF9sAIMH5vGdMMjWkdDjdME4EiQuqY=";
};
patches = [ ];
})

View file

@ -0,0 +1,25 @@
{ lib, fetchFromGitHub, buildGoModule }:
buildGoModule rec {
pname = "gitty";
version = "0.7.0";
src = fetchFromGitHub {
owner = "muesli";
repo = "gitty";
rev = "v${version}";
sha256 = "sha256-g0D6nJiHY7cz72DSmdQZsj9Vgv/VOp0exTcLsaypGiU=";
};
vendorSha256 = "sha256-qrLECQkjXH0aTHmysq64jnXj9jgbunpVtBAIXJOEYIY=";
ldflags = [ "-s" "-w" "-X=main.Version=${version}" ];
meta = with lib; {
homepage = "https://github.com/muesli/gitty/";
description = "Contextual information about your git projects, right on the command-line";
license = licenses.mit;
platforms = platforms.unix;
maintainers = with maintainers; [ izorkin ];
};
}

View file

@ -0,0 +1,41 @@
{ lib
, stdenv
, rustPlatform
, fetchFromGitHub
, libiconv
, openssl
, pkg-config
, xclip
, AppKit
, Security
}:
rustPlatform.buildRustPackage rec {
pname = "gitui";
version = "0.20.1";
src = fetchFromGitHub {
owner = "extrawurst";
repo = pname;
rev = "v${version}";
sha256 = "sha256-zYM0JVhgFnp8JDBx9iEOt029sr8azIPX5jrtvUE/Pn0=";
};
cargoSha256 = "sha256-kbLI95GzCwm2OKzzpk7jvgtm8vArf29u5BiPRTh2OmE=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ]
++ lib.optional stdenv.isLinux xclip
++ lib.optionals stdenv.isDarwin [ libiconv Security AppKit ];
# Needed to get openssl-sys to use pkg-config.
OPENSSL_NO_VENDOR = 1;
meta = with lib; {
description = "Blazing fast terminal-ui for Git written in Rust";
homepage = "https://github.com/extrawurst/gitui";
license = licenses.mit;
maintainers = with maintainers; [ Br1ght0ne yanganto ];
};
}

View file

@ -0,0 +1,27 @@
{ lib, buildEnv, git, fetchFromGitHub
, gitwebTheme ? false }:
let
gitwebThemeSrc = fetchFromGitHub {
owner = "kogakure";
repo = "gitweb-theme";
rev = "049b88e664a359f8ec25dc6f531b7e2aa60dd1a2";
postFetch = ''
mkdir -p "$TMPDIR/gitwebTheme"
mv "$out"/* "$TMPDIR/gitwebTheme/"
mkdir "$out/static"
mv "$TMPDIR/gitwebTheme"/* "$out/static/"
'';
sha256 = "17hypq6jvhy6zhh26lp3nyi52npfd5wy5752k6sq0shk4na2acqi";
};
in buildEnv {
name = "gitweb-${lib.getVersion git}";
ignoreCollisions = true;
paths = lib.optional gitwebTheme gitwebThemeSrc
++ [ "${git}/share/gitweb" ];
meta = git.meta // {
maintainers = with lib.maintainers; [ ];
};
}

View file

@ -0,0 +1,42 @@
{ lib, buildGoModule, fetchFromGitHub, installShellFiles, stdenv }:
buildGoModule rec {
pname = "glab";
version = "1.22.0";
src = fetchFromGitHub {
owner = "profclems";
repo = pname;
rev = "v${version}";
sha256 = "sha256-7w6cbeZYhmV0EXXcWlXFq2pQGGxc5Ok4bba0g3fcgmE=";
};
vendorSha256 = "sha256-hGpJXCs5lZ6QQHr6LW1fCT+CVtOaUpYXJPchDPDdbaM=";
ldflags = [
"-X main.version=${version}"
];
preCheck = ''
# failed to read configuration: mkdir /homeless-shelter: permission denied
export HOME=$TMPDIR
'';
subPackages = [ "cmd/glab" ];
nativeBuildInputs = [ installShellFiles ];
postInstall = lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
installShellCompletion --cmd glab \
--bash <($out/bin/glab completion -s bash) \
--fish <($out/bin/glab completion -s fish) \
--zsh <($out/bin/glab completion -s zsh)
'';
meta = with lib; {
description = "An open-source GitLab command line tool";
license = licenses.mit;
homepage = "https://glab.readthedocs.io/";
maintainers = with maintainers; [ freezeboy ];
};
}

View file

@ -0,0 +1,30 @@
{ lib, rustPlatform, fetchFromGitHub }:
rustPlatform.buildRustPackage rec {
pname = "glitter";
version = "1.5.15";
src = fetchFromGitHub {
owner = "milo123459";
repo = pname;
rev = "v${version}";
sha256 = "sha256-4oI0opwbmEyHc3zx06l8bDPnOi7rGrMqUJPBDAfmPY0=";
};
cargoSha256 = "sha256-rmECD/0ThDXBAGqDMNbyHi9eoGNOJhBndaxCuUS/qpc=";
# tests require it to be in a git repository
preCheck = ''
git init
'';
# error: Found argument '--test-threads' which wasn't expected, or isn't valid in this context
checkFlags = [ "--skip" "runs_correctly" ];
meta = with lib; {
description = "A git wrapper that allows you to compress multiple commands into one";
homepage = "https://github.com/milo123459/glitter";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
};
}

View file

@ -0,0 +1,56 @@
{ lib
, buildGoModule
, fetchFromGitHub
, git
, ghq
}:
buildGoModule rec {
pname = "gst";
version = "5.0.5";
src = fetchFromGitHub {
owner = "uetchy";
repo = "gst";
rev = "v${version}";
sha256 = "07cixz5wlzzb4cwcrncg2mz502wlhd3awql5js1glw9f6qfwc5in";
};
vendorSha256 = "0k5xl55vzpl64gwsgaff92jismpx6y7l2ia0kx7gamd1vklf0qwh";
doCheck = false;
nativeBuildInputs = [
git
ghq
];
ldflags = [
"-s" "-w" "-X=main.Version=${version}"
];
doInstallCheck = true;
installCheckPhase = ''
if [[ "$("$out/bin/${pname}" --version)" == "${pname} version ${version}" ]]; then
export HOME=$(mktemp -d)
git config --global user.name "Test User"
git config --global user.email "test@example.com"
git config --global init.defaultBranch "main"
git config --global ghq.user "user"
ghq create test > /dev/null 2>&1
touch $HOME/ghq/github.com/user/test/SmokeTest
$out/bin/${pname} list | grep SmokeTest > /dev/null
echo '${pname} smoke check passed'
else
echo '${pname} smoke check failed'
return 1
fi
'';
meta = {
description = "Supercharge your ghq workflow";
homepage = "https://github.com/uetchy/gst";
maintainers = with lib.maintainers; [ _0x4A6F ];
license = lib.licenses.asl20;
};
}

View file

@ -0,0 +1,47 @@
{ lib, buildGoPackage, fetchFromGitHub, git, groff, installShellFiles, unixtools, nixosTests }:
buildGoPackage rec {
pname = "hub";
version = "2.14.2";
goPackagePath = "github.com/github/hub";
# Only needed to build the man-pages
excludedPackages = [ "github.com/github/hub/md2roff-bin" ];
src = fetchFromGitHub {
owner = "github";
repo = pname;
rev = "v${version}";
sha256 = "1qjab3dpia1jdlszz3xxix76lqrm4zbmqzd9ymld7h06awzsg2vh";
};
nativeBuildInputs = [ groff installShellFiles unixtools.col ];
postPatch = ''
patchShebangs .
substituteInPlace git/git.go --replace "cmd.New(\"git\")" "cmd.New(\"${git}/bin/git\")"
substituteInPlace commands/args.go --replace "Executable: \"git\"" "Executable: \"${git}/bin/git\""
'';
postInstall = ''
cd go/src/${goPackagePath}
installShellCompletion --zsh --name _hub etc/hub.zsh_completion
installShellCompletion --bash --name hub etc/hub.bash_completion.sh
installShellCompletion --fish --name hub.fish etc/hub.fish_completion
LC_ALL=C.UTF8 \
make man-pages
installManPage share/man/man[1-9]/*.[1-9]
'';
passthru.tests = { inherit (nixosTests) hub; };
meta = with lib; {
description = "Command-line wrapper for git that makes you better at GitHub";
license = licenses.mit;
homepage = "https://hub.github.com/";
maintainers = with maintainers; [ globin ];
platforms = with platforms; unix;
};
}

View file

@ -0,0 +1,40 @@
{ lib
, buildGoModule
, fetchFromSourcehut
, scdoc
}:
buildGoModule rec {
pname = "hut";
version = "0.1.0";
src = fetchFromSourcehut {
owner = "~emersion";
repo = "hut";
rev = "v${version}";
sha256 = "sha256-2YUrDPulpLQQGw31nEasHoQ/AppECg7acwwqu6JDT5U=";
};
vendorSha256 = "sha256-EmokL3JlyM6C5/NOarCAJuqNsDO2tgHwqQdv0rAk+Xk=";
nativeBuildInputs = [
scdoc
];
makeFlags = [ "PREFIX=$(out)" ];
postBuild = ''
make $makeFlags completions doc/hut.1
'';
preInstall = ''
make $makeFlags install
'';
meta = with lib; {
homepage = "https://sr.ht/~emersion/hut/";
description = "A CLI tool for Sourcehut / sr.ht";
license = licenses.agpl3Only;
maintainers = with maintainers; [ fgaz ];
};
}

View file

@ -0,0 +1,38 @@
{ lib, buildGoModule, fetchFromGitHub, makeWrapper, xdg-utils, installShellFiles, git }:
buildGoModule rec {
pname = "lab";
version = "0.25.0";
src = fetchFromGitHub {
owner = "zaquestion";
repo = "lab";
rev = "v${version}";
sha256 = "sha256-7AUhH2aBRpsjUzZQGE2fHDOa1k0rMUfZJqUEKZXpJuM=";
};
subPackages = [ "." ];
vendorSha256 = "sha256-ChysquNuUffcM3qaWUdqu3Av33gnKkdlotEoFKoedA0=";
doCheck = false;
nativeBuildInputs = [ makeWrapper installShellFiles ];
ldflags = [ "-s" "-w" "-X main.version=${version}" ];
postInstall = ''
wrapProgram $out/bin/lab --prefix PATH ":" "${lib.makeBinPath [ git xdg-utils ]}";
for shell in bash fish zsh; do
$out/bin/lab completion $shell > lab.$shell
installShellCompletion lab.$shell
done
'';
meta = with lib; {
description = "Lab wraps Git or Hub, making it simple to clone, fork, and interact with repositories on GitLab";
homepage = "https://zaquestion.github.io/lab";
license = licenses.cc0;
maintainers = with maintainers; [ marsam dtzWill SuperSandro2000 ];
};
}

View file

@ -0,0 +1,24 @@
{ lib, buildGoModule, fetchFromGitHub }:
buildGoModule rec {
pname = "lefthook";
version = "0.7.7";
src = fetchFromGitHub {
rev = "v${version}";
owner = "evilmartians";
repo = "lefthook";
sha256 = "sha256-XyuXegCTJSW4uO6fEaRKq/jZnE+JbrxZw0kcDvhpsVo=";
};
vendorSha256 = "sha256-Rp67FnFU27u85t02MIs7wZQoOa8oGsHVVPQ9OdIyTJg=";
doCheck = false;
meta = with lib; {
description = "Fast and powerful Git hooks manager for any type of projects";
homepage = "https://github.com/Arkweid/lefthook";
license = licenses.mit;
maintainers = with maintainers; [ rencire ];
};
}

Some files were not shown because too many files have changed in this diff Show more