{ self , config , pkgs , lib , ... }: let doomemacsSrc = builtins.fetchGit { url = "https://github.com/doomemacs/doomemacs"; ref = "master"; rev = "9620bb45ac4cd7b0274c497b2d9d93c4ad9364ee"; }; neofetchThemesSrc = builtins.fetchGit { url = "https://github.com/Chick2D/neofetch-themes"; ref = "main"; rev = "c7392136bed264258c9b8788b14410e1ff06d602"; }; myEmacs = (pkgs.emacsPackagesFor pkgs.emacs-pgtk).emacsWithPackages (epkgs: with epkgs; [ vterm treesit-grammars.with-all-grammars ]); in { programs = { alacritty = { enable = true; settings = { window.opacity = 0.88; window.dimensions = { lines = 40; columns = 150; }; }; }; rbw = { enable = true; settings = { base_url = "https://bw.vlt81.de"; email = "tristandruyen@vault81.de"; }; }; starship = { enable = true; package = pkgs.unstable-pkgs.starship; }; fish = { enable = true; package = pkgs.unstable-pkgs.fish; interactiveShellInit = '' any-nix-shell fish --info-right | source direnv hook fish | source cat /var/lib/rust-motd/motd ''; loginShellInit = '' direnv hook fish | source ''; functions = { ec = "emacsclient $argv"; ecc = "emacsclient -c $argv"; ecr = "emacsclient -r $argv"; ecrr = "emacsclient -r $argv"; }; plugins = [ { name = "sponge"; src = pkgs.fetchFromGitHub { owner = "meaningful-ooo"; repo = "sponge"; rev = "384299545104d5256648cee9d8b117aaa9a6d7be"; sha256 = "31d71950346d349762ca8da5f68e666bb9c05fce311096c616101584af999b5c"; }; } ]; }; git = { enable = true; userName = "Tristan Druyen"; userEmail = "tristan@vault81.de"; lfs = { enable = true; }; aliases = { ci = "commit"; co = "checkout"; s = "status"; }; extraConfig = { user.signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519"; commit.gpgsign = true; gpg.format = "ssh"; }; package = pkgs.unstable-pkgs.git; }; nix-index = { enable = true; enableFishIntegration = true; }; ssh = { enable = true; package = pkgs.unstable-pkgs.openssh; matchBlocks = { "he4" = { host = "he4"; hostname = "he4.vault81.de"; user = "tristand"; identityFile = "~/.ssh/id_ed25519"; }; "he2" = { host = "he2"; hostname = "he2.vault81.de"; user = "root"; identityFile = "~/.ssh/id_v81_ed25519"; }; "nixos-desk" = { host = "nixos-desk"; hostname = "nixos-desk"; user = "tristand"; identityFile = "~/.ssh/id_v81_ed25519"; }; }; }; gpg = { enable = true; package = pkgs.unstable-pkgs.gnupg; }; zoxide = { enable = true; package = pkgs.unstable-pkgs.zoxide; }; }; services = { gpg-agent = { enable = true; enableExtraSocket = true; enableSshSupport = true; pinentryPackage = lib.mkForce pkgs.pinentry-qt; }; lorri.enable = true; emacs = { enable = true; defaultEditor = true; package = myEmacs; }; }; home = { activation.setupEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] '' mkdir ~/.config/emacs -p chmod u+rw -R ~/.config/emacs cp -r ${doomemacsSrc}/. "$HOME/.config/emacs" ''; activation.setupNeofetch = lib.hm.dag.entryAfter [ "writeBoundary" ] '' mkdir ~/.config/neofetch -p chmod u+rw -R ~/.config/neofetch cp ${neofetchThemesSrc}/normal/acenoster.conf "$HOME/.config/neofetch/config.conf" ''; file.".config/doom" = { recursive = true; source = ../../ext/doom; # onChange = "${config.home.homeDirectory}/.config/emacs/bin/doom sync"; }; sessionVariables = { TERMINAL = "alacritty"; }; packages = with pkgs.unstable-pkgs; [ myEmacs asciinema any-nix-shell atool aspell aspellDicts.en aspellDicts.en-computers aspellDicts.en-science aspellDicts.de binutils btop calc cmake curl direnv exercism filezilla fd gnutls gnumake gcc imagemagick imagemagick libtool neofetch nil nixpkgs-fmt nodejs_20 tree pandoc python311Full python311Packages.epc python311Packages.orjson rust-motd rcm (lib.mkIf config.services.gpg-agent.enable pinentry-emacs) (ripgrep.override { withPCRE2 = true; }) shellcheck shfmt statix texlive.combined.scheme-full tokei tree-sitter wget wl-clipboard zeal zellij zstd neovim lazydocker lazygit ]; }; }