{ inputs, config, lib, pkgs, ... }: { options.my.emacs.enable = lib.mkEnableOption "enable"; config = lib.mkIf config.my.emacs.enable { home-manager.users.jawz = { services.lorri.enable = true; programs.bash = { initExtra = '' emacs-sqlite-fix () { nix-shell -p cmake sqlite --command "doom sync && sc restart emacs && emacsclient -e '(org-roam-db-sync)'" && doom sync } ''; shellAliases = { edit = "emacsclient -t"; e = "edit"; }; }; }; services.emacs = { enable = true; package = pkgs.emacsWithDoom { doomDir = ../../dotfiles/doom; doomLocalDir = "~/.local/share/nix-doom"; emacs = pkgs.emacs-gtk; extraPackages = epkgs: let extraPackages = config.home-manager.users.jawz.programs.emacs.extraPackages epkgs; in extraPackages ++ [ (epkgs.trivialBuild { pname = "stylix-theme"; # add config from doom's ui/doom module src = pkgs.writeText "stylix-theme.el" config.home-manager.users.jawz.programs.emacs.extraConfig; version = "0.1.0"; packageRequires = extraPackages; }) ]; extraBinPackages = builtins.attrValues { inherit (pkgs.xorg) xwininfo; inherit (pkgs) xdotool xclip wl-clipboard-rs fd # modern find, faster searches fzf # fuzzy finder! super cool and useful ripgrep # modern grep tree-sitter # code parsing based on symbols and shit, I do not get it graphviz # graphs tetex # export pdf languagetool # proofreader for English # lsps yaml-language-server markdownlint-cli ; inherit (pkgs.nodePackages) vscode-json-languageserver prettier # multi-language linter ; }; }; defaultEditor = true; # extraPackages = [ pkgs.base16-stylix-theme ]; }; environment.variables.PATH = [ "\${XDG_CONFIG_HOME}/emacs/bin" ]; }; }