diff --git a/flake-modules/nvim.nix b/flake-modules/nvim.nix index 75fd4e8..89832f3 100644 --- a/flake-modules/nvim.nix +++ b/flake-modules/nvim.nix @@ -17,7 +17,10 @@ }; }; moduleDev = nvimModule { }; - moduleHeadless = nvimModule { jhome.nvim.dev.enable = false; }; + moduleHeadless = nvimModule { + jhome.nvim.dev.enable = false; + jhome.nvim.reduceSize = true; + }; moduleNoLsp = nvimModule { jhome.nvim.dev.bundleLSPs = false; }; moduleNoTSGrammars = nvimModule { jhome.nvim.dev.bundleGrammars = false; }; moduleNoBundledBins = nvimModule { diff --git a/flake.lock b/flake.lock index d99bcc6..6a0bb47 100644 --- a/flake.lock +++ b/flake.lock @@ -281,11 +281,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1739484910, - "narHash": "sha256-wjWLzdM7PIq4ZAe7k3vyjtgVJn6b0UeodtRFlM/6W5U=", + "lastModified": 1739624908, + "narHash": "sha256-f84lBmLl4tkDp1ZU5LBTSFzlxXP4926DVW3KnXrke10=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0b73e36b1962620a8ac551a37229dd8662dac5c8", + "rev": "a60651b217d2e529729cbc7d989c19f3941b9250", "type": "github" }, "original": { @@ -330,11 +330,11 @@ ] }, "locked": { - "lastModified": 1739632145, - "narHash": "sha256-maNBjf9whO303r4+8ekfAZOrf3sHnw6DLiSph5xnXJw=", + "lastModified": 1739708385, + "narHash": "sha256-H6qPfgE8P6rYMpwj9GsmcZEry52O3U82IqJJy6hx/88=", "owner": "nix-community", "repo": "nixvim", - "rev": "b8c55873998948bf14a2b6cf30f9ad5ecdf79818", + "rev": "d636d254088a2fa49b585b79097a2766d4e3af80", "type": "github" }, "original": { diff --git a/home/default.nix b/home/default.nix index 851e89c..d4ec811 100644 --- a/home/default.nix +++ b/home/default.nix @@ -37,6 +37,9 @@ in }; }) (lib.mkIf cfg.enable { + # Add gopass if pass is enabled + packages = lib.optional config.programs.password-store.enable pkgs.gopass; + nix.settings.use-xdg-base-directories = fromOs [ "nix" "settings" @@ -69,12 +72,10 @@ in homedir = "${config.xdg.dataHome}/gnupg"; }; # Mail client - himalaya.enable = true; - # Another shell - nushell.enable = true; + himalaya.enable = lib.mkDefault true; # Password manager password-store = { - enable = true; + enable = lib.mkDefault true; package = pkgs.pass-nodmenu; settings.PASSWORD_STORE_DIR = "${config.xdg.dataHome}/pass"; }; @@ -115,11 +116,6 @@ in home = { stateVersion = "22.11"; # Extra packages - packages = [ - pkgs.gopass - pkgs.sshfs - pkgs.unstable.gitoxide - ]; # Extra variables sessionVariables = { CARGO_HOME = "${config.xdg.dataHome}/cargo"; diff --git a/home/gui/default.nix b/home/gui/default.nix index bd81732..c24ddcf 100644 --- a/home/gui/default.nix +++ b/home/gui/default.nix @@ -71,6 +71,8 @@ in enable = true; scripts = builtins.attrValues { inherit (pkgs.mpvScripts) uosc thumbfast; }; }; + # Text editor + nixvim.clipboard.providers.wl-copy.enable = lib.mkDefault true; # Status bar waybar = { enable = true; diff --git a/home/options.nix b/home/options.nix index 4334c16..2f65337 100644 --- a/home/options.nix +++ b/home/options.nix @@ -199,6 +199,7 @@ in [ "typos" ] # low false positive rate typo checker [ "gcc" ] # GNU Compiler Collection [ "git-absorb" ] # fixup! but automatic + [ "gitoxide" ] # git but RiiR [ "man-pages" ] # gimme the man pages [ "man-pages-posix" ] # I said gimme the man pages!!! ]; diff --git a/nvim/mappings.nix b/nvim/mappings.nix index a7d5c36..4571332 100644 --- a/nvim/mappings.nix +++ b/nvim/mappings.nix @@ -7,7 +7,6 @@ let inherit (helpers) mkRaw; cfg = config.jhome.nvim; - dev = cfg.dev.enable; in { config.keymaps = @@ -202,21 +201,21 @@ in ''; options.desc = "Find Quickfix"; } - # Nvim Silicon - { - mode = "v"; - key = "sc"; - action = - mkRaw - # lua - '' - require('nvim-silicon').clip - - ''; - options.desc = "Snap Code (to clipboard)"; - } ] - ++ lib.optional dev { + # Nvim Silicon + ++ lib.optional (!cfg.reduceSize) { + mode = "v"; + key = "sc"; + action = + mkRaw + # lua + '' + require('nvim-silicon').clip + + ''; + options.desc = "Snap Code (to clipboard)"; + } + ++ lib.optional cfg.dev.enable { mode = "n"; key = "w"; action = diff --git a/nvim/options.nix b/nvim/options.nix index 1e54e30..292a80e 100644 --- a/nvim/options.nix +++ b/nvim/options.nix @@ -12,6 +12,7 @@ in { options.jhome.nvim = { enable = mkDisableOption "jalil's Neovim configuration"; + reduceSize = mkEnableOption "reduce size by disabling big modules"; dev = mkOption { type = types.submodule { options = { diff --git a/nvim/standalone.nix b/nvim/standalone.nix index 8e25d9e..cec3117 100644 --- a/nvim/standalone.nix +++ b/nvim/standalone.nix @@ -1,4 +1,14 @@ -{ pkgs, ... }: +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.jhome.nvim; + plugins = pkgs.vimPlugins; + extraPlugins = import ./extraPlugins { inherit pkgs; }; +in { imports = [ ./options.nix @@ -8,91 +18,87 @@ ./augroups.nix ]; - config = { - withRuby = false; - globals.mapleader = " "; - # Appearance - colorschemes.gruvbox = { - enable = true; - settings = { - bold = true; - transparent_mode = true; - terminal_colors = true; + config = lib.mkMerge [ + { + withRuby = false; + globals.mapleader = " "; + # Appearance + colorschemes.gruvbox = { + enable = true; + settings = { + bold = true; + transparent_mode = true; + terminal_colors = true; + }; }; - }; - clipboard.providers.wl-copy.enable = true; - opts = { - number = true; - relativenumber = true; - colorcolumn = "+1"; - cursorline = true; - wrap = false; - splitright = true; - # Tabs & indentation - smarttab = true; - autoindent = true; - smartindent = true; - # Search path - path = ".,/usr/include,**"; - wildmenu = true; - hlsearch = true; - incsearch = true; - ignorecase = true; # Search ignores cases - smartcase = true; # Unless it has a capital letter - # Enable local configuration :h 'exrc' - exrc = true; # safe since nvim 0.9 - }; - extraPlugins = - let - plugins = pkgs.vimPlugins; - extraPlugins = import ./extraPlugins { inherit pkgs; }; - in - [ + opts = { + number = true; + relativenumber = true; + colorcolumn = "+1"; + cursorline = true; + wrap = false; + splitright = true; + # Tabs & indentation + smarttab = true; + autoindent = true; + smartindent = true; + # Search path + path = ".,/usr/include,**"; + wildmenu = true; + hlsearch = true; + incsearch = true; + ignorecase = true; # Search ignores cases + smartcase = true; # Unless it has a capital letter + # Enable local configuration :h 'exrc' + exrc = true; # safe since nvim 0.9 + }; + extraPlugins = [ plugins.nui-nvim plugins.nvim-web-devicons - plugins.vim-jjdescription - extraPlugins.nvim-silicon + plugins.vim-jjdescription # FIXME: included since neovim nightly ]; - # Formatting & linters - extraPackages = [ - pkgs.luajitPackages.jsregexp - pkgs.silicon - ]; - extraConfigLuaPre = - # lua - '' - -- Lua Pre Config - if vim.fn.has 'termguicolors' then - -- Enable RGB colors - vim.g.termguicolors = true - end + extraPackages = [ pkgs.luajitPackages.jsregexp ]; + extraConfigLuaPre = + # lua + '' + -- Lua Pre Config + if vim.fn.has 'termguicolors' then + -- Enable RGB colors + vim.g.termguicolors = true + end - -- Useful function - local has_words_before = function() - -- unpack = unpack or table.unpack - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 - and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil - end - -- END: Lua Pre Config - ''; - extraConfigLua = - # lua - '' - -- Lua Config - require("nvim-silicon").setup { - theme = "gruvbox-dark", - pad_horiz = 16, - pad_vert = 16, - -- Current buffer name - window_title = function() - return vim.fn.fnamemodify( - vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()), - ":t" - ) - end, - } - -- END: Lua Config - ''; - }; + -- Useful function + local has_words_before = function() + -- unpack = unpack or table.unpack + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 + and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil + end + -- END: Lua Pre Config + ''; + } + # Big packages that are kinda unnecessary + (lib.mkIf (!cfg.reduceSize) { + extraPlugins = [ extraPlugins.nvim-silicon ]; + extraPackages = [ pkgs.silicon ]; + extraConfigLua = + # lua + '' + -- Lua Config + require("nvim-silicon").setup { + theme = "gruvbox-dark", + pad_horiz = 16, + pad_vert = 16, + -- Current buffer name + window_title = function() + return vim.fn.fnamemodify( + vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()), + ":t" + ) + end, + } + -- END: Lua Config + ''; + }) + ]; }