flake: refactor package

- loads init.lua directly,
  before it loads a lua file -> vimscript (`customRC`) -> init.lua

- split the wrapper into its own package,
  makes `src` and `runtimeDeps` overridable

- inherit args into `makeNeovimConfig`,
  makes e.g. `vimAlias` in `wrapNeovimUnstable` work
This commit is contained in:
Guanran Wang 2024-04-10 18:29:50 +08:00
parent dc5c35f23d
commit 3fbc02368d
Signed by: nyancat
GPG key ID: 91F97D9ED12639CF
2 changed files with 34 additions and 25 deletions

View file

@ -22,9 +22,7 @@
inherit (inputs.nixpkgs) lib; inherit (inputs.nixpkgs) lib;
pkgs = inputs.nixpkgs.legacyPackages.${system}; pkgs = inputs.nixpkgs.legacyPackages.${system};
treefmtEval = inputs.treefmt-nix.lib.evalModule pkgs ./treefmt.nix; treefmtEval = inputs.treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
in {
### nix {run,shell,build}
packages.default = let
runtimeDeps = with pkgs; [ runtimeDeps = with pkgs; [
# mason / tree-sitter # mason / tree-sitter
gcc gcc
@ -35,20 +33,13 @@
ripgrep ripgrep
fd fd
]; ];
src = lib.fileset.toSource { src = lib.fileset.toSource {
fileset = lib.fileset.fileFilter (file: file.hasExt "lua") ./.; fileset = lib.fileset.fileFilter (file: file.hasExt "lua") ./.;
root = ./.; root = ./.;
}; };
in in {
pkgs.wrapNeovimUnstable pkgs.neovim-unwrapped ### nix {run,shell,build}
(pkgs.neovimUtils.makeNeovimConfig { packages.default = pkgs.callPackage ./package.nix {inherit runtimeDeps src;};
customRC = ''
set runtimepath^=${src}
source ${src}/init.lua
'';
}
// {wrapperArgs = ["--prefix" "PATH" ":" "${lib.makeBinPath runtimeDeps}"];});
### nix fmt ### nix fmt
formatter = treefmtEval.config.build.wrapper; formatter = treefmtEval.config.build.wrapper;

18
package.nix Normal file
View file

@ -0,0 +1,18 @@
{
lib,
wrapNeovimUnstable,
neovim-unwrapped,
neovimUtils,
runtimeDeps ? null,
src ? null,
...
} @ args:
wrapNeovimUnstable neovim-unwrapped (neovimUtils.makeNeovimConfig args
// {
# FIXME: append instead of override the entire wrapperArgs
wrapperArgs = ["--prefix" "PATH" ":" "${lib.makeBinPath runtimeDeps}"];
luaRcContent = ''
vim.cmd [[set runtimepath^=${src}]]
${builtins.readFile "${src}/init.lua"}
'';
})