Files
my_nvim_config/devenv.nix
T

76 lines
2.1 KiB
Nix

{
pkgs,
lib,
config,
inputs,
...
}: {
packages = [
pkgs.git
pkgs.lua-language-server
pkgs.prek
pkgs.selene
pkgs.stylua
pkgs.luaPackages.fennel
pkgs.fennel-ls
pkgs.fnlfmt
];
scripts = {
typecheck.exec = "lua-language-server --check=. --checklevel=Warning";
fnlcheck.exec = ''
files=$(git ls-files '*.fnl')
if [ -n "$files" ]; then
fnlfmt --check $files
else
echo "No Fennel files to format."
fi
'';
smoketest.exec = ''
PROFILE_DIR="$PWD/.devenv/test-profile"
rm -rf "$PROFILE_DIR/nvim"
mkdir -p "$PROFILE_DIR/nvim" "$PROFILE_DIR/data" "$PROFILE_DIR/state" "$PROFILE_DIR/cache"
find "$PWD" -maxdepth 1 ! -name ".git" ! -name ".devenv" ! -name ".direnv" ! -name "devenv.lock" ! -name "devenv.nix" ! -name "devenv.yaml" ! -name ".envrc" -exec cp -r {} "$PROFILE_DIR/nvim/" \;
XDG_CONFIG_HOME="$PROFILE_DIR" \
XDG_DATA_HOME="$PROFILE_DIR/data" \
XDG_STATE_HOME="$PROFILE_DIR/state" \
XDG_CACHE_HOME="$PROFILE_DIR/cache" \
nvim --headless -c 'q'
'';
test-drive.exec = ''
PROFILE_DIR="$PWD/.devenv/test-profile"
rm -rf "$PROFILE_DIR/nvim"
mkdir -p "$PROFILE_DIR/nvim" "$PROFILE_DIR/data" "$PROFILE_DIR/state" "$PROFILE_DIR/cache"
# Copy config files and folders to local sandbox config path
find "$PWD" -maxdepth 1 ! -name ".git" ! -name ".devenv" ! -name ".direnv" ! -name "devenv.lock" ! -name "devenv.nix" ! -name "devenv.yaml" ! -name ".envrc" -exec cp -r {} "$PROFILE_DIR/nvim/" \;
echo "Starting test-drive of Neovim configuration in isolated sandbox..."
echo "Caches, plugins, and state will be saved to: $PROFILE_DIR"
XDG_CONFIG_HOME="$PROFILE_DIR" \
XDG_DATA_HOME="$PROFILE_DIR/data" \
XDG_STATE_HOME="$PROFILE_DIR/state" \
XDG_CACHE_HOME="$PROFILE_DIR/cache" \
nvim "$@"
'';
};
languages.lua.enable = true;
git-hooks.hooks = {
selene.enable = true;
stylua.enable = true;
fnlfmt = {
enable = true;
name = "fnlfmt";
entry = "${pkgs.fnlfmt}/bin/fnlfmt --check";
files = "\\.fnl$";
};
};
}