{ pkgs, config, lib, ... }: let inherit (config.grimmShared) enable tooling; inherit (lib) mkOption types getExe mkIf ; in { imports = [ ./lilypond.nix ./nix.nix ./security.nix ./python.nix ./rust.nix ./nvim.nix ./lsp.nix ]; config = mkIf (enable && tooling.enable) { environment.systemPackages = [ (pkgs.writeShellScriptBin "silent-add" "${getExe config.programs.git.package} add --intent-to-add $@ ; ${getExe config.programs.git.package} update-index --assume-unchanged $@") pkgs.urlencode pkgs.tea pkgs.delta ]; grimmShared.tooling.nvim.plugins = with pkgs.vimPlugins; [ fugitive ]; programs.git = { enable = true; lfs.enable = true; config = { init.defaultBranch = "main"; credential.username = tooling.git_user; user.name = tooling.git_user; user.email = tooling.git_email; push.autoSetupRemote = true; core.autocrlf = "input"; commit.gpgsign = true; pull.rebase = true; include.path = "${pkgs.delta.src}/themes.gitconfig"; core.pager = "delta"; interactive.diffFilter = "delta --color-only"; delta = { navigate = true; features = "mantis-shrimp"; }; merge.conflictstyle = "diff3"; diff.colorMoved = "default"; alias = { pfusch = "push --force-with-lease --force-if-includes"; fuck = "reset HEAD~1"; fixup = "commit --fixup"; }; }; }; }; options.grimmShared.tooling = { git_user = mkOption { type = types.str; default = "Grimmauld"; description = "Username for git to use"; }; git_email = mkOption { type = types.str; default = "${config.grimmShared.tooling.git_user}@grimmauld.de"; description = "Email for git to use"; }; }; }