{ config, pkgs, ... }: { programs.git = { enable = true; userName = "Simon Bruder"; userEmail = "simon@sbruder.de"; signing = { key = config.programs.gpg.settings.default-key; signByDefault = true; }; extraConfig = { core.quotepath = "off"; pull.ff = "only"; diff = { age = { # This uses the de facto default key location with no ability to # specify another key. # If decryption fails (e.g. due to a lack of the right private key, # rage’s error message will be displayed instead of the file’s # contents. textconv = toString (pkgs.writeShellScript "git-age-textconv" '' ${pkgs.rage}/bin/rage -d -i ${config.xdg.configHome}/age/keys.txt "$@" 2>&1 || true ''); }; }; }; ignores = [ "*.swp" ".direnv" "Session.vim" ]; lfs.enable = true; delta = { enable = true; options = { line-numbers = "true"; side-by-side = "true"; features = "decorations"; syntax-theme = "base16"; decorations = { commit-decoration-style = "bold yellow box ul"; file-style = "bold yellow ul"; file-decoration-style = "none"; }; }; }; }; }