feat: neovim actually fully declared as god intended

This commit is contained in:
Teesh 2026-02-06 14:47:51 +02:00
parent 77d26e620a
commit 18cce0eb09
4 changed files with 149 additions and 92 deletions

162
flake.lock generated
View file

@ -125,6 +125,22 @@
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1751685974,
"narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
"ref": "refs/heads/main",
"rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
"revCount": 92,
"type": "git",
"url": "https://git.lix.systems/lix-project/flake-compat.git"
},
"original": {
"type": "git",
"url": "https://git.lix.systems/lix-project/flake-compat.git"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
@ -146,6 +162,27 @@
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nvf",
"nixpkgs"
]
},
"locked": {
"lastModified": 1768135262,
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"stylix",
@ -181,24 +218,6 @@
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
@ -270,22 +289,40 @@
"type": "github"
}
},
"lazyvim": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_2"
},
"mnw": {
"locked": {
"lastModified": 1770068987,
"narHash": "sha256-NZy5S0xkntbfW3SfluZg5hbDzRw4eFBsFm9knXzH8Eo=",
"owner": "pfassina",
"repo": "lazyvim-nix",
"rev": "a88c488cfd96e1d4274d34d2e35ddbe99dbe5757",
"lastModified": 1769981889,
"narHash": "sha256-ndI7AxL/6auelkLHngdUGVImBiHkG8w2N2fOTKZKn4k=",
"owner": "Gerg-L",
"repo": "mnw",
"rev": "332fed8f43b77149c582f1782683d6aeee1f07cf",
"type": "github"
},
"original": {
"owner": "pfassina",
"repo": "lazyvim-nix",
"owner": "Gerg-L",
"repo": "mnw",
"type": "github"
}
},
"ndg": {
"inputs": {
"nixpkgs": [
"nvf",
"nixpkgs"
]
},
"locked": {
"lastModified": 1768214250,
"narHash": "sha256-hnBZDQWUxJV3KbtvyGW5BKLO/fAwydrxm5WHCWMQTbw=",
"owner": "feel-co",
"repo": "ndg",
"rev": "a6bd3c1ce2668d096e4fdaaa03ad7f03ba1fbca8",
"type": "github"
},
"original": {
"owner": "feel-co",
"ref": "refs/tags/v2.6.0",
"repo": "ndg",
"type": "github"
}
},
@ -293,7 +330,7 @@
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": "nixpkgs_3",
"nixpkgs": "nixpkgs_2",
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
@ -377,22 +414,6 @@
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1752480373,
"narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1770115704,
"narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=",
@ -408,7 +429,7 @@
"type": "github"
}
},
"nixpkgs_4": {
"nixpkgs_3": {
"locked": {
"lastModified": 1770136044,
"narHash": "sha256-tlFqNG/uzz2++aAmn4v8J0vAkV3z7XngeIIB3rM3650=",
@ -424,6 +445,22 @@
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1769461804,
"narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1769461804,
@ -485,6 +522,29 @@
"type": "github"
}
},
"nvf": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts_2",
"mnw": "mnw",
"ndg": "ndg",
"nixpkgs": "nixpkgs_4",
"systems": "systems"
},
"locked": {
"lastModified": 1770213521,
"narHash": "sha256-ZUGJ3xZQfDcKCSBi0Qw7pSXWc2zkU8SxDJfsA7Uv8JI=",
"owner": "notashelf",
"repo": "nvf",
"rev": "9da5d517406c35b5bf738f446e5e51237f27b655",
"type": "github"
},
"original": {
"owner": "notashelf",
"repo": "nvf",
"type": "github"
}
},
"root": {
"inputs": {
"copyparty": "copyparty",
@ -492,10 +552,10 @@
"flake-parts": "flake-parts",
"home-manager": "home-manager",
"import-tree": "import-tree",
"lazyvim": "lazyvim",
"niri-flake": "niri-flake",
"nixpkgs": "nixpkgs_4",
"nixpkgs": "nixpkgs_3",
"noctalia": "noctalia",
"nvf": "nvf",
"sops-nix": "sops-nix",
"spicetify-nix": "spicetify-nix",
"stylix": "stylix"
@ -547,7 +607,7 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_2",
"flake-parts": "flake-parts_3",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"

View file

@ -15,8 +15,8 @@
stylix.url = "github:nix-community/stylix/release-25.11";
stylix.inputs.nixpkgs.follows = "nixpkgs";
lazyvim = {
url = "github:pfassina/lazyvim-nix";
nvf = {
url = "github:notashelf/nvf";
};
firefox-addons = {

View file

@ -4,6 +4,7 @@
flake.modules.nixos.base = { pkgs, ... }: {
programs.fish.enable = true;
users.users.${config.flake.meta.user.name}.shell = pkgs.fish;
documentation.man.generateCaches = false;
};
flake.modules.homeManager.base = {

View file

@ -1,48 +1,44 @@
{ inputs, ... }:
{inputs, ...}: {
flake.modules.nixos.base = {
imports = [inputs.nvf.nixosModules.default];
{
flake.modules.nixos.base = { pkgs, ... }: {
environment.systemPackages = [ pkgs.neovim pkgs.statix ];
programs.nvf.enable = true;
nix.nixPath = ["nixpkgs=${inputs.nixpkgs}"];
programs.nvf.settings = {
vim.viAlias = true;
vim.vimAlias = true;
programs.neovim.enable = true;
programs.neovim.defaultEditor = true;
};
vim.autocomplete.blink-cmp.enable = true;
vim.telescope.enable = true;
vim.utility.sleuth.enable = true;
vim.binds.whichKey.enable = true;
vim.ui.noice.enable = true;
vim.statusline.lualine.enable = true;
vim.clipboard.enable = true;
vim.clipboard.registers = "unnamedplus";
flake.modules.homeManager.base = {
imports = [ inputs.lazyvim.homeManagerModules.default ];
vim.git.neogit.enable = true;
vim.keymaps = [
{
key = "<leader>gg";
mode = "n";
silent = true;
action = "<cmd>Neogit<cr>";
}
];
programs.neovim.enable = true;
programs.neovim.defaultEditor = true;
vim.dashboard.alpha.enable = true;
programs.lazyvim = {
enable = true;
pluginSource = "nixpkgs";
plugins.catppuccin = ''
return { "LazyVim/LazyVim", opts = { colorscheme = "catppuccin" } }
'';
plugins.neogit = ''
return { "NeogitOrg/neogit", opts = {}, keys = { { "<leader>gg", "<cmd>Neogit<cr>" } } }
'';
extras = {
lang.nix = {
enable = true;
installDependencies = true;
};
vim.lsp.enable = true;
vim.lsp.formatOnSave = true;
vim.languages = {
nix.enable = true;
nix.lsp.servers = ["nixd"];
rust.enable = true;
ts.enable = true;
lang.python = {
enable = true;
installDependencies = true;
};
# only reason we don't add `pkgs.claude-code` to base is because base is meant to be things for servers,
# we do need neovim on the server but we don't need a clanker on there too!
#
# plus, it can fail gracefully - if cc is not installed, it simply does nothing
ai.claudecode = {
enable = true;
installDependencies = true;
installRuntimeDependencies = true;
};
enableTreesitter = true;
enableFormat = true;
};
};
};