From bb1a36330b233396917c8c1964728daa5cc37968 Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Tue, 4 Feb 2025 21:57:59 -0500 Subject: [PATCH] neovim first init --- overlays/pkgs.nix | 17 +++- .../neovim/nmasur}/neovim/config/align.nix | 0 .../nmasur}/neovim/config/bufferline.nix | 0 .../neovim/nmasur}/neovim/config/colors.nix | 2 +- .../nmasur}/neovim/config/completion.nix | 0 .../neovim/nmasur}/neovim/config/github.lua | 0 .../neovim/nmasur}/neovim/config/gitsigns.lua | 0 .../neovim/nmasur}/neovim/config/gitsigns.nix | 0 .../nmasur}/neovim/config/kubernetes.lua | 0 .../neovim/nmasur}/neovim/config/lsp.lua | 0 .../neovim/nmasur}/neovim/config/lsp.nix | 0 .../neovim/nmasur}/neovim/config/misc.nix | 0 .../nmasur}/neovim/config/statusline.nix | 0 .../neovim/nmasur}/neovim/config/syntax.nix | 0 .../nmasur}/neovim/config/telescope.lua | 0 .../nmasur}/neovim/config/telescope.nix | 0 .../nmasur}/neovim/config/toggleterm.lua | 0 .../nmasur}/neovim/config/toggleterm.nix | 0 .../neovim/nmasur}/neovim/config/tree.nix | 0 .../neovim/nmasur}/neovim/lua/keybinds.lua | 0 .../neovim/nmasur}/neovim/lua/settings.lua | 0 .../neovim/nmasur/neovim/old-default.nix | 0 .../editors/neovim/nmasur/neovim/package.nix | 26 +++---- .../plugin/after/queries/nix/injections.scm | 0 .../misc/{loadkey.nix => loadkey/package.nix} | 0 .../modules/nmasur/presets/programs/aerc.nix | 2 +- .../nmasur/presets/programs/neovim.nix | 78 +++++++++++++++++++ 27 files changed, 107 insertions(+), 18 deletions(-) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/align.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/bufferline.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/colors.nix (93%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/completion.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/github.lua (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/gitsigns.lua (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/gitsigns.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/kubernetes.lua (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/lsp.lua (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/lsp.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/misc.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/statusline.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/syntax.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/telescope.lua (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/telescope.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/toggleterm.lua (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/toggleterm.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/config/tree.nix (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/lua/keybinds.lua (100%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/lua/settings.lua (100%) rename modules/common/neovim/default.nix => pkgs/applications/editors/neovim/nmasur/neovim/old-default.nix (100%) rename modules/common/neovim/package/default.nix => pkgs/applications/editors/neovim/nmasur/neovim/package.nix (78%) rename {modules/common => pkgs/applications/editors/neovim/nmasur}/neovim/plugin/after/queries/nix/injections.scm (100%) rename pkgs/tools/misc/{loadkey.nix => loadkey/package.nix} (100%) create mode 100644 platforms/home-manager/modules/nmasur/presets/programs/neovim.nix diff --git a/overlays/pkgs.nix b/overlays/pkgs.nix index 4027003..9fcc572 100644 --- a/overlays/pkgs.nix +++ b/overlays/pkgs.nix @@ -1,7 +1,18 @@ _final: prev: +let + lib = prev.lib; + packages = lib.pipe [ + (lib.filesystem.listFilesRecursive ../pkgs) + (builtins.filter (name: (lib.hasSuffix "package.nix" name))) + (builtins.map (package: prev.callPackage package)) + ]; +in + { - loadkey = prev.callPackage ../pkgs/tools/misc/loadkey.nix; - aws-ec2 = prev.callPackage ../pkgs/tools/misc/aws-ec2/; - docker-cleanup = prev.callPackage ../pkgs/tools/misc/docker-cleanup/; + + loadkey = prev.callPackage ../pkgs/tools/misc/loadkey.nix { }; + aws-ec2 = prev.callPackage ../pkgs/tools/misc/aws-ec2 { }; + docker-cleanup = prev.callPackage ../pkgs/tools/misc/docker-cleanup { }; + nmasur-neovim = prev.callPackage ../pkgs/applications/editors/neovim/nmasur/neovim { }; } diff --git a/modules/common/neovim/config/align.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/align.nix similarity index 100% rename from modules/common/neovim/config/align.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/align.nix diff --git a/modules/common/neovim/config/bufferline.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/bufferline.nix similarity index 100% rename from modules/common/neovim/config/bufferline.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/bufferline.nix diff --git a/modules/common/neovim/config/colors.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/colors.nix similarity index 93% rename from modules/common/neovim/config/colors.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/colors.nix index 7aa048c..ffbcb7f 100644 --- a/modules/common/neovim/config/colors.nix +++ b/pkgs/applications/editors/neovim/nmasur/neovim/config/colors.nix @@ -13,7 +13,7 @@ description = "Attrset of base16 colorscheme key value pairs."; }; - config = { + config = lib.mkIf config.colors { plugins = [ pkgs.vimPlugins.base16-nvim ]; setup.base16-colorscheme = config.colors; diff --git a/modules/common/neovim/config/completion.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/completion.nix similarity index 100% rename from modules/common/neovim/config/completion.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/completion.nix diff --git a/modules/common/neovim/config/github.lua b/pkgs/applications/editors/neovim/nmasur/neovim/config/github.lua similarity index 100% rename from modules/common/neovim/config/github.lua rename to pkgs/applications/editors/neovim/nmasur/neovim/config/github.lua diff --git a/modules/common/neovim/config/gitsigns.lua b/pkgs/applications/editors/neovim/nmasur/neovim/config/gitsigns.lua similarity index 100% rename from modules/common/neovim/config/gitsigns.lua rename to pkgs/applications/editors/neovim/nmasur/neovim/config/gitsigns.lua diff --git a/modules/common/neovim/config/gitsigns.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/gitsigns.nix similarity index 100% rename from modules/common/neovim/config/gitsigns.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/gitsigns.nix diff --git a/modules/common/neovim/config/kubernetes.lua b/pkgs/applications/editors/neovim/nmasur/neovim/config/kubernetes.lua similarity index 100% rename from modules/common/neovim/config/kubernetes.lua rename to pkgs/applications/editors/neovim/nmasur/neovim/config/kubernetes.lua diff --git a/modules/common/neovim/config/lsp.lua b/pkgs/applications/editors/neovim/nmasur/neovim/config/lsp.lua similarity index 100% rename from modules/common/neovim/config/lsp.lua rename to pkgs/applications/editors/neovim/nmasur/neovim/config/lsp.lua diff --git a/modules/common/neovim/config/lsp.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/lsp.nix similarity index 100% rename from modules/common/neovim/config/lsp.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/lsp.nix diff --git a/modules/common/neovim/config/misc.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/misc.nix similarity index 100% rename from modules/common/neovim/config/misc.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/misc.nix diff --git a/modules/common/neovim/config/statusline.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/statusline.nix similarity index 100% rename from modules/common/neovim/config/statusline.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/statusline.nix diff --git a/modules/common/neovim/config/syntax.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/syntax.nix similarity index 100% rename from modules/common/neovim/config/syntax.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/syntax.nix diff --git a/modules/common/neovim/config/telescope.lua b/pkgs/applications/editors/neovim/nmasur/neovim/config/telescope.lua similarity index 100% rename from modules/common/neovim/config/telescope.lua rename to pkgs/applications/editors/neovim/nmasur/neovim/config/telescope.lua diff --git a/modules/common/neovim/config/telescope.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/telescope.nix similarity index 100% rename from modules/common/neovim/config/telescope.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/telescope.nix diff --git a/modules/common/neovim/config/toggleterm.lua b/pkgs/applications/editors/neovim/nmasur/neovim/config/toggleterm.lua similarity index 100% rename from modules/common/neovim/config/toggleterm.lua rename to pkgs/applications/editors/neovim/nmasur/neovim/config/toggleterm.lua diff --git a/modules/common/neovim/config/toggleterm.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/toggleterm.nix similarity index 100% rename from modules/common/neovim/config/toggleterm.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/toggleterm.nix diff --git a/modules/common/neovim/config/tree.nix b/pkgs/applications/editors/neovim/nmasur/neovim/config/tree.nix similarity index 100% rename from modules/common/neovim/config/tree.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/config/tree.nix diff --git a/modules/common/neovim/lua/keybinds.lua b/pkgs/applications/editors/neovim/nmasur/neovim/lua/keybinds.lua similarity index 100% rename from modules/common/neovim/lua/keybinds.lua rename to pkgs/applications/editors/neovim/nmasur/neovim/lua/keybinds.lua diff --git a/modules/common/neovim/lua/settings.lua b/pkgs/applications/editors/neovim/nmasur/neovim/lua/settings.lua similarity index 100% rename from modules/common/neovim/lua/settings.lua rename to pkgs/applications/editors/neovim/nmasur/neovim/lua/settings.lua diff --git a/modules/common/neovim/default.nix b/pkgs/applications/editors/neovim/nmasur/neovim/old-default.nix similarity index 100% rename from modules/common/neovim/default.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/old-default.nix diff --git a/modules/common/neovim/package/default.nix b/pkgs/applications/editors/neovim/nmasur/neovim/package.nix similarity index 78% rename from modules/common/neovim/package/default.nix rename to pkgs/applications/editors/neovim/nmasur/neovim/package.nix index 471f581..8119dc7 100644 --- a/modules/common/neovim/package/default.nix +++ b/pkgs/applications/editors/neovim/nmasur/neovim/package.nix @@ -28,7 +28,7 @@ { pkgs, - colors, + colors ? null, terraform ? false, github ? false, kubernetes ? false, @@ -46,17 +46,17 @@ pkgs.neovimBuilder { kubernetes ; imports = [ - ../config/align.nix - ../config/bufferline.nix - ../config/colors.nix - ../config/completion.nix - ../config/gitsigns.nix - ../config/lsp.nix - ../config/misc.nix - ../config/statusline.nix - ../config/syntax.nix - ../config/telescope.nix - ../config/toggleterm.nix - ../config/tree.nix + ./config/align.nix + ./config/bufferline.nix + ./config/colors.nix + ./config/completion.nix + ./config/gitsigns.nix + ./config/lsp.nix + ./config/misc.nix + ./config/statusline.nix + ./config/syntax.nix + ./config/telescope.nix + ./config/toggleterm.nix + ./config/tree.nix ]; } diff --git a/modules/common/neovim/plugin/after/queries/nix/injections.scm b/pkgs/applications/editors/neovim/nmasur/neovim/plugin/after/queries/nix/injections.scm similarity index 100% rename from modules/common/neovim/plugin/after/queries/nix/injections.scm rename to pkgs/applications/editors/neovim/nmasur/neovim/plugin/after/queries/nix/injections.scm diff --git a/pkgs/tools/misc/loadkey.nix b/pkgs/tools/misc/loadkey/package.nix similarity index 100% rename from pkgs/tools/misc/loadkey.nix rename to pkgs/tools/misc/loadkey/package.nix diff --git a/platforms/home-manager/modules/nmasur/presets/programs/aerc.nix b/platforms/home-manager/modules/nmasur/presets/programs/aerc.nix index 7783e87..9fc15b3 100644 --- a/platforms/home-manager/modules/nmasur/presets/programs/aerc.nix +++ b/platforms/home-manager/modules/nmasur/presets/programs/aerc.nix @@ -194,7 +194,7 @@ in }; }; - xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.isLinux && config.gui.enable) { + xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.isLinux) { name = "aerc"; exec = "${config.terminalLaunchCommand} aerc %u"; }; diff --git a/platforms/home-manager/modules/nmasur/presets/programs/neovim.nix b/platforms/home-manager/modules/nmasur/presets/programs/neovim.nix new file mode 100644 index 0000000..08bf552 --- /dev/null +++ b/platforms/home-manager/modules/nmasur/presets/programs/neovim.nix @@ -0,0 +1,78 @@ +{ + config, + pkgs, + lib, + ... +}: + +let + cfg = config.nmasur.presets.programs.neovim; +in + +{ + + options.nmasur.presets.programs.neovim = { + enable = lib.mkEnableOption "Neovim text editor"; + package = lib.mkPackageOption pkgs "neovim" { }; + colors = lib.mkOption { + type = lib.types.attrs; + description = "Base16 color scheme."; + default = config.theme.colors; + }; + github.enable = lib.mkEnableOption "GitHub integration"; + terraform.enable = lib.mkEnableOption "Terraform integration"; + kubernetes.enable = lib.mkEnableOption "Kubernetes integration"; + }; + + config = lib.mkIf cfg.enable { + + home.packages = [ cfg.package ]; + + cfg.package = lib.mkDefault pkgs.nmasur-neovim.override { + colors = cfg.colors; + github = cfg.github.enable; + terraform = cfg.terraform.enable; + kubernetes = cfg.kubernetes.enable; + }; + + # Use Neovim as the editor for git commit messages + programs.git.extraConfig.core.editor = "${lib.getExe cfg.package}"; + programs.jujutsu.settings.ui.editor = "${lib.getExe cfg.package}"; + + # Set Neovim as the default app for text editing and manual pages + home.sessionVariables = { + EDITOR = "${lib.getExe cfg.package}"; + MANPAGER = "${lib.getExe cfg.package} +Man!"; + }; + + # Create quick aliases for launching Neovim + programs.fish = { + shellAliases = { + vim = "${lib.getExe cfg.package}"; + nvim = "${lib.getExe cfg.package}"; + }; + shellAbbrs = { + v = lib.mkForce "nvim"; + vl = lib.mkForce "nvim -c 'normal! `0' -c 'bdelete 1'"; + vll = "nvim -c 'Telescope oldfiles'"; + }; + }; + + # Create a desktop option for launching Neovim from a file manager + # (Requires launching the terminal and then executing Neovim) + xdg.desktopEntries.nvim = lib.mkIf (pkgs.stdenv.isLinux) { + name = "Neovim wrapper"; + exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} nvim %F"; # TODO: change to generic + mimeType = [ + "text/plain" + "text/markdown" + ]; + }; + xdg.mimeApps.defaultApplications = { + "text/plain" = [ "nvim.desktop" ]; + "text/markdown" = [ "nvim.desktop" ]; + }; + + }; + +}