fix: reduce size of config
Some checks failed
/ check (nvimDev) (push) Successful in 10s
/ check (nvimHeadless) (push) Failing after 6s
/ check (nvimNoBundledBins) (push) Successful in 8s
/ check (nvimNoLsp) (push) Successful in 8s
/ check (nvimNoTSGrammars) (push) Successful in 9s
/ check (treefmt) (push) Successful in 3s
/ build (audiomenu) (push) Has been skipped
/ build (docs) (push) Has been skipped
/ build (jpassmenu) (push) Has been skipped
/ build (nixosConfigurations.vm.config.system.build.toplevel) (push) Has been skipped
/ build (nvim) (push) Has been skipped
/ report-size (push) Has been skipped

And add more knobs to further reduce the config size.
This commit is contained in:
Jalil David Salamé Messina 2025-02-16 23:19:43 +01:00
parent b6ca45f7fc
commit 5a7f12d997
Signed by: jalil
GPG key ID: F016B9E770737A0B
5 changed files with 99 additions and 88 deletions

View file

@ -17,7 +17,10 @@
}; };
}; };
moduleDev = nvimModule { }; 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; }; moduleNoLsp = nvimModule { jhome.nvim.dev.bundleLSPs = false; };
moduleNoTSGrammars = nvimModule { jhome.nvim.dev.bundleGrammars = false; }; moduleNoTSGrammars = nvimModule { jhome.nvim.dev.bundleGrammars = false; };
moduleNoBundledBins = nvimModule { moduleNoBundledBins = nvimModule {

View file

@ -69,12 +69,10 @@ in
homedir = "${config.xdg.dataHome}/gnupg"; homedir = "${config.xdg.dataHome}/gnupg";
}; };
# Mail client # Mail client
himalaya.enable = true; himalaya.enable = lib.mkDefault true;
# Another shell
nushell.enable = true;
# Password manager # Password manager
password-store = { password-store = {
enable = true; enable = lib.mkDefault true;
package = pkgs.pass-nodmenu; package = pkgs.pass-nodmenu;
settings.PASSWORD_STORE_DIR = "${config.xdg.dataHome}/pass"; settings.PASSWORD_STORE_DIR = "${config.xdg.dataHome}/pass";
}; };

View file

@ -71,6 +71,8 @@ in
enable = true; enable = true;
scripts = builtins.attrValues { inherit (pkgs.mpvScripts) uosc thumbfast; }; scripts = builtins.attrValues { inherit (pkgs.mpvScripts) uosc thumbfast; };
}; };
# Text editor
nvim.clipboard.providers.wl-copy.enable = lib.mkDefault true;
# Status bar # Status bar
waybar = { waybar = {
enable = true; enable = true;

View file

@ -12,6 +12,7 @@ in
{ {
options.jhome.nvim = { options.jhome.nvim = {
enable = mkDisableOption "jalil's Neovim configuration"; enable = mkDisableOption "jalil's Neovim configuration";
reduceSize = mkEnableOption "reduce size by disabling big modules";
dev = mkOption { dev = mkOption {
type = types.submodule { type = types.submodule {
options = { options = {

View file

@ -1,4 +1,14 @@
{ pkgs, ... }: {
lib,
pkgs,
config,
...
}:
let
cfg = config.jhome.nvim;
plugins = pkgs.vimPlugins;
extraPlugins = import ./extraPlugins { inherit pkgs; };
in
{ {
imports = [ imports = [
./options.nix ./options.nix
@ -8,91 +18,88 @@
./augroups.nix ./augroups.nix
]; ];
config = { config = lib.mkMerge [
withRuby = false; {
globals.mapleader = " "; withRuby = false;
# Appearance globals.mapleader = " ";
colorschemes.gruvbox = { # Appearance
enable = true; colorschemes.gruvbox = {
settings = { enable = true;
bold = true; settings = {
transparent_mode = true; bold = true;
terminal_colors = true; transparent_mode = true;
terminal_colors = true;
};
}; };
}; opts = {
clipboard.providers.wl-copy.enable = true; number = true;
opts = { relativenumber = true;
number = true; colorcolumn = "+1";
relativenumber = true; cursorline = true;
colorcolumn = "+1"; wrap = false;
cursorline = true; splitright = true;
wrap = false; # Tabs & indentation
splitright = true; smarttab = true;
# Tabs & indentation autoindent = true;
smarttab = true; smartindent = true;
autoindent = true; # Search path
smartindent = true; path = ".,/usr/include,**";
# Search path wildmenu = true;
path = ".,/usr/include,**"; hlsearch = true;
wildmenu = true; incsearch = true;
hlsearch = true; ignorecase = true; # Search ignores cases
incsearch = true; smartcase = true; # Unless it has a capital letter
ignorecase = true; # Search ignores cases # Enable local configuration :h 'exrc'
smartcase = true; # Unless it has a capital letter exrc = true; # safe since nvim 0.9
# Enable local configuration :h 'exrc' };
exrc = true; # safe since nvim 0.9 extraPlugins = [
};
extraPlugins =
let
plugins = pkgs.vimPlugins;
extraPlugins = import ./extraPlugins { inherit pkgs; };
in
[
plugins.nui-nvim plugins.nui-nvim
plugins.nvim-web-devicons plugins.nvim-web-devicons
plugins.vim-jjdescription plugins.vim-jjdescription # FIXME: included since neovim nightly
extraPlugins.nvim-silicon
]; ];
# Formatting & linters extraPackages = [ pkgs.luajitPackages.jsregexp ];
extraPackages = [ extraConfigLuaPre =
pkgs.luajitPackages.jsregexp # lua
pkgs.silicon ''
]; -- Lua Pre Config
extraConfigLuaPre = if vim.fn.has 'termguicolors' then
# lua -- Enable RGB colors
'' vim.g.termguicolors = true
-- Lua Pre Config end
if vim.fn.has 'termguicolors' then
-- Enable RGB colors
vim.g.termguicolors = true
end
-- Useful function -- Useful function
local has_words_before = function() local has_words_before = function()
-- unpack = unpack or table.unpack -- unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0)) local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 return col ~= 0
and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil
end end
-- END: Lua Pre Config -- END: Lua Pre Config
''; '';
extraConfigLua = }
# lua # Big packages that are kinda unnecessary
'' (lib.mkIf (!cfg.reduceSize) {
-- Lua Config extraPlugins = [ extraPlugins.nvim-silicon ];
require("nvim-silicon").setup { extraPackages = [ pkgs.silicon ];
theme = "gruvbox-dark",
pad_horiz = 16, extraConfigLua =
pad_vert = 16, # lua
-- Current buffer name ''
window_title = function() -- Lua Config
return vim.fn.fnamemodify( require("nvim-silicon").setup {
vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()), theme = "gruvbox-dark",
":t" pad_horiz = 16,
) pad_vert = 16,
end, -- Current buffer name
} window_title = function()
-- END: Lua Config return vim.fn.fnamemodify(
''; vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()),
}; ":t"
)
end,
}
-- END: Lua Config
'';
})
];
} }