Compare commits

...

10 commits

8 changed files with 1919 additions and 113 deletions

2
.gitignore vendored
View file

@ -1,3 +1,5 @@
tags
.luarc.json
/result
.devenv
.pre-commit-config.yaml

1739
flake.lock

File diff suppressed because it is too large Load diff

View file

@ -7,6 +7,8 @@
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nixCats.url = "github:BirdeeHub/nixCats-nvim";
devenv.url = "github:cachix/devenv";
neovim-nightly-overlay = {
url = "github:nix-community/neovim-nightly-overlay";
};
@ -27,10 +29,16 @@
};
};
nixConfig = {
extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
extra-substituters = "https://devenv.cachix.org";
};
outputs = {
self,
nixpkgs,
nixCats,
devenv,
...
} @ inputs: let
inherit (nixCats) utils;
@ -47,11 +55,11 @@
categoryDefinitions = {
pkgs,
settings,
categories,
extra,
# settings,
# categories,
# extra,
name,
mkNvimPlugin,
# mkNvimPlugin,
...
}: {
lspsAndRuntimeDeps = with pkgs; let
@ -65,9 +73,14 @@
alejandra
bash-language-server
biome
codespell
curl
deadnix
djlint
docker-compose-language-service
dockerfile-language-server-nodejs
dotenv-linter
editorconfig-checker
emmet-language-server
fd
fish-lsp
@ -77,12 +90,14 @@
grpcurl
hadolint
helm-ls
htmlhint
jq
lazygit
lua-language-server
markdownlint-cli2
marksman
nil
nodePackages.alex
nodePackages.prettier
npm-modules.css-variables-language-server
npm-modules.gh-actions-language-server
@ -116,6 +131,7 @@
vue-language-server
yaml-language-server
yamllint
zizmor
];
};
@ -261,6 +277,9 @@
nvim-nio
# UI
# edgy.nvim
edgy-nvim
# Mini Animate
{
plugin = mini-animate;
@ -332,7 +351,7 @@
packageDefinitions = {
nvim = {
pkgs,
mkNvimPlugin,
# mkNvimPlugin,
...
}: {
settings = {
@ -345,7 +364,9 @@
general = true;
test = false;
};
extra = {};
extra = {
vue-ls-path = "${pkgs.lib.getExe pkgs.vue-language-server}";
};
};
};
@ -363,17 +384,39 @@
defaultPackage = nixCatsBuilder defaultPackageName;
pkgs = import nixpkgs {inherit system;};
in {
packages = utils.mkAllWithDefault defaultPackage;
# Choose your package for devShell and add whatever else you want in it.
devShells = {
default = pkgs.mkShell {
name = defaultPackageName;
packages = [defaultPackage];
inputsFrom = [];
shellHook = ''
'';
packages =
(utils.mkAllWithDefault defaultPackage)
// {
devenv-up = self.devShells.${system}.default.config.procfileScript;
devenv-test = self.devShells.${system}.default.config.test;
};
devShells.default = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
(
# {
# pkgs,
# config,
# ...
# }:
_: {
packages = [
defaultPackage
];
pre-commit.hooks = {
alejandra.enable = true;
deadnix.enable = true;
statix.enable = true;
stylua.enable = true;
end-of-file-fixer.enable = true;
trim-trailing-whitespace.enable = true;
no-commit-to-branch.enable = true;
};
}
)
];
};
})
// (let

181
init.lua
View file

@ -1,17 +1,15 @@
-- NOTE: this just gives nixCats global command a default value
-- so that it doesnt throw an error if you didnt install via nix.
-- usage of both this setup and the nixCats command is optional,
-- but it is very useful for passing info from nix to lua so you will likely use it at least once.
require('nixCatsUtils').setup {
require('nixCatsUtils').setup({
non_nix_value = true,
}
})
-- NOTE: You might want to move the lazy-lock.json file
local function getlockfilepath()
if require('nixCatsUtils').isNixCats and type(nixCats.settings.unwrappedCfgPath) == 'string' then
if
require('nixCatsUtils').isNixCats
and type(nixCats.settings.unwrappedCfgPath) == 'string'
then
return nixCats.settings.unwrappedCfgPath .. '/lazy-lock.json'
else
return vim.fn.stdpath 'config' .. '/lazy-lock.json'
return vim.fn.stdpath('config') .. '/lazy-lock.json'
end
end
local lazyOptions = {
@ -21,93 +19,110 @@ local lazyOptions = {
},
}
-- NOTE: this the lazy wrapper. Use it like require('lazy').setup() but with an
-- extra argument, the path to lazy.nvim as downloaded by nix, or nil, before
-- the normal arguments.
require('nixCatsUtils.lazyCat').setup(nixCats.pawsible { 'allPlugins', 'start', 'lazy.nvim' }, {
{ 'LazyVim/LazyVim', import = 'lazyvim.plugins' },
require('nixCatsUtils.lazyCat').setup(
nixCats.pawsible({ 'allPlugins', 'start', 'lazy.nvim' }),
{
'folke/lazydev.nvim',
ft = 'lua',
opts = {
library = {
-- Adds type hints for nixCats global, but LazyDev is just nice in
-- general.
{ path = (nixCats.nixCatsPath or '') .. '/lua', words = { 'nixCats' } },
{ 'LazyVim/LazyVim', import = 'lazyvim.plugins' },
{
'folke/lazydev.nvim',
ft = 'lua',
opts = {
library = {
{
path = (nixCats.nixCatsPath or '') .. '/lua',
words = { 'nixCats' },
},
},
},
},
},
-- Extras.
{ import = 'lazyvim.plugins.extras.coding.luasnip' },
{ import = 'lazyvim.plugins.extras.coding.mini-comment' },
{ import = 'lazyvim.plugins.extras.coding.mini-surround' },
{ import = 'lazyvim.plugins.extras.coding.neogen' },
{ import = 'lazyvim.plugins.extras.coding.yanky' },
-- Extras.
{ import = 'lazyvim.plugins.extras.coding.luasnip' },
{ import = 'lazyvim.plugins.extras.coding.mini-comment' },
{ import = 'lazyvim.plugins.extras.coding.mini-surround' },
{ import = 'lazyvim.plugins.extras.coding.neogen' },
{ import = 'lazyvim.plugins.extras.coding.yanky' },
{ import = 'lazyvim.plugins.extras.editor.aerial' },
{ import = 'lazyvim.plugins.extras.editor.dial' },
{ import = 'lazyvim.plugins.extras.editor.navic' },
{ import = 'lazyvim.plugins.extras.editor.neo-tree' },
{ import = 'lazyvim.plugins.extras.editor.refactoring' },
-- Edgy is required to be imported before aerial.
{ import = 'lazyvim.plugins.extras.ui.edgy' },
{ import = 'lazyvim.plugins.extras.formatting.biome' },
{ import = 'lazyvim.plugins.extras.formatting.prettier' },
{ import = 'lazyvim.plugins.extras.editor.aerial' },
{ import = 'lazyvim.plugins.extras.editor.dial' },
{ import = 'lazyvim.plugins.extras.editor.navic' },
{ import = 'lazyvim.plugins.extras.editor.neo-tree' },
{ import = 'lazyvim.plugins.extras.editor.refactoring' },
{ import = 'lazyvim.plugins.extras.lang.docker' },
{ import = 'lazyvim.plugins.extras.lang.git' },
{ import = 'lazyvim.plugins.extras.lang.go' },
{ import = 'lazyvim.plugins.extras.lang.helm' },
{ import = 'lazyvim.plugins.extras.lang.json' },
{ import = 'lazyvim.plugins.extras.lang.markdown' },
{ import = 'lazyvim.plugins.extras.lang.nix' },
{ import = 'lazyvim.plugins.extras.lang.nushell' },
{ import = 'lazyvim.plugins.extras.lang.php' },
{ import = 'lazyvim.plugins.extras.lang.python' },
{ import = 'lazyvim.plugins.extras.lang.ruby' },
{ import = 'lazyvim.plugins.extras.lang.sql' },
{ import = 'lazyvim.plugins.extras.lang.tailwind' },
{ import = 'lazyvim.plugins.extras.lang.terraform' },
{ import = 'lazyvim.plugins.extras.lang.toml' },
{ import = 'lazyvim.plugins.extras.lang.typescript' },
{ import = 'lazyvim.plugins.extras.lang.vue' },
{ import = 'lazyvim.plugins.extras.lang.yaml' },
{ import = 'lazyvim.plugins.extras.formatting.biome' },
{ import = 'lazyvim.plugins.extras.formatting.prettier' },
{ import = 'lazyvim.plugins.extras.linting.eslint' },
{ import = 'lazyvim.plugins.extras.lang.docker' },
{ import = 'lazyvim.plugins.extras.lang.git' },
{ import = 'lazyvim.plugins.extras.lang.go' },
{ import = 'lazyvim.plugins.extras.lang.helm' },
{ import = 'lazyvim.plugins.extras.lang.json' },
{ import = 'lazyvim.plugins.extras.lang.markdown' },
{ import = 'lazyvim.plugins.extras.lang.nix' },
{ import = 'lazyvim.plugins.extras.lang.nushell' },
{ import = 'lazyvim.plugins.extras.lang.php' },
{ import = 'lazyvim.plugins.extras.lang.python' },
{ import = 'lazyvim.plugins.extras.lang.ruby' },
{ import = 'lazyvim.plugins.extras.lang.sql' },
{ import = 'lazyvim.plugins.extras.lang.tailwind' },
{ import = 'lazyvim.plugins.extras.lang.terraform' },
{ import = 'lazyvim.plugins.extras.lang.toml' },
{ import = 'lazyvim.plugins.extras.lang.typescript' },
{ import = 'lazyvim.plugins.extras.lang.vue' },
{ import = 'lazyvim.plugins.extras.lang.yaml' },
{ import = 'lazyvim.plugins.extras.test.core' },
{ import = 'lazyvim.plugins.extras.linting.eslint' },
{ import = 'lazyvim.plugins.extras.ui.mini-animate' },
{ import = 'lazyvim.plugins.extras.ui.treesitter-context' },
{ import = 'lazyvim.plugins.extras.test.core' },
{ import = 'lazyvim.plugins.extras.util.dot' },
{ import = 'lazyvim.plugins.extras.util.mini-hipatterns' },
{ import = 'lazyvim.plugins.extras.util.octo' },
{ import = 'lazyvim.plugins.extras.util.project' },
{ import = 'lazyvim.plugins.extras.util.rest' },
{ import = 'lazyvim.plugins.extras.ui.mini-animate' },
{ import = 'lazyvim.plugins.extras.ui.treesitter-context' },
-- These need to be after extras to prevent extras from overwriting them.
{ import = 'lazyvim.plugins.extras.util.dot' },
{ import = 'lazyvim.plugins.extras.util.mini-hipatterns' },
{ import = 'lazyvim.plugins.extras.util.octo' },
{ import = 'lazyvim.plugins.extras.util.project' },
{ import = 'lazyvim.plugins.extras.util.rest' },
-- Disable mason.nvim while using nix.
-- Precompiled binaries do not agree with nixos, and we can just make nix
-- install this stuff for us.
{ 'williamboman/mason-lspconfig.nvim', enabled = require('nixCatsUtils').lazyAdd(true, false) },
{ 'williamboman/mason.nvim', enabled = require('nixCatsUtils').lazyAdd(true, false) },
-- These need to be after extras to prevent extras from overwriting them.
{
'nvim-treesitter/nvim-treesitter',
build = require('nixCatsUtils').lazyAdd ':TSUpdate',
opts_extend = require('nixCatsUtils').lazyAdd(nil, false),
opts = {
-- Nix already ensured they were installed, and we would need to change
-- the parser_install_dir if we wanted to use it instead.
-- So we just disable install and do it via nix.
ensure_installed = require('nixCatsUtils').lazyAdd({ 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc' }, false),
auto_install = require('nixCatsUtils').lazyAdd(true, false),
-- Disable mason.nvim while using Nix.
{
'williamboman/mason-lspconfig.nvim',
enabled = require('nixCatsUtils').lazyAdd(true, false),
},
{
'williamboman/mason.nvim',
enabled = require('nixCatsUtils').lazyAdd(true, false),
},
},
-- import/override with your plugins
{ import = 'plugins' },
}, lazyOptions)
{
'nvim-treesitter/nvim-treesitter',
build = require('nixCatsUtils').lazyAdd(':TSUpdate'),
opts_extend = require('nixCatsUtils').lazyAdd(nil, false),
opts = {
-- Disable parser installation while using Nix.
ensure_installed = require('nixCatsUtils').lazyAdd({
'bash',
'c',
'diff',
'html',
'lua',
'luadoc',
'markdown',
'vim',
'vimdoc',
}, false),
auto_install = require('nixCatsUtils').lazyAdd(true, false),
},
},
-- import/override with your plugins
{ import = 'plugins' },
},
lazyOptions
)

View file

@ -2,3 +2,10 @@ vim.o.textwidth = 80
vim.o.colorcolumn = '+1'
vim.g.lazyvim_prettier_needs_config = true
vim.filetype.add({
pattern = {
['%.env%.[%w_.-]+'] = 'sh.env',
['.*/.github/workflows/.*%.yml'] = 'yaml.ghaction',
},
})

View file

@ -3,11 +3,23 @@ return {
'mfussenegger/nvim-lint',
opts = {
linters_by_ft = {
['*'] = { 'codespell', 'editorconfig-checker', 'alex' },
bash = { 'shellcheck' },
css = { 'stylelint' },
django = { 'djlint' },
env = { 'dotenv-linter' },
ghaction = { 'zizmor' },
handlebars = { 'djlint' },
html = { 'htmlhint' },
jinja = { 'djlint' },
mustache = { 'djlint' },
nix = { 'deadnix', 'statix' },
nunjucks = { 'djlint' },
scss = { 'stylelint' },
sh = { 'shellcheck' },
twig = { 'djlint' },
yaml = { 'yamllint' },
zsh = { 'zsh' },
},
},
},

View file

@ -44,6 +44,19 @@ return {
somesass_ls = {},
statix = {},
stylelint_lsp = {},
-- Fix for nix installation of vue-language-server.
vtsls = {
settings = {
vtsls = {
tsserver = {
globalPlugins = {
location = nixCats.extra('vue-ls-path'),
},
},
},
},
},
},
},
},

3
statix.toml Normal file
View file

@ -0,0 +1,3 @@
disabled = []
nix_version = '2.4'
ignore = ['.devenv', 'packages/npm-modules']