{config, pkgs, ...}: let git_user = "Grimmauld"; in { environment.systemPackages = with pkgs; [ (writeShellScriptBin "silent-add" "git add --intent-to-add $@ ; git update-index --assume-unchanged $@") (writeShellScriptBin "systemd-owner" "systemctl show -pUser,UID $@") (writeShellScriptBin "nix-referrers" "nix-store --query --referrers $@") mkpasswd cargo gcc rustc rustfmt rust-analyzer jdk17 python3 pkg-config imgui # nodejs_21 # ugh.... somehow nvim needs node now?!? ]; programs.git = { enable = true; lfs.enable = true; config = { init.defaultBranch = "main"; credential.username = git_user; core.editor = "${pkgs.neovim}/bin/nvim"; user.name = git_user; user.email = "${git_user}@grimmauld.de"; }; }; programs.tmux = { enable = true; historyLimit = 42000; #keyMode = "vi"; }; virtualisation.docker.enable = true; programs.neovim = { enable = true; viAlias = true; defaultEditor = true; configure = { customRC = '' set number set hidden set fileencodings=utf-8 set nocompatible set clipboard+=unnamedplus if filereadable($HOME . "/.vimrc") source ~/.vimrc endif ''; packages.myVimPackage = with pkgs.vimPlugins; { # loaded on launch start = [ vim-nix vim-scala fugitive nvim-lspconfig # autoclose-nvim # coc-nvim # mason-nvim # mason-lspconfig-nvim # coc-rust-analyzer # rust-tools-nvim vim-vsnip cmp-path cmp-nvim-lsp-signature-help cmp-nvim-lua cmp-buffer cmp-vsnip nvim-dap nvim-treesitter-parsers.rust nvim-treesitter-parsers.lua nvim-treesitter-parsers.toml nvim-treesitter-parsers.c nvim-treesitter-parsers.vimdoc nvim-treesitter vimspector snippets-nvim ]; # manually loadable by calling `:packadd $plugin-name` opt = [ ]; }; }; }; programs.xonsh.enable = true; }