{ standalone }: { pkgs, system, unstable, lib, ... }: { imports = [ ./options.nix ./plugins.nix ./mappings.nix ./augroups.nix ]; config = { nixpkgs = lib.optionalAttrs standalone { pkgs = import unstable { inherit system; }; }; 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 [ plugins.nui-nvim plugins.nvim-web-devicons extraPlugins.vim-jjdescription extraPlugins.nvim-silicon ]; # Formatting & linters extraPackages = [ pkgs.luajitPackages.jsregexp pkgs.shfmt pkgs.silicon pkgs.statix pkgs.stylua pkgs.taplo pkgs.typos pkgs.yamlfmt (pkgs.python3.withPackages (p: [ p.jupytext ])) ]; 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 ''; }; }