Replaced nixvim with nix-cats external flake.

This commit is contained in:
Gabe Venberg 2025-07-04 19:00:20 +02:00
parent 221524709e
commit dc1e99a104
44 changed files with 57 additions and 1455 deletions

View file

@ -1,7 +1,6 @@
{
imports = [
./git.nix
./nvim
./voice.nix
];
}

View file

@ -1,65 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
options.user.nvim.enable-completions = lib.mkEnableOption "basic completion in nvim";
config =
lib.mkIf (config.user.nvim.enable-completions && config.user.nvim.enable)
{
programs.nixvim = {
plugins.luasnip.enable = true;
plugins.friendly-snippets.enable = true;
plugins.cmp = {
enable = true;
autoEnableSources = true;
settings = {
sources = [
{name = "luasnip";}
{name = "treesitter";}
{name = "path";}
{name = "emoji";}
{name = "buffer";}
{name = "latex_symbols";}
{name = "digraphs";}
{name = "spell";}
];
snippet = {
expand = "function(args) require('luasnip').lsp_expand(args.body) end";
};
mapping = {
"<C-Space>" = "cmp.mapping.complete()";
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
"<C-e>" = "cmp.mapping.close()";
"<C-f>" = "cmp.mapping.scroll_docs(4)";
"<CR>" = "cmp.mapping.confirm({ select = false })";
"<Tab>" = ''
function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
else
fallback()
end
end
'';
"<S-Tab>" = ''
function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
else
fallback()
end
end
'';
};
};
};
};
};
}

View file

@ -1,49 +0,0 @@
{
configs,
pkgs,
helpers,
lib,
config,
...
}: {
options.user.nvim.enable = lib.mkEnableOption "enable nvim";
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
enable = true;
viAlias = true;
vimAlias = true;
colorschemes.base16 = {
colorscheme = "gruvbox-dark-medium";
enable = true;
};
clipboard.providers.xsel.enable = true;
};
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
};
programs.nushell.extraEnv = ''
$env.EDITOR = 'nvim'
$env.VISUAL = 'nvim'
'';
};
imports = [
./keybinds.nix
./options.nix
./simpleplugins.nix
./lualine.nix
./nvim-tree.nix
./toggleterm.nix
./gitsigns.nix
./which-key.nix
./telescope.nix
./zk.nix
./treesitter
./cmp
./lsp
];
}

View file

@ -1,31 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
plugins.gitsigns = {
enable = true;
};
plugins.which-key.settings.spec = [
{
__unkeyed-1 = "<leader>g";
group = "+git";
}
];
keymaps = [
{
action = ":Gitsigns toggle_current_line_blame<CR>";
key = "<leader>gb";
mode = "n";
options = {
silent = true;
desc = "toggle git blame";
};
}
];
};
};
}

View file

@ -1,103 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
globals = {
mapleader = ";";
};
plugins.which-key.settings.spec = [
{
__unkeyed-1 = "<leader>c";
group = "+check";
}
];
keymaps = [
{
action = ":setlocal spell!<CR>";
key = "<leader>cs";
mode = "n";
options = {
silent = true;
desc = "toggle spell check";
};
}
{
action = ":bnext<CR>";
key = "gf";
mode = "n";
options = {
silent = true;
desc = "next buffer";
};
}
{
action = ":bprevious<CR>";
key = "gF";
mode = "n";
options = {
silent = true;
desc = "prev buffer";
};
}
{
action = "<C-w>h";
key = "<C-h>";
mode = "n";
options = {
silent = true;
desc = "move to right split";
};
}
{
action = "<C-w>j";
key = "<C-j>";
mode = "n";
options = {
silent = true;
desc = "move to below split";
};
}
{
action = "<C-w>k";
key = "<C-k>";
mode = "n";
options = {
silent = true;
desc = "move to above split";
};
}
{
action = "<C-w>l";
key = "<C-l>";
mode = "n";
options = {
silent = true;
desc = "move to left split";
};
}
{
action = "za";
key = "<Space>";
mode = "n";
options = {
silent = true;
desc = "toggle fold";
};
}
{
action = ":nohls<CR>";
key = "<leader>h";
mode = "n";
options = {
silent = true;
desc = "clear highlighting";
};
}
];
};
};
}

View file

@ -1,34 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
config = lib.mkIf (config.user.nvim.enable && config.user.nvim.enable-lsp) {
home.file = {
".clangd".text = ''
# keeps clangd from choking when it sees a compiler flag for a different
# compiler. (sutch as when acting as an lsp for a project that uses GCC.)
CompileFlags:
Add: -Wno-unknown-warning-option
Remove: [-m*, -f*]
'';
".clang-format".text = ''
---
#this syncronizes with settings used by neovims treesitters so that the lsp formatting and treesitter formatting do not fight eatch other.
PointerAlignment: Left
ColumnLimit: 80
IndentWidth: 4
TabWidth: 4
UseCRLF: false
UseTab: Never
AlignAfterOpenBracket: BlockIndent
AlwaysBreakBeforeMultilineStrings: true
BreakBeforeBraces: Attach
AlignOperands: Align
BreakBeforeBinaryOperators: NonAssignment
...
'';
};
};
}

View file

@ -1,192 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
options.user.nvim.enable-lsp = lib.mkEnableOption "nvim lsp";
config =
lib.mkIf (config.user.nvim.enable-lsp && config.user.nvim.enable)
{
user.nvim.enable-completions = true;
programs.nixvim = {helpers, ...}: {
plugins.lsp = {
enable = true;
servers = {
basedpyright.enable = true;
bashls.enable = true;
clangd.enable = true;
hls.enable = true;
hls.installGhc = true;
jsonls.enable = true;
lua_ls.enable = true;
nil_ls.enable = true;
nil_ls.settings.formatting.command = ["alejandra"];
nushell.enable = true;
ruff.enable = true;
taplo.enable = true;
texlab.enable = true;
tinymist.enable = true;
ts_ls.enable = true;
uiua.enable = true;
yamlls.enable = true;
};
};
plugins.cmp.settings.sources = [
{name = "nvim_lsp";}
];
plugins.which-key.settings.spec = [
{
__unkeyed-1 = "<leader>l";
group = "+lsp";
}
];
keymaps = [
{
action = helpers.mkRaw "vim.lsp.buf.declaration";
key = "<leader>lc";
mode = "n";
options = {
silent = true;
desc = "declaration";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.definition";
key = "<leader>ld";
mode = "n";
options = {
silent = true;
desc = "definition";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.hover";
key = "<leader>lh";
mode = "n";
options = {
silent = true;
desc = "hover";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.implementation";
key = "<leader>li";
mode = "n";
options = {
silent = true;
desc = "implementation";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.signature_help";
key = "<leader>ls";
mode = "n";
options = {
silent = true;
desc = "signature_help";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.add_workspace_folder";
key = "<leader>lwa";
mode = "n";
options = {
silent = true;
desc = "add folder";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.remove_workspace_folder";
key = "<leader>lwr";
mode = "n";
options = {
silent = true;
desc = "remove folder";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.list_workspace_folders";
key = "<leader>lw";
mode = "n";
options = {
silent = true;
desc = "workspace";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.rename";
key = "<leader>lr";
mode = "n";
options = {
silent = true;
desc = "rename";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.code_action";
key = "<leader>la";
mode = "n";
options = {
silent = true;
desc = "code action";
};
}
{
action = helpers.mkRaw "vim.lsp.buf.references";
key = "<leader>le";
mode = "n";
options = {
silent = true;
desc = "list references";
};
}
{
action = helpers.mkRaw "function() vim.lsp.buf.format{async=true} end";
key = "<leader>lm";
mode = "n";
options = {
silent = true;
desc = "format buffer";
};
}
{
action = helpers.mkRaw "vim.diagnostic.open_float";
key = "<leader>lo";
mode = "n";
options = {
silent = true;
desc = "open float";
};
}
{
action = helpers.mkRaw "vim.diagnostic.goto_next";
key = "]d";
mode = "n";
options = {
silent = true;
desc = "next diagnostic";
};
}
{
action = helpers.mkRaw "vim.diagnostic.goto_prev";
key = "[d";
mode = "n";
options = {
silent = true;
desc = "prev diagnostic";
};
}
];
};
home.packages = with pkgs; [
alejandra
];
};
imports = [
./rustaceanvim.nix
./clangd.nix
./zig.nix
];
}

View file

@ -1,14 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
config =
lib.mkIf (config.user.nvim.enable-lsp && config.user.nvim.enable)
{
programs.nixvim = {
plugins.rustaceanvim.enable = true;
};
};
}

View file

@ -1,17 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
config = lib.mkIf (config.user.nvim.enable-lsp && config.user.nvim.enable) {
programs.nixvim = {
plugins.lsp.servers.zls = {
enable = true;
settings = {
enable_build_on_save = true;
};
};
};
};
}

View file

@ -1,84 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
plugins.lualine = {
enable = true;
settings = {
options = {
alwaysDivideMiddle = true;
icons_enabled = true;
};
sections = {
lualine_a = [
"mode"
];
lualine_b = [
"branch"
"diff"
"diagnostics"
];
lualine_c = [
{
__unkeyed = "filename";
path = 1;
}
];
lualine_x = [
"encoding"
"fileformat"
"filetype"
];
lualine_y = [
"progress"
];
lualine_z = [
"location"
];
};
inactiveSections = {
lualine_a = [];
lualine_b = [];
lualine_c = ["filename"];
lualine_x = ["filetype"];
lualine_y = [];
lualine_z = [];
};
tabline = {
lualine_a = [
{
__unkeyed = "buffers";
mode = 4;
}
];
lualine_b = [];
lualine_c = [];
lualine_x = [];
lualine_y = [];
lualine_z = [
{
__unkeyed = "tabs";
mode = 2;
}
];
};
winbar = {
lualine_a = [];
lualine_b = [];
lualine_c = [];
lualine_x = [];
lualine_y = [];
lualine_z = [];
};
};
};
};
};
}

View file

@ -1,35 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
plugins.web-devicons.enable = true;
plugins.nvim-tree = {
enable = true;
disableNetrw = true;
hijackCursor = true;
hijackNetrw = true;
hijackUnnamedBufferWhenOpening = true;
actions = {
useSystemClipboard = true;
changeDir.enable = true;
};
filesystemWatchers.enable = true;
};
keymaps = [
{
action = ":NvimTreeToggle<CR>";
key = "<leader>t";
mode = "n";
options = {
silent = true;
desc = "toggle file browser";
};
}
];
};
};
}

View file

@ -1,72 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
opts = {
mouse = "a";
lazyredraw = true;
termguicolors = true;
autoread = true;
swapfile = false;
history = 500;
formatoptions = "rojq";
# dont hard wrap
textwidth = 0;
wrapmargin = 0;
breakindent = true;
# highlight after col
colorcolumn = "80,100,120";
# add ruler to side of screen
number = true;
numberwidth = 3;
#display cursor cordinates
ruler = true;
#always leave 5 cells between cursor and side of window
scrolloff = 5;
# better command line completion
wildmenu = true;
# ignore case if all lowercase
ignorecase = true;
smartcase = true;
# show unfinished keycombos in statusbar
showcmd = true;
# regex stuff
magic = true;
# always show statusline
laststatus = 2;
# tab stuff
tabstop = 4;
shiftwidth = 0;
autoindent = true;
smartindent = true;
smarttab = true;
# for true tabs, change to false
expandtab = true;
softtabstop = -1;
# highlight search results as you type
hlsearch = true;
incsearch = true;
# folding stuff
foldlevelstart = 5;
foldmethod = lib.mkDefault "indent";
foldcolumn = "auto:4";
foldenable = true;
# display whitespace as other chars
list = true;
listchars = {
tab = ">-";
eol = "";
nbsp = "";
trail = "";
extends = "";
precedes = "";
};
showbreak = "";
};
};
};
}

View file

@ -1,24 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
plugins.comment.enable = true;
plugins.marks.enable = true;
plugins.vim-surround.enable = true;
plugins.todo-comments.enable = true;
plugins.leap = {
enable = true;
addDefaultMappings = true;
};
extraPlugins = with pkgs.vimPlugins; [
vim-numbertoggle
dressing-nvim
];
extraConfigLua = ''require("dressing").setup({})'';
};
};
}

View file

@ -1,126 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
plugins.web-devicons.enable = true;
plugins.telescope = {
enable = true;
};
plugins.which-key.settings.spec = [
{
__unkeyed-1 = "<leader>f";
group = "+telescope";
}
{
__unkeyed-1 = "<leader>fg";
group = "+telescope git";
}
];
keymaps = [
{
action = ":Telescope find_files<CR>";
key = "<leader>ff";
mode = "n";
options = {
silent = true;
desc = "files";
};
}
{
action = ":Telescope live_grep<CR>";
key = "<leader>fg";
mode = "n";
options = {
silent = true;
desc = "grep";
};
}
{
action = ":Telescope buffers<CR>";
key = "<leader>fb";
mode = "n";
options = {
silent = true;
desc = "buffers";
};
}
{
action = ":Telescope marks<CR>";
key = "<leader>fm";
mode = "n";
options = {
silent = true;
desc = "marks";
};
}
{
action = ":Telescope registers<CR>";
key = "<leader>fr";
mode = "n";
options = {
silent = true;
desc = "registers";
};
}
{
action = ":Telescope keymaps<CR>";
key = "<leader>fk";
mode = "n";
options = {
silent = true;
desc = "keymaps";
};
}
{
action = ":Telescope current_buffer_fuzzy_find<CR>";
key = "<leader>fz";
mode = "n";
options = {
silent = true;
desc = "fuzzy find";
};
}
{
action = ":Telescope git_commits<CR>";
key = "<leader>fgc";
mode = "n";
options = {
silent = true;
desc = "commits";
};
}
{
action = ":Telescope git_branches<CR>";
key = "<leader>fgb";
mode = "n";
options = {
silent = true;
desc = "branches";
};
}
{
action = ":Telescope git_stash<CR>";
key = "<leader>fgs";
mode = "n";
options = {
silent = true;
desc = "stash";
};
}
{
action = ":Telescope git_commits<CR>";
key = "<leader>fgc";
mode = "n";
options = {
silent = true;
desc = "commits";
};
}
];
};
};
}

View file

@ -1,38 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {helpers, ...}: {
plugins.toggleterm = {
enable = true;
settings = {
direction = "horizontal";
insert_mappings = false;
terminal_mappings = false;
open_mapping = ''[[<c-\>]]'';
};
};
keymaps = [
{
action = helpers.mkRaw "function() Floatingterm:toggle() end";
key = "<leader>s";
mode = "n";
options = {
silent = true;
desc = "toggle scratch terminal";
};
}
];
extraConfigLuaPre = ''
local Terminal = require('toggleterm.terminal').Terminal
Floatingterm = Terminal:new({
hidden = true,
direction = "float"
})
'';
};
};
}

View file

@ -1,28 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
config =
lib.mkIf (config.user.nvim.enable-treesitter && config.user.nvim.enable)
{
programs.nixvim = {
keymaps = [
{
action = ":AerialToggle!<CR>";
key = "<leader>o";
mode = "n";
options = {
silent = true;
desc = "toggle outline";
};
}
];
extraPlugins = with pkgs.vimPlugins; [
aerial-nvim
];
extraConfigLua = ''require("aerial").setup({})'';
};
};
}

View file

@ -1,58 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
options.user.nvim.enable-treesitter = lib.mkEnableOption "enable nvim treesitter";
config =
lib.mkIf (config.user.nvim.enable-treesitter && config.user.nvim.enable)
{
user.nvim.enable-completions = true;
programs.nixvim = {
opts.foldmethod = "expr";
plugins.treesitter = {
enable = true;
folding = true;
settings.indent.enable = true;
nixvimInjections = true;
};
plugins.treesitter-context.enable = true;
plugins.indent-blankline.enable = true;
extraPlugins = with pkgs.vimPlugins; [
treesj
];
extraConfigLua = ''
require("treesj").setup({
use_default_keymaps=false,
})
'';
keymaps = [
{
action = ":TSContextToggle<CR>";
key = "<leader>x";
mode = "n";
options = {
silent = true;
desc = "tree context toggle";
};
}
{
action = ":TSJToggle<CR>";
key = "<leader>j";
mode = "n";
options = {
silent = true;
desc = "tree sitter join toggle";
};
}
];
};
};
imports = [
./rainbow-delimiters.nix
./arial.nix
./tree-sitter-nu.nix
];
}

View file

@ -1,25 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
config =
lib.mkIf (config.user.nvim.enable-treesitter && config.user.nvim.enable)
{
programs.nixvim = {
plugins.rainbow-delimiters = {
enable = true;
highlight = [
"RainbowDelimiterYellow"
"RainbowDelimiterBlue"
"RainbowDelimiterOrange"
"RainbowDelimiterGreen"
"RainbowDelimiterViolet"
"RainbowDelimiterCyan"
# "RainbowDelimiterRed"
];
};
};
};
}

View file

@ -1,53 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
config =
lib.mkIf (config.user.nvim.enable-treesitter && config.user.nvim.enable)
{
programs.nixvim = let
nu-grammar = pkgs.tree-sitter.buildGrammar {
language = "nu";
version = "0.0.0+rev=358c4f5";
src = pkgs.fetchFromGitHub {
owner = "nushell";
repo = "tree-sitter-nu";
rev = "c5b7816043992b1cdc1462a889bc74dc08576fa6";
hash = "sha256-P+ixE359fAW7R5UJLwvMsmju7UFmJw5SN+kbMEw7Kz0=";
};
};
in {
# Set filetype to "nu" for files named "*.nu"
filetype.extension.nu = "nu";
# Add our nu parser to treesitter and associate it with nu filetype.
extraConfigLua = ''
local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
parser_config.nu = {
filetype = "nu",
}
'';
# Add the nu injections
extraFiles = {
"/queries/nu/highlights.scm".source = "${nu-grammar}/queries/nu/highlights.scm";
"/queries/nu/injections.scm".source = "${nu-grammar}/queries/nu/injections.scm";
"/queries/nu/indents.scm".source = "${nu-grammar}/queries/nu/indents.scm";
};
plugins = {
treesitter = {
# Register the nu parser for files with "nu" filetype
languageRegister.nu = "nu";
grammarPackages =
[
nu-grammar
]
++ pkgs.vimPlugins.nvim-treesitter.allGrammars;
};
};
};
};
}

View file

@ -1,16 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
opts = {
timeout = true;
timeoutlen = 300;
};
plugins.which-key.enable = true;
};
};
}

View file

@ -1,77 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
config = lib.mkIf config.user.nvim.enable {
programs.nixvim = {
plugins.zk = {
enable = true;
settings.picker = "telescope";
};
plugins.which-key.settings.spec = [
{
__unkeyed-1 = "<leader>z";
group = "+zk";
}
];
keymaps = [
{
action = ":ZkNewFromTitleSelection<CR>";
key = "<leader>zn";
mode = "v";
options = {
silent = true;
desc = "New zk note with title from selection";
};
}
{
action = ":ZkaMatch<CR>";
key = "<leader>zs";
mode = "v";
options = {
silent = true;
desc = "Search zk notes from selection";
};
}
{
action = ":ZkNotes<CR>";
key = "<leader>zn";
mode = "n";
options = {
silent = true;
desc = "Search zk notes";
};
}
{
action = ":ZkLinks<CR>";
key = "<leader>zl";
mode = "n";
options = {
silent = true;
desc = "Search outgoing links";
};
}
{
action = ":ZkBacklinks<CR>";
key = "<leader>zb";
mode = "n";
options = {
silent = true;
desc = "Search incoming links";
};
}
{
action = ":ZkTags<CR>";
key = "<leader>zt";
mode = "n";
options = {
silent = true;
desc = "Search tags";
};
}
];
};
};
}