summaryrefslogtreecommitdiff
path: root/hm
diff options
context:
space:
mode:
authoradikro <adikro@disroot.org>2026-05-09 21:06:23 +0200
committeradikro <adikro@disroot.org>2026-05-09 21:06:23 +0200
commitbaf1cf5664b481de17849c97dc683fa81ade1c2e (patch)
tree0836096c9104559d27341d7b99c7c032cf0743ef /hm
parent18e7f651ce33b1544178f444c6bd3fbaf44fc831 (diff)
laptop sync
Diffstat (limited to 'hm')
-rw-r--r--hm/soft/nixvim/binds.nix0
-rw-r--r--hm/soft/nixvim/nixvim.nix270
-rw-r--r--hm/soft/soft.nix2
3 files changed, 272 insertions, 0 deletions
diff --git a/hm/soft/nixvim/binds.nix b/hm/soft/nixvim/binds.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/hm/soft/nixvim/binds.nix
diff --git a/hm/soft/nixvim/nixvim.nix b/hm/soft/nixvim/nixvim.nix
new file mode 100644
index 0000000..65de006
--- /dev/null
+++ b/hm/soft/nixvim/nixvim.nix
@@ -0,0 +1,270 @@
+{
+ inputs,
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ cfg = config.hm.editors.nixvim;
+in
+{
+ imports = [ inputs.nixvim.homeModules.nixvim ];
+
+ options.hm.editors.nixvim.enable = lib.mkEnableOption "enables nixvim config framework";
+
+ config = lib.mkIf cfg.enable {
+ programs.nixvim = {
+ diagnostics.virtual_text = false;
+ enable = true;
+ package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default;
+
+ vimAlias = true;
+ defaultEditor = true;
+ waylandSupport = true;
+ colorschemes.gruvbox.enable = true;
+
+ globals.mapleader = " ";
+
+ clipboard = {
+ providers.wl-copy.enable = true;
+ register = "unnamedplus";
+ };
+
+ opts = {
+ smartindent = true;
+ autoindent = true;
+ breakindent = true;
+ number = true;
+ relativenumber = true;
+ termguicolors = true;
+ ignorecase = true;
+ smartcase = true;
+ expandtab = true;
+ shiftwidth = 2;
+ encoding = "utf-8";
+ fileencoding = "utf-8";
+ undofile = true;
+ swapfile = true;
+ backup = false;
+ autoread = true;
+ cursorline = true;
+ ruler = true;
+ gdefault = true;
+ scrolloff = 5;
+ };
+
+ keymaps = [
+ {
+ mode = [ "" ];
+ key = "<F1>";
+ action = "<NOP>";
+ options.silent = true;
+ }
+ {
+ mode = "n";
+ key = "<leader>gs";
+ action = "<cmd>Neogit<CR>";
+ options.desc = "Neogit Status";
+ }
+ {
+ mode = "n";
+ key = "<leader>ff";
+ action = "<cmd>Telescope find_files<CR>";
+ options.desc = "Find Files";
+ }
+ {
+ mode = "n";
+ key = "gd";
+ action = "<cmd>lua vim.lsp.buf.definition()<CR>";
+ options.desc = "Go to Definition";
+ }
+ {
+ mode = "n";
+ key = "K";
+ action = "<cmd>lua vim.lsp.buf.hover()<CR>";
+ options.desc = "Hover Docs";
+ }
+ {
+ mode = "n";
+ key = "<leader>ca";
+ action = "<cmd>lua vim.lsp.buf.code_action()<CR>";
+ options.desc = "Code Actions";
+ }
+ {
+ mode = "n";
+ key = "<leader>rn";
+ action = "<cmd>lua vim.lsp.buf.rename()<CR>";
+ options.desc = "Rename Symbol";
+ }
+ {
+ mode = "n";
+ key = "<leauer>fs";
+ action = "<cmd>Telescope lsp_document_symbols<CR>";
+ options.desc = "Find Symbols (Functions/Variables)";
+ }
+ {
+ mode = "n";
+ key = "<leader>fg";
+ action = "<cmd>Telescope live_grep<CR>";
+ options.desc = "Live Grep";
+ }
+ {
+ mode = "n";
+ key = "<leader>ma";
+ action = "<cmd>MCpattern<CR>";
+ options.desc = "Select all matches of pattern";
+ }
+ {
+ mode = "n";
+ key = "<leader>ha";
+ action = ''<cmd>lua require("harpoon.mark").add_file()<CR>'';
+ options.desc = "Harpoon: Mark File";
+ }
+ {
+ mode = "n";
+ key = "<leader>hh";
+ action = ''<cmd>lua require("harpoon.ui").toggle_quick_menu()<CR>'';
+ options.desc = "Harpoon: Show Menu";
+ }
+ {
+ mode = "n";
+ key = "<leader>xx";
+ action = "<cmd>Trouble diagnostics toggle<CR>";
+ options.desc = "Toggle Trouble (Diagnostics)";
+ }
+ {
+ mode = "n";
+ key = "<leader>p";
+ action = "<cmd>Telescope yank_history<CR>";
+ options.desc = "Open Yank History";
+ }
+ ];
+
+ plugins = {
+ overseer.enable = true;
+ # neotest.enable = true;
+
+ tiny-inline-diagnostic = {
+ enable = true;
+ settings = {
+ preset = "minimal";
+ show_all_diags_on_cursorline = true;
+ options = {
+ multilines = {
+ enabled = true;
+ always_show = true;
+ };
+ };
+ };
+ };
+ comment.enable = true;
+ flash = {
+ enable = true;
+ settings = {
+ search.enabled = true;
+ jump.autojump = true;
+ };
+ };
+ notify = {
+ enable = true;
+ settings.topDown = false;
+ };
+ yanky = {
+ enable = true;
+ settings.ring.history_length = 100;
+ settings.system_clipboard.sync_with_ring = true;
+ };
+ lualine = {
+ enable = true;
+ settings = {
+ options.theme = "gruvbox-material";
+ sections = {
+ lualine_b = [ "diagnostics" ];
+ lualine_c = [ "filename" ];
+ lualine_x = [ "filetype" ];
+ };
+ };
+ };
+
+ treesitter-context = {
+ enable = true;
+ settings = {
+ indent.enable = true;
+ max_lines = 2;
+ trim_scope = "outer";
+ };
+ };
+ oil.enable = true;
+ nvim-autopairs.enable = true;
+ neoscroll.enable = true;
+ bufferline.enable = true;
+ web-devicons.enable = true;
+ lsp-kind.enable = true;
+
+ blink-cmp = {
+ enable = true;
+ settings = {
+ keymap = {
+ preset = "default";
+ "<C-space>" = [
+ "show"
+ "show_documentation"
+ "hide"
+ ];
+ # "<CR>" = [
+ # "accept"
+ # "fallback"
+ # ];
+ # "<Tab>" = [
+ # "select_next"
+ # "fallback"
+ # ];
+ # "<S-Tab>" = [
+ # "select_prev"
+ # "fallback"
+ # ];
+ };
+ };
+ };
+
+ # gitsigns.enable = true;
+ which-key.enable = true;
+ harpoon = {
+ enable = true;
+ enableTelescope = true;
+ };
+ toggleterm.enable = true;
+ treesitter.enable = true;
+ telescope = {
+ enable = true;
+ extensions.fzf-native.enable = true;
+ };
+ noice.enable = true;
+ dressing.enable = true;
+
+ conform-nvim = {
+ enable = true;
+ settings = {
+ formatters_by_ft = {
+ nix = [ "alejandra" ];
+ };
+ format_on_save = {
+ lsp_fallback = true;
+ timeout_ms = 500;
+ };
+ };
+ };
+
+ lsp = {
+ enable = true;
+ servers = {
+ zls.enable = true;
+ nil_ls.enable = true;
+ clangd.enable = true;
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/hm/soft/soft.nix b/hm/soft/soft.nix
index 05740bb..127a5fe 100644
--- a/hm/soft/soft.nix
+++ b/hm/soft/soft.nix
@@ -16,5 +16,7 @@
./torrent.nix
./yt-dlp.nix
./sioyek.nix
+
+ ./nixvim/nixvim.nix
];
}