mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-20 16:15:43 +02:00
modules: add env option
This commit is contained in:
parent
f4f4b4975a
commit
db01a0dd97
3 changed files with 72 additions and 1 deletions
|
@ -28,6 +28,26 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
|
env = mkOption {
|
||||||
|
type =
|
||||||
|
with types;
|
||||||
|
lazyAttrsOf (oneOf [
|
||||||
|
str
|
||||||
|
path
|
||||||
|
int
|
||||||
|
float
|
||||||
|
]);
|
||||||
|
description = "Environment variables to set in the neovim wrapper.";
|
||||||
|
default = { };
|
||||||
|
example = {
|
||||||
|
FOO = 1;
|
||||||
|
PI = 3.14;
|
||||||
|
BAR_PATH = "/home/me/.local/share/bar";
|
||||||
|
INFER_MODE = "local";
|
||||||
|
BAZ_MAX_COUNT = 1000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
extraPlugins = mkOption {
|
extraPlugins = mkOption {
|
||||||
type = with types; listOf (nullOr (either package pluginWithConfigType));
|
type = with types; listOf (nullOr (either package pluginWithConfigType));
|
||||||
default = [ ];
|
default = [ ];
|
||||||
|
|
|
@ -339,7 +339,16 @@ in
|
||||||
initSource;
|
initSource;
|
||||||
|
|
||||||
extraWrapperArgs = builtins.concatStringsSep " " (
|
extraWrapperArgs = builtins.concatStringsSep " " (
|
||||||
(optional (
|
# Setting environment variables in the wrapper
|
||||||
|
(lib.mapAttrsToList (
|
||||||
|
name: value:
|
||||||
|
lib.escapeShellArgs [
|
||||||
|
"--set"
|
||||||
|
name
|
||||||
|
value
|
||||||
|
]
|
||||||
|
) config.env)
|
||||||
|
++ (optional (
|
||||||
config.extraPackages != [ ]
|
config.extraPackages != [ ]
|
||||||
) ''--prefix PATH : "${lib.makeBinPath config.extraPackages}"'')
|
) ''--prefix PATH : "${lib.makeBinPath config.extraPackages}"'')
|
||||||
++ (optional config.wrapRc ''--add-flags -u --add-flags "${initFile}"'')
|
++ (optional config.wrapRc ''--add-flags -u --add-flags "${initFile}"'')
|
||||||
|
|
42
tests/test-sources/env.nix
Normal file
42
tests/test-sources/env.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
env-variables = {
|
||||||
|
env = {
|
||||||
|
FOO = "1";
|
||||||
|
FOO_INT = 42;
|
||||||
|
FOO_FLOAT = 3.14;
|
||||||
|
STRING_PATH = "/home/me/.local/share/bar";
|
||||||
|
REAL_PATH = ./env.nix;
|
||||||
|
BAZ_MAX_COUNT = "1000";
|
||||||
|
MUST_BE_ESCAPED = "esc'ape\nme";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfigLua = ''
|
||||||
|
assert(
|
||||||
|
os.getenv("FOO") == "1"
|
||||||
|
)
|
||||||
|
assert(
|
||||||
|
tonumber(os.getenv("FOO_INT")) == 42
|
||||||
|
)
|
||||||
|
assert(
|
||||||
|
tonumber(os.getenv("FOO_FLOAT")) == 3.14
|
||||||
|
)
|
||||||
|
|
||||||
|
assert(
|
||||||
|
os.getenv("STRING_PATH") == "/home/me/.local/share/bar"
|
||||||
|
)
|
||||||
|
|
||||||
|
local file_path = os.getenv("REAL_PATH")
|
||||||
|
assert(
|
||||||
|
vim.fn.filereadable(file_path)
|
||||||
|
)
|
||||||
|
|
||||||
|
assert(
|
||||||
|
os.getenv("BAZ_MAX_COUNT") == "1000"
|
||||||
|
)
|
||||||
|
|
||||||
|
assert(
|
||||||
|
os.getenv("MUST_BE_ESCAPED") == "esc'ape\nme"
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue