nix-config/home-manager/_mixins/cli/git.nix

48 lines
1.2 KiB
Nix
Raw Permalink Normal View History

{ pkgs, config, ... }:
let
ssh = "${pkgs.openssh}/bin/ssh";
2023-09-26 19:45:31 +00:00
git-gburd = pkgs.writeShellScriptBin "git-gburd" ''
2023-09-19 17:05:08 +00:00
repo="$(git remote -v | grep git@burd.me | head -1 | cut -d ':' -f2 | cut -d ' ' -f1)"
# Add a .git suffix if it's missing
if [[ "$repo" != *".git" ]]; then
repo="$repo.git"
fi
if [ "$1" == "init" ]; then
if [ "$2" == "" ]; then
echo "You must specify a name for the repo"
exit 1
fi
2023-09-19 17:05:08 +00:00
${ssh} -A git@burd.me << EOF
git init --bare "$2.git"
git -C "$2.git" branch -m main
EOF
2023-09-19 17:05:08 +00:00
git remote add origin git@burd.me:"$2.git"
elif [ "$1" == "ls" ]; then
2023-09-19 17:05:08 +00:00
${ssh} -A git@burd.me ls
else
2023-09-19 17:05:08 +00:00
${ssh} -A git@burd.me git -C "/srv/git/$repo" $@
fi
'';
in
{
2023-09-26 19:45:31 +00:00
home.packages = [ git-gburd ];
programs.git = {
enable = true;
package = pkgs.gitAndTools.gitFull;
2023-09-19 17:05:08 +00:00
userName = "Greg Burd";
2023-09-26 19:45:31 +00:00
userEmail = "greg@burd.me";
signing = {
key = "D4BB42BE729AEFBD2EFEBF8822931AF7895E82DF";
signByDefault = true;
};
extraConfig = {
init.defaultBranch = "main";
gpg.program = "${config.programs.gpg.package}/bin/gpg2";
};
lfs.enable = true;
ignores = [ ".direnv" "result" ];
};
}