{ user, home }: { config, lib, pkgs, ... }: let userConfig = config.users.users.${user}; in { home-manager.users.${user} = { programs.git = { enable = true; lfs.enable = true; userName = userConfig.fullName; userEmail = userConfig.email; signing = { signByDefault = true; key = null; }; extraConfig = { credential.helper = "store"; push.autoSetupRemote = true; core.fsmonitor = true; feature.manyFiles = true; fetch.writeCommitGraph = true; http.cookiefile = "${home}/.config/git/cookies"; advice.detachedHead = false; }; hooks = { commit-msg = lib.meta.getExe ( pkgs.writeShellApplication { name = "git-commit-msg-hook"; runtimeInputs = with pkgs; [ git ]; text = builtins.readFile ./commit-msg.sh; } ); }; }; home = { packages = with pkgs; [ (pkgs.writeShellApplication { name = "gh"; runtimeInputs = with pkgs; [ gh ]; text = builtins.readFile ./gh.sh; }) (pkgs.writeShellApplication { name = "glab"; runtimeInputs = with pkgs; [ glab ]; text = builtins.readFile ./glab.sh; }) (pkgs.writeShellApplication { name = "tea"; runtimeInputs = with pkgs; [ tea ]; text = builtins.readFile ./tea.sh; }) ]; sessionVariables = { GITEA_HOST = "git.karaolidis.com"; GITEA_SSH_HOST = "karaolidis.com"; }; }; xdg.configFile = { "gh/config.yml".source = (pkgs.formats.yaml { }).generate "config.yml" { version = 1; git_protocol = "ssh"; }; "glab-cli/config.yml".source = (pkgs.formats.yaml { }).generate "config.yml" { git_protocol = "ssh"; }; }; }; }