{ self , config , pkgs , lib , ... }: let doomemacsSrc = builtins.fetchGit { url = "https://github.com/doomemacs/doomemacs"; ref = "master"; rev = "986398504d09e585c7d1a8d73a6394024fe6f164"; }; in { programs = { 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 ''; loginShellInit = '' direnv hook fish | source ''; functions = { ec = "emacsclient $argv"; ecc = "emacsclient -c $argv"; ecr = "emacsclient -r $argv"; ecrr = "emacsclient -r $argv"; }; }; git = { enable = true; userName = "Tristan Druyen"; userEmail = "tristan@vault81.de"; 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 = { "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"; }; }; }; gpg = { enable = true; package = pkgs.unstable-pkgs.gnupg; }; }; services = { gpg-agent = { enable = true; enableExtraSocket = true; enableSshSupport = true; }; lorri.enable = true; emacs = { enable = true; defaultEditor = true; package = lib.mkDefault pkgs.unstable-pkgs.emacs-unstable; }; }; home = { activation.setupEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] '' mkdir ~/.config/emacs -p chmod u+rw -R ~/.config/emacs cp -r ${doomemacsSrc}/. "$HOME/.config/emacs" ''; file.".config/doom" = { recursive = true; source = ../../ext/doom; }; packages = with pkgs.unstable-pkgs; [ btop imagemagick rust-motd zellij ]; }; }