Files
nix/home/modules/nvim/config/flake.nix
T
hektor cdaac61c37
check / lint (push) Successful in 15s
chore(nvim): drop redundant plugins
2026-11-06 10:01:42 +01:00

255 lines
6.6 KiB
Nix

{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nixCats.url = "github:BirdeeHub/nixCats-nvim";
plugins-shipwright-nvim = {
url = "github:rktjmp/shipwright.nvim";
flake = false;
};
plugins-beancount-nvim = {
url = "github:polarmutex/beancount.nvim";
flake = false;
};
plugins-tailwind-fold-nvim = {
url = "github:razak17/tailwind-fold.nvim";
flake = false;
};
plugins-atlas-nvim = {
url = "github:emrearmagan/atlas.nvim";
flake = false;
};
};
outputs =
{
nixpkgs,
nixCats,
...
}@inputs:
let
inherit (nixCats) utils;
inherit (nixpkgs) lib;
luaPath = ./.;
forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
extra_pkg_config = {
allowUnfreePredicate =
pkg:
builtins.elem (nixpkgs.lib.getName pkg) [
"vim-sandwich"
"jupytext.nvim"
"eyeliner.nvim"
"context_filetype.vim"
"unicode.vim"
"quarto-nvim"
"vim-openscad"
"nvim-highlight-colors"
"nvim-lint"
];
};
mkDependencyOverlays = [
(utils.standardPluginOverlay inputs)
(_: prev: {
luajitPackages = prev.luajitPackages.overrideScope (
_: lprev: {
neotest = lprev.neotest.overrideAttrs (_: {
doCheck = false;
});
}
);
})
];
categoryDefinitions =
{
pkgs,
categories,
...
}:
let
themes = import ./themes.nix pkgs;
languages = import ./languages.nix { inherit pkgs categories; };
in
{
lspsAndRuntimeDeps = with pkgs; {
general = [
nodejs_24
curl # → plenary-nvim
delta
fd
gawk
inotify-tools
prettier
prettierd
tree-sitter
];
github = [ gh ];
languages = lib.mapAttrs (_: language: language.packages) languages;
};
startupPlugins = {
general =
with pkgs.vimPlugins;
[
vim-sandwich
context_filetype-vim
vim-snippets
unicode-vim
quarto-nvim
vimtex
wiki-vim
vim-pandoc
vim-pandoc-syntax
# TODO: ferrine/md-img-paste.vim
# TODO: supercollider/scvim
# TODO: tidalcycles/vim-tidal
vim-glsl
# TODO: timtro/glslView-nvim
jupytext-nvim
## paq
eyeliner-nvim
fzf-lua
nvim-lspconfig
SchemaStore-nvim
nvim-lint
conform-nvim
luasnip
cmp_luasnip
nvim-cmp
cmp-nvim-lsp
cmp-buffer
cmp-path
plenary-nvim
nui-nvim
trouble-nvim
lush-nvim
pkgs.neovimPlugins.shipwright-nvim
nvim-treesitter.withAllGrammars
nvim-treesitter-textobjects
nvim-ts-context-commentstring
treesj
sniprun
gitsigns-nvim
pkgs.neovimPlugins.atlas-nvim
nvim-highlight-colors
auto-session
nvim-dbee
image-nvim
pkgs.neovimPlugins.beancount-nvim
codecompanion-nvim
kitty-scrollback-nvim
fidget-nvim
claudecode-nvim
snacks-nvim
]
++ themes.${categories.colorscheme or "zenwritten"};
languages = lib.mapAttrs (_: language: language.plugins or [ ]) languages;
};
optionalPlugins = {
general = with pkgs.vimPlugins; [
];
};
sharedLibraries = {
general = [ ];
};
environmentVariables = { };
};
packageDefinitions = {
nvim = { pkgs, ... }: {
settings = {
suffix-path = true;
suffix-LD = true;
wrapRc = true;
aliases = [ "vim" ];
};
categories = {
general = true;
github = false;
colorscheme = "zenwritten";
typescriptServer = "ts_ls";
languages = lib.mapAttrs (_: language: language.enable) (import ./languages.nix { inherit pkgs; });
};
};
};
defaultPackageName = "nvim";
in
forEachSystem (
system:
let
dependencyOverlays = mkDependencyOverlays;
nixCatsBuilder = utils.baseBuilder luaPath {
inherit
nixpkgs
system
dependencyOverlays
extra_pkg_config
;
} categoryDefinitions packageDefinitions;
defaultPackage = nixCatsBuilder defaultPackageName;
pkgs = import nixpkgs { inherit system; };
in
{
packages = utils.mkAllWithDefault defaultPackage;
devShells = {
default = pkgs.mkShell {
name = defaultPackageName;
packages = [ defaultPackage ];
inputsFrom = [ ];
shellHook = "";
};
};
}
)
// (
let
nixosModule = utils.mkNixosModules {
moduleNamespace = [ defaultPackageName ];
inherit
defaultPackageName
luaPath
categoryDefinitions
packageDefinitions
extra_pkg_config
nixpkgs
;
dependencyOverlays = mkDependencyOverlays;
};
homeModule = utils.mkHomeModules {
moduleNamespace = [ defaultPackageName ];
inherit
defaultPackageName
luaPath
categoryDefinitions
packageDefinitions
extra_pkg_config
nixpkgs
;
dependencyOverlays = mkDependencyOverlays;
};
in
{
overlays = utils.makeOverlays luaPath {
inherit nixpkgs extra_pkg_config;
dependencyOverlays = mkDependencyOverlays;
} categoryDefinitions packageDefinitions defaultPackageName;
nixosModules.default = nixosModule;
homeModules.default = homeModule;
inherit utils nixosModule homeModule;
inherit (utils) templates;
}
);
}