diff --git a/flake/perSystem.nix b/flake/perSystem.nix index a026f30..4a316d0 100644 --- a/flake/perSystem.nix +++ b/flake/perSystem.nix @@ -44,7 +44,7 @@ inherit inputs rootPath; srcs = self.callPackage (rootPath + "/_sources/generated.nix") { }; inherit (inputs'.nixvim.legacyPackages) makeNixvim makeNixvimWithModule; - inherit (self'.legacyPackages) nixvimPlugins; + inherit (self'.legacyPackages) nixvimPlugins editor-runtime; neovim_git = inputs'.neovim-nightly.packages.default; }); in diff --git a/home/david/configurations/Tytonidae/default.nix b/home/david/configurations/Tytonidae/default.nix index e454ebd..2e0dd36 100644 --- a/home/david/configurations/Tytonidae/default.nix +++ b/home/david/configurations/Tytonidae/default.nix @@ -57,7 +57,6 @@ firefox.enable = true; openssh.enable = true; helix.enable = true; - doom.enable = true; # spacemacs.enable = true; }; }; diff --git a/home/david/modules/programs/doom/default.nix b/home/david/modules/programs/doom/default.nix deleted file mode 100644 index 2524c21..0000000 --- a/home/david/modules/programs/doom/default.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: -let - cfg = config.david.programs.doom; - - inherit (inputs) emacs-overlay nixpkgs; - inherit (pkgs) system; - pkgs' = import nixpkgs { - inherit system; - overlays = [ emacs-overlay.overlays.default ]; - }; -in -{ - options = { - david.programs.doom = { - enable = lib.mkEnableOption "doom"; - }; - }; - config = lib.mkIf cfg.enable { - stylix.targets.emacs.enable = false; - services.emacs.enable = true; - programs.doom-emacs = { - enable = true; - emacs = pkgs'.emacs-igc-pgtk; - extraPackages = - ep: with ep; [ - melpaPackages.telega - melpaPackages.nixos-options - ]; - extraBinPackages = with pkgs; [ - editor-runtime - - git - ripgrep - fd - imagemagick - ]; - doomDir = ./config; - provideEmacs = true; - }; - }; -} diff --git a/home/modules/default.nix b/home/modules/default.nix index 75d77dc..cf2a7ed 100644 --- a/home/modules/default.nix +++ b/home/modules/default.nix @@ -8,7 +8,6 @@ (with inputs; [ sops-nix.homeManagerModules.sops betterfox-nix.homeModules.betterfox - nix-doom.homeModule ]) ++ lib.youthlic.loadImports ./.; diff --git a/nixos/configurations/Tytonidae/default.nix b/nixos/configurations/Tytonidae/default.nix index 4332e69..e92d2f8 100644 --- a/nixos/configurations/Tytonidae/default.nix +++ b/nixos/configurations/Tytonidae/default.nix @@ -92,6 +92,7 @@ wineWow64Packages.waylandFull iperf3 nixvim + doom-emacs neovide sbctl diff --git a/overlays/additions/default.nix b/overlays/additions/default.nix index d1f5660..291aace 100644 --- a/overlays/additions/default.nix +++ b/overlays/additions/default.nix @@ -11,6 +11,7 @@ in ./wallpapers.nix ./rime-yuhaostar.nix ./nixvim.nix + ./doom-emacs.nix ./pkgsNoCuda.nix ] diff --git a/overlays/additions/doom-emacs.nix b/overlays/additions/doom-emacs.nix new file mode 100644 index 0000000..da36a5a --- /dev/null +++ b/overlays/additions/doom-emacs.nix @@ -0,0 +1,8 @@ +{ outputs, ... }: +_final: prev: +let + inherit (prev.stdenv.hostPlatform) system; +in +{ + inherit (outputs.packages.${system}) doom-emacs; +} diff --git a/home/david/modules/programs/doom/config/config.el b/pkgs/doom-emacs/config/config.el similarity index 72% rename from home/david/modules/programs/doom/config/config.el rename to pkgs/doom-emacs/config/config.el index b4fff06..bf5a38c 100644 --- a/home/david/modules/programs/doom/config/config.el +++ b/pkgs/doom-emacs/config/config.el @@ -83,3 +83,31 @@ NOTE: wayland only." (map! :map global-map "C-c n" #'helm-nixos-options) + +(with-eval-after-load 'evil + (scroll-on-jump-advice-add evil-redo) + (scroll-on-jump-advice-add evil-jump-item) + (scroll-on-jump-advice-add evil-jump-forward) + (scroll-on-jump-advice-add evil-jump-backward) + (scroll-on-jump-advice-add evil-ex-search-next) + (scroll-on-jump-advice-add evil-ex-search-previous) + (scroll-on-jump-advice-add evil-forward-paragraph) + (scroll-on-jump-advice-add evil-backward-paragraph) + (scroll-on-jump-advice-add evil-goto-mark) + + ;; Actions that themselves scroll. + (scroll-on-jump-with-scroll-advice-add evil-goto-line) + (scroll-on-jump-with-scroll-advice-add evil-goto-first-line) + (scroll-on-jump-with-scroll-advice-add evil-scroll-down) + (scroll-on-jump-with-scroll-advice-add evil-scroll-up) + (scroll-on-jump-with-scroll-advice-add evil-scroll-line-to-center) + (scroll-on-jump-with-scroll-advice-add evil-scroll-line-to-top) + (scroll-on-jump-with-scroll-advice-add evil-scroll-line-to-bottom) + (scroll-on-jump-with-scroll-advice-add evil-scroll-page-down) + (scroll-on-jump-with-scroll-advice-add evil-scroll-page-up)) +(with-eval-after-load 'goto-chg + (scroll-on-jump-advice-add goto-last-change) + (scroll-on-jump-advice-add goto-last-change-reverse)) + +(global-set-key (kbd "") (scroll-on-jump-interactive 'diff-hl-next-hunk)) +(global-set-key (kbd "") (scroll-on-jump-interactive 'diff-hl-previous-hunk)) diff --git a/home/david/modules/programs/doom/config/init.el b/pkgs/doom-emacs/config/init.el similarity index 100% rename from home/david/modules/programs/doom/config/init.el rename to pkgs/doom-emacs/config/init.el diff --git a/pkgs/doom-emacs/package.nix b/pkgs/doom-emacs/package.nix new file mode 100644 index 0000000..9ef661d --- /dev/null +++ b/pkgs/doom-emacs/package.nix @@ -0,0 +1,63 @@ +{ + inputs, + system, + editor-runtime, + symlinkJoin, + makeWrapper, +}: +let + inherit (inputs) nixpkgs emacs-overlay nix-doom; + pkgs = import nixpkgs { + inherit system; + overlays = [ + emacs-overlay.overlays.default + nix-doom.overlays.default + ]; + }; + emacs = pkgs.emacs-igc-pgtk; + doom-emacs = pkgs.doomEmacs { + doomDir = ./config; + doomLocalDir = "~/.local/share/nix-doom"; + emacs = emacs; + extraPackages = + ep: with ep; [ + melpaPackages.telega + melpaPackages.nixos-options + melpaPackages.scroll-on-jump + ]; + extraBinPackages = + (with pkgs; [ + git + ripgrep + fd + imagemagick + ]) + ++ [ editor-runtime ]; + }; +in +symlinkJoin { + name = "doom-emacs"; + paths = [ doom-emacs ]; + inherit (doom-emacs) meta; + buildInputs = [ + makeWrapper + ]; + env = { + ORIGINAL_EMACS = toString emacs; + }; + postBuild = '' + wrapProgram $out/bin/doom-emacs \ + --unset EMACSNATIVELOADPATH \ + --unset EMACSLOADPATH \ + --inherit-argv0 + + mkdir -p $out/share/applications + cp ''${ORIGINAL_EMACS}/share/applications/emacs.desktop \ + $out/share/applications/doom-emacs.desktop + cp -rt $out/share ''${ORIGINAL_EMACS}/share/icons + substituteInPlace $out/share/applications/doom-emacs.desktop \ + --replace 'Name=Emacs' 'Name=Doom Emacs' \ + --replace 'Exec=emacs' "Exec=$out/bin/doom-emacs" \ + --replace 'StartupWMClass=Emacs' "StartupWMClass=Doom Emacs" + ''; +}