-{ pkgs, lib, config, ... }:
+{ pkgs, lib, ... }:
{
-home.packages = [
- pkgs.git-chglog
- pkgs.git-crypt
- pkgs.git-quick-stats
-];
-programs.git = {
- enable = true;
- ignores = [ "*~" "*.swp" ];
- package = pkgs.gitFull;
- aliases = {
- authors = "shortlog -s -n";
- bl = "git log -p -M --follow --stat --";
- br = "branch";
- ci = "commit";
- ca = "commit --amend -C@";
- co = "checkout";
- dc = "diff --cached";
- df = "diff";
- dh = "diff --histogram";
- dp = "diff --patience";
- ign = "ls-files -o -i --exclude-standard";
- ll = "log --graph --decorate --pretty=oneline --abbrev-commit";
- lp = "log -p";
- s = "status -s";
- spull = "!git-svn fetch && git-svn rebase";
- spush = "!git-svn dcommit";
- st = "status";
- su = "status -uno";
- fetch-local = "!git fetch local && git tag -d $(git describe --exact-match 2>/dev/null >/dev/null) && git fetch --tags local";
- pull-local = "!git fetch-local && git checkout -B master local/master";
- pull-local-old = "!git fetch-local && git checkout HEAD'^' && git branch -f master local/master && git checkout master";
- root = ''!git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"'';
- has-tag-version = ''!git show-ref --tags -d | grep -qx \"^$(git rev-parse HEAD) refs/tags/v[0-9][0-9][0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9]\\(\\^{}\\)\\?\"'';
- tag-version = ''"!git has-tag-version && return; v=$(TZ=UTC date +v%Y-%m-%d) && name=$(git rev-parse --show-toplevel | sed -e 's:^.*/work::') && set -x && git tag -s -m \"$name $v\" $v"'';
- has-tag-majordate = ''!git show-ref --tags -d | grep -qx \"^$(git rev-parse HEAD) refs/tags/v[0-9]\\+.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\\(\\^{}\\)\\?\"'';
- tag-majordate = ''"!git has-tag-majordate && return; name=$(basename $(dirname $(git rev-parse --show-toplevel))); major=$(basename $(git rev-parse --show-toplevel)); version=''${version:-$(TZ=UTC date +\"v$major.%Y%m%d\")} && set -x && git tag -s -m \"$name $version\" $version"'';
- tag-cabal = ''"!set -x; for cabal in $(git ls-files | grep '.*\\.cabal$'); do name=$(sed -ne 's/^name: *\\(.*\\)/\\1/p' \"$cabal\"); version=$(sed -ne 's/^version: *\\(.*\\)/\\1/p' \"$cabal\"); git tag --merged | grep -Fqx \"$name-$version\" || git tag -f -s -m \"$name v$version\" $name-$version; done"'';
- cl = "notes --ref=changelog append";
- cl-bug = "notes --ref=changelogs/bugs append";
- cl-feature = "notes --ref=changelogs/features append";
- wip = "for-each-ref --sort='authordate:iso8601' --format=' %(color:green)%(authordate:relative)%09%(color:white)%(refname:short)' refs/heads";
+ home.packages = [
+ pkgs.git-chglog
+ pkgs.git-crypt
+ pkgs.git-filter-repo
+ pkgs.git-quick-stats
+ ];
+ programs.git = {
+ enable = true;
+ ignores = [ "*~" "*.swp" ];
+ package = lib.mkDefault pkgs.gitMinimal;
+ aliases = {
+ a = "add";
+ ap = "add -p";
+ authors = "shortlog -s -n";
+ bl = "git log -p -M --follow --stat --";
+ b = "branch";
+ c = "commit";
+ ca = "commit --amend";
+ caa = "commit --amend -C@";
+ caaa = "commit --amend -C@ -a";
+ cf = "commit --fixup";
+ co = "checkout";
+ d = "diff";
+ dc = "diff --cached";
+ dh = "diff --histogram";
+ dp = "diff --patience";
+ g = "grep";
+ ign = "ls-files -o -i --exclude-standard";
+ l = "log";
+ ll = "log --graph --decorate --pretty=oneline --abbrev-commit";
+ lp = "log -p --pretty=fuller";
+ lpg = "log -p --pretty=fuller -g";
+ p = "push -v";
+ pf = "push -vf";
+ pu = "pull";
+ r = "reset";
+ rh = "reset --hard";
+ ri = "rebase -i";
+ rp = "reset -p";
+ s = "status";
+ spull = "!git-svn fetch && git-svn rebase";
+ spush = "!git-svn dcommit";
+ ss = "status -s";
+ st = "status -uno";
+ sw = "switch";
+ fetch-local = "!git fetch local && git tag -d $(git describe --exact-match 2>/dev/null >/dev/null) && git fetch --tags local";
+ pull-local = "!git fetch-local && git checkout -B master local/master";
+ pull-local-old = "!git fetch-local && git checkout HEAD'^' && git branch -f master local/master && git checkout master";
+ root = ''!git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"'';
+ has-tag-version = ''!git show-ref --tags -d | grep -qx \"^$(git rev-parse HEAD) refs/tags/v[0-9][0-9][0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9]\\(\\^{}\\)\\?\"'';
+ tag-version = ''"!git has-tag-version && return; v=$(TZ=UTC date +v%Y-%m-%d) && name=$(git rev-parse --show-toplevel | sed -e 's:^.*/work::') && set -x && git tag -s -m \"$name $v\" $v"'';
+ has-tag-majordate = ''!git show-ref --tags -d | grep -qx \"^$(git rev-parse HEAD) refs/tags/v[0-9]\\+.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\\(\\^{}\\)\\?\"'';
+ tag-majordate = ''"!git has-tag-majordate && return; name=$(basename $(dirname $(git rev-parse --show-toplevel))); major=$(basename $(git rev-parse --show-toplevel)); version=''${version:-$(TZ=UTC date +\"v$major.%Y%m%d\")} && set -x && git tag -s -m \"$name $version\" $version"'';
+ tag-cabal = ''"!set -x; for cabal in $(git ls-files | grep '.*\\.cabal$'); do name=$(sed -ne 's/^name: *\\(.*\\)/\\1/p' \"$cabal\"); version=$(sed -ne 's/^version: *\\(.*\\)/\\1/p' \"$cabal\"); git tag --merged | grep -Fqx \"$name-$version\" || git tag -f -s -m \"$name v$version\" $name-$version; done"'';
+ cl = "notes --ref=changelog append";
+ cl-bug = "notes --ref=changelogs/bugs append";
+ cl-feature = "notes --ref=changelogs/features append";
+ wip = "for-each-ref --sort='authordate:iso8601' --format=' %(color:green)%(authordate:relative)%09%(color:white)%(refname:short)' refs/heads";
+ };
+ extraConfig = {
+ push.default = "simple";
+ color.diff = "auto";
+ #color.diff.whitespace = "red reverse";
+ color.status = "auto";
+ color.branch = "auto";
+ core.whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol";
+ core.quotepath = "false";
+ diff.algorithm = "histogram";
+ diff.sqldiff.command = "sqldiff";
+ format.pretty = "oneline";
+ init.defaultBranch = "main";
+ web.browser = "elinks";
+ browser.elinks.cmd = "elinks";
+ sendemail.chainReplyTo = "false";
+ sendemail.composeencoding = "UTF-8";
+ sendemail.confirm = "always";
+ sendemail.envelopeSender = "auto";
+ sendemail.multiedit = "yes";
+ sendemail.suppresscc = "self";
+ sendemail.suppressFrom = "false";
+ sendemail.thread = "true";
+ sendemail.validate = "true";
+ merge.tool = "vimdiff";
+ protocol.version = 2;
+ pull.rebase = true;
+ rebase.autosquash = "true";
+ };
};
- extraConfig = {
- push.default = "simple";
- color.diff = "auto";
- #color.diff.whitespace = "red reverse";
- color.status = "auto";
- color.branch = "auto";
- core.whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol";
- core.quotepath = "false";
- diff.algorithm = "histogram";
- diff.sqldiff.command = "sqldiff";
- format.pretty = "oneline";
- init.defaultBranch = "main";
- web.browser = "elinks";
- browser.elinks.cmd = "elinks";
- sendemail.chainReplyTo = "false";
- sendemail.composeencoding = "UTF-8";
- sendemail.confirm = "always";
- sendemail.envelopeSender = "auto";
- sendemail.multiedit = "yes";
- sendemail.suppresscc = "self";
- sendemail.suppressFrom = "false";
- sendemail.thread = "true";
- sendemail.validate = "true";
- merge.tool = "vimdiff";
- protocol.version = 2;
- pull.rebase = true;
- rebase.autosquash = "true";
- };
-};
}