{ lib, pkgs, config, inputs, ... }: let doomemacsSrc = builtins.fetchGit { url = "https://github.com/doomemacs/doomemacs"; ref = "master"; rev = "986398504d09e585c7d1a8d73a6394024fe6f164"; }; personalDoomConfSrc = builtins.fetchGit { url = "https://git.vlt81.de/tristan/doom"; ref = "main"; rev = "3973c2a97e549640f14ed073bbb8102ebd8a839b"; }; in { xdg.enable = true; programs.alacritty = { enable = true; settings = { window.opacity = 0.88; window.dimensions = { lines = 40; columns = 150; }; }; }; programs.fish = { enable = true; interactiveShellInit = '' any-nix-shell fish --info-right | source direnv hook fish | source ''; loginShellInit = '' direnv hook fish | source ''; functions = { ec = "emacsclient $argv"; ecc = "emacsclient -c $argv"; ecr = "emacsclient -r $argv"; ecrr = "emacsclient -r $argv"; }; }; programs.git = { enable = true; userName = "Tristan Druyen"; userEmail = "tristan@vault81.de"; aliases = { ci = "commit"; co = "checkout"; s = "status"; }; extraConfig = { user.signingkey = "/home/tristand/.ssh/id_ed25519"; commit.gpgsign = true; gpg.format = "ssh"; }; }; programs.nix-index = { enable = true; enableFishIntegration = true; }; programs.ssh = { enable = true; matchBlocks = { "he3" = { host = "he3"; hostname = "he3.vault81.de"; user = "root"; identityFile = "~/.ssh/id_hetz_ed25519"; }; "he2" = { host = "he2"; hostname = "he2.vault81.de"; user = "root"; identityFile = "~/.ssh/id_v81_ed25519"; }; "desk-arch" = { host = "desk-arch"; hostname = "tristan-desk-arch"; user = "tristand"; identityFile = "~/.ssh/id_v81_ed25519"; }; }; }; programs.gpg = { enable = true; }; services.gpg-agent = { enable = true; enableExtraSocket = true; enableSshSupport = true; }; services.lorri.enable = true; services.emacs = { enable = true; defaultEditor = true; package = pkgs.emacs-unstable-pgtk; }; home = { activation.installDoomEmacs = lib.hm.dag.entryAfter ["writeBoundary"] '' mkdir ~/.config/emacs -p chmod u+rw -R ~/.config/emacs cp -r ${doomemacsSrc}/. "$HOME/.config/emacs" mkdir ~/.config/doom -p chmod u+rw -R ~/.config/doom cp -r ${personalDoomConfSrc}/. "$HOME/.config/doom" ''; sessionVariables = { TERMINAL = "alacritty"; }; packages = with pkgs; [ any-nix-shell atool aspell aspellDicts.en aspellDicts.en-computers aspellDicts.en-science aspellDicts.de binutils cmake direnv emacs-unstable-pgtk fd gnutls gnumake gcc git imagemagick libtool pandoc (lib.mkIf (config.services.gpg-agent.enable) pinentry_emacs) (ripgrep.override {withPCRE2 = true;}) rnix-lsp shellcheck shfmt texlive.combined.scheme-full zstd ]; }; }