{ config, inputs, lib, options, pkgs, ... }: with lib; let cfg = config.samfelag.modules.editors.emacs; i3Cfg = config.samfelag.modules.desktop.i3; emacsWithPackages = with pkgs; ((emacsPackagesFor emacsNativeComp).emacsWithPackages (epkgs: [epkgs.vterm])); in { options.samfelag.modules.editors.emacs = { enable = mkEnableOption "emacs"; }; config = mkIf cfg.enable { nixpkgs.overlays = [ inputs.emacs-overlay.overlay ]; # home.file.doom-emacs = { # source = ./doom-emacs; # target = ".config/doom"; # recursive = true; # # onChange = "doom upgrade"; # }; # home.programs.emacs = { # enable = true; # # package = pkgs.emacsPgtkGcc; # extraPackages = epkgs: [ epkgs.vterm ]; # }; # home.services.emacs = { # enable = true; # client.enable = true; # socketActivation.enable = true; # }; environment.systemPackages = with pkgs; [ ## Emacs itself binutils emacsWithPackages # emacsPgtkGcc ## Doom dependencies git (ripgrep.override { withPCRE2 = true; }) gnutls ## Opt deps fd imagemagick pinentry_emacs zstd ## Modules deps # :tools vterm gcc gnumake libtool cmake # # :lang cc # ccls # cmake # gcc # glslang # # :lang haskell # stack # haskellPackages.ghcide # haskellPackages.hoogle # # :lang latex && :lang org (latex preview) # (texlive.combine { inherit (texlive) scheme-full; }) # # biber # # :lang nix # nixfmt # # :lang python # black # python3 # python3Packages.isort # # python3Packages.python-language-server # python3Packages.pytest # python3Packages.setuptools # nodePackages.pyright # # :tools lookup & :lang org +roam # sqlite # # :tools direnv # direnv # Fonts emacs-all-the-icons-fonts # fira-code # fira-code-symbols graphviz ]; fonts.fonts = [ pkgs.emacs-all-the-icons-fonts ]; env.PATH = [ "$HOME/.config/emacs/bin" ]; home-manager.users.marc.xdg.configFile."doom".source = ../../config/doom; system.userActivationScripts = { installDoomEmacs = '' EMACS_FOLDER="$HOME/.config/emacs" echo $XDG_CONFIG_HOME echo $EMACS_FOLDER if [ ! -d "$EMACS_FOLDER" ]; then ${pkgs.git}/bin/git clone --depth=1 --single-branch "https://github.com/doomemacs/doomemacs" "$EMACS_FOLDER" fi ''; }; samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable { "${i3Cfg.mod}+Shift+e" = "exec ${emacsWithPackages}/bin/emacs"; }; }; }