From baae94abb6a9a03914216f0f373b7b0f6b0207bd Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Sat, 19 Sep 2026 01:40:50 +0530 Subject: chore: removed all raw string configurations options in favor of files Moved all configurations which were previously raw strings chunks, for options that the home-manager options didn't provide, into files for that specific configuration and reading there contents instead (with string replacement for passing information from the rest of the configuration). --- modules/communication/neomutt/.neomuttrc | 7 ++ modules/communication/neomutt/account/.muttrc | 2 + modules/communication/neomutt/account/default.nix | 2 +- .../neomutt/account/flavors/gmail.nix | 45 --------- .../neomutt/account/flavors/gmail/.muttrc | 2 + .../neomutt/account/flavors/gmail/default.nix | 42 ++++++++ .../communication/neomutt/account/sync-channel.nix | 13 ++- modules/communication/neomutt/default.nix | 24 ++--- modules/communication/neomutt/mailcap | 6 ++ modules/development/nixvim/default.nix | 20 ---- modules/development/nixvim/plugins/cmp.nix | 36 ------- modules/development/nixvim/plugins/cmp/default.nix | 28 ++++++ modules/development/nixvim/plugins/cmp/escape.lua | 7 ++ modules/development/nixvim/plugins/comment.nix | 22 ---- .../development/nixvim/plugins/comment/default.nix | 22 ++++ modules/development/nixvim/plugins/dap-ui.nix | 25 ----- .../development/nixvim/plugins/dap-ui/dap-ui.lua | 10 ++ .../development/nixvim/plugins/dap-ui/default.nix | 28 ++++++ .../nixvim/plugins/dap-virtual-text.nix | 7 -- .../nixvim/plugins/dap-virtual-text/default.nix | 7 ++ modules/development/nixvim/plugins/dap.nix | 81 --------------- modules/development/nixvim/plugins/dap/default.nix | 67 ++++++++++++ modules/development/nixvim/plugins/default.nix | 32 +++--- modules/development/nixvim/plugins/gitsigns.nix | 112 --------------------- .../nixvim/plugins/gitsigns/default.nix | 45 +++++++++ .../nixvim/plugins/gitsigns/on-attach.lua | 66 ++++++++++++ .../nixvim/plugins/indent-blankline.nix | 13 --- .../nixvim/plugins/indent-blankline/default.nix | 13 +++ modules/development/nixvim/plugins/lsp.nix | 33 ------ modules/development/nixvim/plugins/lsp/default.nix | 43 ++++++++ .../nixvim/plugins/lsp/open-diagnostic-float.lua | 3 + modules/development/nixvim/plugins/lualine.nix | 97 ------------------ .../development/nixvim/plugins/lualine/default.nix | 97 ++++++++++++++++++ modules/development/nixvim/plugins/luasnip.nix | 7 -- .../development/nixvim/plugins/luasnip/default.nix | 7 ++ modules/development/nixvim/plugins/noice.nix | 7 -- .../development/nixvim/plugins/noice/default.nix | 7 ++ modules/development/nixvim/plugins/nvim-tree.nix | 56 ----------- .../nixvim/plugins/nvim-tree/default.nix | 56 +++++++++++ modules/development/nixvim/plugins/telescope.nix | 74 -------------- .../nixvim/plugins/telescope/default.nix | 74 ++++++++++++++ modules/development/nixvim/plugins/treesitter.nix | 18 ---- .../nixvim/plugins/treesitter/default.nix | 18 ++++ .../development/nixvim/plugins/web-devicons.nix | 7 -- .../nixvim/plugins/web-devicons/default.nix | 7 ++ modules/development/nixvim/plugins/which-key.nix | 47 --------- .../nixvim/plugins/which-key/default.nix | 47 +++++++++ modules/terminal/kitty/default.nix | 20 +--- modules/terminal/kitty/kitty.conf | 17 ++++ modules/terminal/zsh/default.nix | 19 +--- modules/terminal/zsh/init.sh | 14 +++ modules/web/chawan/default.nix | 15 +-- modules/web/chawan/user-style.css | 56 +++++++++++ 53 files changed, 834 insertions(+), 796 deletions(-) create mode 100644 modules/communication/neomutt/account/.muttrc delete mode 100644 modules/communication/neomutt/account/flavors/gmail.nix create mode 100644 modules/communication/neomutt/account/flavors/gmail/.muttrc create mode 100644 modules/communication/neomutt/account/flavors/gmail/default.nix create mode 100644 modules/communication/neomutt/mailcap delete mode 100644 modules/development/nixvim/plugins/cmp.nix create mode 100644 modules/development/nixvim/plugins/cmp/default.nix create mode 100644 modules/development/nixvim/plugins/cmp/escape.lua delete mode 100644 modules/development/nixvim/plugins/comment.nix create mode 100644 modules/development/nixvim/plugins/comment/default.nix delete mode 100644 modules/development/nixvim/plugins/dap-ui.nix create mode 100644 modules/development/nixvim/plugins/dap-ui/dap-ui.lua create mode 100644 modules/development/nixvim/plugins/dap-ui/default.nix delete mode 100644 modules/development/nixvim/plugins/dap-virtual-text.nix create mode 100644 modules/development/nixvim/plugins/dap-virtual-text/default.nix delete mode 100644 modules/development/nixvim/plugins/dap.nix create mode 100644 modules/development/nixvim/plugins/dap/default.nix delete mode 100644 modules/development/nixvim/plugins/gitsigns.nix create mode 100644 modules/development/nixvim/plugins/gitsigns/default.nix create mode 100644 modules/development/nixvim/plugins/gitsigns/on-attach.lua delete mode 100644 modules/development/nixvim/plugins/indent-blankline.nix create mode 100644 modules/development/nixvim/plugins/indent-blankline/default.nix delete mode 100644 modules/development/nixvim/plugins/lsp.nix create mode 100644 modules/development/nixvim/plugins/lsp/default.nix create mode 100644 modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua delete mode 100644 modules/development/nixvim/plugins/lualine.nix create mode 100644 modules/development/nixvim/plugins/lualine/default.nix delete mode 100644 modules/development/nixvim/plugins/luasnip.nix create mode 100644 modules/development/nixvim/plugins/luasnip/default.nix delete mode 100644 modules/development/nixvim/plugins/noice.nix create mode 100644 modules/development/nixvim/plugins/noice/default.nix delete mode 100644 modules/development/nixvim/plugins/nvim-tree.nix create mode 100644 modules/development/nixvim/plugins/nvim-tree/default.nix delete mode 100644 modules/development/nixvim/plugins/telescope.nix create mode 100644 modules/development/nixvim/plugins/telescope/default.nix delete mode 100644 modules/development/nixvim/plugins/treesitter.nix create mode 100644 modules/development/nixvim/plugins/treesitter/default.nix delete mode 100644 modules/development/nixvim/plugins/web-devicons.nix create mode 100644 modules/development/nixvim/plugins/web-devicons/default.nix delete mode 100644 modules/development/nixvim/plugins/which-key.nix create mode 100644 modules/development/nixvim/plugins/which-key/default.nix create mode 100644 modules/terminal/kitty/kitty.conf create mode 100644 modules/terminal/zsh/init.sh create mode 100644 modules/web/chawan/user-style.css (limited to 'modules') diff --git a/modules/communication/neomutt/.neomuttrc b/modules/communication/neomutt/.neomuttrc index 3ed08f9..2f7ef00 100644 --- a/modules/communication/neomutt/.neomuttrc +++ b/modules/communication/neomutt/.neomuttrc @@ -1,3 +1,10 @@ +# Read messages in Neovim. `-` makes Neovim read the message from +# stdin and -R prevents accidental edits to message content. +set pager = "@@PAGER@@ -R -n +'setlocal nolist | silent! 1,2g/^$/delete _ | nohlsearch | setlocal nomodified nomodifiable' -" +# Return directly to the index when Neovim exits and do not prepend +# NeoMutt’s pager status line to the message passed to Neovim. +set noprompt_after +set pager_format = "" # Base16 OneDark Dark terminal colors for neomutt # Each column in the index receives a distinct color to keep the UI organized. diff --git a/modules/communication/neomutt/account/.muttrc b/modules/communication/neomutt/account/.muttrc new file mode 100644 index 0000000..2f8c9f2 --- /dev/null +++ b/modules/communication/neomutt/account/.muttrc @@ -0,0 +1,2 @@ +macro index,pager gs "set my_wait_key=$wait_key wait_key=noneomutt-sync @@QUICK_CHANNEL@@set wait_key=$my_wait_key" +macro index,pager gS "set my_wait_key=$wait_key wait_key=noneomutt-sync @@FULL_CHANNEL@@set wait_key=$my_wait_key" diff --git a/modules/communication/neomutt/account/default.nix b/modules/communication/neomutt/account/default.nix index 5c0f8bf..e2d92eb 100644 --- a/modules/communication/neomutt/account/default.nix +++ b/modules/communication/neomutt/account/default.nix @@ -9,8 +9,8 @@ type = lib.types.attrsOf ( lib.types.submodule { imports = [ + ./flavors/gmail ./options.nix - ./flavors/gmail.nix ./sync-channel.nix ]; } diff --git a/modules/communication/neomutt/account/flavors/gmail.nix b/modules/communication/neomutt/account/flavors/gmail.nix deleted file mode 100644 index 9cb51b2..0000000 --- a/modules/communication/neomutt/account/flavors/gmail.nix +++ /dev/null @@ -1,45 +0,0 @@ -# Gmail-specific defaults for folder names, mbsync patterns, and mailboxes -{ - config, - lib, - name, - ... -}: -{ - config = lib.mkIf (config.flavor == "gmail.com") { - folders = { - inbox = lib.mkDefault "Inbox"; - drafts = lib.mkDefault "[Gmail]/Drafts"; - sent = lib.mkDefault "[Gmail]/Sent Mail"; - trash = lib.mkDefault "[Gmail]/Trash"; - }; - - mbsync = { - create = lib.mkDefault "maildir"; - patterns = lib.mkDefault [ - "INBOX" - "[Gmail]/Drafts" - "[Gmail]/Sent Mail" - "[Gmail]/Spam" - ]; - extraConfig.channel = { - Sync = lib.mkDefault "All"; - CopyArrivalDate = lib.mkDefault "yes"; - Expunge = lib.mkDefault "Both"; - SyncState = lib.mkDefault "*"; - }; - }; - - neomutt.extraConfig = lib.mkBefore '' - mailboxes =Inbox ="[Gmail]/Drafts" ="[Gmail]/Sent Mail" ="[Gmail]/Spam" ="[Gmail]/Trash" - unset record - ''; - - notmuch.neomutt.virtualMailboxes = lib.mkDefault [ - { - name = "All Mail"; - query = "folder:${name}/Inbox or folder:\"${name}/[Gmail]/Sent Mail\""; - } - ]; - }; -} diff --git a/modules/communication/neomutt/account/flavors/gmail/.muttrc b/modules/communication/neomutt/account/flavors/gmail/.muttrc new file mode 100644 index 0000000..c87bba0 --- /dev/null +++ b/modules/communication/neomutt/account/flavors/gmail/.muttrc @@ -0,0 +1,2 @@ +mailboxes =Inbox ="[Gmail]/Drafts" ="[Gmail]/Sent Mail" ="[Gmail]/Spam" ="[Gmail]/Trash" +unset record diff --git a/modules/communication/neomutt/account/flavors/gmail/default.nix b/modules/communication/neomutt/account/flavors/gmail/default.nix new file mode 100644 index 0000000..66d7db3 --- /dev/null +++ b/modules/communication/neomutt/account/flavors/gmail/default.nix @@ -0,0 +1,42 @@ +# Gmail-specific defaults for folder names, mbsync patterns, and mailboxes +{ + config, + lib, + name, + ... +}: +{ + config = lib.mkIf (config.flavor == "gmail.com") { + folders = { + inbox = lib.mkDefault "Inbox"; + drafts = lib.mkDefault "[Gmail]/Drafts"; + sent = lib.mkDefault "[Gmail]/Sent Mail"; + trash = lib.mkDefault "[Gmail]/Trash"; + }; + + mbsync = { + create = lib.mkDefault "maildir"; + patterns = lib.mkDefault [ + "INBOX" + "[Gmail]/Drafts" + "[Gmail]/Sent Mail" + "[Gmail]/Spam" + ]; + extraConfig.channel = { + Sync = lib.mkDefault "All"; + CopyArrivalDate = lib.mkDefault "yes"; + Expunge = lib.mkDefault "Both"; + SyncState = lib.mkDefault "*"; + }; + }; + + neomutt.extraConfig = lib.mkBefore (builtins.readFile ./.muttrc); + + notmuch.neomutt.virtualMailboxes = lib.mkDefault [ + { + name = "All Mail"; + query = "folder:${name}/Inbox or folder:\"${name}/[Gmail]/Sent Mail\""; + } + ]; + }; +} diff --git a/modules/communication/neomutt/account/sync-channel.nix b/modules/communication/neomutt/account/sync-channel.nix index 7e538f2..6f3bd54 100644 --- a/modules/communication/neomutt/account/sync-channel.nix +++ b/modules/communication/neomutt/account/sync-channel.nix @@ -3,7 +3,7 @@ lib, name, ... -}@inputs: +}: let mbsyncNamesFromName = (import ../lib.nix { inherit lib; }).mbsyncNamesFromName; @@ -14,9 +14,12 @@ in let mbsyncNames = mbsyncNamesFromName name; in - '' - macro index,pager gs "set my_wait_key=$wait_key wait_key=noneomutt-sync ${mbsyncNames.channels.quick}set wait_key=$my_wait_key" - macro index,pager gS "set my_wait_key=$wait_key wait_key=noneomutt-sync ${mbsyncNames.channels.full}set wait_key=$my_wait_key" - ''; + builtins.replaceStrings + [ "@@QUICK_CHANNEL@@" "@@FULL_CHANNEL@@" ] + [ + mbsyncNames.channels.quick + mbsyncNames.channels.full + ] + (builtins.readFile ./.muttrc); }; } diff --git a/modules/communication/neomutt/default.nix b/modules/communication/neomutt/default.nix index 84e6c61..b9f22e0 100644 --- a/modules/communication/neomutt/default.nix +++ b/modules/communication/neomutt/default.nix @@ -79,14 +79,9 @@ in xdg.mimeApps.defaultApplications = { "x-scheme-handler/mailto" = "neomutt.desktop"; }; - xdg.configFile."neomutt/mailcap".text = '' - text/html; ${lib.getExe config.web.chawan.package} '%s'; nametemplate=%s.html - image/*; xdg-open '%s' & - application/pdf; xdg-open '%s'; nametemplate=%s.pdf - video/*; xdg-open '%s' & - audio/*; xdg-open '%s' & - application/*; xdg-open '%s' & - ''; + xdg.configFile."neomutt/mailcap".text = + builtins.replaceStrings [ "@@HTML_VIEWER@@" ] [ (lib.getExe config.web.chawan.package) ] + (builtins.readFile ./mailcap); programs.neomutt = { enable = true; package = pkgs.symlinkJoin { @@ -107,16 +102,9 @@ in vimKeys = false; unmailboxes = true; checkStatsInterval = 20; - extraConfig = '' - # Read messages in Neovim. `-` makes Neovim read the message from - # stdin and -R prevents accidental edits to message content. - set pager = "${lib.getExe config.development.nixvim.package} -R -n +'setlocal nolist | silent! 1,2g/^$/delete _ | nohlsearch | setlocal nomodified nomodifiable' -" - # Return directly to the index when Neovim exits and do not prepend - # NeoMutt’s pager status line to the message passed to Neovim. - set noprompt_after - set pager_format = "" - '' - + builtins.readFile ./.neomuttrc; + extraConfig = + builtins.replaceStrings [ "@@PAGER@@" ] [ (lib.getExe config.development.nixvim.package) ] + (builtins.readFile ./.neomuttrc); }; }; } diff --git a/modules/communication/neomutt/mailcap b/modules/communication/neomutt/mailcap new file mode 100644 index 0000000..3af2794 --- /dev/null +++ b/modules/communication/neomutt/mailcap @@ -0,0 +1,6 @@ +text/html; @@HTML_VIEWER@@ '%s'; nametemplate=%s.html +image/*; xdg-open '%s' & +application/pdf; xdg-open '%s'; nametemplate=%s.pdf +video/*; xdg-open '%s' & +audio/*; xdg-open '%s' & +application/*; xdg-open '%s' & diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix index 74b0c1f..00712cc 100644 --- a/modules/development/nixvim/default.nix +++ b/modules/development/nixvim/default.nix @@ -78,26 +78,6 @@ in }; }; }; - - autoCmd = [ - { - event = [ "CursorHold" ]; - pattern = "*"; - callback.__raw = '' - function() - vim.diagnostic.open_float(nil, { focus = false }) - end - ''; - } - { - event = [ "FileType" ]; - pattern = [ - "yaml" - "yml" - ]; - command = "setlocal expandtab shiftwidth=2 softtabstop=2 tabstop=2"; - } - ]; }; }; } diff --git a/modules/development/nixvim/plugins/cmp.nix b/modules/development/nixvim/plugins/cmp.nix deleted file mode 100644 index b2347ba..0000000 --- a/modules/development/nixvim/plugins/cmp.nix +++ /dev/null @@ -1,36 +0,0 @@ -# Completion plugin for auto-completion -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.cmp = lib.mkIf config.development.nixvim.enable { - enable = true; - autoEnableSources = true; - settings = { - snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; - mapping = { - "" = "cmp.mapping.complete()"; - "" = "cmp.mapping.confirm({ select = true })"; - "" = "cmp.mapping.select_next_item()"; - "" = "cmp.mapping.select_prev_item()"; - "" = "cmp.mapping.select_next_item()"; - "" = "cmp.mapping.select_prev_item()"; - "" = "cmp.mapping.scroll_docs(-4)"; # scroll docs up - "" = "cmp.mapping.scroll_docs(4)"; # scroll docs down - - "" = '' - cmp.mapping(function(fallback) - if cmp.visible() then - cmp.abort() - else - fallback() - end - end, { "i" }) - ''; - }; - sources = [ - { name = "nvim_lsp"; } - { name = "path"; } - { name = "buffer"; } - ]; - }; - }; -} diff --git a/modules/development/nixvim/plugins/cmp/default.nix b/modules/development/nixvim/plugins/cmp/default.nix new file mode 100644 index 0000000..4698801 --- /dev/null +++ b/modules/development/nixvim/plugins/cmp/default.nix @@ -0,0 +1,28 @@ +# Completion plugin for auto-completion +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.cmp = lib.mkIf config.development.nixvim.enable { + enable = true; + autoEnableSources = true; + settings = { + snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; + mapping = { + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.confirm({ select = true })"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.scroll_docs(-4)"; # scroll docs up + "" = "cmp.mapping.scroll_docs(4)"; # scroll docs down + + "" = builtins.readFile ./escape.lua; + }; + sources = [ + { name = "nvim_lsp"; } + { name = "path"; } + { name = "buffer"; } + ]; + }; + }; +} diff --git a/modules/development/nixvim/plugins/cmp/escape.lua b/modules/development/nixvim/plugins/cmp/escape.lua new file mode 100644 index 0000000..e215bc7 --- /dev/null +++ b/modules/development/nixvim/plugins/cmp/escape.lua @@ -0,0 +1,7 @@ +cmp.mapping(function(fallback) + if cmp.visible() then + cmp.abort() + else + fallback() + end +end, { "i" }) diff --git a/modules/development/nixvim/plugins/comment.nix b/modules/development/nixvim/plugins/comment.nix deleted file mode 100644 index 8c69218..0000000 --- a/modules/development/nixvim/plugins/comment.nix +++ /dev/null @@ -1,22 +0,0 @@ -# Comment toggling plugin -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.comment = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - toggler = { - line = "cc"; # toggle line comment - block = "cb"; # toggle block comment - }; - opleader = { - line = "cc"; # toggle line comment - block = "cb"; # toggle block comment - }; - extra = { - above = "cu"; # add comment line above - below = "cd"; # add comment line below - eol = "ce"; # add comment at end of line - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/comment/default.nix b/modules/development/nixvim/plugins/comment/default.nix new file mode 100644 index 0000000..8c69218 --- /dev/null +++ b/modules/development/nixvim/plugins/comment/default.nix @@ -0,0 +1,22 @@ +# Comment toggling plugin +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.comment = lib.mkIf config.development.nixvim.enable { + enable = true; + settings = { + toggler = { + line = "cc"; # toggle line comment + block = "cb"; # toggle block comment + }; + opleader = { + line = "cc"; # toggle line comment + block = "cb"; # toggle block comment + }; + extra = { + above = "cu"; # add comment line above + below = "cd"; # add comment line below + eol = "ce"; # add comment at end of line + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/dap-ui.nix b/modules/development/nixvim/plugins/dap-ui.nix deleted file mode 100644 index cc25d2d..0000000 --- a/modules/development/nixvim/plugins/dap-ui.nix +++ /dev/null @@ -1,25 +0,0 @@ -# A UI for nvim-dap. -{ config, lib, ... }: -{ - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { - plugins.dap-ui = { - enable = true; - }; - - keymaps = [ - # dap-ui controls - { - mode = "n"; - key = "du"; - action = "lua require('dapui').toggle()"; - options.desc = "Debug: Toggle UI"; - } - { - mode = "n"; - key = "de"; - action = "lua require('dapui').eval()"; - options.desc = "Debug: Eval Expression Under Cursor"; - } - ]; - }; -} diff --git a/modules/development/nixvim/plugins/dap-ui/dap-ui.lua b/modules/development/nixvim/plugins/dap-ui/dap-ui.lua new file mode 100644 index 0000000..bcf4fe3 --- /dev/null +++ b/modules/development/nixvim/plugins/dap-ui/dap-ui.lua @@ -0,0 +1,10 @@ +local dap, dapui = require("dap"), require("dapui") +dap.listeners.after.event_initialized["dapui_config"] = function() + dapui.open() +end +dap.listeners.before.event_terminated["dapui_config"] = function() + dapui.close() +end +dap.listeners.before.event_exited["dapui_config"] = function() + dapui.close() +end diff --git a/modules/development/nixvim/plugins/dap-ui/default.nix b/modules/development/nixvim/plugins/dap-ui/default.nix new file mode 100644 index 0000000..eb83609 --- /dev/null +++ b/modules/development/nixvim/plugins/dap-ui/default.nix @@ -0,0 +1,28 @@ +# A UI for nvim-dap. +{ config, lib, ... }: +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.dap-ui = { + enable = true; + }; + + keymaps = [ + # dap-ui controls + { + mode = "n"; + key = "du"; + action = "lua require('dapui').toggle()"; + options.desc = "Debug: Toggle UI"; + } + { + mode = "n"; + key = "de"; + action = "lua require('dapui').eval()"; + options.desc = "Debug: Eval Expression Under Cursor"; + } + ]; + + # Auto open/close dap-ui with the debug session lifecycle + extraConfigLua = builtins.readFile ./dap-ui.lua; + }; +} diff --git a/modules/development/nixvim/plugins/dap-virtual-text.nix b/modules/development/nixvim/plugins/dap-virtual-text.nix deleted file mode 100644 index 4fea5ca..0000000 --- a/modules/development/nixvim/plugins/dap-virtual-text.nix +++ /dev/null @@ -1,7 +0,0 @@ -# A plugin that adds virtual text support to the nvim-dap. -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.dap-virtual-text = lib.mkIf config.development.nixvim.enable { - enable = true; - }; -} diff --git a/modules/development/nixvim/plugins/dap-virtual-text/default.nix b/modules/development/nixvim/plugins/dap-virtual-text/default.nix new file mode 100644 index 0000000..4fea5ca --- /dev/null +++ b/modules/development/nixvim/plugins/dap-virtual-text/default.nix @@ -0,0 +1,7 @@ +# A plugin that adds virtual text support to the nvim-dap. +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.dap-virtual-text = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/dap.nix b/modules/development/nixvim/plugins/dap.nix deleted file mode 100644 index 02bffa6..0000000 --- a/modules/development/nixvim/plugins/dap.nix +++ /dev/null @@ -1,81 +0,0 @@ -# Debug Adapter Protocol client implementation for Neovim. -{ config, lib, ... }: -{ - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { - plugins.dap = { - enable = true; - }; - - keymaps = [ - # Core DAP controls - { - mode = "n"; - key = "dc"; - action = "lua require('dap').continue()"; - options.desc = "Debug: Continue"; - } - { - mode = "n"; - key = "di"; - action = "lua require('dap').step_into()"; - options.desc = "Debug: Step Into"; - } - { - mode = "n"; - key = "do"; - action = "lua require('dap').step_over()"; - options.desc = "Debug: Step Over"; - } - { - mode = "n"; - key = "dO"; - action = "lua require('dap').step_out()"; - options.desc = "Debug: Step Out"; - } - { - mode = "n"; - key = "db"; - action = "lua require('dap').toggle_breakpoint()"; - options.desc = "Debug: Toggle Breakpoint"; - } - { - mode = "n"; - key = "dB"; - action = "lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))"; - options.desc = "Debug: Conditional Breakpoint"; - } - { - mode = "n"; - key = "dl"; - action = "lua require('dap').run_last()"; - options.desc = "Debug: Run Last"; - } - { - mode = "n"; - key = "dt"; - action = "lua require('dap').terminate()"; - options.desc = "Debug: Terminate"; - } - { - mode = "n"; - key = "dr"; - action = "lua require('dap').repl.toggle()"; - options.desc = "Debug: Toggle REPL"; - } - ]; - - # Auto open/close dap-ui with the debug session lifecycle - extraConfigLua = '' - local dap, dapui = require("dap"), require("dapui") - dap.listeners.after.event_initialized["dapui_config"] = function() - dapui.open() - end - dap.listeners.before.event_terminated["dapui_config"] = function() - dapui.close() - end - dap.listeners.before.event_exited["dapui_config"] = function() - dapui.close() - end - ''; - }; -} diff --git a/modules/development/nixvim/plugins/dap/default.nix b/modules/development/nixvim/plugins/dap/default.nix new file mode 100644 index 0000000..97452ac --- /dev/null +++ b/modules/development/nixvim/plugins/dap/default.nix @@ -0,0 +1,67 @@ +# Debug Adapter Protocol client implementation for Neovim. +{ config, lib, ... }: +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.dap = { + enable = true; + }; + + keymaps = [ + # Core DAP controls + { + mode = "n"; + key = "dc"; + action = "lua require('dap').continue()"; + options.desc = "Debug: Continue"; + } + { + mode = "n"; + key = "di"; + action = "lua require('dap').step_into()"; + options.desc = "Debug: Step Into"; + } + { + mode = "n"; + key = "do"; + action = "lua require('dap').step_over()"; + options.desc = "Debug: Step Over"; + } + { + mode = "n"; + key = "dO"; + action = "lua require('dap').step_out()"; + options.desc = "Debug: Step Out"; + } + { + mode = "n"; + key = "db"; + action = "lua require('dap').toggle_breakpoint()"; + options.desc = "Debug: Toggle Breakpoint"; + } + { + mode = "n"; + key = "dB"; + action = "lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))"; + options.desc = "Debug: Conditional Breakpoint"; + } + { + mode = "n"; + key = "dl"; + action = "lua require('dap').run_last()"; + options.desc = "Debug: Run Last"; + } + { + mode = "n"; + key = "dt"; + action = "lua require('dap').terminate()"; + options.desc = "Debug: Terminate"; + } + { + mode = "n"; + key = "dr"; + action = "lua require('dap').repl.toggle()"; + options.desc = "Debug: Toggle REPL"; + } + ]; + }; +} diff --git a/modules/development/nixvim/plugins/default.nix b/modules/development/nixvim/plugins/default.nix index 67f7f06..ecc9441 100644 --- a/modules/development/nixvim/plugins/default.nix +++ b/modules/development/nixvim/plugins/default.nix @@ -2,21 +2,21 @@ { ... }: { imports = [ - ./cmp.nix - ./comment.nix - ./dap-ui.nix - ./dap-virtual-text.nix - ./dap.nix - ./gitsigns.nix - ./indent-blankline.nix - ./lsp.nix - ./lualine.nix - ./luasnip.nix - ./noice.nix - ./nvim-tree.nix - ./telescope.nix - ./treesitter.nix - ./web-devicons.nix - ./which-key.nix + ./cmp + ./comment + ./dap-ui + ./dap-virtual-text + ./dap + ./gitsigns + ./indent-blankline + ./lsp + ./lualine + ./luasnip + ./noice + ./nvim-tree + ./telescope + ./treesitter + ./web-devicons + ./which-key ]; } diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix deleted file mode 100644 index d9bda21..0000000 --- a/modules/development/nixvim/plugins/gitsigns.nix +++ /dev/null @@ -1,112 +0,0 @@ -# Git integration: signs, blame, diffs and hunk operations -{ - config, - lib, - pkgs, - ... -}: -let - base16Colors = import ../../../colors/base16 { inherit config lib pkgs; }; -in -{ - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { - plugins.gitsigns = { - enable = true; - - settings = { - signs = { - add.text = "┃"; - change.text = "┃"; - delete.text = "▁"; - topdelete.text = "▔"; - changedelete.text = "~"; - untracked.text = "┆"; - }; - - signcolumn = false; - numhl = true; - current_line_blame = false; - current_line_blame_formatter = ", - "; - - on_attach = '' - function(bufnr) - local gitsigns = require('gitsigns') - local function map(mode, lhs, rhs, desc) - vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, silent = true, desc = desc }) - end - - -- Navigation - map('n', ']c', function() gitsigns.nav_hunk('next') end, 'Next hunk') - map('n', '[c', function() gitsigns.nav_hunk('prev') end, 'Previous hunk') - map('n', ']C', function() gitsigns.nav_hunk('last') end, 'Last hunk') - map('n', '[C', function() gitsigns.nav_hunk('first') end, 'First hunk') - - -- Hunk actions - map('n', 'gs', gitsigns.stage_hunk, 'Stage hunk') - map('v', 'gs', function() - gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) - end, 'Stage visual range hunk') - map('n', 'gr', gitsigns.reset_hunk, 'Reset hunk') - map('v', 'gr', function() - gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) - end, 'Reset visual range hunk') - map('n', 'gS', gitsigns.stage_buffer, 'Stage buffer') - map('n', 'gR', gitsigns.reset_buffer, 'Reset buffer') - map('n', 'gi', gitsigns.reset_buffer_index, 'Unstage buffer (reset index)') - map('n', 'gu', gitsigns.undo_stage_hunk, 'Undo stage hunk') - - -- Preview - map('n', 'gp', gitsigns.preview_hunk, 'Preview hunk') - map('n', 'gP', gitsigns.preview_hunk_inline, 'Preview hunk inline') - - -- Blame - map('n', 'gb', gitsigns.blame_line, 'Blame line') - map('n', 'gB', function() - gitsigns.blame_line({ full = true }) - end, 'Blame line (full)') - - -- Diffs / base - map('n', 'gd', gitsigns.diffthis, 'Diff this (index)') - map('n', 'gD', function() - gitsigns.diffthis('~') - end, 'Diff this (HEAD)') - map('n', 'gc', function() - gitsigns.change_base(nil, true) - end, 'Change diff base') - - -- Quickfix / location list - map('n', 'gq', gitsigns.setqflist, 'Hunks to quickfix') - map('n', 'gQ', function() - gitsigns.setqflist('all') - end, 'Repo hunks to quickfix') - map('n', 'gl', gitsigns.setloclist, 'Hunks to location list') - - -- Toggles - map('n', 'gts', gitsigns.toggle_signs, 'Toggle signs') - map('n', 'gtl', gitsigns.toggle_linehl, 'Toggle line highlight') - map('n', 'gtn', gitsigns.toggle_numhl, 'Toggle number highlight') - map('n', 'gtw', gitsigns.toggle_word_diff, 'Toggle word diff') - map('n', 'gtb', gitsigns.toggle_current_line_blame, 'Toggle current line blame') - map('n', 'gtd', gitsigns.toggle_deleted, 'Toggle deleted lines') - - -- Misc - map('n', 'gF', gitsigns.refresh, 'Refresh gitsigns') - - -- Text object - map({ 'o', 'x' }, 'ih', gitsigns.select_hunk, 'Select hunk text object') - end - ''; - }; - }; - - highlight = with base16Colors.colorsWithHashPrefix; { - GitSignsAdd.fg = base0B; - GitSignsChange.fg = base0A; - GitSignsDelete.fg = base08; - GitSignsTopdelete.fg = base08; - GitSignsChangedelete.fg = base0A; - GitSignsUntracked.fg = base0C; - GitSignsCurrentLineBlame.fg = base04; - }; - }; -} diff --git a/modules/development/nixvim/plugins/gitsigns/default.nix b/modules/development/nixvim/plugins/gitsigns/default.nix new file mode 100644 index 0000000..af8b920 --- /dev/null +++ b/modules/development/nixvim/plugins/gitsigns/default.nix @@ -0,0 +1,45 @@ +# Git integration: signs, blame, diffs and hunk operations +{ + config, + lib, + pkgs, + ... +}: +let + base16Colors = import ../../../../colors/base16 { inherit config lib pkgs; }; +in +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.gitsigns = { + enable = true; + + settings = { + signs = { + add.text = "┃"; + change.text = "┃"; + delete.text = "▁"; + topdelete.text = "▔"; + changedelete.text = "~"; + untracked.text = "┆"; + }; + + signcolumn = false; + numhl = true; + current_line_blame = false; + current_line_blame_formatter = ", - "; + + on_attach = builtins.readFile ./on-attach.lua; + }; + }; + + highlight = with base16Colors.colorsWithHashPrefix; { + GitSignsAdd.fg = base0B; + GitSignsChange.fg = base0A; + GitSignsDelete.fg = base08; + GitSignsTopdelete.fg = base08; + GitSignsChangedelete.fg = base0A; + GitSignsUntracked.fg = base0C; + GitSignsCurrentLineBlame.fg = base04; + }; + }; +} diff --git a/modules/development/nixvim/plugins/gitsigns/on-attach.lua b/modules/development/nixvim/plugins/gitsigns/on-attach.lua new file mode 100644 index 0000000..5f63330 --- /dev/null +++ b/modules/development/nixvim/plugins/gitsigns/on-attach.lua @@ -0,0 +1,66 @@ +function(bufnr) + local gitsigns = require('gitsigns') + local function map(mode, lhs, rhs, desc) + vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, silent = true, desc = desc }) + end + + -- Navigation + map('n', ']c', function() gitsigns.nav_hunk('next') end, 'Next hunk') + map('n', '[c', function() gitsigns.nav_hunk('prev') end, 'Previous hunk') + map('n', ']C', function() gitsigns.nav_hunk('last') end, 'Last hunk') + map('n', '[C', function() gitsigns.nav_hunk('first') end, 'First hunk') + + -- Hunk actions + map('n', 'gs', gitsigns.stage_hunk, 'Stage hunk') + map('v', 'gs', function() + gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) + end, 'Stage visual range hunk') + map('n', 'gr', gitsigns.reset_hunk, 'Reset hunk') + map('v', 'gr', function() + gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) + end, 'Reset visual range hunk') + map('n', 'gS', gitsigns.stage_buffer, 'Stage buffer') + map('n', 'gR', gitsigns.reset_buffer, 'Reset buffer') + map('n', 'gi', gitsigns.reset_buffer_index, 'Unstage buffer (reset index)') + map('n', 'gu', gitsigns.undo_stage_hunk, 'Undo stage hunk') + + -- Preview + map('n', 'gp', gitsigns.preview_hunk, 'Preview hunk') + map('n', 'gP', gitsigns.preview_hunk_inline, 'Preview hunk inline') + + -- Blame + map('n', 'gb', gitsigns.blame_line, 'Blame line') + map('n', 'gB', function() + gitsigns.blame_line({ full = true }) + end, 'Blame line (full)') + + -- Diffs / base + map('n', 'gd', gitsigns.diffthis, 'Diff this (index)') + map('n', 'gD', function() + gitsigns.diffthis('~') + end, 'Diff this (HEAD)') + map('n', 'gc', function() + gitsigns.change_base(nil, true) + end, 'Change diff base') + + -- Quickfix / location list + map('n', 'gq', gitsigns.setqflist, 'Hunks to quickfix') + map('n', 'gQ', function() + gitsigns.setqflist('all') + end, 'Repo hunks to quickfix') + map('n', 'gl', gitsigns.setloclist, 'Hunks to location list') + + -- Toggles + map('n', 'gts', gitsigns.toggle_signs, 'Toggle signs') + map('n', 'gtl', gitsigns.toggle_linehl, 'Toggle line highlight') + map('n', 'gtn', gitsigns.toggle_numhl, 'Toggle number highlight') + map('n', 'gtw', gitsigns.toggle_word_diff, 'Toggle word diff') + map('n', 'gtb', gitsigns.toggle_current_line_blame, 'Toggle current line blame') + map('n', 'gtd', gitsigns.toggle_deleted, 'Toggle deleted lines') + + -- Misc + map('n', 'gF', gitsigns.refresh, 'Refresh gitsigns') + + -- Text object + map({ 'o', 'x' }, 'ih', gitsigns.select_hunk, 'Select hunk text object') +end diff --git a/modules/development/nixvim/plugins/indent-blankline.nix b/modules/development/nixvim/plugins/indent-blankline.nix deleted file mode 100644 index 6890dbf..0000000 --- a/modules/development/nixvim/plugins/indent-blankline.nix +++ /dev/null @@ -1,13 +0,0 @@ -# Visual indentation guides -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - indent = { - char = "┊"; - tab_char = "│"; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/indent-blankline/default.nix b/modules/development/nixvim/plugins/indent-blankline/default.nix new file mode 100644 index 0000000..6890dbf --- /dev/null +++ b/modules/development/nixvim/plugins/indent-blankline/default.nix @@ -0,0 +1,13 @@ +# Visual indentation guides +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.development.nixvim.enable { + enable = true; + settings = { + indent = { + char = "┊"; + tab_char = "│"; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/lsp.nix b/modules/development/nixvim/plugins/lsp.nix deleted file mode 100644 index 6c64a37..0000000 --- a/modules/development/nixvim/plugins/lsp.nix +++ /dev/null @@ -1,33 +0,0 @@ -# Language Server Protocol configuration -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.lsp = lib.mkIf config.development.nixvim.enable { - enable = true; - inlayHints = true; - autoLoad = true; - - keymaps = { - lspBuf = { - "lh" = "hover"; - "lr" = "references"; - "ld" = "definition"; - "li" = "implementation"; - "lt" = "type_definition"; - "lD" = "declaration"; - "lR" = "rename"; - "la" = "code_action"; - "lf" = "format"; - "ls" = "signature_help"; - "lwa" = "add_workspace_folder"; - "lwr" = "remove_workspace_folder"; - "lwl" = "list_workspace_folders"; - }; - diagnostic = { - "le" = "open_float"; - "lq" = "setloclist"; - "[d" = "goto_prev"; - "]d" = "goto_next"; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/lsp/default.nix b/modules/development/nixvim/plugins/lsp/default.nix new file mode 100644 index 0000000..1d56b66 --- /dev/null +++ b/modules/development/nixvim/plugins/lsp/default.nix @@ -0,0 +1,43 @@ +# Language Server Protocol configuration +{ config, lib, ... }: +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.lsp = { + enable = true; + inlayHints = true; + autoLoad = true; + + keymaps = { + lspBuf = { + "lh" = "hover"; + "lr" = "references"; + "ld" = "definition"; + "li" = "implementation"; + "lt" = "type_definition"; + "lD" = "declaration"; + "lR" = "rename"; + "la" = "code_action"; + "lf" = "format"; + "ls" = "signature_help"; + "lwa" = "add_workspace_folder"; + "lwr" = "remove_workspace_folder"; + "lwl" = "list_workspace_folders"; + }; + diagnostic = { + "le" = "open_float"; + "lq" = "setloclist"; + "[d" = "goto_prev"; + "]d" = "goto_next"; + }; + }; + }; + + autoCmd = [ + { + event = [ "CursorHold" ]; + pattern = "*"; + callback.__raw = builtins.readFile ./open-diagnostic-float.lua; + } + ]; + }; +} diff --git a/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua b/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua new file mode 100644 index 0000000..fbfb9b9 --- /dev/null +++ b/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua @@ -0,0 +1,3 @@ +function() + vim.diagnostic.open_float(nil, { focus = false }) +end diff --git a/modules/development/nixvim/plugins/lualine.nix b/modules/development/nixvim/plugins/lualine.nix deleted file mode 100644 index 55326ee..0000000 --- a/modules/development/nixvim/plugins/lualine.nix +++ /dev/null @@ -1,97 +0,0 @@ -# Statusline configuration -{ - config, - lib, - pkgs, - ... -}: -let - base16Colors = import ../../../colors/base16 { inherit config lib pkgs; }; -in -{ - config.programs.nixvim.plugins.lualine = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - options = { - theme = with base16Colors.colorsWithHashPrefix; { - normal = { - a = { - fg = base00; - bg = base0D; - gui = "bold"; - }; - b = { - fg = base05; - bg = base01; - }; - c = { - fg = base05; - bg = base00; - }; - }; - insert = { - a = { - fg = base00; - bg = base0B; - gui = "bold"; - }; - b = { - fg = base05; - bg = base01; - }; - c = { - fg = base05; - bg = base00; - }; - }; - visual = { - a = { - fg = base00; - bg = base0A; - gui = "bold"; - }; - b = { - fg = base05; - bg = base01; - }; - c = { - fg = base05; - bg = base00; - }; - }; - replace = { - a = { - fg = base00; - bg = base08; - gui = "bold"; - }; - b = { - fg = base05; - bg = base01; - }; - c = { - fg = base05; - bg = base00; - }; - }; - inactive = { - a = { - fg = base04; - bg = base00; - gui = "bold"; - }; - b = { - fg = base04; - bg = base00; - }; - c = { - fg = base04; - bg = base00; - }; - }; - }; - icons_enabled = true; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/lualine/default.nix b/modules/development/nixvim/plugins/lualine/default.nix new file mode 100644 index 0000000..a7dd083 --- /dev/null +++ b/modules/development/nixvim/plugins/lualine/default.nix @@ -0,0 +1,97 @@ +# Statusline configuration +{ + config, + lib, + pkgs, + ... +}: +let + base16Colors = import ../../../../colors/base16 { inherit config lib pkgs; }; +in +{ + config.programs.nixvim.plugins.lualine = lib.mkIf config.development.nixvim.enable { + enable = true; + settings = { + options = { + theme = with base16Colors.colorsWithHashPrefix; { + normal = { + a = { + fg = base00; + bg = base0D; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + insert = { + a = { + fg = base00; + bg = base0B; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + visual = { + a = { + fg = base00; + bg = base0A; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + replace = { + a = { + fg = base00; + bg = base08; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + inactive = { + a = { + fg = base04; + bg = base00; + gui = "bold"; + }; + b = { + fg = base04; + bg = base00; + }; + c = { + fg = base04; + bg = base00; + }; + }; + }; + icons_enabled = true; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/luasnip.nix b/modules/development/nixvim/plugins/luasnip.nix deleted file mode 100644 index cab0f62..0000000 --- a/modules/development/nixvim/plugins/luasnip.nix +++ /dev/null @@ -1,7 +0,0 @@ -# Snippet engine for Neovim -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.luasnip = lib.mkIf config.development.nixvim.enable { - enable = true; - }; -} diff --git a/modules/development/nixvim/plugins/luasnip/default.nix b/modules/development/nixvim/plugins/luasnip/default.nix new file mode 100644 index 0000000..cab0f62 --- /dev/null +++ b/modules/development/nixvim/plugins/luasnip/default.nix @@ -0,0 +1,7 @@ +# Snippet engine for Neovim +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.luasnip = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/noice.nix b/modules/development/nixvim/plugins/noice.nix deleted file mode 100644 index 8f2ea0d..0000000 --- a/modules/development/nixvim/plugins/noice.nix +++ /dev/null @@ -1,7 +0,0 @@ -# Modern UI for Neovim -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.noice = lib.mkIf config.development.nixvim.enable { - enable = true; - }; -} diff --git a/modules/development/nixvim/plugins/noice/default.nix b/modules/development/nixvim/plugins/noice/default.nix new file mode 100644 index 0000000..8f2ea0d --- /dev/null +++ b/modules/development/nixvim/plugins/noice/default.nix @@ -0,0 +1,7 @@ +# Modern UI for Neovim +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.noice = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/nvim-tree.nix b/modules/development/nixvim/plugins/nvim-tree.nix deleted file mode 100644 index f54ada2..0000000 --- a/modules/development/nixvim/plugins/nvim-tree.nix +++ /dev/null @@ -1,56 +0,0 @@ -# File explorer sidebar -{ config, lib, ... }: -{ - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { - plugins.nvim-tree = { - enable = true; - settings = { - filters = { - dotfiles = false; - git_clean = false; - no_buffer = false; - custom = { }; - }; - git = { - enable = true; - ignore = false; - }; - view = { - width = 30; - }; - renderer = { - indent_markers = { - enable = true; - inline_arrows = false; - icons = { - corner = "└"; - edge = "│"; - item = "├"; - bottom = "─"; - none = " "; - }; - }; - icons = { - show = { - folder = true; - folder_arrow = false; - file = true; - git = true; - }; - }; - }; - }; - }; - - keymaps = [ - { - key = "nt"; - action = "NvimTreeToggle"; - mode = [ - "n" - ]; - options.desc = "Toggle file explorer"; - } - ]; - }; -} diff --git a/modules/development/nixvim/plugins/nvim-tree/default.nix b/modules/development/nixvim/plugins/nvim-tree/default.nix new file mode 100644 index 0000000..f54ada2 --- /dev/null +++ b/modules/development/nixvim/plugins/nvim-tree/default.nix @@ -0,0 +1,56 @@ +# File explorer sidebar +{ config, lib, ... }: +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.nvim-tree = { + enable = true; + settings = { + filters = { + dotfiles = false; + git_clean = false; + no_buffer = false; + custom = { }; + }; + git = { + enable = true; + ignore = false; + }; + view = { + width = 30; + }; + renderer = { + indent_markers = { + enable = true; + inline_arrows = false; + icons = { + corner = "└"; + edge = "│"; + item = "├"; + bottom = "─"; + none = " "; + }; + }; + icons = { + show = { + folder = true; + folder_arrow = false; + file = true; + git = true; + }; + }; + }; + }; + }; + + keymaps = [ + { + key = "nt"; + action = "NvimTreeToggle"; + mode = [ + "n" + ]; + options.desc = "Toggle file explorer"; + } + ]; + }; +} diff --git a/modules/development/nixvim/plugins/telescope.nix b/modules/development/nixvim/plugins/telescope.nix deleted file mode 100644 index 505a3eb..0000000 --- a/modules/development/nixvim/plugins/telescope.nix +++ /dev/null @@ -1,74 +0,0 @@ -# Fuzzy finder -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.telescope = lib.mkIf config.development.nixvim.enable { - enable = true; - extensions = { - fzf-native.enable = true; # Faster fuzzy sorting - ui-select.enable = true; # Uses telescope for vim.ui.select - }; - settings = { - defaults = { - layout_strategy = "horizontal"; - layout_config = { - horizontal = { - preview_width = 0.55; - results_width = 0.45; - }; - width = 0.87; - height = 0.80; - }; - mappings = { - i = { - "".__raw = "require('telescope.actions').move_selection_previous"; - "".__raw = "require('telescope.actions').move_selection_next"; - "".__raw = "require('telescope.actions').close"; - }; - }; - }; - }; - keymaps = { - # Files - "ff" = { - action = "find_files"; - options.desc = "Find files"; - }; - "fg" = { - action = "live_grep"; - options.desc = "Live grep"; - }; - "fb" = { - action = "buffers"; - options.desc = "Find buffers"; - }; - "fr" = { - action = "oldfiles"; - options.desc = "Recent files"; - }; - - # LSP - "fd" = { - action = "diagnostics"; - options.desc = "Diagnostics"; - }; - "fs" = { - action = "lsp_document_symbols"; - options.desc = "Document symbols"; - }; - - # Misc - "fh" = { - action = "help_tags"; - options.desc = "Help tags"; - }; - "fc" = { - action = "commands"; - options.desc = "Commands"; - }; - "fk" = { - action = "keymaps"; - options.desc = "Find keymaps"; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/telescope/default.nix b/modules/development/nixvim/plugins/telescope/default.nix new file mode 100644 index 0000000..505a3eb --- /dev/null +++ b/modules/development/nixvim/plugins/telescope/default.nix @@ -0,0 +1,74 @@ +# Fuzzy finder +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.telescope = lib.mkIf config.development.nixvim.enable { + enable = true; + extensions = { + fzf-native.enable = true; # Faster fuzzy sorting + ui-select.enable = true; # Uses telescope for vim.ui.select + }; + settings = { + defaults = { + layout_strategy = "horizontal"; + layout_config = { + horizontal = { + preview_width = 0.55; + results_width = 0.45; + }; + width = 0.87; + height = 0.80; + }; + mappings = { + i = { + "".__raw = "require('telescope.actions').move_selection_previous"; + "".__raw = "require('telescope.actions').move_selection_next"; + "".__raw = "require('telescope.actions').close"; + }; + }; + }; + }; + keymaps = { + # Files + "ff" = { + action = "find_files"; + options.desc = "Find files"; + }; + "fg" = { + action = "live_grep"; + options.desc = "Live grep"; + }; + "fb" = { + action = "buffers"; + options.desc = "Find buffers"; + }; + "fr" = { + action = "oldfiles"; + options.desc = "Recent files"; + }; + + # LSP + "fd" = { + action = "diagnostics"; + options.desc = "Diagnostics"; + }; + "fs" = { + action = "lsp_document_symbols"; + options.desc = "Document symbols"; + }; + + # Misc + "fh" = { + action = "help_tags"; + options.desc = "Help tags"; + }; + "fc" = { + action = "commands"; + options.desc = "Commands"; + }; + "fk" = { + action = "keymaps"; + options.desc = "Find keymaps"; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/treesitter.nix b/modules/development/nixvim/plugins/treesitter.nix deleted file mode 100644 index 6150ad2..0000000 --- a/modules/development/nixvim/plugins/treesitter.nix +++ /dev/null @@ -1,18 +0,0 @@ -# Syntax highlighting and parsing -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.treesitter = lib.mkIf config.development.nixvim.enable { - enable = true; - folding = { - enable = true; - }; - settings = { - highlight = { - enable = true; - }; - indent = { - enable = true; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/treesitter/default.nix b/modules/development/nixvim/plugins/treesitter/default.nix new file mode 100644 index 0000000..6150ad2 --- /dev/null +++ b/modules/development/nixvim/plugins/treesitter/default.nix @@ -0,0 +1,18 @@ +# Syntax highlighting and parsing +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.treesitter = lib.mkIf config.development.nixvim.enable { + enable = true; + folding = { + enable = true; + }; + settings = { + highlight = { + enable = true; + }; + indent = { + enable = true; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/web-devicons.nix b/modules/development/nixvim/plugins/web-devicons.nix deleted file mode 100644 index 61ca5e9..0000000 --- a/modules/development/nixvim/plugins/web-devicons.nix +++ /dev/null @@ -1,7 +0,0 @@ -# File icons for various file types -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.web-devicons = lib.mkIf config.development.nixvim.enable { - enable = true; - }; -} diff --git a/modules/development/nixvim/plugins/web-devicons/default.nix b/modules/development/nixvim/plugins/web-devicons/default.nix new file mode 100644 index 0000000..61ca5e9 --- /dev/null +++ b/modules/development/nixvim/plugins/web-devicons/default.nix @@ -0,0 +1,7 @@ +# File icons for various file types +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.web-devicons = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix deleted file mode 100644 index 3a0c0ef..0000000 --- a/modules/development/nixvim/plugins/which-key.nix +++ /dev/null @@ -1,47 +0,0 @@ -# Popup for keybindings -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.which-key = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - plugins = { - marks = true; - registers = true; - spelling = { - enabled = true; - }; - }; - win = { - border = "single"; - }; - - # Group descriptions for leader prefixes - spec = [ - { - __unkeyed-1 = "g"; - group = "+Git"; - } - { - __unkeyed-1 = "f"; - group = "+Find"; - } - { - __unkeyed-1 = "d"; - group = "+Debug"; - } - { - __unkeyed-1 = "l"; - group = "+LSP"; - } - { - __unkeyed-1 = "c"; - group = "+Comment"; - } - { - __unkeyed-1 = "n"; - group = "+Explorer"; - } - ]; - }; - }; -} diff --git a/modules/development/nixvim/plugins/which-key/default.nix b/modules/development/nixvim/plugins/which-key/default.nix new file mode 100644 index 0000000..3a0c0ef --- /dev/null +++ b/modules/development/nixvim/plugins/which-key/default.nix @@ -0,0 +1,47 @@ +# Popup for keybindings +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.which-key = lib.mkIf config.development.nixvim.enable { + enable = true; + settings = { + plugins = { + marks = true; + registers = true; + spelling = { + enabled = true; + }; + }; + win = { + border = "single"; + }; + + # Group descriptions for leader prefixes + spec = [ + { + __unkeyed-1 = "g"; + group = "+Git"; + } + { + __unkeyed-1 = "f"; + group = "+Find"; + } + { + __unkeyed-1 = "d"; + group = "+Debug"; + } + { + __unkeyed-1 = "l"; + group = "+LSP"; + } + { + __unkeyed-1 = "c"; + group = "+Comment"; + } + { + __unkeyed-1 = "n"; + group = "+Explorer"; + } + ]; + }; + }; +} diff --git a/modules/terminal/kitty/default.nix b/modules/terminal/kitty/default.nix index d840667..f72f862 100644 --- a/modules/terminal/kitty/default.nix +++ b/modules/terminal/kitty/default.nix @@ -26,25 +26,7 @@ in programs.kitty = { enable = true; - extraConfig = '' - # Keep normal clicks for selection and prompt placement; Ctrl+click opens links. - mouse_map left click ungrabbed mouse_handle_click selection prompt - mouse_map ctrl+left click grabbed,ungrabbed mouse_handle_click link - - # Vim-style navigation between Kitty windows in the current tab. - map ctrl+shift+h neighboring_window left - map ctrl+shift+j neighboring_window bottom - map ctrl+shift+k neighboring_window top - map ctrl+shift+l neighboring_window right - - # Line scrolling - map ctrl+shift+j scroll_line_down - map ctrl+shift+k scroll_line_up - - # Page scrolling (half-page / full-page) - map ctrl+shift+u scroll_page_up - map ctrl+shift+d scroll_page_down - ''; + extraConfig = builtins.readFile ./kitty.conf; settings = with base16Colors.colorsWithHashPrefix; { window_padding_width = 10; font_size = config.fonts.size; diff --git a/modules/terminal/kitty/kitty.conf b/modules/terminal/kitty/kitty.conf new file mode 100644 index 0000000..c55fbce --- /dev/null +++ b/modules/terminal/kitty/kitty.conf @@ -0,0 +1,17 @@ +# Keep normal clicks for selection and prompt placement; Ctrl+click opens links. +mouse_map left click ungrabbed mouse_handle_click selection prompt +mouse_map ctrl+left click grabbed,ungrabbed mouse_handle_click link + +# Vim-style navigation between Kitty windows in the current tab. +map ctrl+shift+h neighboring_window left +map ctrl+shift+j neighboring_window bottom +map ctrl+shift+k neighboring_window top +map ctrl+shift+l neighboring_window right + +# Line scrolling +map ctrl+shift+j scroll_line_down +map ctrl+shift+k scroll_line_up + +# Page scrolling (half-page / full-page) +map ctrl+shift+u scroll_page_up +map ctrl+shift+d scroll_page_down diff --git a/modules/terminal/zsh/default.nix b/modules/terminal/zsh/default.nix index 0f0471c..8b7897c 100644 --- a/modules/terminal/zsh/default.nix +++ b/modules/terminal/zsh/default.nix @@ -25,22 +25,9 @@ dotDir = "${config.xdg.configHome}/zsh"; history.path = "${config.xdg.cacheHome}/zsh/history"; enableCompletion = true; - initContent = '' - setopt PROMPT_SUBST - - # Vi insert/command modes for command-line editing. Escape enters normal mode. - bindkey -v - KEYTIMEOUT=1 - - autoload -U colors && colors - - export GPG_TTY="$(tty)" - gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1 - - bindkey "^[[3~" delete-char - bindkey "^?" backward-delete-char - ${nixCommandWrappers} - ''; + initContent = builtins.replaceStrings [ "@@NIX_COMMAND_WRAPPERS@@" ] [ nixCommandWrappers ] ( + builtins.readFile ./init.sh + ); }; home.sessionVariables.SHELL = "${lib.getExe config.terminal.zsh.package}"; diff --git a/modules/terminal/zsh/init.sh b/modules/terminal/zsh/init.sh new file mode 100644 index 0000000..b44895c --- /dev/null +++ b/modules/terminal/zsh/init.sh @@ -0,0 +1,14 @@ +setopt PROMPT_SUBST + +# Vi insert/command modes for command-line editing. Escape enters normal mode. +bindkey -v +KEYTIMEOUT=1 + +autoload -U colors && colors + +export GPG_TTY="$(tty)" +gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1 + +bindkey "^[[3~" delete-char +bindkey "^?" backward-delete-char +@@NIX_COMMAND_WRAPPERS@@ diff --git a/modules/web/chawan/default.nix b/modules/web/chawan/default.nix index 2169d0c..2de49bd 100644 --- a/modules/web/chawan/default.nix +++ b/modules/web/chawan/default.nix @@ -43,20 +43,7 @@ settings = { buffer = { images = true; - user-style = '' - html, body, div, section, article, main, header, footer, nav, aside, table, tr, td, th, ul, ol, li, span, p, pre, code { - background-color: black !important; - color: white !important; - } - a, a:link { color: #6bb6ff !important; } - a:visited { color: #d19aff !important; } - @media (prefers-color-scheme: light) { - html, body, div, section, article, main, header, footer, nav, aside, table, tr, td, th, ul, ol, li, span, p, pre, code { - background-color: black !important; - color: white !important; - } - } - ''; + user-style = builtins.readFile ./user-style.css; }; display = { image-mode = "auto"; diff --git a/modules/web/chawan/user-style.css b/modules/web/chawan/user-style.css new file mode 100644 index 0000000..81d368b --- /dev/null +++ b/modules/web/chawan/user-style.css @@ -0,0 +1,56 @@ +html, +body, +div, +section, +article, +main, +header, +footer, +nav, +aside, +table, +tr, +td, +th, +ul, +ol, +li, +span, +p, +pre, +code { + background-color: black !important; + color: white !important; +} +a, a:link { + color: #6bb6ff !important; +} +a:visited { + color: #d19aff !important; +} +@media (prefers-color-scheme: light) { + html, + body, + div, + section, + article, + main, + header, + footer, + nav, + aside, + table, + tr, + td, + th, + ul, + ol, + li, + span, + p, + pre, + code { + background-color: black !important; + color: white !important; + } +} -- cgit v1.2.3