modules/output: Allow to specify text to add as extra files (#343)

To enable some features (like adding tree-sitter queries) we need to add
files to specific directories in the runtime path (queries/lang/file.scm
for tree-sitter queries for example).

This commit adds support for specifying such files. You must be careful
to not have any collisions between `files` and `extraFiles`.
This commit is contained in:
traxys 2023-04-21 20:04:58 +02:00 committed by GitHub
parent 52120a891d
commit 5a498edd14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 8 deletions

View file

@ -86,6 +86,12 @@ in {
description = "Extra lua packages to include with neovim"; description = "Extra lua packages to include with neovim";
default = _: []; default = _: [];
}; };
extraFiles = mkOption {
type = types.attrsOf types.str;
description = "Extra files to add to the runtime path";
default = {};
};
}; };
config = let config = let

View file

@ -0,0 +1,9 @@
{
query = {
extraFiles = {
"queries/lua/injections.scm" = ''
;; extends
'';
};
};
}

View file

@ -26,12 +26,24 @@ in {
configFiles = let configFiles = let
cfg = config.programs.nixvim; cfg = config.programs.nixvim;
in in
lib.mapAttrs'
( (
_: file: lib.mapAttrs'
lib.nameValuePair (
"nvim/${file.path}" _: file:
{text = file.content;} lib.nameValuePair
"nvim/${file.path}"
{text = file.content;}
)
cfg.files
) )
cfg.files; // (
lib.mapAttrs'
(
path: content:
lib.nameValuePair
"nvim/${path}"
{text = content;}
)
cfg.extraFiles
);
} }

View file

@ -57,8 +57,9 @@ in {
# A directory with all the files in it # A directory with all the files in it
filesPlugin = pkgs.buildEnv { filesPlugin = pkgs.buildEnv {
name = "nixvim-config"; name = "nixvim-config";
paths = lib.mapAttrsToList (_: file: file.plugin) files; paths =
ignoreCollisions = true; # Collisions can't happen by construction (lib.mapAttrsToList (_: file: file.plugin) files)
++ (lib.mapAttrsToList (path: content: pkgs.writeTextDir path content) config.extraFiles);
}; };
}; };
} }