75 lines
2.2 KiB
Nix
75 lines
2.2 KiB
Nix
|
{ pkgs, lib, config, ... }:
|
||
|
{
|
||
|
config = lib.mkIf config.programs.git.enable {
|
||
|
home.packages = [
|
||
|
(pkgs.writeShellApplication {
|
||
|
name = "git-sync-init";
|
||
|
text = (lib.strings.concatLines
|
||
|
(map (r: ''[ -d "${r.path}" ] || ${pkgs.git}/bin/git clone "${r.uri}" "${r.path}"'')
|
||
|
(lib.attrsets.attrValues config.services.git-sync.repositories)
|
||
|
)
|
||
|
);
|
||
|
})
|
||
|
(pkgs.writeShellApplication {
|
||
|
name = "git-sync-pull";
|
||
|
text = (lib.strings.concatLines
|
||
|
(map (r: ''(cd "${r.path}"; echo "$PWD"; ${pkgs.git}/bin/git pull || true)'')
|
||
|
(lib.attrsets.attrValues config.services.git-sync.repositories)
|
||
|
)
|
||
|
);
|
||
|
})
|
||
|
];
|
||
|
programs.git = {
|
||
|
package = pkgs.gitFull;
|
||
|
aliases = {
|
||
|
"git" = "!exec git"; # In case I write one too many git
|
||
|
};
|
||
|
ignores = [
|
||
|
"*.swp"
|
||
|
"*.swo"
|
||
|
"*.ycm_extra_conf.py"
|
||
|
"tags"
|
||
|
".mypy_cache"
|
||
|
];
|
||
|
delta = {
|
||
|
enable = true;
|
||
|
options = {
|
||
|
line-numbers = true;
|
||
|
syntax-theme = "base16";
|
||
|
};
|
||
|
};
|
||
|
lfs.enable = true;
|
||
|
userEmail = lib.mkDefault "geoffrey@frogeye.fr";
|
||
|
userName = lib.mkDefault "Geoffrey Frogeye";
|
||
|
extraConfig = {
|
||
|
core = {
|
||
|
editor = "nvim";
|
||
|
};
|
||
|
push = {
|
||
|
default = "matching";
|
||
|
};
|
||
|
pull = {
|
||
|
ff = "only";
|
||
|
};
|
||
|
} // lib.optionalAttrs config.frogeye.desktop.xorg {
|
||
|
diff.tool = "meld";
|
||
|
difftool.prompt = false;
|
||
|
"difftool \"meld\"".cmd = "${pkgs.meld}/bin/meld \"$LOCAL\" \"$REMOTE\"";
|
||
|
# This escapes quotes, which isn't the case in the original, hoping this isn't an issue.
|
||
|
};
|
||
|
};
|
||
|
services = {
|
||
|
git-sync = {
|
||
|
enable = false; # The real thing syncs too quickly and asks for passphrase, which is annoying
|
||
|
# So for now it's just a way to park config which will be reused by git-sync-* commands
|
||
|
repositories = {
|
||
|
dotfiles = {
|
||
|
path = "${config.xdg.configHome}/dotfiles";
|
||
|
uri = lib.mkDefault "https://git.frogeye.fr/geoffrey/dotfiles.git";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|