forked from mirrors_public/oddlama_nix-config
feat(neovim): abstract custom config boilerplate away
This commit is contained in:
parent
7b7458ccd5
commit
603b59cbe9
3 changed files with 89 additions and 24 deletions
|
@ -3,15 +3,72 @@
|
|||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
}: let
|
||||
inherit
|
||||
(lib)
|
||||
concatMapStrings
|
||||
flip
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
mkPackageOption
|
||||
types
|
||||
;
|
||||
|
||||
cfg = config.programs.neovim-custom;
|
||||
|
||||
initLuaContent = ''
|
||||
${cfg.initEarly}
|
||||
|
||||
-- Begin plugin configuration
|
||||
${concatMapStrings (x: "${x.config}\n") (cfg.config.plugins or [])}
|
||||
-- End plugin configuration
|
||||
|
||||
${cfg.init}
|
||||
'';
|
||||
|
||||
nvimConfig =
|
||||
pkgs.neovimUtils.makeNeovimConfig cfg.config
|
||||
// {
|
||||
wrapRc = false;
|
||||
wrapperArgs = ["--add-flags" "-u ${pkgs.writeText "init.lua" initLuaContent}"];
|
||||
};
|
||||
|
||||
finalPackage =
|
||||
flip pkgs.wrapNeovimUnstable nvimConfig
|
||||
(cfg.package.overrideAttrs (_final: prev: {
|
||||
nativeBuildInputs = (prev.nativeBuildInputs or []) ++ [pkgs.makeWrapper];
|
||||
postInstall =
|
||||
(prev.postInstall or "")
|
||||
+ ''
|
||||
wrapProgram $out/bin/nvim --add-flags "--clean"
|
||||
'';
|
||||
}));
|
||||
in {
|
||||
options.programs.neovim-custom = {
|
||||
enable = lib.mkEnableOption "Neovim";
|
||||
package = lib.mkPackageOption pkgs "neovim" {};
|
||||
enable = mkEnableOption "Neovim";
|
||||
package = mkPackageOption pkgs "neovim-unwrapped" {};
|
||||
config = mkOption {
|
||||
description = "The neovim configuration to use (passed to makeNeovimConfig and then to wrapNeovimUnstable)";
|
||||
default = {};
|
||||
type = types.anything;
|
||||
};
|
||||
initEarly = mkOption {
|
||||
description = "The early init.lua content that will be added before plugin configs.";
|
||||
default = "";
|
||||
type = types.lines;
|
||||
};
|
||||
init = mkOption {
|
||||
description = "The init.lua content, added after plugin configs.";
|
||||
default = "";
|
||||
type = types.lines;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.programs.neovim-custom.enable {
|
||||
config = mkIf cfg.enable {
|
||||
home = {
|
||||
# TODO packages = [config.programs.neovim-custom.package];
|
||||
# XXX: TODO packages = [finalPackage];
|
||||
shellAliases.E = "${finalPackage}/bin/nvim";
|
||||
sessionVariables.EDITOR = "nvim";
|
||||
shellAliases.vimdiff = "nvim -d";
|
||||
};
|
||||
|
|
|
@ -33,7 +33,12 @@ opt.title = false -- Sets the window title
|
|||
--opt.titlestring = "%t%( %M%)%( (%{expand(\"%:~:.:h\")})%) - nvim" -- The format for the window title
|
||||
|
||||
-- Hide line numbers in terminal windows
|
||||
vim.api.nvim_exec([[au BufEnter term://* setlocal nonumber]], false)
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
pattern = "term://*",
|
||||
callback = function()
|
||||
vim.bo.number = false
|
||||
end,
|
||||
})
|
||||
|
||||
----------------------------------------------------------------------------------------------------
|
||||
-- Editing behavior
|
||||
|
|
|
@ -3,23 +3,27 @@
|
|||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.neovim-custom.package = let
|
||||
nvimConfig =
|
||||
pkgs.neovimUtils.makeNeovimConfig {
|
||||
wrapRc = false;
|
||||
withPython3 = true;
|
||||
withRuby = true;
|
||||
withNodeJs = true;
|
||||
#extraPython3Packages = p: [];
|
||||
#plugins = [
|
||||
# { plugin = pkgs.; config = ''''; optional = false; }
|
||||
#];
|
||||
}
|
||||
// {
|
||||
wrapperArgs = ["--add-flags" "--clean -u ${./aaa/init.lua}"];
|
||||
};
|
||||
in
|
||||
pkgs.wrapNeovimUnstable pkgs.neovim-unwrapped nvimConfig;
|
||||
programs.neovim-custom = {
|
||||
config = {
|
||||
withPython3 = false;
|
||||
withRuby = false;
|
||||
withNodeJs = false;
|
||||
#extraPython3Packages = p: [];
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = neo-tree-nvim;
|
||||
config =
|
||||
/*
|
||||
lua
|
||||
*/
|
||||
''
|
||||
require("neo-tree").setup {}
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
init = builtins.readFile ./aaa/init.lua;
|
||||
};
|
||||
|
||||
home.packages = let
|
||||
nvimConfig = pkgs.neovimUtils.makeNeovimConfig {
|
||||
|
@ -36,5 +40,4 @@
|
|||
"nvim/init.lua".source = ./init.lua;
|
||||
"nvim/lua".source = ./lua;
|
||||
};
|
||||
home.sessionVariables.E = "${config.programs.neovim-custom.package}/bin/nvim";
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue