mirror of
https://github.com/Cian-H/my_nvim_config.git
synced 2026-08-17 07:02:48 +01:00
74 lines
2.1 KiB
Nix
74 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"
|
|
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 ln -sfn {} "$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"
|
|
mkdir -p "$PROFILE_DIR/nvim" "$PROFILE_DIR/data" "$PROFILE_DIR/state" "$PROFILE_DIR/cache"
|
|
|
|
# Symlink 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 ln -sfn {} "$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$";
|
|
};
|
|
};
|
|
}
|