From 3e232a2bc7f5c8ea33804be1ea071a91c5f98055 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Fri, 24 Apr 2026 01:48:30 +0530 Subject: replacing tools with programs to be more consistent with config options --- modules/default.nix | 2 +- modules/desktop/i3/default.nix | 2 +- modules/desktop/i3/keybindings.nix | 24 +- modules/desktop/polybar/module/vpn-separator.nix | 2 +- modules/desktop/polybar/module/vpn.nix | 2 +- modules/programs/bat/base16.mustache.tmTheme | 534 +++++++++++++++++++++ modules/programs/bat/default.nix | 26 + modules/programs/bluetui/default.nix | 19 + modules/programs/bottom/default.nix | 5 + modules/programs/brightnessctl/default.nix | 19 + modules/programs/bruno/default.nix | 19 + modules/programs/default.nix | 43 ++ modules/programs/devenv/alias.sh | 28 ++ modules/programs/devenv/default.nix | 26 + modules/programs/feh/default.nix | 5 + modules/programs/ffmpeg/default.nix | 19 + modules/programs/fzf/default.nix | 49 ++ modules/programs/git/default.nix | 33 ++ modules/programs/htop/default.nix | 15 + modules/programs/impala/default.nix | 19 + modules/programs/kitty/default.nix | 52 ++ modules/programs/lf/default.nix | 48 ++ modules/programs/lf/icons | 342 +++++++++++++ modules/programs/lf/lfrc | 279 +++++++++++ modules/programs/librewolf/default.nix | 59 +++ modules/programs/lsd/default.nix | 10 + modules/programs/maim/default.nix | 19 + modules/programs/nixvim/colorscheme.nix | 26 + modules/programs/nixvim/default.nix | 83 ++++ modules/programs/nixvim/keymaps.nix | 41 ++ modules/programs/nixvim/plugins/cmp.nix | 37 ++ modules/programs/nixvim/plugins/comment.nix | 23 + modules/programs/nixvim/plugins/default.nix | 20 + modules/programs/nixvim/plugins/gitsigns.nix | 8 + .../programs/nixvim/plugins/indent-blankline.nix | 14 + modules/programs/nixvim/plugins/lsp.nix | 91 ++++ modules/programs/nixvim/plugins/lualine.nix | 90 ++++ modules/programs/nixvim/plugins/luasnip.nix | 8 + modules/programs/nixvim/plugins/noice.nix | 19 + modules/programs/nixvim/plugins/nvim-tree.nix | 44 ++ modules/programs/nixvim/plugins/telescope.nix | 85 ++++ modules/programs/nixvim/plugins/treesitter.nix | 19 + modules/programs/nixvim/plugins/web-devicons.nix | 8 + modules/programs/nixvim/plugins/which-key.nix | 21 + modules/programs/nvtop/default.nix | 19 + modules/programs/opencode/default.nix | 5 + modules/programs/openvpn/default.nix | 19 + modules/programs/ouch/default.nix | 19 + modules/programs/pamixer/default.nix | 19 + modules/programs/playerctl/default.nix | 19 + modules/programs/qemu/default.nix | 23 + modules/programs/slop/default.nix | 19 + modules/programs/ssh/default.nix | 31 ++ modules/programs/starship/default.nix | 63 +++ modules/programs/systemctl-tui/default.nix | 19 + modules/programs/tmux/default.nix | 4 + modules/programs/tor/default.nix | 26 + modules/programs/umu-launcher/default.nix | 20 + modules/programs/vlc/default.nix | 19 + modules/programs/vscode/default.nix | 15 + modules/programs/zathura/default.nix | 4 + modules/programs/zsh/default.nix | 35 ++ modules/programs/zsh/nix-aliases.sh | 27 ++ modules/scripts/default.nix | 32 +- modules/tools/bat/base16.mustache.tmTheme | 534 --------------------- modules/tools/bat/default.nix | 31 -- modules/tools/bluetui/default.nix | 19 - modules/tools/bottom/default.nix | 12 - modules/tools/brightnessctl/default.nix | 19 - modules/tools/bruno/default.nix | 19 - modules/tools/default.nix | 44 -- modules/tools/devenv/alias.sh | 28 -- modules/tools/devenv/default.nix | 26 - modules/tools/fastfetch/default.nix | 14 - modules/tools/feh/default.nix | 12 - modules/tools/ffmpeg/default.nix | 19 - modules/tools/fzf/default.nix | 55 --- modules/tools/git/default.nix | 35 -- modules/tools/htop/default.nix | 20 - modules/tools/impala/default.nix | 19 - modules/tools/kitty/default.nix | 57 --- modules/tools/lf/default.nix | 53 -- modules/tools/lf/icons | 342 ------------- modules/tools/lf/lfrc | 279 ----------- modules/tools/librewolf/default.nix | 64 --- modules/tools/lsd/default.nix | 15 - modules/tools/maim/default.nix | 19 - modules/tools/nixvim/colorscheme.nix | 28 -- modules/tools/nixvim/default.nix | 84 ---- modules/tools/nixvim/keymaps.nix | 43 -- modules/tools/nixvim/plugins/cmp.nix | 37 -- modules/tools/nixvim/plugins/comment.nix | 23 - modules/tools/nixvim/plugins/default.nix | 20 - modules/tools/nixvim/plugins/gitsigns.nix | 8 - modules/tools/nixvim/plugins/indent-blankline.nix | 14 - modules/tools/nixvim/plugins/lsp.nix | 91 ---- modules/tools/nixvim/plugins/lualine.nix | 90 ---- modules/tools/nixvim/plugins/luasnip.nix | 8 - modules/tools/nixvim/plugins/noice.nix | 19 - modules/tools/nixvim/plugins/nvim-tree.nix | 44 -- modules/tools/nixvim/plugins/telescope.nix | 85 ---- modules/tools/nixvim/plugins/treesitter.nix | 19 - modules/tools/nixvim/plugins/web-devicons.nix | 8 - modules/tools/nixvim/plugins/which-key.nix | 21 - modules/tools/nvtop/default.nix | 19 - modules/tools/opencode/default.nix | 18 - modules/tools/openssh/default.nix | 36 -- modules/tools/openvpn/default.nix | 19 - modules/tools/ouch/default.nix | 19 - modules/tools/pamixer/default.nix | 19 - modules/tools/playerctl/default.nix | 19 - modules/tools/qemu/default.nix | 23 - modules/tools/slop/default.nix | 19 - modules/tools/starship/default.nix | 68 --- modules/tools/systemctl-tui/default.nix | 19 - modules/tools/tmux/default.nix | 12 - modules/tools/tor/default.nix | 26 - modules/tools/umu-launcher/default.nix | 20 - modules/tools/vlc/default.nix | 19 - modules/tools/vscode/default.nix | 20 - modules/tools/zathura/default.nix | 12 - modules/tools/zsh/default.nix | 34 -- modules/tools/zsh/nix-aliases.sh | 27 -- users/arpit.nix | 77 ++- 124 files changed, 2780 insertions(+), 2896 deletions(-) create mode 100644 modules/programs/bat/base16.mustache.tmTheme create mode 100644 modules/programs/bat/default.nix create mode 100644 modules/programs/bluetui/default.nix create mode 100644 modules/programs/bottom/default.nix create mode 100644 modules/programs/brightnessctl/default.nix create mode 100644 modules/programs/bruno/default.nix create mode 100644 modules/programs/default.nix create mode 100644 modules/programs/devenv/alias.sh create mode 100644 modules/programs/devenv/default.nix create mode 100644 modules/programs/feh/default.nix create mode 100644 modules/programs/ffmpeg/default.nix create mode 100644 modules/programs/fzf/default.nix create mode 100644 modules/programs/git/default.nix create mode 100644 modules/programs/htop/default.nix create mode 100644 modules/programs/impala/default.nix create mode 100644 modules/programs/kitty/default.nix create mode 100644 modules/programs/lf/default.nix create mode 100644 modules/programs/lf/icons create mode 100644 modules/programs/lf/lfrc create mode 100644 modules/programs/librewolf/default.nix create mode 100644 modules/programs/lsd/default.nix create mode 100644 modules/programs/maim/default.nix create mode 100644 modules/programs/nixvim/colorscheme.nix create mode 100644 modules/programs/nixvim/default.nix create mode 100644 modules/programs/nixvim/keymaps.nix create mode 100644 modules/programs/nixvim/plugins/cmp.nix create mode 100644 modules/programs/nixvim/plugins/comment.nix create mode 100644 modules/programs/nixvim/plugins/default.nix create mode 100644 modules/programs/nixvim/plugins/gitsigns.nix create mode 100644 modules/programs/nixvim/plugins/indent-blankline.nix create mode 100644 modules/programs/nixvim/plugins/lsp.nix create mode 100644 modules/programs/nixvim/plugins/lualine.nix create mode 100644 modules/programs/nixvim/plugins/luasnip.nix create mode 100644 modules/programs/nixvim/plugins/noice.nix create mode 100644 modules/programs/nixvim/plugins/nvim-tree.nix create mode 100644 modules/programs/nixvim/plugins/telescope.nix create mode 100644 modules/programs/nixvim/plugins/treesitter.nix create mode 100644 modules/programs/nixvim/plugins/web-devicons.nix create mode 100644 modules/programs/nixvim/plugins/which-key.nix create mode 100644 modules/programs/nvtop/default.nix create mode 100644 modules/programs/opencode/default.nix create mode 100644 modules/programs/openvpn/default.nix create mode 100644 modules/programs/ouch/default.nix create mode 100644 modules/programs/pamixer/default.nix create mode 100644 modules/programs/playerctl/default.nix create mode 100644 modules/programs/qemu/default.nix create mode 100644 modules/programs/slop/default.nix create mode 100644 modules/programs/ssh/default.nix create mode 100644 modules/programs/starship/default.nix create mode 100644 modules/programs/systemctl-tui/default.nix create mode 100644 modules/programs/tmux/default.nix create mode 100644 modules/programs/tor/default.nix create mode 100644 modules/programs/umu-launcher/default.nix create mode 100644 modules/programs/vlc/default.nix create mode 100644 modules/programs/vscode/default.nix create mode 100644 modules/programs/zathura/default.nix create mode 100644 modules/programs/zsh/default.nix create mode 100644 modules/programs/zsh/nix-aliases.sh delete mode 100644 modules/tools/bat/base16.mustache.tmTheme delete mode 100644 modules/tools/bat/default.nix delete mode 100644 modules/tools/bluetui/default.nix delete mode 100644 modules/tools/bottom/default.nix delete mode 100644 modules/tools/brightnessctl/default.nix delete mode 100644 modules/tools/bruno/default.nix delete mode 100644 modules/tools/default.nix delete mode 100644 modules/tools/devenv/alias.sh delete mode 100644 modules/tools/devenv/default.nix delete mode 100644 modules/tools/fastfetch/default.nix delete mode 100644 modules/tools/feh/default.nix delete mode 100644 modules/tools/ffmpeg/default.nix delete mode 100644 modules/tools/fzf/default.nix delete mode 100644 modules/tools/git/default.nix delete mode 100644 modules/tools/htop/default.nix delete mode 100644 modules/tools/impala/default.nix delete mode 100644 modules/tools/kitty/default.nix delete mode 100644 modules/tools/lf/default.nix delete mode 100644 modules/tools/lf/icons delete mode 100644 modules/tools/lf/lfrc delete mode 100644 modules/tools/librewolf/default.nix delete mode 100644 modules/tools/lsd/default.nix delete mode 100644 modules/tools/maim/default.nix delete mode 100644 modules/tools/nixvim/colorscheme.nix delete mode 100644 modules/tools/nixvim/default.nix delete mode 100644 modules/tools/nixvim/keymaps.nix delete mode 100644 modules/tools/nixvim/plugins/cmp.nix delete mode 100644 modules/tools/nixvim/plugins/comment.nix delete mode 100644 modules/tools/nixvim/plugins/default.nix delete mode 100644 modules/tools/nixvim/plugins/gitsigns.nix delete mode 100644 modules/tools/nixvim/plugins/indent-blankline.nix delete mode 100644 modules/tools/nixvim/plugins/lsp.nix delete mode 100644 modules/tools/nixvim/plugins/lualine.nix delete mode 100644 modules/tools/nixvim/plugins/luasnip.nix delete mode 100644 modules/tools/nixvim/plugins/noice.nix delete mode 100644 modules/tools/nixvim/plugins/nvim-tree.nix delete mode 100644 modules/tools/nixvim/plugins/telescope.nix delete mode 100644 modules/tools/nixvim/plugins/treesitter.nix delete mode 100644 modules/tools/nixvim/plugins/web-devicons.nix delete mode 100644 modules/tools/nixvim/plugins/which-key.nix delete mode 100644 modules/tools/nvtop/default.nix delete mode 100644 modules/tools/opencode/default.nix delete mode 100644 modules/tools/openssh/default.nix delete mode 100644 modules/tools/openvpn/default.nix delete mode 100644 modules/tools/ouch/default.nix delete mode 100644 modules/tools/pamixer/default.nix delete mode 100644 modules/tools/playerctl/default.nix delete mode 100644 modules/tools/qemu/default.nix delete mode 100644 modules/tools/slop/default.nix delete mode 100644 modules/tools/starship/default.nix delete mode 100644 modules/tools/systemctl-tui/default.nix delete mode 100644 modules/tools/tmux/default.nix delete mode 100644 modules/tools/tor/default.nix delete mode 100644 modules/tools/umu-launcher/default.nix delete mode 100644 modules/tools/vlc/default.nix delete mode 100644 modules/tools/vscode/default.nix delete mode 100644 modules/tools/zathura/default.nix delete mode 100644 modules/tools/zsh/default.nix delete mode 100644 modules/tools/zsh/nix-aliases.sh diff --git a/modules/default.nix b/modules/default.nix index 9af602b..5a21b65 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -5,6 +5,6 @@ ./desktop ./fonts ./scripts - ./tools + ./programs ]; } diff --git a/modules/desktop/i3/default.nix b/modules/desktop/i3/default.nix index d8a0c85..4e8664d 100644 --- a/modules/desktop/i3/default.nix +++ b/modules/desktop/i3/default.nix @@ -77,7 +77,7 @@ } { command = - if config.tools.feh.enable then + if config.programs.feh.enable then "${lib.getExe pkgs.feh} --bg-scale ${../../../assets/sapling.png}" else "xsetroot -solid \"${config.scheme.withHashtag.base00}\""; diff --git a/modules/desktop/i3/keybindings.nix b/modules/desktop/i3/keybindings.nix index bc9b44e..9a16d4b 100644 --- a/modules/desktop/i3/keybindings.nix +++ b/modules/desktop/i3/keybindings.nix @@ -11,29 +11,29 @@ in { # --- General Applications --- "${mod}+r" = - lib.mkIf (config.tools.fzf.enable && config.tools.kitty.enable) + lib.mkIf (config.programs.fzf.enable && config.programs.kitty.enable) "exec ${lib.getExe pkgs.kitty} --class application-launcher -e ${lib.getExe config.scripts.fzf-launcher.package}"; - "${mod}+t" = lib.mkIf config.tools.kitty.enable "exec ${lib.getExe pkgs.kitty}"; + "${mod}+t" = lib.mkIf config.programs.kitty.enable "exec ${lib.getExe pkgs.kitty}"; "${mod}+f" = - lib.mkIf (config.tools.kitty.enable && config.tools.lf.enable) + lib.mkIf (config.programs.kitty.enable && config.programs.lf.enable) "exec ${lib.getExe pkgs.kitty} --title 'File Manager' --class file-explorer -e ${lib.getExe config.programs.lf.package}"; "${mod}+s" = - lib.mkIf config.tools.kitty.enable "exec ${lib.getExe pkgs.kitty} --title 'Keybindings' --class keybindings-viewer -e ${lib.getExe config.scripts.i3-keybindings.package}"; + lib.mkIf config.programs.kitty.enable "exec ${lib.getExe pkgs.kitty} --title 'Keybindings' --class keybindings-viewer -e ${lib.getExe config.scripts.i3-keybindings.package}"; "${mod}+q" = "kill"; # --- Media / Hardware Keys --- "XF86MonBrightnessDown" = - lib.mkIf config.tools.brightnessctl.enable "exec ${lib.getExe pkgs.brightnessctl} set 5%-"; + lib.mkIf config.programs.brightnessctl.enable "exec ${lib.getExe pkgs.brightnessctl} set 5%-"; "XF86MonBrightnessUp" = - lib.mkIf config.tools.brightnessctl.enable "exec ${lib.getExe pkgs.brightnessctl} set +5%"; + lib.mkIf config.programs.brightnessctl.enable "exec ${lib.getExe pkgs.brightnessctl} set +5%"; "XF86AudioLowerVolume" = - lib.mkIf config.tools.pamixer.enable "exec ${lib.getExe pkgs.pamixer} --decrease 5"; + lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe pkgs.pamixer} --decrease 5"; "XF86AudioRaiseVolume" = - lib.mkIf config.tools.pamixer.enable "exec ${lib.getExe pkgs.pamixer} --increase 5"; + lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe pkgs.pamixer} --increase 5"; "XF86AudioMute" = - lib.mkIf config.tools.pamixer.enable "exec ${lib.getExe pkgs.pamixer} --toggle-mute"; + lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe pkgs.pamixer} --toggle-mute"; "XF86AudioPlay" = - lib.mkIf config.tools.playerctl.enable "exec ${lib.getExe pkgs.playerctl} play-pause"; + lib.mkIf config.programs.playerctl.enable "exec ${lib.getExe pkgs.playerctl} play-pause"; # --- Window Management (Vim-style) --- # Focus @@ -85,7 +85,7 @@ in # --- Screenshots --- "${mod}+p" = - lib.mkIf config.tools.maim.enable "exec \"${lib.getExe pkgs.maim} -s | xclip -selection clipboard -t image/png\""; + lib.mkIf config.programs.maim.enable "exec \"${lib.getExe pkgs.maim} -s | xclip -selection clipboard -t image/png\""; "${mod}+Shift+p" = - lib.mkIf config.tools.maim.enable "exec \"mkdir -p ~/Pictures/Screenshots && ${lib.getExe pkgs.maim} -s ~/Pictures/Screenshots/screenshot-$(date +%Y%m%d-%H%M%S).png\""; + lib.mkIf config.programs.maim.enable "exec \"mkdir -p ~/Pictures/Screenshots && ${lib.getExe pkgs.maim} -s ~/Pictures/Screenshots/screenshot-$(date +%Y%m%d-%H%M%S).png\""; } diff --git a/modules/desktop/polybar/module/vpn-separator.nix b/modules/desktop/polybar/module/vpn-separator.nix index 5d92162..0904b6c 100644 --- a/modules/desktop/polybar/module/vpn-separator.nix +++ b/modules/desktop/polybar/module/vpn-separator.nix @@ -8,7 +8,7 @@ with config.scheme.withHashtag; { type = "custom/script"; - exec-if = "${lib.getExe pkgs.zsh} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'"; + exec-if = "${lib.getExe config.programs.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'"; exec = "echo VPN"; interval = 5; diff --git a/modules/desktop/polybar/module/vpn.nix b/modules/desktop/polybar/module/vpn.nix index dc0467e..2171989 100644 --- a/modules/desktop/polybar/module/vpn.nix +++ b/modules/desktop/polybar/module/vpn.nix @@ -8,7 +8,7 @@ with config.scheme.withHashtag; { type = "custom/script"; - exec-if = "${lib.getExe pkgs.zsh} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'"; + exec-if = "${lib.getExe config.programs.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'"; exec = "echo VPN"; interval = 5; diff --git a/modules/programs/bat/base16.mustache.tmTheme b/modules/programs/bat/base16.mustache.tmTheme new file mode 100644 index 0000000..6b2cd5b --- /dev/null +++ b/modules/programs/bat/base16.mustache.tmTheme @@ -0,0 +1,534 @@ + + + + + name + OneDark Dark + author + olimorris (https://github.com/olimorris) + settings + + + + + settings + + background + #{{base00}} + foreground + #{{base05}} + caret + #{{base05}} + invisibles + #{{base03}} + lineHighlight + #{{base01}} + selection + #{{base02}} + selectionBorder + #{{base03}} + findHighlight + #{{base0A}} + findHighlightForeground + #{{base00}} + activeGuide + #{{base03}} + bracketsForeground + #{{base05}} + bracketsOptions + underline + bracketContentsForeground + #{{base05}} + bracketContentsOptions + underline + tagsOptions + stippled_underline + gutterForeground + #{{base03}} + gutter + #{{base01}} + + + + + + name + Comment + scope + comment, punctuation.definition.comment + settings + + foreground + #{{base03}} + fontStyle + italic + + + + + + name + Variable + scope + variable, variable.other + settings + + foreground + #{{base05}} + + + + + name + Variable - Language + scope + variable.language + settings + + foreground + #{{base0E}} + fontStyle + italic + + + + + + name + Keyword + scope + keyword, keyword.control + settings + + foreground + #{{base0E}} + + + + + name + Keyword - Operator + scope + keyword.operator + settings + + foreground + #{{base0C}} + + + + + + name + Storage + scope + storage, storage.type, storage.modifier + settings + + foreground + #{{base0E}} + + + + + + name + Constant + scope + constant, constant.other + settings + + foreground + #{{base09}} + + + + + name + Constant - Numeric + scope + constant.numeric + settings + + foreground + #{{base09}} + + + + + name + Constant - Language + scope + constant.language + settings + + foreground + #{{base09}} + + + + + name + Constant - Character Escape + scope + constant.character.escape + settings + + foreground + #{{base0C}} + + + + + + name + String + scope + string + settings + + foreground + #{{base0B}} + + + + + name + String - Punctuation + scope + punctuation.definition.string + settings + + foreground + #{{base0B}} + + + + + + name + Support - Function + scope + support.function + settings + + foreground + #{{base0D}} + + + + + name + Support - Class + scope + support.class + settings + + foreground + #{{base0A}} + + + + + name + Support - Type + scope + support.type + settings + + foreground + #{{base0C}} + + + + + name + Support - Constant + scope + support.constant + settings + + foreground + #{{base09}} + + + + + + name + Entity - Name - Function + scope + entity.name.function + settings + + foreground + #{{base0D}} + + + + + name + Entity - Name - Class / Type + scope + entity.name.class, entity.name.type, entity.name.type.class + settings + + foreground + #{{base0A}} + + + + + name + Entity - Name - Tag + scope + entity.name.tag + settings + + foreground + #{{base08}} + + + + + name + Entity - Other - Attribute Name + scope + entity.other.attribute-name + settings + + foreground + #{{base09}} + + + + + name + Entity - Other - Inherited Class + scope + entity.other.inherited-class + settings + + foreground + #{{base0A}} + fontStyle + italic + + + + + + name + Punctuation + scope + punctuation + settings + + foreground + #{{base05}} + + + + + name + Punctuation - Section + scope + punctuation.section, meta.brace + settings + + foreground + #{{base05}} + + + + + + name + Invalid + scope + invalid + settings + + foreground + #{{base07}} + background + #{{base08}} + + + + + name + Invalid - Deprecated + scope + invalid.deprecated + settings + + foreground + #{{base07}} + background + #{{base0F}} + + + + + + name + Diff - Inserted + scope + markup.inserted + settings + + foreground + #{{base0B}} + + + + + name + Diff - Deleted + scope + markup.deleted + settings + + foreground + #{{base08}} + + + + + name + Diff - Changed + scope + markup.changed + settings + + foreground + #{{base0E}} + + + + + + name + Markup - Heading + scope + markup.heading, entity.name.section + settings + + foreground + #{{base0D}} + fontStyle + bold + + + + + name + Markup - Bold + scope + markup.bold + settings + + foreground + #{{base09}} + fontStyle + bold + + + + + name + Markup - Italic + scope + markup.italic + settings + + foreground + #{{base0E}} + fontStyle + italic + + + + + name + Markup - Inline Code + scope + markup.inline.raw, markup.raw.inline + settings + + foreground + #{{base0C}} + + + + + name + Markup - Link + scope + markup.underline.link, string.other.link + settings + + foreground + #{{base0D}} + fontStyle + underline + + + + + name + Markup - Quote + scope + markup.quote + settings + + foreground + #{{base0B}} + fontStyle + italic + + + + + name + Markup - List + scope + markup.list, punctuation.definition.list + settings + + foreground + #{{base08}} + + + + + + name + Meta - Function Call + scope + meta.function-call + settings + + foreground + #{{base0D}} + + + + + name + Meta - Preprocessor + scope + meta.preprocessor + settings + + foreground + #{{base09}} + + + + + uuid + a6f0d8c2-3b1e-4f5a-9c7d-2e8b0f4a6d1c + + diff --git a/modules/programs/bat/default.nix b/modules/programs/bat/default.nix new file mode 100644 index 0000000..3c962a3 --- /dev/null +++ b/modules/programs/bat/default.nix @@ -0,0 +1,26 @@ +{ + config, + lib, + pkgs, + ... +}: + +# bat - a cat clone with wings +{ + config = lib.mkIf config.programs.bat.enable { + programs.bat = { + config = { + theme = "base16"; + }; + themes = { + base16 = { + src = pkgs.runCommand "bat-base16-theme" { } '' + mkdir -p $out + cp ${config.scheme { template = ./base16.mustache.tmTheme; }} $out/base16.tmTheme + ''; + file = "base16.tmTheme"; + }; + }; + }; + }; +} diff --git a/modules/programs/bluetui/default.nix b/modules/programs/bluetui/default.nix new file mode 100644 index 0000000..d214d4b --- /dev/null +++ b/modules/programs/bluetui/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Bluetui - Terminal UI for Bluetooth management +{ + options.programs.bluetui = { + enable = lib.mkEnableOption "Enables bluetui."; + }; + + config = lib.mkIf config.programs.bluetui.enable { + home.packages = with pkgs; [ + bluetui + ]; + }; +} diff --git a/modules/programs/bottom/default.nix b/modules/programs/bottom/default.nix new file mode 100644 index 0000000..0fd2853 --- /dev/null +++ b/modules/programs/bottom/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +# Bottom - Cross-platform graphical process/system monitor (Rust-based) +{ +} diff --git a/modules/programs/brightnessctl/default.nix b/modules/programs/brightnessctl/default.nix new file mode 100644 index 0000000..5092ede --- /dev/null +++ b/modules/programs/brightnessctl/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# brightnessctl - Backlight brightness control tool +{ + options.programs.brightnessctl = { + enable = lib.mkEnableOption "Enables brightnessctl."; + }; + + config = lib.mkIf config.programs.brightnessctl.enable { + home.packages = with pkgs; [ + brightnessctl + ]; + }; +} diff --git a/modules/programs/bruno/default.nix b/modules/programs/bruno/default.nix new file mode 100644 index 0000000..72932db --- /dev/null +++ b/modules/programs/bruno/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Bruno - Open-source API client for testing HTTP endpoints +{ + options.programs.bruno = { + enable = lib.mkEnableOption "Enables bruno."; + }; + + config = lib.mkIf config.programs.bruno.enable { + home.packages = with pkgs; [ + bruno + ]; + }; +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix new file mode 100644 index 0000000..76be19f --- /dev/null +++ b/modules/programs/default.nix @@ -0,0 +1,43 @@ +{ ... }: + +# Tools - Collection of tool configurations (browsers, editors, utilities, etc.) +{ + imports = [ + ./bat + ./bluetui + ./bottom + ./brightnessctl + ./bruno + ./devenv + ./feh + ./ffmpeg + ./fzf + ./git + ./htop + ./impala + ./kitty + ./lf + ./librewolf + ./lsd + ./maim + # ./nixvim + ./nvtop + ./opencode + ./ssh + ./openvpn + ./ouch + ./pamixer + ./playerctl + ./qemu + ./slop + ./starship + ./systemctl-tui + ./tmux + ./tor + ./umu-launcher + ./vlc + ./vscode + ./zathura + ./zsh + ]; +} diff --git a/modules/programs/devenv/alias.sh b/modules/programs/devenv/alias.sh new file mode 100644 index 0000000..e63dbd8 --- /dev/null +++ b/modules/programs/devenv/alias.sh @@ -0,0 +1,28 @@ +devenv() { + local has_reload=false + local is_shell=false + + for arg in "$@"; do + if [[ "$arg" == "--reload" || "$arg" == "--no-reload" ]]; then + has_reload=true + fi + if [[ "$arg" == "shell" ]]; then + is_shell=true + fi + done + + if [[ "$is_shell" == true ]]; then + if [[ "$has_reload" == true ]]; then + command devenv "$@" "$SHELL" + else + command devenv "$@" --no-reload "$SHELL" + fi + return + fi + + if [[ "$has_reload" == true ]]; then + command devenv "$@" + else + command devenv "$@" --no-reload + fi +} diff --git a/modules/programs/devenv/default.nix b/modules/programs/devenv/default.nix new file mode 100644 index 0000000..633fd0d --- /dev/null +++ b/modules/programs/devenv/default.nix @@ -0,0 +1,26 @@ +{ + config, + pkgs, + lib, + ... +}: + +# Devenv - Developer environment tooling (Nix-based dev environments) +{ + options.programs.devenv = { + enable = lib.mkEnableOption "Enables devenv."; + }; + + config = + let + shellIntegration = builtins.readFile ./alias.sh; + in + lib.mkIf config.programs.devenv.enable { + home.packages = with pkgs; [ + devenv + ]; + + programs.zsh.initContent = lib.mkIf config.programs.zsh.enable (lib.mkAfter shellIntegration); + programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter shellIntegration); + }; +} diff --git a/modules/programs/feh/default.nix b/modules/programs/feh/default.nix new file mode 100644 index 0000000..050934e --- /dev/null +++ b/modules/programs/feh/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +# Feh - Lightweight image viewer and wallpaper setter +{ +} diff --git a/modules/programs/ffmpeg/default.nix b/modules/programs/ffmpeg/default.nix new file mode 100644 index 0000000..88f7a00 --- /dev/null +++ b/modules/programs/ffmpeg/default.nix @@ -0,0 +1,19 @@ +{ + config, + pkgs, + lib, + ... +}: + +# FFmpeg - Command-line audio/video converter and streaming tool +{ + options.programs.ffmpeg = { + enable = lib.mkEnableOption "Enables ffmpeg."; + }; + + config = lib.mkIf config.programs.ffmpeg.enable { + home.packages = with pkgs; [ + ffmpeg-full + ]; + }; +} diff --git a/modules/programs/fzf/default.nix b/modules/programs/fzf/default.nix new file mode 100644 index 0000000..8816ddd --- /dev/null +++ b/modules/programs/fzf/default.nix @@ -0,0 +1,49 @@ +{ config, lib, ... }: + +# FZF - Fuzzy finder, CLI fuzzy search tool +{ + config = + let + shellIntegration = '' + ${if config.programs.zsh.enable then "eval \"$(fzf --zsh)\"" else "eval \"$(fzf --bash)\""} + ''; + in + lib.mkIf config.programs.fzf.enable { + programs.fzf = { + defaultOptions = [ + "--height 100%" + "--layout=reverse" + ''--pointer=\" \"'' + ''--header=\" \"'' + ''--prompt=\" \"'' + ''--marker=\"✓ \"'' + "--border=none" + "--cycle" + "--no-info" + "--margin=\"1,2\"" + ]; + + colors = with config.scheme.withHashtag; { + fg = base05; # Foreground + bg = "-1"; # Background (-1 for transparent) + hl = base0D; # Highlight + + "fg+" = base07; # Foreground for selected item + "bg+" = "-1"; # Background for selected item + "hl+" = base0D; # Highlight for selected item + + gutter = "-1"; # Remove the white margin at the left + + info = base0B; # Info text (usually count of items) + border = base03; # Border color + prompt = base0A; # Prompt text color + pointer = base0F; # Pointer color (e.g., > for selected) + marker = base0C; # Marker color (e.g., for multi-select) + spinner = base0C; # Spinner color (during search) + }; + }; + + programs.zsh.initContent = lib.mkIf config.programs.zsh.enable (lib.mkAfter shellIntegration); + programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter shellIntegration); + }; +} diff --git a/modules/programs/git/default.nix b/modules/programs/git/default.nix new file mode 100644 index 0000000..24d63c7 --- /dev/null +++ b/modules/programs/git/default.nix @@ -0,0 +1,33 @@ +{ lib, config, ... }: + +# Git - Distributed version control system +{ + options.programs.git = { + username = lib.mkOption { + type = lib.types.str; + description = "Git username."; + }; + email = lib.mkOption { + type = lib.types.str; + description = "Git email."; + }; + }; + + config = lib.mkIf config.programs.git.enable { + programs.git = { + settings = { + user = { + name = config.programs.git.username; + email = config.programs.git.email; + }; + credential.helper = "store --file ${config.xdg.cacheHome}/git/credential"; + core.askPass = ""; + }; + }; + + # The base directory of the credential file must exist + home.activation.createGitCacheDirectory = lib.hm.dag.entryAfter [ + "writeBoundary" + ] "mkdir -p ${config.xdg.cacheHome}/git"; + }; +} diff --git a/modules/programs/htop/default.nix b/modules/programs/htop/default.nix new file mode 100644 index 0000000..7781464 --- /dev/null +++ b/modules/programs/htop/default.nix @@ -0,0 +1,15 @@ +{ + pkgs, + lib, + config, + ... +}: + +# Htop - Interactive process viewer (using htop-vim version) +{ + config = lib.mkIf config.programs.htop.enable { + programs.htop = { + package = pkgs.htop-vim; + }; + }; +} diff --git a/modules/programs/impala/default.nix b/modules/programs/impala/default.nix new file mode 100644 index 0000000..6802381 --- /dev/null +++ b/modules/programs/impala/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Impala - Apache Impala: SQL query engine for Apache Hadoop +{ + options.programs.impala = { + enable = lib.mkEnableOption "Enables impala."; + }; + + config = lib.mkIf config.programs.impala.enable { + home.packages = with pkgs; [ + impala + ]; + }; +} diff --git a/modules/programs/kitty/default.nix b/modules/programs/kitty/default.nix new file mode 100644 index 0000000..2e81ebc --- /dev/null +++ b/modules/programs/kitty/default.nix @@ -0,0 +1,52 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Kitty - GPU-accelerated terminal emulator +{ + config = lib.mkIf config.programs.kitty.enable { + programs.kitty = { + settings = with config.scheme.withHashtag; { + window_padding_width = 10; + font_size = config.fonts.size; + font_family = config.fonts.normal; + filter_notification = "all"; + update_check_interval = 0; + scrollback_indicator_opacity = "0.5"; + + dynamic_background_opacity = false; + enable_audio_bell = false; + + background = base00; + foreground = base05; + + color0 = base00; + color1 = base08; + color2 = base0B; + color3 = base0A; + color4 = base0D; + color5 = base0E; + color6 = base0C; + color7 = base05; + color8 = base03; + color9 = base09; + color10 = base0B; + color11 = base0A; + color12 = base0D; + color13 = base0E; + color14 = base0F; + color15 = base07; + + selection_background = base05; + selection_foreground = base00; + + allow_remote_control = "yes"; + listen_on = "unix:/tmp/kitty"; + shell = lib.mkIf config.programs.zsh.enable "${lib.getExe pkgs.zsh}"; + }; + }; + }; +} diff --git a/modules/programs/lf/default.nix b/modules/programs/lf/default.nix new file mode 100644 index 0000000..eb605f5 --- /dev/null +++ b/modules/programs/lf/default.nix @@ -0,0 +1,48 @@ +{ + pkgs, + lib, + config, + ... +}: + +# lf - terminal file manager +{ + config = lib.mkIf config.programs.lf.enable { + home.packages = with pkgs; [ + ctpv + ]; + + programs.lf = { + settings = { + number = true; + icons = true; + drawbox = true; + hidden = true; + preview = true; + + shell = if config.programs.zsh.enable then lib.getExe pkgs.zsh else "bash"; + shellopts = "'-eu'"; + ifs = "\n"; + scrolloff = "4"; + period = "1"; + incsearch = true; + smartcase = true; + info = "size"; + sortby = "natural"; + dirfirst = true; + + cleaner = lib.getExe config.scripts.file-preview-clean.package; + }; + + previewer = { + source = lib.getExe config.scripts.file-preview.package; + }; + + extraConfig = '' + ${builtins.readFile ./lfrc} + ''; + }; + + home.file.".config/lf/icons".source = ./icons; + }; +} diff --git a/modules/programs/lf/icons b/modules/programs/lf/icons new file mode 100644 index 0000000..8697cf2 --- /dev/null +++ b/modules/programs/lf/icons @@ -0,0 +1,342 @@ +# vim:ft=conf + +# file types (with matching order) +ln  # LINK +or  # ORPHAN +tw t # STICKY_OTHER_WRITABLE +ow  # OTHER_WRITABLE +st t # STICKY +di  # DIR +pi p # FIFO +so s # SOCK +bd b # BLK +cd c # CHR +su u # SETUID +sg g # SETGID +ex  # EXEC +fi  # FILE + +# file extensions (vim-devicons) +*.styl  +*.sass  +*.scss  +*.htm  +*.html  +*.slim  +*.haml  +*.ejs  +*.css  +*.less  +*.md  +*.mdx  +*.markdown  +*.rmd  +*.json  +*.webmanifest  +*.js  +*.mjs  +*.jsx  +*.rb  +*.gemspec  +*.rake  +*.php  +*.py  +*.pyc  +*.pyo  +*.pyd  +*.coffee  +*.mustache  +*.hbs  +*.conf  +*.ini  +*.yml  +*.yaml  +*.toml  +*.bat  +*.mk  +*.jpg  +*.jpeg  +*.bmp  +*.png  +*.webp  +*.gif  +*.ico  +*.twig  +*.cpp  +*.c++  +*.cxx  +*.cc  +*.cp  +*.c  +*.cs 󰌛 +*.h  +*.hh  +*.hpp  +*.hxx  +*.hs  +*.lhs  +*.nix  +*.lua  +*.java  +*.sh  +*.fish  +*.bash  +*.zsh  +*.ksh  +*.csh  +*.awk  +*.ps1  +*.ml λ +*.mli λ +*.diff  +*.db  +*.sql  +*.dump  +*.clj  +*.cljc  +*.cljs  +*.edn  +*.scala  +*.go  +*.dart  +*.xul  +*.sln  +*.suo  +*.pl  +*.pm  +*.t  +*.rss  +'*.f#'  +*.fsscript  +*.fsx  +*.fs  +*.fsi  +*.rs  +*.rlib  +*.d  +*.erl  +*.hrl  +*.ex  +*.exs  +*.eex  +*.leex  +*.heex  +*.vim  +*.ai  +*.psd  +*.psb  +*.ts  +*.tsx  +*.jl  +*.pp  +*.vue  +*.elm  +*.swift  +*.xcplayground  +*.tex 󰙩 +*.r 󰟔 +*.rproj 󰗆 +*.sol 󰡪 +*.pem  + +# file names (vim-devicons) (case-insensitive not supported in lf) +*gruntfile.coffee  +*gruntfile.js  +*gruntfile.ls  +*gulpfile.coffee  +*gulpfile.js  +*gulpfile.ls  +*mix.lock  +*dropbox  +*.ds_store  +*.gitconfig  +*.gitignore  +*.gitattributes  +*.gitlab-ci.yml  +*.bashrc  +*.zshrc  +*.zshenv  +*.zprofile  +*.vimrc  +*.gvimrc  +*_vimrc  +*_gvimrc  +*.bashprofile  +*favicon.ico  +*license  +*node_modules  +*react.jsx  +*procfile  +*dockerfile  +*docker-compose.yml  +*docker-compose.yaml  +*compose.yml  +*compose.yaml  +*rakefile  +*config.ru  +*gemfile  +*makefile  +*cmakelists.txt  +*robots.txt 󰚩 + +# file names (case-sensitive adaptations) +*Gruntfile.coffee  +*Gruntfile.js  +*Gruntfile.ls  +*Gulpfile.coffee  +*Gulpfile.js  +*Gulpfile.ls  +*Dropbox  +*.DS_Store  +*LICENSE  +*React.jsx  +*Procfile  +*Dockerfile  +*Docker-compose.yml  +*Docker-compose.yaml  +*Rakefile  +*Gemfile  +*Makefile  +*CMakeLists.txt  + +# file patterns (vim-devicons) (patterns not supported in lf) +# .*jquery.*\.js$  +# .*angular.*\.js$  +# .*backbone.*\.js$  +# .*require.*\.js$  +# .*materialize.*\.js$  +# .*materialize.*\.css$  +# .*mootools.*\.js$  +# .*vimrc.*  +# Vagrantfile$  + +# file patterns (file name adaptations) +*jquery.min.js  +*angular.min.js  +*backbone.min.js  +*require.min.js  +*materialize.min.js  +*materialize.min.css  +*mootools.min.js  +*vimrc  +Vagrantfile  + +# archives or compressed (extensions from dircolors defaults) +*.tar  +*.tgz  +*.arc  +*.arj  +*.taz  +*.lha  +*.lz4  +*.lzh  +*.lzma  +*.tlz  +*.txz  +*.tzo  +*.t7z  +*.zip  +*.z  +*.dz  +*.gz  +*.lrz  +*.lz  +*.lzo  +*.xz  +*.zst  +*.tzst  +*.bz2  +*.bz  +*.tbz  +*.tbz2  +*.tz  +*.deb  +*.rpm  +*.jar  +*.war  +*.ear  +*.sar  +*.rar  +*.alz  +*.ace  +*.zoo  +*.cpio  +*.7z  +*.rz  +*.cab  +*.wim  +*.swm  +*.dwm  +*.esd  + +# image formats (extensions from dircolors defaults) +*.jpg  +*.jpeg  +*.mjpg  +*.mjpeg  +*.gif  +*.bmp  +*.pbm  +*.pgm  +*.ppm  +*.tga  +*.xbm  +*.xpm  +*.tif  +*.tiff  +*.png  +*.svg  +*.svgz  +*.mng  +*.pcx  +*.mov  +*.mpg  +*.mpeg  +*.m2v  +*.mkv  +*.webm  +*.ogm  +*.mp4  +*.m4v  +*.mp4v  +*.vob  +*.qt  +*.nuv  +*.wmv  +*.asf  +*.rm  +*.rmvb  +*.flc  +*.avi  +*.fli  +*.flv  +*.gl  +*.dl  +*.xcf  +*.xwd  +*.yuv  +*.cgm  +*.emf  +*.ogv  +*.ogx  + +# audio formats (extensions from dircolors defaults) +*.aac  +*.au  +*.flac  +*.m4a  +*.mid  +*.midi  +*.mka  +*.mp3  +*.mpc  +*.ogg  +*.ra  +*.wav  +*.oga  +*.opus  +*.spx  +*.xspf  + +# other formats +*.pdf  diff --git a/modules/programs/lf/lfrc b/modules/programs/lf/lfrc new file mode 100644 index 0000000..11a9959 --- /dev/null +++ b/modules/programs/lf/lfrc @@ -0,0 +1,279 @@ +# ─── lf config — nvim-tree style keybindings ─────────────────────────────── + +# ─── Colors (optional — remove if you use a color scheme plugin) ────────────── +# set color256 true + +# ─── Custom commands ────────────────────────────────────────────────────────── + +# Create a new file (like nvim-tree 'a' with no trailing /) +cmd touch %{{ + printf "New file name: " + read -r name + touch "$name" + lf -remote "send $id select '$name'" +}} + +# Create a new directory (like nvim-tree 'a' with trailing /) +cmd mkdir %{{ + printf "New directory name: " + read -r name + mkdir -p "$name" + lf -remote "send $id select '$name'" +}} + +# Rename — full name (like nvim-tree 'r') +cmd rename ${{ + printf "Rename '%s' to: " "$f" + read -r newname + mv -- "$f" "$(dirname "$f")/$newname" + lf -remote "send $id select '$newname'" +}} + +# Rename — only basename without extension (like nvim-tree 'e' in some configs) +cmd rename_stem ${{ + stem="${f##*/}" + stem="${stem%.*}" + printf "Rename stem to: " + read -r newname + ext="${f##*.}" + if [ "${f##*/}" = "$stem" ]; then + mv -- "$f" "$(dirname "$f")/$newname" + else + mv -- "$f" "$(dirname "$f")/$newname.$ext" + fi +}} + +# Delete — trash (safe) using trash-cli if available, else rm +cmd trash %{{ + set -f + files=$(printf '%s\n' $fx | wc -l) + printf "Trash $files item(s)? [y/N] " + read -r ans + [ "$ans" = "y" ] || [ "$ans" = "Y" ] || exit 0 + if command -v trash-put >/dev/null 2>&1; then + printf '%s\n' $fx | xargs trash-put -- + else + printf '%s\n' $fx | xargs rm -rf -- + fi +}} + +# Delete — permanent, no confirmation prompt (use carefully) +cmd delete ${{ + set -f + printf "Permanently delete? [y/N] " + read -r ans + [ "$ans" = "y" ] || [ "$ans" = "Y" ] || exit 0 + rm -rf -- $fx +}} + +# Paste (move or copy depending on operation) +cmd paste &{{ + set -f + load=$(lf -remote 'load') + mode=$(echo "$load" | sed -n '1p') + list=$(echo "$load" | sed -n '2,$p') + if [ "$mode" = "copy" ]; then + cp -rn -- $list . + elif [ "$mode" = "move" ]; then + mv -n -- $list . + lf -remote 'send clear' + fi + lf -remote 'send reload' + lf -remote 'send clear' +}} + +# Paste with overwrite +cmd paste_overwrite &{{ + set -f + load=$(lf -remote 'load') + mode=$(echo "$load" | sed -n '1p') + list=$(echo "$load" | sed -n '2,$p') + if [ "$mode" = "copy" ]; then + cp -r -- $list . + elif [ "$mode" = "move" ]; then + mv -- $list . + lf -remote 'send clear' + fi + lf -remote 'send reload' + lf -remote 'send clear' +}} + +# Open in nvim +cmd edit $nvim "$f" + +# Open with xdg-open (GUI apps) +cmd open_gui &xdg-open "$f" + +# Toggle hidden files (like nvim-tree 'H') +cmd toggle_hidden :{{ + set hidden! + set info +}} + +# Bulk rename with $EDITOR (like vimv / nvim-tree mass rename) +cmd bulk_rename ${{ + index=$(mktemp /tmp/lf-bulk-index.XXXXXX) + names=$(mktemp /tmp/lf-bulk-names.XXXXXX) + printf '%s\n' $fx > "$index" + sed 's|.*/||' "$index" > "$names" + $EDITOR "$names" + paste "$index" "$names" | while IFS=$'\t' read -r old new; do + if [ "$old" != "$(dirname "$old")/$new" ]; then + mv -- "$old" "$(dirname "$old")/$new" + fi + done + rm -- "$index" "$names" + lf -remote 'send reload' +}} + +# Create symlink (relative) +cmd symlink %{{ + printf "Symlink target name: " + read -r name + ln -s "$f" "$name" +}} + +# Copy path to clipboard (needs xclip / xsel / wl-copy) +cmd copy_path &{{ + printf '%s' "$f" | xclip -selection clipboard 2>/dev/null \ + || printf '%s' "$f" | xsel --clipboard --input 2>/dev/null \ + || printf '%s' "$f" | wl-copy 2>/dev/null +}} + +# Show file info (like nvim-tree 'i') +cmd info %{{ + stat -- "$f" + printf '\nPress ENTER...' + read -r _ +}} + +# Jump to bookmarks (requires fzf) +cmd bookmark_jump ${{ + bm="$HOME/.config/lf/bookmarks" + [ -f "$bm" ] || touch "$bm" + dest=$(cat "$bm" | fzf --prompt "Jump to: ") + [ -n "$dest" ] && lf -remote "send $id cd '$dest'" +}} + +# Add bookmark +cmd bookmark_add %{{ + bm="$HOME/.config/lf/bookmarks" + printf '%s\n' "$PWD" >> "$bm" + sort -u "$bm" -o "$bm" + echo "Bookmarked: $PWD" +}} + +# fzf-based fuzzy find & cd/select +cmd fzf_cd ${{ + dest=$(find . -type d 2>/dev/null | fzf --prompt "cd: ") + [ -n "$dest" ] && lf -remote "send $id cd '$dest'" +}} + +cmd fzf_file ${{ + file=$(find . -type f 2>/dev/null | fzf --prompt "open: ") + [ -n "$dest" ] && lf -remote "send $id select '$file'" +}} + +# ─── Keybindings — clear defaults and remap ─────────────────────────────────── + +# Unmap keys we'll remap +map d +map y +map p +map c +map r +map a +map e +map f +map g +map G +map i +map o +map H +map m + +# ── Navigation ──────────────────────────────────────────────────────────────── +map h updir # go up one dir +map l open # open file/dir (maps to $EDITOR for files) +map j down +map k up +map J half-down +map K half-up +map gg top +map G bottom +map gd cd ~/Downloads +map gh cd ~ +map gc cd ~/.config +map gp cd ~/projects + +# Page navigation (nvim-style) +map half-down +map half-up +map page-down +map page-up + +# ── Opening / editing ───────────────────────────────────────────────────────── +map open # open with default +map o open_gui # open with GUI app +map e edit # open in nvim explicitly + +# ── File / dir creation ─────────────────────────────────────────────────────── +map af touch # a → file (like nvim-tree 'a' without /) +map ad mkdir # a → dir (like nvim-tree 'a' with /) + +# ── Rename ──────────────────────────────────────────────────────────────────── +map r rename # full rename (like nvim-tree 'r') +map R bulk_rename # bulk rename in $EDITOR +map cw rename # alias: cw like vim's 'change word' +map I rename # alias: go to start (lf positions cursor) +map A rename # alias: go to end + +# ── Delete ──────────────────────────────────────────────────────────────────── +map dd trash # move to trash (safe delete — like nvim-tree 'd') +map dD delete # permanent delete (no trash) + +# ── Yank / Copy / Cut / Paste ───────────────────────────────────────────────── +map yy copy # yank/copy selection (like nvim-tree 'c') +map yn copy_path # yank path to clipboard +map dd cut # cut selection (like nvim-tree 'x') — overrides trash above; + # uncomment the trash line below if you prefer separate keys +# map dt trash # use 'dt' for trash if 'dd' is used for cut +map pp paste # paste (like nvim-tree 'p') +map po paste_overwrite # paste with overwrite +map P paste # alias + +# ── Marking / selection ─────────────────────────────────────────────────────── +map toggle # toggle mark on current item (like nvim-tree space) +map v invert # invert selection +map V invert # alias +map u unselect # clear all marks +map * glob-select '*' # select all via glob + +# ── Search ──────────────────────────────────────────────────────────────────── +map / search # incremental search forward +map n search-next +map N search-prev +map f fzf_file # fuzzy find file (requires fzf) +map F fzf_cd # fuzzy cd into dir (requires fzf) + +# ── View toggles ────────────────────────────────────────────────────────────── +map H toggle_hidden # toggle hidden files (like nvim-tree 'H') +map zi set icons! +map zr set reverse! +map zh set hidden! +map zn set sortby natural +map zs set sortby size +map zm set sortby modified +map ze set sortby ext + +# ── Info / misc ─────────────────────────────────────────────────────────────── +map i info # show stat info (like nvim-tree 'i') +map reload # reload directory +map clear # clear selection +map q quit +map Q quit +map m bookmark_add # add bookmark +map ' bookmark_jump # jump to bookmark (requires fzf) + +# Symlink +map S symlink diff --git a/modules/programs/librewolf/default.nix b/modules/programs/librewolf/default.nix new file mode 100644 index 0000000..0c457a5 --- /dev/null +++ b/modules/programs/librewolf/default.nix @@ -0,0 +1,59 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Librewolf - A privacy-focused fork of Mozilla Firefox +{ + config = lib.mkIf config.programs.librewolf.enable { + programs.librewolf = { + package = pkgs.librewolf; + profiles."arpit" = { + isDefault = true; + settings = { + "extensions.autoDisableScopes" = 0; + # Use default dark theme until Black gets installed + "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; + "sidebar.verticalTabs" = true; + "sidebar.visibility" = "always-show"; + "sidebar.verticalTabs.dragToPinPromo.dismissed" = true; + "layout.css.devPixelsPerPx" = 1.1; + # Dark + "layout.css.prefers-color-scheme.content-override" = 0; + "browser.toolbars.bookmarks.visibility" = "newtab"; + "browser.startup.page" = 2; + "sidebar.expandOnHover" = false; + "sidebar.animation.enabled" = false; + "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; + "privacy.resistFingerprinting" = false; + "privacy.fingerprintingProtection" = true; + "dom.webnotifications.enabled" = false; + }; + }; + policies = { + ExtensionSettings = { + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "force_installed"; + private_browsing = true; + }; + "{9b84b6b4-07c4-4b4b-ba21-394d86f6e9ee}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/black21/latest.xpi"; + installation_mode = "force_installed"; + }; + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { + default_area = "menupanel"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; + installation_mode = "force_installed"; + }; + "addon@darkreader.org" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi"; + installation_mode = "force_installed"; + }; + }; + }; + }; + }; +} diff --git a/modules/programs/lsd/default.nix b/modules/programs/lsd/default.nix new file mode 100644 index 0000000..99fe1bd --- /dev/null +++ b/modules/programs/lsd/default.nix @@ -0,0 +1,10 @@ +{ config, lib, ... }: + +# LSD - Ls alternative with icons and colors (Rust-based) +{ + config = lib.mkIf config.programs.lsd.enable { + programs.lsd = { + settings.icons.separator = " "; + }; + }; +} diff --git a/modules/programs/maim/default.nix b/modules/programs/maim/default.nix new file mode 100644 index 0000000..76ef80d --- /dev/null +++ b/modules/programs/maim/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Maim - Screenshot utility (slop-based region selection) +{ + options.programs.maim = { + enable = lib.mkEnableOption "Enables maim."; + }; + + config = lib.mkIf config.programs.maim.enable { + home.packages = with pkgs; [ + maim + ]; + }; +} diff --git a/modules/programs/nixvim/colorscheme.nix b/modules/programs/nixvim/colorscheme.nix new file mode 100644 index 0000000..ba81634 --- /dev/null +++ b/modules/programs/nixvim/colorscheme.nix @@ -0,0 +1,26 @@ +{ config, lib, ... }: + +# Colorscheme - Base16 theme configuration for nixvim +{ + config.programs.nixvim.colorschemes.base16 = lib.mkIf config.programs.nixvim.enable { + enable = true; + colorscheme = with config.scheme.withHashtag; { + base00 = base00; + base01 = base01; + base02 = base02; + base03 = base03; + base04 = base04; + base05 = base05; + base06 = base06; + base07 = base07; + base08 = base08; + base09 = base09; + base0A = base0A; + base0B = base0B; + base0C = base0C; + base0D = base0D; + base0E = base0E; + base0F = base0F; + }; + }; +} diff --git a/modules/programs/nixvim/default.nix b/modules/programs/nixvim/default.nix new file mode 100644 index 0000000..1a66b47 --- /dev/null +++ b/modules/programs/nixvim/default.nix @@ -0,0 +1,83 @@ +{ config, lib, ... }: + +# Nixvim - Neovim configured through Nix (home-manager integration) +{ + imports = [ + ./colorscheme.nix + ./keymaps.nix + ./plugins + ]; + + options.programs.nixvim = { + enable = lib.mkEnableOption "Enables nixvim."; + }; + + config = lib.mkIf config.programs.nixvim.enable { + programs.nixvim = { + defaultEditor = true; + opts = { + number = true; + relativenumber = true; + shiftwidth = 2; + tabstop = 2; + softtabstop = 2; + expandtab = true; + list = true; + laststatus = 3; + foldlevel = 99; + clipboard = "unnamedplus"; + }; + clipboard.providers.xclip.enable = true; + extraConfigLuaPre = with config.scheme.withHashtag; '' + vim.opt.fillchars:append({ eob = " " }) + vim.opt.listchars = { tab = " ", trail = "_", lead = " " } + vim.api.nvim_set_hl(0, "WinSeparator", { + fg = "${base01}", + bg = "${base00}", + }) + vim.api.nvim_set_hl(0, 'NotifyERRORBorder', { fg = '${base08}' }) + vim.api.nvim_set_hl(0, 'NotifyWARNBorder', { fg = '${base09}' }) + vim.api.nvim_set_hl(0, 'NotifyINFOBorder', { fg = '${base0B}' }) + vim.api.nvim_set_hl(0, 'NotifyDEBUGBorder', { fg = '${base03}' }) + vim.api.nvim_set_hl(0, 'NotifyTRACEBorder', { fg = '${base0E}' }) + + vim.api.nvim_set_hl(0, 'NotifyERRORIcon', { fg = '${base08}' }) + vim.api.nvim_set_hl(0, 'NotifyWARNIcon', { fg = '${base09}' }) + vim.api.nvim_set_hl(0, 'NotifyINFOIcon', { fg = '${base0B}' }) + vim.api.nvim_set_hl(0, 'NotifyDEBUGIcon', { fg = '${base03}' }) + vim.api.nvim_set_hl(0, 'NotifyTRACEIcon', { fg = '${base0E}' }) + + vim.api.nvim_set_hl(0, 'NotifyERRORTitle', { fg = '${base08}' }) + vim.api.nvim_set_hl(0, 'NotifyWARNTitle', { fg = '${base09}' }) + vim.api.nvim_set_hl(0, 'NotifyINFOTitle', { fg = '${base0B}' }) + vim.api.nvim_set_hl(0, 'NotifyDEBUGTitle', { fg = '${base03}' }) + vim.api.nvim_set_hl(0, 'NotifyTRACETitle', { fg = '${base0E}' }) + + vim.api.nvim_set_hl(0, 'NotifyERRORBody', { link = 'Normal' }) + vim.api.nvim_set_hl(0, 'NotifyWARNBody', { link = 'Normal' }) + vim.api.nvim_set_hl(0, 'NotifyINFOBody', { link = 'Normal' }) + vim.api.nvim_set_hl(0, 'NotifyDEBUGBody', { link = 'Normal' }) + vim.api.nvim_set_hl(0, 'NotifyTRACEBody', { link = 'Normal' }) + + vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "yaml", "yml" }, + callback = function() + vim.opt_local.expandtab = true + vim.opt_local.shiftwidth = 2 + vim.opt_local.softtabstop = 2 + vim.opt_local.tabstop = 2 + end, + }) + ''; + performance = { + byteCompileLua.enable = true; + combinePlugins.enable = true; + }; + }; + + home.sessionVariables = { + EDITOR = lib.mkForce (lib.getExe config.programs.nixvim.package); + MANPAGER = "${lib.getExe config.programs.nixvim.package} +Man!"; + }; + }; +} diff --git a/modules/programs/nixvim/keymaps.nix b/modules/programs/nixvim/keymaps.nix new file mode 100644 index 0000000..4e4b35a --- /dev/null +++ b/modules/programs/nixvim/keymaps.nix @@ -0,0 +1,41 @@ +{ config, lib, ... }: + +# Keymaps - Keyboard shortcut configuration for nixvim +{ + config.programs.nixvim.keymaps = lib.mkIf config.programs.nixvim.enable [ + { + key = ""; + action = "h"; + options.desc = "Move to left window"; + } + { + key = ""; + action = "j"; + options.desc = "Move to bottom window"; + } + { + key = ""; + action = "k"; + options.desc = "Move to top window"; + } + { + key = ""; + action = "l"; + options.desc = "Move to right window"; + } + { + key = ""; + action = "NvimTreeToggle"; + mode = [ + "n" + "i" + ]; + options.desc = "Toggle file explorer"; + } + { + key = ""; + action = "NotificationsClear"; + options.desc = "Clear notifications"; + } + ]; +} diff --git a/modules/programs/nixvim/plugins/cmp.nix b/modules/programs/nixvim/plugins/cmp.nix new file mode 100644 index 0000000..683e0d3 --- /dev/null +++ b/modules/programs/nixvim/plugins/cmp.nix @@ -0,0 +1,37 @@ +{ config, lib, ... }: + +# Cmp - Completion plugin (nvim-cmp) for auto-completion +{ + config.programs.nixvim.plugins.cmp = lib.mkIf config.programs.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/programs/nixvim/plugins/comment.nix b/modules/programs/nixvim/plugins/comment.nix new file mode 100644 index 0000000..cc1b9cb --- /dev/null +++ b/modules/programs/nixvim/plugins/comment.nix @@ -0,0 +1,23 @@ +{ config, lib, ... }: + +# Comment - Comment toggling plugin (comment.nvim) +{ + config.programs.nixvim.plugins.comment = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + toggler = { + line = "gcc"; # toggle line comment + block = "gbc"; # toggle block comment + }; + opleader = { + line = "gc"; # line comment operator (gc + motion) + block = "gb"; # block comment operator (gb + motion) + }; + extra = { + above = "gcO"; # add comment line above + below = "gco"; # add comment line below + eol = "gcA"; # add comment at end of line + }; + }; + }; +} diff --git a/modules/programs/nixvim/plugins/default.nix b/modules/programs/nixvim/plugins/default.nix new file mode 100644 index 0000000..a263c51 --- /dev/null +++ b/modules/programs/nixvim/plugins/default.nix @@ -0,0 +1,20 @@ +{ ... }: + +# Plugins - Collection of nixvim plugin configurations +{ + imports = [ + ./cmp.nix + ./comment.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 + ]; +} diff --git a/modules/programs/nixvim/plugins/gitsigns.nix b/modules/programs/nixvim/plugins/gitsigns.nix new file mode 100644 index 0000000..ea99eba --- /dev/null +++ b/modules/programs/nixvim/plugins/gitsigns.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +# Gitsigns - Git status in the sign column (gitsigns.nvim) +{ + config.programs.nixvim.plugins.gitsigns = lib.mkIf config.programs.nixvim.enable { + enable = true; + }; +} diff --git a/modules/programs/nixvim/plugins/indent-blankline.nix b/modules/programs/nixvim/plugins/indent-blankline.nix new file mode 100644 index 0000000..eb2674a --- /dev/null +++ b/modules/programs/nixvim/plugins/indent-blankline.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: + +# Indent-blankline - Visual indentation guides (indent-blankline.nvim) +{ + config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + indent = { + char = "┊"; + tab_char = "│"; + }; + }; + }; +} diff --git a/modules/programs/nixvim/plugins/lsp.nix b/modules/programs/nixvim/plugins/lsp.nix new file mode 100644 index 0000000..dbe66a8 --- /dev/null +++ b/modules/programs/nixvim/plugins/lsp.nix @@ -0,0 +1,91 @@ +{ config, lib, ... }: + +# LSP - Language Server Protocol configuration (nvim-lspconfig) +{ + config.programs.nixvim = lib.mkIf config.programs.nixvim.enable { + plugins.lsp = { + enable = true; + inlayHints = true; + autoLoad = true; + keymaps.lspBuf = { + K = "hover"; + gD = "references"; + gd = "definition"; + gi = "implementation"; + gt = "type_definition"; + }; + servers = { + nil_ls = { + enable = true; + }; + lua_ls = { + enable = true; + package = null; + }; + nixd = { + enable = true; + package = null; + }; + pyright = { + enable = true; + package = null; + }; + ts_ls = { + enable = true; + package = null; + }; + clangd = { + enable = true; + package = null; + }; + jsonls = { + enable = true; + package = null; + }; + yamlls = { + enable = true; + package = null; + }; + bash-language-server = { + enable = true; + package = null; + }; + gopls = { + enable = true; + package = null; + }; + }; + }; + + diagnostic = { + settings = { + virtual_text = false; + signs = true; + underline = true; + update_in_insert = false; + float = { + border = "rounded"; + source = true; # Show which LSP the diagnostic is from + header = ""; + prefix = ""; + }; + }; + }; + + # Show diagnostics float on cursor hold + autoCmd = [ + { + event = [ "CursorHold" ]; + pattern = "*"; + callback.__raw = '' + function() + vim.diagnostic.open_float(nil, { focus = false }) + end + ''; + } + ]; + + # How long before CursorHold fires (in ms) + opts.updatetime = 500; + }; +} diff --git a/modules/programs/nixvim/plugins/lualine.nix b/modules/programs/nixvim/plugins/lualine.nix new file mode 100644 index 0000000..72f34be --- /dev/null +++ b/modules/programs/nixvim/plugins/lualine.nix @@ -0,0 +1,90 @@ +{ config, lib, ... }: + +# Lualine - Statusline configuration (lualine.nvim) +{ + config.programs.nixvim.plugins.lualine = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + options = { + theme = with config.scheme.withHashtag; { + 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/programs/nixvim/plugins/luasnip.nix b/modules/programs/nixvim/plugins/luasnip.nix new file mode 100644 index 0000000..60571e9 --- /dev/null +++ b/modules/programs/nixvim/plugins/luasnip.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +# Luasnip - Snippet engine for Neovim (Lua-based) +{ + config.programs.nixvim.plugins.luasnip = lib.mkIf config.programs.nixvim.enable { + enable = true; + }; +} diff --git a/modules/programs/nixvim/plugins/noice.nix b/modules/programs/nixvim/plugins/noice.nix new file mode 100644 index 0000000..61acf2a --- /dev/null +++ b/modules/programs/nixvim/plugins/noice.nix @@ -0,0 +1,19 @@ +{ config, lib, ... }: + +# Noice - Modern UI for Neovim (cmdline, popupmenu, messages) +{ + config.programs.nixvim.plugins.noice = lib.mkIf config.programs.nixvim.enable { + enable = true; + cmdline = { + enabled = true; + view = "cmdline_popup"; + }; + popupmenu = { + enabled = true; + backend = "cmp"; + }; + presets = { + command_palette = true; + }; + }; +} diff --git a/modules/programs/nixvim/plugins/nvim-tree.nix b/modules/programs/nixvim/plugins/nvim-tree.nix new file mode 100644 index 0000000..2ad6570 --- /dev/null +++ b/modules/programs/nixvim/plugins/nvim-tree.nix @@ -0,0 +1,44 @@ +{ config, lib, ... }: + +# Nvim-tree - File explorer sidebar (nvim-tree.lua) +{ + config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.programs.nixvim.enable { + 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; + }; + }; + }; + }; + }; +} diff --git a/modules/programs/nixvim/plugins/telescope.nix b/modules/programs/nixvim/plugins/telescope.nix new file mode 100644 index 0000000..b9678fc --- /dev/null +++ b/modules/programs/nixvim/plugins/telescope.nix @@ -0,0 +1,85 @@ +{ config, lib, ... }: + +# Telescope - Fuzzy finder +{ + config.programs.nixvim.plugins.telescope = lib.mkIf config.programs.nixvim.enable { + enable = true; + extensions = { + fzf-native.enable = true; # faster fuzzy sorting + ui-select.enable = true; # use telescope for vim.ui.select (code actions etc.) + }; + 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"; + }; + + # Git + "gc" = { + action = "git_commits"; + options.desc = "Git commits"; + }; + "gb" = { + action = "git_branches"; + options.desc = "Git branches"; + }; + + # 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/programs/nixvim/plugins/treesitter.nix b/modules/programs/nixvim/plugins/treesitter.nix new file mode 100644 index 0000000..035ac7a --- /dev/null +++ b/modules/programs/nixvim/plugins/treesitter.nix @@ -0,0 +1,19 @@ +{ config, lib, ... }: + +# Treesitter - Syntax highlighting and parsing (nvim-treesitter) +{ + config.programs.nixvim.plugins.treesitter = lib.mkIf config.programs.nixvim.enable { + enable = true; + folding = { + enable = true; + }; + settings = { + highlight = { + enable = true; + }; + indent = { + enable = true; + }; + }; + }; +} diff --git a/modules/programs/nixvim/plugins/web-devicons.nix b/modules/programs/nixvim/plugins/web-devicons.nix new file mode 100644 index 0000000..3c6ad86 --- /dev/null +++ b/modules/programs/nixvim/plugins/web-devicons.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +# Web-devicons - File icons for various file types (nvim-web-devicons) +{ + config.programs.nixvim.plugins.web-devicons = lib.mkIf config.programs.nixvim.enable { + enable = true; + }; +} diff --git a/modules/programs/nixvim/plugins/which-key.nix b/modules/programs/nixvim/plugins/which-key.nix new file mode 100644 index 0000000..18018e7 --- /dev/null +++ b/modules/programs/nixvim/plugins/which-key.nix @@ -0,0 +1,21 @@ +{ config, lib, ... }: + +# Which-key - Popup for keybindings (which-key.nvim) +{ + config.programs.nixvim.plugins.which-key = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + plugins = { + marks = true; + registers = true; + spelling = { + enabled = true; + suggestions = 20; + }; + }; + win = { + border = "single"; + }; + }; + }; +} diff --git a/modules/programs/nvtop/default.nix b/modules/programs/nvtop/default.nix new file mode 100644 index 0000000..ef35c21 --- /dev/null +++ b/modules/programs/nvtop/default.nix @@ -0,0 +1,19 @@ +{ + config, + pkgs, + lib, + ... +}: + +# Nvtop - GPU process monitor (NVIDIA/AMD/Intel GPUs) +{ + options.programs.nvtop = { + enable = lib.mkEnableOption "Enables nvtop."; + }; + + config = lib.mkIf config.programs.nvtop.enable { + home.packages = with pkgs; [ + nvtopPackages.full + ]; + }; +} diff --git a/modules/programs/opencode/default.nix b/modules/programs/opencode/default.nix new file mode 100644 index 0000000..0941db0 --- /dev/null +++ b/modules/programs/opencode/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +# Opencode - AI-powered coding assistant (opencode.ai) +{ +} diff --git a/modules/programs/openvpn/default.nix b/modules/programs/openvpn/default.nix new file mode 100644 index 0000000..c70192a --- /dev/null +++ b/modules/programs/openvpn/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# OpenVPN - Open-source VPN client for secure remote access +{ + options.programs.openvpn = { + enable = lib.mkEnableOption "Enables openvpn."; + }; + + config = lib.mkIf config.programs.openvpn.enable { + home.packages = with pkgs; [ + openvpn + ]; + }; +} diff --git a/modules/programs/ouch/default.nix b/modules/programs/ouch/default.nix new file mode 100644 index 0000000..69c8ae5 --- /dev/null +++ b/modules/programs/ouch/default.nix @@ -0,0 +1,19 @@ +{ + pkgs, + lib, + config, + ... +}: + +# Ouch! - CLI tool for compressing and decompressing various formats. +{ + options.programs.ouch = { + enable = lib.mkEnableOption "Enables ouch."; + }; + + config = lib.mkIf config.programs.ouch.enable { + home.packages = with pkgs; [ + ouch + ]; + }; +} diff --git a/modules/programs/pamixer/default.nix b/modules/programs/pamixer/default.nix new file mode 100644 index 0000000..8262770 --- /dev/null +++ b/modules/programs/pamixer/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Pamixer - PulseAudio command-line mixer (volume control) +{ + options.programs.pamixer = { + enable = lib.mkEnableOption "Enables pamixer."; + }; + + config = lib.mkIf config.programs.pamixer.enable { + home.packages = with pkgs; [ + pamixer + ]; + }; +} diff --git a/modules/programs/playerctl/default.nix b/modules/programs/playerctl/default.nix new file mode 100644 index 0000000..f2b5e67 --- /dev/null +++ b/modules/programs/playerctl/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Playerctl - CLI for controlling media players (Spotify, MPRIS, etc.) +{ + options.programs.playerctl = { + enable = lib.mkEnableOption "Enables playerctl."; + }; + + config = lib.mkIf config.programs.playerctl.enable { + home.packages = with pkgs; [ + playerctl + ]; + }; +} diff --git a/modules/programs/qemu/default.nix b/modules/programs/qemu/default.nix new file mode 100644 index 0000000..f883636 --- /dev/null +++ b/modules/programs/qemu/default.nix @@ -0,0 +1,23 @@ +{ + config, + lib, + pkgs, + ... +}: + +# QEMU - generic and open source machine & userspace emulator and virtualizer. +{ + options.programs.qemu = { + enable = lib.mkEnableOption "Enables qemu."; + }; + + config = lib.mkIf config.programs.qemu.enable { + home.packages = with pkgs; [ + qemu + libvirt + virtiofsd + + virt-manager + ]; + }; +} diff --git a/modules/programs/slop/default.nix b/modules/programs/slop/default.nix new file mode 100644 index 0000000..115523e --- /dev/null +++ b/modules/programs/slop/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Slop - Region selector for screenshots (used by maim/flameshot) +{ + options.programs.slop = { + enable = lib.mkEnableOption "Enables slop."; + }; + + config = lib.mkIf config.programs.slop.enable { + home.packages = with pkgs; [ + slop + ]; + }; +} diff --git a/modules/programs/ssh/default.nix b/modules/programs/ssh/default.nix new file mode 100644 index 0000000..dc1bf0e --- /dev/null +++ b/modules/programs/ssh/default.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs, + ... +}: + +# OpenSSH - Secure shell (SSH) client for encrypted remote connections +{ + config = lib.mkIf config.programs.ssh.enable { + programs.ssh = { + package = pkgs.openssh; + enableDefaultConfig = false; + extraOptionOverrides = { + AddKeysToAgent = "yes"; + ForwardAgent = "yes"; + ServerAliveInterval = "60"; + ServerAliveCountMax = "3"; + VisualHostKey = "yes"; + HashKnownHosts = "yes"; + }; + matchBlocks = { + "github.com" = { + hostname = "github.com"; + user = "git"; + identityFile = "${config.home.homeDirectory}/.ssh/github"; + }; + }; + }; + }; +} diff --git a/modules/programs/starship/default.nix b/modules/programs/starship/default.nix new file mode 100644 index 0000000..ae5e082 --- /dev/null +++ b/modules/programs/starship/default.nix @@ -0,0 +1,63 @@ +{ config, lib, ... }: + +# Starship - Minimal, blazing-fast shell prompt +{ + config = lib.mkIf config.programs.starship.enable { + programs.starship = { + enableZshIntegration = config.programs.zsh.enable; + settings = + let + mkSegment = content: ''[┄\[](red)[${content}]($style)[\]](red)''; + in + { + add_newline = true; + + format = ''''\n[╭─\[](red)$username[@](red)$hostname[\]](red)$directory$git_branch$git_status$nix_shell''\n[╰─](red)$status$character ''\n''; + + character.format = "[](red)"; + + username = { + style_user = "blue"; + style_root = "red bold"; + format = "[$user]($style)"; + show_always = true; + }; + + hostname = { + ssh_only = false; + style = "green"; + format = "[$hostname]($style)"; + }; + + directory = { + style = "purple"; + truncate_to_repo = false; + format = mkSegment "$path"; + }; + + git_branch = { + style = "bold yellow"; + format = ''[┄\[](red)[$symbol$branch(:$remote_branch)]($style)''; + }; + + git_status = { + style = "cyan"; + format = ''( [$all_status$ahead_behind]($style))[\]](red)''; + }; + + nix_shell = { + format = mkSegment "$symbol $state( \($name\))"; + symbol = "󱄅"; + impure_msg = "󰻌"; + pure_msg = "󰕥"; + }; + + status = { + disabled = false; + format = "${mkSegment "$symbol $status"}[┄─](red)"; + style = "white"; + }; + }; + }; + }; +} diff --git a/modules/programs/systemctl-tui/default.nix b/modules/programs/systemctl-tui/default.nix new file mode 100644 index 0000000..8958d26 --- /dev/null +++ b/modules/programs/systemctl-tui/default.nix @@ -0,0 +1,19 @@ +{ + config, + pkgs, + lib, + ... +}: + +# systemctl-tui - TUI for systemctl (systemd service management) +{ + options.programs.systemctl-tui = { + enable = lib.mkEnableOption "Enables systemctl-tui."; + }; + + config = lib.mkIf config.programs.systemctl-tui.enable { + home.packages = with pkgs; [ + systemctl-tui + ]; + }; +} diff --git a/modules/programs/tmux/default.nix b/modules/programs/tmux/default.nix new file mode 100644 index 0000000..92d9a94 --- /dev/null +++ b/modules/programs/tmux/default.nix @@ -0,0 +1,4 @@ +{ ... }: + +# Tmux - Terminal multiplexer (window/pane management) +{ } diff --git a/modules/programs/tor/default.nix b/modules/programs/tor/default.nix new file mode 100644 index 0000000..0b35030 --- /dev/null +++ b/modules/programs/tor/default.nix @@ -0,0 +1,26 @@ +{ + pkgs, + lib, + config, + ... +}: + +# Tor - Local proxy server for connecting to the tor network +{ + options.programs.tor = { + enable = lib.mkEnableOption "Enables tor."; + }; + + config = lib.mkIf config.programs.tor.enable { + home.packages = with pkgs; [ + tor + ]; + + home.file.".config/tor/torrc".text = '' + SocksPort 127.0.0.1:9050 + CookieAuthentication 1 + # Prevents Tor from writing to disk too much + AvoidDiskWrites 1 + ''; + }; +} diff --git a/modules/programs/umu-launcher/default.nix b/modules/programs/umu-launcher/default.nix new file mode 100644 index 0000000..8b46cbd --- /dev/null +++ b/modules/programs/umu-launcher/default.nix @@ -0,0 +1,20 @@ +{ + config, + pkgs, + lib, + ... +}: + +# umu-launcher - This is a unified launcher for Windows games on Linux +{ + options.programs.umu-launcher = { + enable = lib.mkEnableOption "Enables umu-launcher."; + }; + + config = lib.mkIf config.programs.umu-launcher.enable { + home.packages = with pkgs; [ + umu-launcher + winetricks + ]; + }; +} diff --git a/modules/programs/vlc/default.nix b/modules/programs/vlc/default.nix new file mode 100644 index 0000000..3b07ea7 --- /dev/null +++ b/modules/programs/vlc/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: + +# VLC - Versatile multimedia player for audio/video playback +{ + options.programs.vlc = { + enable = lib.mkEnableOption "Enables vlc."; + }; + + config = lib.mkIf config.programs.vlc.enable { + home.packages = with pkgs; [ + vlc + ]; + }; +} diff --git a/modules/programs/vscode/default.nix b/modules/programs/vscode/default.nix new file mode 100644 index 0000000..3c57567 --- /dev/null +++ b/modules/programs/vscode/default.nix @@ -0,0 +1,15 @@ +{ + config, + lib, + pkgs, + ... +}: + +# VSCode - Visual Studio Code (using VSCodium open-source build) +{ + config = lib.mkIf config.programs.vscode.enable { + programs.vscode = { + package = pkgs.vscodium; + }; + }; +} diff --git a/modules/programs/zathura/default.nix b/modules/programs/zathura/default.nix new file mode 100644 index 0000000..c10ecd2 --- /dev/null +++ b/modules/programs/zathura/default.nix @@ -0,0 +1,4 @@ +{ ... }: + +# Zathura - Minimalistic document viewer (PDF, DJVU, etc.) +{ } diff --git a/modules/programs/zsh/default.nix b/modules/programs/zsh/default.nix new file mode 100644 index 0000000..482c201 --- /dev/null +++ b/modules/programs/zsh/default.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + pkgs, + ... +}: + +# Zsh - Z shell, extended bash with additional features and plugins +{ + config = + let + nixCommandWrappers = builtins.readFile ./nix-aliases.sh; + in + lib.mkIf config.programs.zsh.enable { + programs.zsh = { + package = pkgs.zsh; + dotDir = "${config.xdg.configHome}/zsh"; + history.path = "${config.xdg.cacheHome}/zsh/history"; + enableCompletion = true; + initContent = '' + setopt PROMPT_SUBST + + autoload -U colors && colors + + bindkey "^[[3~" delete-char + bindkey "^?" backward-delete-char + ${nixCommandWrappers} + ''; + }; + + programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter nixCommandWrappers); + + home.sessionVariables.SHELL = "${lib.getExe config.programs.zsh.package}"; + }; +} diff --git a/modules/programs/zsh/nix-aliases.sh b/modules/programs/zsh/nix-aliases.sh new file mode 100644 index 0000000..0a2f453 --- /dev/null +++ b/modules/programs/zsh/nix-aliases.sh @@ -0,0 +1,27 @@ +nix-shell() { + for arg in "$@"; do + if [[ "$arg" == "--run" || "$arg" == "--command" ]]; then + command nix-shell "$@" + return + fi + done + + command nix-shell "$@" --run "$SHELL" +} + +nix() { + if [[ "$1" == "develop" ]]; then + local args=("${@:2}") + + for arg in "${args[@]}"; do + if [[ "$arg" == "-c" || "$arg" == "--command" ]]; then + command nix "$@" + return + fi + done + + command nix develop "${args[@]}" -c "$SHELL" + else + command nix "$@" + fi +} diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix index 13cbfd1..6a78c31 100644 --- a/modules/scripts/default.nix +++ b/modules/scripts/default.nix @@ -6,7 +6,7 @@ }: let shell = - if config.tools.zsh.enable then (lib.getExe config.programs.zsh.package) else "/usr/bin/env sh"; + if config.programs.zsh.enable then (lib.getExe config.programs.zsh.package) else "/usr/bin/env sh"; mkScript = name: path: env: deps: @@ -64,20 +64,20 @@ let ]; conditions = [ { - option = "tools.ffmpeg.enable"; + option = "programs.ffmpeg.enable"; value = true; } { - option = "tools.ouch.enable"; + option = "programs.ouch.enable"; value = true; } { # not a dependency - option = "tools.zathura.enable"; + option = "programs.zathura.enable"; value = true; } { - option = "tools.bat.enable"; + option = "programs.bat.enable"; value = true; } ]; @@ -109,7 +109,7 @@ let ]; conditions = [ { - option = "tools.fzf.enable"; + option = "programs.fzf.enable"; value = true; } ]; @@ -137,11 +137,11 @@ let ]; conditions = [ { - option = "tools.ffmpeg.enable"; + option = "programs.ffmpeg.enable"; value = true; } { - option = "tools.slop.enable"; + option = "programs.slop.enable"; value = true; } ]; @@ -162,19 +162,19 @@ let ]; conditions = [ { - option = "tools.bottom.enable"; + option = "programs.bottom.enable"; value = true; } { - option = "tools.nvtop.enable"; + option = "programs.nvtop.enable"; value = true; } { - option = "tools.tmux.enable"; + option = "programs.tmux.enable"; value = true; } { - option = "tools.kitty.enable"; + option = "programs.kitty.enable"; value = true; } ]; @@ -192,11 +192,11 @@ let ]; conditions = [ { - option = "tools.openvpn.enable"; + option = "programs.openvpn.enable"; value = true; } { - option = "tools.fzf.enable"; + option = "programs.fzf.enable"; value = true; } ]; @@ -207,11 +207,11 @@ let deps = [ ]; conditions = [ { - option = "tools.openvpn.enable"; + option = "programs.openvpn.enable"; value = true; } { - option = "tools.fzf.enable"; + option = "programs.fzf.enable"; value = true; } ]; diff --git a/modules/tools/bat/base16.mustache.tmTheme b/modules/tools/bat/base16.mustache.tmTheme deleted file mode 100644 index 6b2cd5b..0000000 --- a/modules/tools/bat/base16.mustache.tmTheme +++ /dev/null @@ -1,534 +0,0 @@ - - - - - name - OneDark Dark - author - olimorris (https://github.com/olimorris) - settings - - - - - settings - - background - #{{base00}} - foreground - #{{base05}} - caret - #{{base05}} - invisibles - #{{base03}} - lineHighlight - #{{base01}} - selection - #{{base02}} - selectionBorder - #{{base03}} - findHighlight - #{{base0A}} - findHighlightForeground - #{{base00}} - activeGuide - #{{base03}} - bracketsForeground - #{{base05}} - bracketsOptions - underline - bracketContentsForeground - #{{base05}} - bracketContentsOptions - underline - tagsOptions - stippled_underline - gutterForeground - #{{base03}} - gutter - #{{base01}} - - - - - - name - Comment - scope - comment, punctuation.definition.comment - settings - - foreground - #{{base03}} - fontStyle - italic - - - - - - name - Variable - scope - variable, variable.other - settings - - foreground - #{{base05}} - - - - - name - Variable - Language - scope - variable.language - settings - - foreground - #{{base0E}} - fontStyle - italic - - - - - - name - Keyword - scope - keyword, keyword.control - settings - - foreground - #{{base0E}} - - - - - name - Keyword - Operator - scope - keyword.operator - settings - - foreground - #{{base0C}} - - - - - - name - Storage - scope - storage, storage.type, storage.modifier - settings - - foreground - #{{base0E}} - - - - - - name - Constant - scope - constant, constant.other - settings - - foreground - #{{base09}} - - - - - name - Constant - Numeric - scope - constant.numeric - settings - - foreground - #{{base09}} - - - - - name - Constant - Language - scope - constant.language - settings - - foreground - #{{base09}} - - - - - name - Constant - Character Escape - scope - constant.character.escape - settings - - foreground - #{{base0C}} - - - - - - name - String - scope - string - settings - - foreground - #{{base0B}} - - - - - name - String - Punctuation - scope - punctuation.definition.string - settings - - foreground - #{{base0B}} - - - - - - name - Support - Function - scope - support.function - settings - - foreground - #{{base0D}} - - - - - name - Support - Class - scope - support.class - settings - - foreground - #{{base0A}} - - - - - name - Support - Type - scope - support.type - settings - - foreground - #{{base0C}} - - - - - name - Support - Constant - scope - support.constant - settings - - foreground - #{{base09}} - - - - - - name - Entity - Name - Function - scope - entity.name.function - settings - - foreground - #{{base0D}} - - - - - name - Entity - Name - Class / Type - scope - entity.name.class, entity.name.type, entity.name.type.class - settings - - foreground - #{{base0A}} - - - - - name - Entity - Name - Tag - scope - entity.name.tag - settings - - foreground - #{{base08}} - - - - - name - Entity - Other - Attribute Name - scope - entity.other.attribute-name - settings - - foreground - #{{base09}} - - - - - name - Entity - Other - Inherited Class - scope - entity.other.inherited-class - settings - - foreground - #{{base0A}} - fontStyle - italic - - - - - - name - Punctuation - scope - punctuation - settings - - foreground - #{{base05}} - - - - - name - Punctuation - Section - scope - punctuation.section, meta.brace - settings - - foreground - #{{base05}} - - - - - - name - Invalid - scope - invalid - settings - - foreground - #{{base07}} - background - #{{base08}} - - - - - name - Invalid - Deprecated - scope - invalid.deprecated - settings - - foreground - #{{base07}} - background - #{{base0F}} - - - - - - name - Diff - Inserted - scope - markup.inserted - settings - - foreground - #{{base0B}} - - - - - name - Diff - Deleted - scope - markup.deleted - settings - - foreground - #{{base08}} - - - - - name - Diff - Changed - scope - markup.changed - settings - - foreground - #{{base0E}} - - - - - - name - Markup - Heading - scope - markup.heading, entity.name.section - settings - - foreground - #{{base0D}} - fontStyle - bold - - - - - name - Markup - Bold - scope - markup.bold - settings - - foreground - #{{base09}} - fontStyle - bold - - - - - name - Markup - Italic - scope - markup.italic - settings - - foreground - #{{base0E}} - fontStyle - italic - - - - - name - Markup - Inline Code - scope - markup.inline.raw, markup.raw.inline - settings - - foreground - #{{base0C}} - - - - - name - Markup - Link - scope - markup.underline.link, string.other.link - settings - - foreground - #{{base0D}} - fontStyle - underline - - - - - name - Markup - Quote - scope - markup.quote - settings - - foreground - #{{base0B}} - fontStyle - italic - - - - - name - Markup - List - scope - markup.list, punctuation.definition.list - settings - - foreground - #{{base08}} - - - - - - name - Meta - Function Call - scope - meta.function-call - settings - - foreground - #{{base0D}} - - - - - name - Meta - Preprocessor - scope - meta.preprocessor - settings - - foreground - #{{base09}} - - - - - uuid - a6f0d8c2-3b1e-4f5a-9c7d-2e8b0f4a6d1c - - diff --git a/modules/tools/bat/default.nix b/modules/tools/bat/default.nix deleted file mode 100644 index 1bfdb61..0000000 --- a/modules/tools/bat/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# bat - a cat clone with wings -{ - options.tools.bat = { - enable = lib.mkEnableOption "Enables bat."; - }; - - config = lib.mkIf config.tools.bat.enable { - programs.bat = { - enable = true; - config = { - theme = "base16"; - }; - themes = { - base16 = { - src = pkgs.runCommand "bat-base16-theme" { } '' - mkdir -p $out - cp ${config.scheme { template = ./base16.mustache.tmTheme; }} $out/base16.tmTheme - ''; - file = "base16.tmTheme"; - }; - }; - }; - }; -} diff --git a/modules/tools/bluetui/default.nix b/modules/tools/bluetui/default.nix deleted file mode 100644 index 4c2e8b6..0000000 --- a/modules/tools/bluetui/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Bluetui - Terminal UI for Bluetooth management -{ - options.tools.bluetui = { - enable = lib.mkEnableOption "Enables bluetui."; - }; - - config = lib.mkIf config.tools.bluetui.enable { - home.packages = with pkgs; [ - bluetui - ]; - }; -} diff --git a/modules/tools/bottom/default.nix b/modules/tools/bottom/default.nix deleted file mode 100644 index 1026768..0000000 --- a/modules/tools/bottom/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, ... }: - -# Bottom - Cross-platform graphical process/system monitor (Rust-based) -{ - options.tools.bottom = { - enable = lib.mkEnableOption "Enables bottom."; - }; - - config = lib.mkIf config.tools.bottom.enable { - programs.bottom.enable = true; - }; -} diff --git a/modules/tools/brightnessctl/default.nix b/modules/tools/brightnessctl/default.nix deleted file mode 100644 index 66c145a..0000000 --- a/modules/tools/brightnessctl/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# brightnessctl - Backlight brightness control tool -{ - options.tools.brightnessctl = { - enable = lib.mkEnableOption "Enables brightnessctl."; - }; - - config = lib.mkIf config.tools.brightnessctl.enable { - home.packages = with pkgs; [ - brightnessctl - ]; - }; -} diff --git a/modules/tools/bruno/default.nix b/modules/tools/bruno/default.nix deleted file mode 100644 index 27de7ac..0000000 --- a/modules/tools/bruno/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Bruno - Open-source API client for testing HTTP endpoints -{ - options.tools.bruno = { - enable = lib.mkEnableOption "Enables bruno."; - }; - - config = lib.mkIf config.tools.bruno.enable { - home.packages = with pkgs; [ - bruno - ]; - }; -} diff --git a/modules/tools/default.nix b/modules/tools/default.nix deleted file mode 100644 index af9976d..0000000 --- a/modules/tools/default.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ ... }: - -# Tools - Collection of tool configurations (browsers, editors, utilities, etc.) -{ - imports = [ - ./bat - ./bluetui - ./bottom - ./brightnessctl - ./bruno - ./devenv - ./fastfetch - ./feh - ./ffmpeg - ./fzf - ./git - ./htop - ./impala - ./kitty - ./lf - ./librewolf - ./lsd - ./maim - ./nixvim - ./nvtop - ./opencode - ./openssh - ./openvpn - ./ouch - ./pamixer - ./playerctl - ./qemu - ./slop - ./starship - ./systemctl-tui - ./tmux - ./tor - ./umu-launcher - ./vlc - ./vscode - ./zathura - ./zsh - ]; -} diff --git a/modules/tools/devenv/alias.sh b/modules/tools/devenv/alias.sh deleted file mode 100644 index e63dbd8..0000000 --- a/modules/tools/devenv/alias.sh +++ /dev/null @@ -1,28 +0,0 @@ -devenv() { - local has_reload=false - local is_shell=false - - for arg in "$@"; do - if [[ "$arg" == "--reload" || "$arg" == "--no-reload" ]]; then - has_reload=true - fi - if [[ "$arg" == "shell" ]]; then - is_shell=true - fi - done - - if [[ "$is_shell" == true ]]; then - if [[ "$has_reload" == true ]]; then - command devenv "$@" "$SHELL" - else - command devenv "$@" --no-reload "$SHELL" - fi - return - fi - - if [[ "$has_reload" == true ]]; then - command devenv "$@" - else - command devenv "$@" --no-reload - fi -} diff --git a/modules/tools/devenv/default.nix b/modules/tools/devenv/default.nix deleted file mode 100644 index 43be2df..0000000 --- a/modules/tools/devenv/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -# Devenv - Developer environment tooling (Nix-based dev environments) -{ - options.tools.devenv = { - enable = lib.mkEnableOption "Enables devenv."; - }; - - config = - let - shellIntegration = builtins.readFile ./alias.sh; - in - lib.mkIf config.tools.devenv.enable { - home.packages = with pkgs; [ - devenv - ]; - - programs.zsh.initContent = lib.mkIf config.programs.zsh.enable (lib.mkAfter shellIntegration); - programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter shellIntegration); - }; -} diff --git a/modules/tools/fastfetch/default.nix b/modules/tools/fastfetch/default.nix deleted file mode 100644 index ca8db6a..0000000 --- a/modules/tools/fastfetch/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, lib, ... }: - -# Fastfetch - System information tool (like neofetch but faster) -{ - options.tools.fastfetch = { - enable = lib.mkEnableOption "Enables fastfetch."; - }; - - config = lib.mkIf config.tools.fastfetch.enable { - programs.fastfetch = { - enable = true; - }; - }; -} diff --git a/modules/tools/feh/default.nix b/modules/tools/feh/default.nix deleted file mode 100644 index 70ecf1f..0000000 --- a/modules/tools/feh/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, ... }: - -# Feh - Lightweight image viewer and wallpaper setter -{ - options.tools.feh = { - enable = lib.mkEnableOption "Enables feh."; - }; - - config = lib.mkIf config.tools.feh.enable { - programs.feh.enable = true; - }; -} diff --git a/modules/tools/ffmpeg/default.nix b/modules/tools/ffmpeg/default.nix deleted file mode 100644 index 4a89838..0000000 --- a/modules/tools/ffmpeg/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -# FFmpeg - Command-line audio/video converter and streaming tool -{ - options.tools.ffmpeg = { - enable = lib.mkEnableOption "Enables ffmpeg."; - }; - - config = lib.mkIf config.tools.ffmpeg.enable { - home.packages = with pkgs; [ - ffmpeg-full - ]; - }; -} diff --git a/modules/tools/fzf/default.nix b/modules/tools/fzf/default.nix deleted file mode 100644 index e623270..0000000 --- a/modules/tools/fzf/default.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ config, lib, ... }: - -# FZF - Fuzzy finder, CLI fuzzy search tool -{ - options.tools.fzf = { - enable = lib.mkEnableOption "Enables fzf."; - }; - - config = - let - shellIntegration = '' - ${if config.tools.zsh.enable then "eval \"$(fzf --zsh)\"" else "eval \"$(fzf --bash)\""} - ''; - in - lib.mkIf config.tools.fzf.enable { - programs.fzf = { - enable = true; - - defaultOptions = [ - "--height 100%" - "--layout=reverse" - ''--pointer=\" \"'' - ''--header=\" \"'' - ''--prompt=\" \"'' - ''--marker=\"✓ \"'' - "--border=none" - "--cycle" - "--no-info" - "--margin=\"1,2\"" - ]; - - colors = with config.scheme.withHashtag; { - fg = base05; # Foreground - bg = "-1"; # Background (-1 for transparent) - hl = base0D; # Highlight - - "fg+" = base07; # Foreground for selected item - "bg+" = "-1"; # Background for selected item - "hl+" = base0D; # Highlight for selected item - - gutter = "-1"; # Remove the white margin at the left - - info = base0B; # Info text (usually count of items) - border = base03; # Border color - prompt = base0A; # Prompt text color - pointer = base0F; # Pointer color (e.g., > for selected) - marker = base0C; # Marker color (e.g., for multi-select) - spinner = base0C; # Spinner color (during search) - }; - }; - - programs.zsh.initContent = lib.mkIf config.programs.zsh.enable (lib.mkAfter shellIntegration); - programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter shellIntegration); - }; -} diff --git a/modules/tools/git/default.nix b/modules/tools/git/default.nix deleted file mode 100644 index 6a34fd4..0000000 --- a/modules/tools/git/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ lib, config, ... }: - -# Git - Distributed version control system -{ - options.tools.git = { - enable = lib.mkEnableOption "Enables git."; - username = lib.mkOption { - type = lib.types.str; - description = "Git username."; - }; - email = lib.mkOption { - type = lib.types.str; - description = "Git email."; - }; - }; - - config = lib.mkIf config.tools.git.enable { - programs.git = { - enable = true; - settings = { - user = { - name = config.tools.git.username; - email = config.tools.git.email; - }; - credential.helper = "store --file ${config.xdg.cacheHome}/git/credential"; - core.askPass = ""; - }; - }; - - # The base directory of the credential file must exist - home.activation.createGitCacheDirectory = lib.hm.dag.entryAfter [ - "writeBoundary" - ] "mkdir -p ${config.xdg.cacheHome}/git"; - }; -} diff --git a/modules/tools/htop/default.nix b/modules/tools/htop/default.nix deleted file mode 100644 index 27050d6..0000000 --- a/modules/tools/htop/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: - -# Htop - Interactive process viewer (using htop-vim version) -{ - options.tools.htop = { - enable = lib.mkEnableOption "Enables htop."; - }; - - config = lib.mkIf config.tools.htop.enable { - programs.htop = { - enable = true; - package = pkgs.htop-vim; - }; - }; -} diff --git a/modules/tools/impala/default.nix b/modules/tools/impala/default.nix deleted file mode 100644 index 933aa7b..0000000 --- a/modules/tools/impala/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Impala - Apache Impala: SQL query engine for Apache Hadoop -{ - options.tools.impala = { - enable = lib.mkEnableOption "Enables impala."; - }; - - config = lib.mkIf config.tools.impala.enable { - home.packages = with pkgs; [ - impala - ]; - }; -} diff --git a/modules/tools/kitty/default.nix b/modules/tools/kitty/default.nix deleted file mode 100644 index 691b738..0000000 --- a/modules/tools/kitty/default.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Kitty - GPU-accelerated terminal emulator -{ - options.tools.kitty = { - enable = lib.mkEnableOption "Enables kitty."; - }; - - config = lib.mkIf config.tools.kitty.enable { - programs.kitty = { - enable = true; - settings = with config.scheme.withHashtag; { - window_padding_width = 10; - font_size = config.fonts.size; - font_family = config.fonts.normal; - filter_notification = "all"; - update_check_interval = 0; - scrollback_indicator_opacity = "0.5"; - - dynamic_background_opacity = false; - enable_audio_bell = false; - - background = base00; - foreground = base05; - - color0 = base00; - color1 = base08; - color2 = base0B; - color3 = base0A; - color4 = base0D; - color5 = base0E; - color6 = base0C; - color7 = base05; - color8 = base03; - color9 = base09; - color10 = base0B; - color11 = base0A; - color12 = base0D; - color13 = base0E; - color14 = base0F; - color15 = base07; - - selection_background = base05; - selection_foreground = base00; - - allow_remote_control = "yes"; - listen_on = "unix:/tmp/kitty"; - shell = lib.mkIf config.tools.zsh.enable "${lib.getExe pkgs.zsh}"; - }; - }; - }; -} diff --git a/modules/tools/lf/default.nix b/modules/tools/lf/default.nix deleted file mode 100644 index 9ce31d4..0000000 --- a/modules/tools/lf/default.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: - -# lf - terminal file manager -{ - options.tools.lf = { - enable = lib.mkEnableOption "Enables lf."; - }; - - config = lib.mkIf config.tools.lf.enable { - home.packages = with pkgs; [ - ctpv - ]; - - programs.lf = { - enable = true; - settings = { - number = true; - icons = true; - drawbox = true; - hidden = true; - preview = true; - - shell = if config.tools.zsh.enable then lib.getExe pkgs.zsh else "bash"; - shellopts = "'-eu'"; - ifs = "\n"; - scrolloff = "4"; - period = "1"; - incsearch = true; - smartcase = true; - info = "size"; - sortby = "natural"; - dirfirst = true; - - cleaner = lib.getExe config.scripts.file-preview-clean.package; - }; - - previewer = { - source = lib.getExe config.scripts.file-preview.package; - }; - - extraConfig = '' - ${builtins.readFile ./lfrc} - ''; - }; - - home.file.".config/lf/icons".source = ./icons; - }; -} diff --git a/modules/tools/lf/icons b/modules/tools/lf/icons deleted file mode 100644 index 8697cf2..0000000 --- a/modules/tools/lf/icons +++ /dev/null @@ -1,342 +0,0 @@ -# vim:ft=conf - -# file types (with matching order) -ln  # LINK -or  # ORPHAN -tw t # STICKY_OTHER_WRITABLE -ow  # OTHER_WRITABLE -st t # STICKY -di  # DIR -pi p # FIFO -so s # SOCK -bd b # BLK -cd c # CHR -su u # SETUID -sg g # SETGID -ex  # EXEC -fi  # FILE - -# file extensions (vim-devicons) -*.styl  -*.sass  -*.scss  -*.htm  -*.html  -*.slim  -*.haml  -*.ejs  -*.css  -*.less  -*.md  -*.mdx  -*.markdown  -*.rmd  -*.json  -*.webmanifest  -*.js  -*.mjs  -*.jsx  -*.rb  -*.gemspec  -*.rake  -*.php  -*.py  -*.pyc  -*.pyo  -*.pyd  -*.coffee  -*.mustache  -*.hbs  -*.conf  -*.ini  -*.yml  -*.yaml  -*.toml  -*.bat  -*.mk  -*.jpg  -*.jpeg  -*.bmp  -*.png  -*.webp  -*.gif  -*.ico  -*.twig  -*.cpp  -*.c++  -*.cxx  -*.cc  -*.cp  -*.c  -*.cs 󰌛 -*.h  -*.hh  -*.hpp  -*.hxx  -*.hs  -*.lhs  -*.nix  -*.lua  -*.java  -*.sh  -*.fish  -*.bash  -*.zsh  -*.ksh  -*.csh  -*.awk  -*.ps1  -*.ml λ -*.mli λ -*.diff  -*.db  -*.sql  -*.dump  -*.clj  -*.cljc  -*.cljs  -*.edn  -*.scala  -*.go  -*.dart  -*.xul  -*.sln  -*.suo  -*.pl  -*.pm  -*.t  -*.rss  -'*.f#'  -*.fsscript  -*.fsx  -*.fs  -*.fsi  -*.rs  -*.rlib  -*.d  -*.erl  -*.hrl  -*.ex  -*.exs  -*.eex  -*.leex  -*.heex  -*.vim  -*.ai  -*.psd  -*.psb  -*.ts  -*.tsx  -*.jl  -*.pp  -*.vue  -*.elm  -*.swift  -*.xcplayground  -*.tex 󰙩 -*.r 󰟔 -*.rproj 󰗆 -*.sol 󰡪 -*.pem  - -# file names (vim-devicons) (case-insensitive not supported in lf) -*gruntfile.coffee  -*gruntfile.js  -*gruntfile.ls  -*gulpfile.coffee  -*gulpfile.js  -*gulpfile.ls  -*mix.lock  -*dropbox  -*.ds_store  -*.gitconfig  -*.gitignore  -*.gitattributes  -*.gitlab-ci.yml  -*.bashrc  -*.zshrc  -*.zshenv  -*.zprofile  -*.vimrc  -*.gvimrc  -*_vimrc  -*_gvimrc  -*.bashprofile  -*favicon.ico  -*license  -*node_modules  -*react.jsx  -*procfile  -*dockerfile  -*docker-compose.yml  -*docker-compose.yaml  -*compose.yml  -*compose.yaml  -*rakefile  -*config.ru  -*gemfile  -*makefile  -*cmakelists.txt  -*robots.txt 󰚩 - -# file names (case-sensitive adaptations) -*Gruntfile.coffee  -*Gruntfile.js  -*Gruntfile.ls  -*Gulpfile.coffee  -*Gulpfile.js  -*Gulpfile.ls  -*Dropbox  -*.DS_Store  -*LICENSE  -*React.jsx  -*Procfile  -*Dockerfile  -*Docker-compose.yml  -*Docker-compose.yaml  -*Rakefile  -*Gemfile  -*Makefile  -*CMakeLists.txt  - -# file patterns (vim-devicons) (patterns not supported in lf) -# .*jquery.*\.js$  -# .*angular.*\.js$  -# .*backbone.*\.js$  -# .*require.*\.js$  -# .*materialize.*\.js$  -# .*materialize.*\.css$  -# .*mootools.*\.js$  -# .*vimrc.*  -# Vagrantfile$  - -# file patterns (file name adaptations) -*jquery.min.js  -*angular.min.js  -*backbone.min.js  -*require.min.js  -*materialize.min.js  -*materialize.min.css  -*mootools.min.js  -*vimrc  -Vagrantfile  - -# archives or compressed (extensions from dircolors defaults) -*.tar  -*.tgz  -*.arc  -*.arj  -*.taz  -*.lha  -*.lz4  -*.lzh  -*.lzma  -*.tlz  -*.txz  -*.tzo  -*.t7z  -*.zip  -*.z  -*.dz  -*.gz  -*.lrz  -*.lz  -*.lzo  -*.xz  -*.zst  -*.tzst  -*.bz2  -*.bz  -*.tbz  -*.tbz2  -*.tz  -*.deb  -*.rpm  -*.jar  -*.war  -*.ear  -*.sar  -*.rar  -*.alz  -*.ace  -*.zoo  -*.cpio  -*.7z  -*.rz  -*.cab  -*.wim  -*.swm  -*.dwm  -*.esd  - -# image formats (extensions from dircolors defaults) -*.jpg  -*.jpeg  -*.mjpg  -*.mjpeg  -*.gif  -*.bmp  -*.pbm  -*.pgm  -*.ppm  -*.tga  -*.xbm  -*.xpm  -*.tif  -*.tiff  -*.png  -*.svg  -*.svgz  -*.mng  -*.pcx  -*.mov  -*.mpg  -*.mpeg  -*.m2v  -*.mkv  -*.webm  -*.ogm  -*.mp4  -*.m4v  -*.mp4v  -*.vob  -*.qt  -*.nuv  -*.wmv  -*.asf  -*.rm  -*.rmvb  -*.flc  -*.avi  -*.fli  -*.flv  -*.gl  -*.dl  -*.xcf  -*.xwd  -*.yuv  -*.cgm  -*.emf  -*.ogv  -*.ogx  - -# audio formats (extensions from dircolors defaults) -*.aac  -*.au  -*.flac  -*.m4a  -*.mid  -*.midi  -*.mka  -*.mp3  -*.mpc  -*.ogg  -*.ra  -*.wav  -*.oga  -*.opus  -*.spx  -*.xspf  - -# other formats -*.pdf  diff --git a/modules/tools/lf/lfrc b/modules/tools/lf/lfrc deleted file mode 100644 index 11a9959..0000000 --- a/modules/tools/lf/lfrc +++ /dev/null @@ -1,279 +0,0 @@ -# ─── lf config — nvim-tree style keybindings ─────────────────────────────── - -# ─── Colors (optional — remove if you use a color scheme plugin) ────────────── -# set color256 true - -# ─── Custom commands ────────────────────────────────────────────────────────── - -# Create a new file (like nvim-tree 'a' with no trailing /) -cmd touch %{{ - printf "New file name: " - read -r name - touch "$name" - lf -remote "send $id select '$name'" -}} - -# Create a new directory (like nvim-tree 'a' with trailing /) -cmd mkdir %{{ - printf "New directory name: " - read -r name - mkdir -p "$name" - lf -remote "send $id select '$name'" -}} - -# Rename — full name (like nvim-tree 'r') -cmd rename ${{ - printf "Rename '%s' to: " "$f" - read -r newname - mv -- "$f" "$(dirname "$f")/$newname" - lf -remote "send $id select '$newname'" -}} - -# Rename — only basename without extension (like nvim-tree 'e' in some configs) -cmd rename_stem ${{ - stem="${f##*/}" - stem="${stem%.*}" - printf "Rename stem to: " - read -r newname - ext="${f##*.}" - if [ "${f##*/}" = "$stem" ]; then - mv -- "$f" "$(dirname "$f")/$newname" - else - mv -- "$f" "$(dirname "$f")/$newname.$ext" - fi -}} - -# Delete — trash (safe) using trash-cli if available, else rm -cmd trash %{{ - set -f - files=$(printf '%s\n' $fx | wc -l) - printf "Trash $files item(s)? [y/N] " - read -r ans - [ "$ans" = "y" ] || [ "$ans" = "Y" ] || exit 0 - if command -v trash-put >/dev/null 2>&1; then - printf '%s\n' $fx | xargs trash-put -- - else - printf '%s\n' $fx | xargs rm -rf -- - fi -}} - -# Delete — permanent, no confirmation prompt (use carefully) -cmd delete ${{ - set -f - printf "Permanently delete? [y/N] " - read -r ans - [ "$ans" = "y" ] || [ "$ans" = "Y" ] || exit 0 - rm -rf -- $fx -}} - -# Paste (move or copy depending on operation) -cmd paste &{{ - set -f - load=$(lf -remote 'load') - mode=$(echo "$load" | sed -n '1p') - list=$(echo "$load" | sed -n '2,$p') - if [ "$mode" = "copy" ]; then - cp -rn -- $list . - elif [ "$mode" = "move" ]; then - mv -n -- $list . - lf -remote 'send clear' - fi - lf -remote 'send reload' - lf -remote 'send clear' -}} - -# Paste with overwrite -cmd paste_overwrite &{{ - set -f - load=$(lf -remote 'load') - mode=$(echo "$load" | sed -n '1p') - list=$(echo "$load" | sed -n '2,$p') - if [ "$mode" = "copy" ]; then - cp -r -- $list . - elif [ "$mode" = "move" ]; then - mv -- $list . - lf -remote 'send clear' - fi - lf -remote 'send reload' - lf -remote 'send clear' -}} - -# Open in nvim -cmd edit $nvim "$f" - -# Open with xdg-open (GUI apps) -cmd open_gui &xdg-open "$f" - -# Toggle hidden files (like nvim-tree 'H') -cmd toggle_hidden :{{ - set hidden! - set info -}} - -# Bulk rename with $EDITOR (like vimv / nvim-tree mass rename) -cmd bulk_rename ${{ - index=$(mktemp /tmp/lf-bulk-index.XXXXXX) - names=$(mktemp /tmp/lf-bulk-names.XXXXXX) - printf '%s\n' $fx > "$index" - sed 's|.*/||' "$index" > "$names" - $EDITOR "$names" - paste "$index" "$names" | while IFS=$'\t' read -r old new; do - if [ "$old" != "$(dirname "$old")/$new" ]; then - mv -- "$old" "$(dirname "$old")/$new" - fi - done - rm -- "$index" "$names" - lf -remote 'send reload' -}} - -# Create symlink (relative) -cmd symlink %{{ - printf "Symlink target name: " - read -r name - ln -s "$f" "$name" -}} - -# Copy path to clipboard (needs xclip / xsel / wl-copy) -cmd copy_path &{{ - printf '%s' "$f" | xclip -selection clipboard 2>/dev/null \ - || printf '%s' "$f" | xsel --clipboard --input 2>/dev/null \ - || printf '%s' "$f" | wl-copy 2>/dev/null -}} - -# Show file info (like nvim-tree 'i') -cmd info %{{ - stat -- "$f" - printf '\nPress ENTER...' - read -r _ -}} - -# Jump to bookmarks (requires fzf) -cmd bookmark_jump ${{ - bm="$HOME/.config/lf/bookmarks" - [ -f "$bm" ] || touch "$bm" - dest=$(cat "$bm" | fzf --prompt "Jump to: ") - [ -n "$dest" ] && lf -remote "send $id cd '$dest'" -}} - -# Add bookmark -cmd bookmark_add %{{ - bm="$HOME/.config/lf/bookmarks" - printf '%s\n' "$PWD" >> "$bm" - sort -u "$bm" -o "$bm" - echo "Bookmarked: $PWD" -}} - -# fzf-based fuzzy find & cd/select -cmd fzf_cd ${{ - dest=$(find . -type d 2>/dev/null | fzf --prompt "cd: ") - [ -n "$dest" ] && lf -remote "send $id cd '$dest'" -}} - -cmd fzf_file ${{ - file=$(find . -type f 2>/dev/null | fzf --prompt "open: ") - [ -n "$dest" ] && lf -remote "send $id select '$file'" -}} - -# ─── Keybindings — clear defaults and remap ─────────────────────────────────── - -# Unmap keys we'll remap -map d -map y -map p -map c -map r -map a -map e -map f -map g -map G -map i -map o -map H -map m - -# ── Navigation ──────────────────────────────────────────────────────────────── -map h updir # go up one dir -map l open # open file/dir (maps to $EDITOR for files) -map j down -map k up -map J half-down -map K half-up -map gg top -map G bottom -map gd cd ~/Downloads -map gh cd ~ -map gc cd ~/.config -map gp cd ~/projects - -# Page navigation (nvim-style) -map half-down -map half-up -map page-down -map page-up - -# ── Opening / editing ───────────────────────────────────────────────────────── -map open # open with default -map o open_gui # open with GUI app -map e edit # open in nvim explicitly - -# ── File / dir creation ─────────────────────────────────────────────────────── -map af touch # a → file (like nvim-tree 'a' without /) -map ad mkdir # a → dir (like nvim-tree 'a' with /) - -# ── Rename ──────────────────────────────────────────────────────────────────── -map r rename # full rename (like nvim-tree 'r') -map R bulk_rename # bulk rename in $EDITOR -map cw rename # alias: cw like vim's 'change word' -map I rename # alias: go to start (lf positions cursor) -map A rename # alias: go to end - -# ── Delete ──────────────────────────────────────────────────────────────────── -map dd trash # move to trash (safe delete — like nvim-tree 'd') -map dD delete # permanent delete (no trash) - -# ── Yank / Copy / Cut / Paste ───────────────────────────────────────────────── -map yy copy # yank/copy selection (like nvim-tree 'c') -map yn copy_path # yank path to clipboard -map dd cut # cut selection (like nvim-tree 'x') — overrides trash above; - # uncomment the trash line below if you prefer separate keys -# map dt trash # use 'dt' for trash if 'dd' is used for cut -map pp paste # paste (like nvim-tree 'p') -map po paste_overwrite # paste with overwrite -map P paste # alias - -# ── Marking / selection ─────────────────────────────────────────────────────── -map toggle # toggle mark on current item (like nvim-tree space) -map v invert # invert selection -map V invert # alias -map u unselect # clear all marks -map * glob-select '*' # select all via glob - -# ── Search ──────────────────────────────────────────────────────────────────── -map / search # incremental search forward -map n search-next -map N search-prev -map f fzf_file # fuzzy find file (requires fzf) -map F fzf_cd # fuzzy cd into dir (requires fzf) - -# ── View toggles ────────────────────────────────────────────────────────────── -map H toggle_hidden # toggle hidden files (like nvim-tree 'H') -map zi set icons! -map zr set reverse! -map zh set hidden! -map zn set sortby natural -map zs set sortby size -map zm set sortby modified -map ze set sortby ext - -# ── Info / misc ─────────────────────────────────────────────────────────────── -map i info # show stat info (like nvim-tree 'i') -map reload # reload directory -map clear # clear selection -map q quit -map Q quit -map m bookmark_add # add bookmark -map ' bookmark_jump # jump to bookmark (requires fzf) - -# Symlink -map S symlink diff --git a/modules/tools/librewolf/default.nix b/modules/tools/librewolf/default.nix deleted file mode 100644 index 0e5133d..0000000 --- a/modules/tools/librewolf/default.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Librewolf - A privacy-focused fork of Mozilla Firefox -{ - options.tools.librewolf = { - enable = lib.mkEnableOption "Enables librewolf."; - }; - - config = lib.mkIf config.tools.librewolf.enable { - programs.librewolf = { - enable = true; - package = pkgs.librewolf; - profiles."arpit" = { - isDefault = true; - settings = { - "extensions.autoDisableScopes" = 0; - # Use default dark theme until Black gets installed - "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; - "sidebar.verticalTabs" = true; - "sidebar.visibility" = "always-show"; - "sidebar.verticalTabs.dragToPinPromo.dismissed" = true; - "layout.css.devPixelsPerPx" = 1.1; - # Dark - "layout.css.prefers-color-scheme.content-override" = 0; - "browser.toolbars.bookmarks.visibility" = "newtab"; - "browser.startup.page" = 2; - "sidebar.expandOnHover" = false; - "sidebar.animation.enabled" = false; - "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; - "privacy.resistFingerprinting" = false; - "privacy.fingerprintingProtection" = true; - "dom.webnotifications.enabled" = false; - }; - }; - policies = { - ExtensionSettings = { - "uBlock0@raymondhill.net" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; - installation_mode = "force_installed"; - private_browsing = true; - }; - "{9b84b6b4-07c4-4b4b-ba21-394d86f6e9ee}" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/black21/latest.xpi"; - installation_mode = "force_installed"; - }; - "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { - default_area = "menupanel"; - install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; - installation_mode = "force_installed"; - }; - "addon@darkreader.org" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi"; - installation_mode = "force_installed"; - }; - }; - }; - }; - }; -} diff --git a/modules/tools/lsd/default.nix b/modules/tools/lsd/default.nix deleted file mode 100644 index 6e04651..0000000 --- a/modules/tools/lsd/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ config, lib, ... }: - -# LSD - Ls alternative with icons and colors (Rust-based) -{ - options.tools.lsd = { - enable = lib.mkEnableOption "Enables lsd."; - }; - - config = lib.mkIf config.tools.lsd.enable { - programs.lsd = { - enable = true; - settings.icons.separator = " "; - }; - }; -} diff --git a/modules/tools/maim/default.nix b/modules/tools/maim/default.nix deleted file mode 100644 index a3525e3..0000000 --- a/modules/tools/maim/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Maim - Screenshot utility (slop-based region selection) -{ - options.tools.maim = { - enable = lib.mkEnableOption "Enables maim."; - }; - - config = lib.mkIf config.tools.maim.enable { - home.packages = with pkgs; [ - maim - ]; - }; -} diff --git a/modules/tools/nixvim/colorscheme.nix b/modules/tools/nixvim/colorscheme.nix deleted file mode 100644 index 00ee040..0000000 --- a/modules/tools/nixvim/colorscheme.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ config, lib, ... }: - -# Colorscheme - Base16 theme configuration for nixvim -{ - config = lib.mkIf config.tools.nixvim.enable { - programs.nixvim.colorschemes.base16 = { - enable = true; - colorscheme = with config.scheme.withHashtag; { - base00 = base00; - base01 = base01; - base02 = base02; - base03 = base03; - base04 = base04; - base05 = base05; - base06 = base06; - base07 = base07; - base08 = base08; - base09 = base09; - base0A = base0A; - base0B = base0B; - base0C = base0C; - base0D = base0D; - base0E = base0E; - base0F = base0F; - }; - }; - }; -} diff --git a/modules/tools/nixvim/default.nix b/modules/tools/nixvim/default.nix deleted file mode 100644 index be17856..0000000 --- a/modules/tools/nixvim/default.nix +++ /dev/null @@ -1,84 +0,0 @@ -{ config, lib, ... }: - -# Nixvim - Neovim configured through Nix (home-manager integration) -{ - imports = [ - ./colorscheme.nix - ./keymaps.nix - ./plugins - ]; - - options.tools.nixvim = { - enable = lib.mkEnableOption "Enables nixvim."; - }; - - config = lib.mkIf config.tools.nixvim.enable { - programs.nixvim = { - enable = true; - defaultEditor = true; - opts = { - number = true; - relativenumber = true; - shiftwidth = 2; - tabstop = 2; - softtabstop = 2; - expandtab = true; - list = true; - laststatus = 3; - foldlevel = 99; - clipboard = "unnamedplus"; - }; - clipboard.providers.xclip.enable = true; - extraConfigLuaPre = with config.scheme.withHashtag; '' - vim.opt.fillchars:append({ eob = " " }) - vim.opt.listchars = { tab = " ", trail = "_", lead = " " } - vim.api.nvim_set_hl(0, "WinSeparator", { - fg = "${base01}", - bg = "${base00}", - }) - vim.api.nvim_set_hl(0, 'NotifyERRORBorder', { fg = '${base08}' }) - vim.api.nvim_set_hl(0, 'NotifyWARNBorder', { fg = '${base09}' }) - vim.api.nvim_set_hl(0, 'NotifyINFOBorder', { fg = '${base0B}' }) - vim.api.nvim_set_hl(0, 'NotifyDEBUGBorder', { fg = '${base03}' }) - vim.api.nvim_set_hl(0, 'NotifyTRACEBorder', { fg = '${base0E}' }) - - vim.api.nvim_set_hl(0, 'NotifyERRORIcon', { fg = '${base08}' }) - vim.api.nvim_set_hl(0, 'NotifyWARNIcon', { fg = '${base09}' }) - vim.api.nvim_set_hl(0, 'NotifyINFOIcon', { fg = '${base0B}' }) - vim.api.nvim_set_hl(0, 'NotifyDEBUGIcon', { fg = '${base03}' }) - vim.api.nvim_set_hl(0, 'NotifyTRACEIcon', { fg = '${base0E}' }) - - vim.api.nvim_set_hl(0, 'NotifyERRORTitle', { fg = '${base08}' }) - vim.api.nvim_set_hl(0, 'NotifyWARNTitle', { fg = '${base09}' }) - vim.api.nvim_set_hl(0, 'NotifyINFOTitle', { fg = '${base0B}' }) - vim.api.nvim_set_hl(0, 'NotifyDEBUGTitle', { fg = '${base03}' }) - vim.api.nvim_set_hl(0, 'NotifyTRACETitle', { fg = '${base0E}' }) - - vim.api.nvim_set_hl(0, 'NotifyERRORBody', { link = 'Normal' }) - vim.api.nvim_set_hl(0, 'NotifyWARNBody', { link = 'Normal' }) - vim.api.nvim_set_hl(0, 'NotifyINFOBody', { link = 'Normal' }) - vim.api.nvim_set_hl(0, 'NotifyDEBUGBody', { link = 'Normal' }) - vim.api.nvim_set_hl(0, 'NotifyTRACEBody', { link = 'Normal' }) - - vim.api.nvim_create_autocmd({ "FileType" }, { - pattern = { "yaml", "yml" }, - callback = function() - vim.opt_local.expandtab = true - vim.opt_local.shiftwidth = 2 - vim.opt_local.softtabstop = 2 - vim.opt_local.tabstop = 2 - end, - }) - ''; - performance = { - byteCompileLua.enable = true; - combinePlugins.enable = true; - }; - }; - - home.sessionVariables = { - EDITOR = lib.mkForce (lib.getExe config.programs.nixvim.package); - MANPAGER = "${lib.getExe config.programs.nixvim.package} +Man!"; - }; - }; -} diff --git a/modules/tools/nixvim/keymaps.nix b/modules/tools/nixvim/keymaps.nix deleted file mode 100644 index c16331b..0000000 --- a/modules/tools/nixvim/keymaps.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ config, lib, ... }: - -# Keymaps - Keyboard shortcut configuration for nixvim -{ - config = lib.mkIf config.tools.nixvim.enable { - programs.nixvim.keymaps = [ - { - key = ""; - action = "h"; - options.desc = "Move to left window"; - } - { - key = ""; - action = "j"; - options.desc = "Move to bottom window"; - } - { - key = ""; - action = "k"; - options.desc = "Move to top window"; - } - { - key = ""; - action = "l"; - options.desc = "Move to right window"; - } - { - key = ""; - action = "NvimTreeToggle"; - mode = [ - "n" - "i" - ]; - options.desc = "Toggle file explorer"; - } - { - key = ""; - action = "NotificationsClear"; - options.desc = "Clear notifications"; - } - ]; - }; -} diff --git a/modules/tools/nixvim/plugins/cmp.nix b/modules/tools/nixvim/plugins/cmp.nix deleted file mode 100644 index d849ad6..0000000 --- a/modules/tools/nixvim/plugins/cmp.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ config, lib, ... }: - -# Cmp - Completion plugin (nvim-cmp) for auto-completion -{ - config.programs.nixvim.plugins.cmp = lib.mkIf config.tools.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/tools/nixvim/plugins/comment.nix b/modules/tools/nixvim/plugins/comment.nix deleted file mode 100644 index 905068f..0000000 --- a/modules/tools/nixvim/plugins/comment.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, ... }: - -# Comment - Comment toggling plugin (comment.nvim) -{ - config.programs.nixvim.plugins.comment = lib.mkIf config.tools.nixvim.enable { - enable = true; - settings = { - toggler = { - line = "gcc"; # toggle line comment - block = "gbc"; # toggle block comment - }; - opleader = { - line = "gc"; # line comment operator (gc + motion) - block = "gb"; # block comment operator (gb + motion) - }; - extra = { - above = "gcO"; # add comment line above - below = "gco"; # add comment line below - eol = "gcA"; # add comment at end of line - }; - }; - }; -} diff --git a/modules/tools/nixvim/plugins/default.nix b/modules/tools/nixvim/plugins/default.nix deleted file mode 100644 index a263c51..0000000 --- a/modules/tools/nixvim/plugins/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ ... }: - -# Plugins - Collection of nixvim plugin configurations -{ - imports = [ - ./cmp.nix - ./comment.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 - ]; -} diff --git a/modules/tools/nixvim/plugins/gitsigns.nix b/modules/tools/nixvim/plugins/gitsigns.nix deleted file mode 100644 index 4770dba..0000000 --- a/modules/tools/nixvim/plugins/gitsigns.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, lib, ... }: - -# Gitsigns - Git status in the sign column (gitsigns.nvim) -{ - config.programs.nixvim.plugins.gitsigns = lib.mkIf config.tools.nixvim.enable { - enable = true; - }; -} diff --git a/modules/tools/nixvim/plugins/indent-blankline.nix b/modules/tools/nixvim/plugins/indent-blankline.nix deleted file mode 100644 index eee2e1f..0000000 --- a/modules/tools/nixvim/plugins/indent-blankline.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, lib, ... }: - -# Indent-blankline - Visual indentation guides (indent-blankline.nvim) -{ - config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.tools.nixvim.enable { - enable = true; - settings = { - indent = { - char = "┊"; - tab_char = "│"; - }; - }; - }; -} diff --git a/modules/tools/nixvim/plugins/lsp.nix b/modules/tools/nixvim/plugins/lsp.nix deleted file mode 100644 index fa7dbe2..0000000 --- a/modules/tools/nixvim/plugins/lsp.nix +++ /dev/null @@ -1,91 +0,0 @@ -{ config, lib, ... }: - -# LSP - Language Server Protocol configuration (nvim-lspconfig) -{ - config.programs.nixvim = lib.mkIf config.tools.nixvim.enable { - plugins.lsp = { - enable = true; - inlayHints = true; - autoLoad = true; - keymaps.lspBuf = { - K = "hover"; - gD = "references"; - gd = "definition"; - gi = "implementation"; - gt = "type_definition"; - }; - servers = { - nil_ls = { - enable = true; - }; - lua_ls = { - enable = true; - package = null; - }; - nixd = { - enable = true; - package = null; - }; - pyright = { - enable = true; - package = null; - }; - ts_ls = { - enable = true; - package = null; - }; - clangd = { - enable = true; - package = null; - }; - jsonls = { - enable = true; - package = null; - }; - yamlls = { - enable = true; - package = null; - }; - bash-language-server = { - enable = true; - package = null; - }; - gopls = { - enable = true; - package = null; - }; - }; - }; - - diagnostic = { - settings = { - virtual_text = false; - signs = true; - underline = true; - update_in_insert = false; - float = { - border = "rounded"; - source = true; # Show which LSP the diagnostic is from - header = ""; - prefix = ""; - }; - }; - }; - - # Show diagnostics float on cursor hold - autoCmd = [ - { - event = [ "CursorHold" ]; - pattern = "*"; - callback.__raw = '' - function() - vim.diagnostic.open_float(nil, { focus = false }) - end - ''; - } - ]; - - # How long before CursorHold fires (in ms) - opts.updatetime = 500; - }; -} diff --git a/modules/tools/nixvim/plugins/lualine.nix b/modules/tools/nixvim/plugins/lualine.nix deleted file mode 100644 index c1d6fe1..0000000 --- a/modules/tools/nixvim/plugins/lualine.nix +++ /dev/null @@ -1,90 +0,0 @@ -{ config, lib, ... }: - -# Lualine - Statusline configuration (lualine.nvim) -{ - config.programs.nixvim.plugins.lualine = lib.mkIf config.tools.nixvim.enable { - enable = true; - settings = { - options = { - theme = with config.scheme.withHashtag; { - 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/tools/nixvim/plugins/luasnip.nix b/modules/tools/nixvim/plugins/luasnip.nix deleted file mode 100644 index e1890ea..0000000 --- a/modules/tools/nixvim/plugins/luasnip.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, lib, ... }: - -# Luasnip - Snippet engine for Neovim (Lua-based) -{ - config.programs.nixvim.plugins.luasnip = lib.mkIf config.tools.nixvim.enable { - enable = true; - }; -} diff --git a/modules/tools/nixvim/plugins/noice.nix b/modules/tools/nixvim/plugins/noice.nix deleted file mode 100644 index 1c04544..0000000 --- a/modules/tools/nixvim/plugins/noice.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ config, lib, ... }: - -# Noice - Modern UI for Neovim (cmdline, popupmenu, messages) -{ - config.programs.nixvim.plugins.noice = lib.mkIf config.tools.nixvim.enable { - enable = true; - cmdline = { - enabled = true; - view = "cmdline_popup"; - }; - popupmenu = { - enabled = true; - backend = "cmp"; - }; - presets = { - command_palette = true; - }; - }; -} diff --git a/modules/tools/nixvim/plugins/nvim-tree.nix b/modules/tools/nixvim/plugins/nvim-tree.nix deleted file mode 100644 index 7f6bf70..0000000 --- a/modules/tools/nixvim/plugins/nvim-tree.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ config, lib, ... }: - -# Nvim-tree - File explorer sidebar (nvim-tree.lua) -{ - config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.tools.nixvim.enable { - 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; - }; - }; - }; - }; - }; -} diff --git a/modules/tools/nixvim/plugins/telescope.nix b/modules/tools/nixvim/plugins/telescope.nix deleted file mode 100644 index f9fb202..0000000 --- a/modules/tools/nixvim/plugins/telescope.nix +++ /dev/null @@ -1,85 +0,0 @@ -{ config, lib, ... }: - -# Telescope - Fuzzy finder -{ - config.programs.nixvim.plugins.telescope = lib.mkIf config.tools.nixvim.enable { - enable = true; - extensions = { - fzf-native.enable = true; # faster fuzzy sorting - ui-select.enable = true; # use telescope for vim.ui.select (code actions etc.) - }; - 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"; - }; - - # Git - "gc" = { - action = "git_commits"; - options.desc = "Git commits"; - }; - "gb" = { - action = "git_branches"; - options.desc = "Git branches"; - }; - - # 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/tools/nixvim/plugins/treesitter.nix b/modules/tools/nixvim/plugins/treesitter.nix deleted file mode 100644 index 9421851..0000000 --- a/modules/tools/nixvim/plugins/treesitter.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ config, lib, ... }: - -# Treesitter - Syntax highlighting and parsing (nvim-treesitter) -{ - config.programs.nixvim.plugins.treesitter = lib.mkIf config.tools.nixvim.enable { - enable = true; - folding = { - enable = true; - }; - settings = { - highlight = { - enable = true; - }; - indent = { - enable = true; - }; - }; - }; -} diff --git a/modules/tools/nixvim/plugins/web-devicons.nix b/modules/tools/nixvim/plugins/web-devicons.nix deleted file mode 100644 index d180fc5..0000000 --- a/modules/tools/nixvim/plugins/web-devicons.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, lib, ... }: - -# Web-devicons - File icons for various file types (nvim-web-devicons) -{ - config.programs.nixvim.plugins.web-devicons = lib.mkIf config.tools.nixvim.enable { - enable = true; - }; -} diff --git a/modules/tools/nixvim/plugins/which-key.nix b/modules/tools/nixvim/plugins/which-key.nix deleted file mode 100644 index c157666..0000000 --- a/modules/tools/nixvim/plugins/which-key.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ config, lib, ... }: - -# Which-key - Popup for keybindings (which-key.nvim) -{ - config.programs.nixvim.plugins.which-key = lib.mkIf config.tools.nixvim.enable { - enable = true; - settings = { - plugins = { - marks = true; - registers = true; - spelling = { - enabled = true; - suggestions = 20; - }; - }; - win = { - border = "single"; - }; - }; - }; -} diff --git a/modules/tools/nvtop/default.nix b/modules/tools/nvtop/default.nix deleted file mode 100644 index a7b4917..0000000 --- a/modules/tools/nvtop/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -# Nvtop - GPU process monitor (NVIDIA/AMD/Intel GPUs) -{ - options.tools.nvtop = { - enable = lib.mkEnableOption "Enables nvtop."; - }; - - config = lib.mkIf config.tools.nvtop.enable { - home.packages = with pkgs; [ - nvtopPackages.full - ]; - }; -} diff --git a/modules/tools/opencode/default.nix b/modules/tools/opencode/default.nix deleted file mode 100644 index 127c2fb..0000000 --- a/modules/tools/opencode/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - ... -}: - -# Opencode - AI-powered coding assistant (opencode.ai) -{ - options.tools.opencode = { - enable = lib.mkEnableOption "Enables opencode."; - }; - - config = lib.mkIf config.tools.opencode.enable { - programs.opencode = { - enable = true; - }; - }; -} diff --git a/modules/tools/openssh/default.nix b/modules/tools/openssh/default.nix deleted file mode 100644 index 974dd3a..0000000 --- a/modules/tools/openssh/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# OpenSSH - Secure shell (SSH) client for encrypted remote connections -{ - options.tools.openssh = { - enable = lib.mkEnableOption "Enables OpenSSH client."; - }; - - config = lib.mkIf config.tools.openssh.enable { - programs.ssh = { - enable = true; - package = pkgs.openssh; - enableDefaultConfig = false; - extraOptionOverrides = { - AddKeysToAgent = "yes"; - ForwardAgent = "yes"; - ServerAliveInterval = "60"; - ServerAliveCountMax = "3"; - VisualHostKey = "yes"; - HashKnownHosts = "yes"; - }; - matchBlocks = { - "github.com" = { - hostname = "github.com"; - user = "git"; - identityFile = "${config.home.homeDirectory}/.ssh/github"; - }; - }; - }; - }; -} diff --git a/modules/tools/openvpn/default.nix b/modules/tools/openvpn/default.nix deleted file mode 100644 index 9e1bc58..0000000 --- a/modules/tools/openvpn/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# OpenVPN - Open-source VPN client for secure remote access -{ - options.tools.openvpn = { - enable = lib.mkEnableOption "Enables openvpn."; - }; - - config = lib.mkIf config.tools.openvpn.enable { - home.packages = with pkgs; [ - openvpn - ]; - }; -} diff --git a/modules/tools/ouch/default.nix b/modules/tools/ouch/default.nix deleted file mode 100644 index 65ee37c..0000000 --- a/modules/tools/ouch/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: - -# Ouch! - CLI tool for compressing and decompressing various formats. -{ - options.tools.ouch = { - enable = lib.mkEnableOption "Enables ouch."; - }; - - config = lib.mkIf config.tools.ouch.enable { - home.packages = with pkgs; [ - ouch - ]; - }; -} diff --git a/modules/tools/pamixer/default.nix b/modules/tools/pamixer/default.nix deleted file mode 100644 index 3d4b64f..0000000 --- a/modules/tools/pamixer/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Pamixer - PulseAudio command-line mixer (volume control) -{ - options.tools.pamixer = { - enable = lib.mkEnableOption "Enables pamixer."; - }; - - config = lib.mkIf config.tools.pamixer.enable { - home.packages = with pkgs; [ - pamixer - ]; - }; -} diff --git a/modules/tools/playerctl/default.nix b/modules/tools/playerctl/default.nix deleted file mode 100644 index d4fa232..0000000 --- a/modules/tools/playerctl/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Playerctl - CLI for controlling media players (Spotify, MPRIS, etc.) -{ - options.tools.playerctl = { - enable = lib.mkEnableOption "Enables playerctl."; - }; - - config = lib.mkIf config.tools.playerctl.enable { - home.packages = with pkgs; [ - playerctl - ]; - }; -} diff --git a/modules/tools/qemu/default.nix b/modules/tools/qemu/default.nix deleted file mode 100644 index 7920955..0000000 --- a/modules/tools/qemu/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# QEMU - generic and open source machine & userspace emulator and virtualizer. -{ - options.tools.qemu = { - enable = lib.mkEnableOption "Enables qemu."; - }; - - config = lib.mkIf config.tools.qemu.enable { - home.packages = with pkgs; [ - qemu - libvirt - virtiofsd - - virt-manager - ]; - }; -} diff --git a/modules/tools/slop/default.nix b/modules/tools/slop/default.nix deleted file mode 100644 index b3b55bd..0000000 --- a/modules/tools/slop/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# Slop - Region selector for screenshots (used by maim/flameshot) -{ - options.tools.slop = { - enable = lib.mkEnableOption "Enables slop."; - }; - - config = lib.mkIf config.tools.slop.enable { - home.packages = with pkgs; [ - slop - ]; - }; -} diff --git a/modules/tools/starship/default.nix b/modules/tools/starship/default.nix deleted file mode 100644 index aacbf60..0000000 --- a/modules/tools/starship/default.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ config, lib, ... }: - -# Starship - Minimal, blazing-fast shell prompt -{ - options.tools.starship = { - enable = lib.mkEnableOption "Enables starship."; - }; - - config = lib.mkIf config.tools.starship.enable { - programs.starship = { - enable = true; - enableZshIntegration = config.tools.zsh.enable; - settings = - let - mkSegment = content: ''[┄\[](red)[${content}]($style)[\]](red)''; - in - { - add_newline = true; - - format = ''''\n[╭─\[](red)$username[@](red)$hostname[\]](red)$directory$git_branch$git_status$nix_shell''\n[╰─](red)$status$character ''\n''; - - character.format = "[](red)"; - - username = { - style_user = "blue"; - style_root = "red bold"; - format = "[$user]($style)"; - show_always = true; - }; - - hostname = { - ssh_only = false; - style = "green"; - format = "[$hostname]($style)"; - }; - - directory = { - style = "purple"; - truncate_to_repo = false; - format = mkSegment "$path"; - }; - - git_branch = { - style = "bold yellow"; - format = ''[┄\[](red)[$symbol$branch(:$remote_branch)]($style)''; - }; - - git_status = { - style = "cyan"; - format = ''( [$all_status$ahead_behind]($style))[\]](red)''; - }; - - nix_shell = { - format = mkSegment "$symbol $state( \($name\))"; - symbol = "󱄅"; - impure_msg = "󰻌"; - pure_msg = "󰕥"; - }; - - status = { - disabled = false; - format = "${mkSegment "$symbol $status"}[┄─](red)"; - style = "white"; - }; - }; - }; - }; -} diff --git a/modules/tools/systemctl-tui/default.nix b/modules/tools/systemctl-tui/default.nix deleted file mode 100644 index aa4f70c..0000000 --- a/modules/tools/systemctl-tui/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -# systemctl-tui - TUI for systemctl (systemd service management) -{ - options.tools.systemctl-tui = { - enable = lib.mkEnableOption "Enables systemctl-tui."; - }; - - config = lib.mkIf config.tools.systemctl-tui.enable { - home.packages = with pkgs; [ - systemctl-tui - ]; - }; -} diff --git a/modules/tools/tmux/default.nix b/modules/tools/tmux/default.nix deleted file mode 100644 index 2265894..0000000 --- a/modules/tools/tmux/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, ... }: - -# Tmux - Terminal multiplexer (window/pane management) -{ - options.tools.tmux = { - enable = lib.mkEnableOption "Enables tmux."; - }; - - config = lib.mkIf config.tools.tmux.enable { - programs.tmux.enable = true; - }; -} diff --git a/modules/tools/tor/default.nix b/modules/tools/tor/default.nix deleted file mode 100644 index a2af4aa..0000000 --- a/modules/tools/tor/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: - -# Tor - Local proxy server for connecting to the tor network -{ - options.tools.tor = { - enable = lib.mkEnableOption "Enables tor."; - }; - - config = lib.mkIf config.tools.tor.enable { - home.packages = with pkgs; [ - tor - ]; - - home.file.".config/tor/torrc".text = '' - SocksPort 127.0.0.1:9050 - CookieAuthentication 1 - # Prevents Tor from writing to disk too much - AvoidDiskWrites 1 - ''; - }; -} diff --git a/modules/tools/umu-launcher/default.nix b/modules/tools/umu-launcher/default.nix deleted file mode 100644 index b905919..0000000 --- a/modules/tools/umu-launcher/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -# umu-launcher - This is a unified launcher for Windows games on Linux -{ - options.tools.umu-launcher = { - enable = lib.mkEnableOption "Enables umu-launcher."; - }; - - config = lib.mkIf config.tools.umu-launcher.enable { - home.packages = with pkgs; [ - umu-launcher - winetricks - ]; - }; -} diff --git a/modules/tools/vlc/default.nix b/modules/tools/vlc/default.nix deleted file mode 100644 index ba82fcb..0000000 --- a/modules/tools/vlc/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# VLC - Versatile multimedia player for audio/video playback -{ - options.tools.vlc = { - enable = lib.mkEnableOption "Enables vlc."; - }; - - config = lib.mkIf config.tools.vlc.enable { - home.packages = with pkgs; [ - vlc - ]; - }; -} diff --git a/modules/tools/vscode/default.nix b/modules/tools/vscode/default.nix deleted file mode 100644 index 06e49cd..0000000 --- a/modules/tools/vscode/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -# VSCode - Visual Studio Code (using VSCodium open-source build) -{ - options.tools.vscode = { - enable = lib.mkEnableOption "Enables vscode."; - }; - - config = lib.mkIf config.tools.vscode.enable { - programs.vscode = { - enable = true; - package = pkgs.vscodium; - }; - }; -} diff --git a/modules/tools/zathura/default.nix b/modules/tools/zathura/default.nix deleted file mode 100644 index 6e271f9..0000000 --- a/modules/tools/zathura/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, ... }: - -# Zathura - Minimalistic document viewer (PDF, DJVU, etc.) -{ - options.tools.zathura = { - enable = lib.mkEnableOption "Enables zathura."; - }; - - config = lib.mkIf config.tools.zathura.enable { - programs.zathura.enable = true; - }; -} diff --git a/modules/tools/zsh/default.nix b/modules/tools/zsh/default.nix deleted file mode 100644 index e1a929b..0000000 --- a/modules/tools/zsh/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ config, lib, ... }: - -# Zsh - Z shell, extended bash with additional features and plugins -{ - options.tools.zsh = { - enable = lib.mkEnableOption "Enables zsh."; - }; - - config = - let - nixCommandWrappers = builtins.readFile ./nix-aliases.sh; - in - lib.mkIf config.tools.zsh.enable { - programs.zsh = { - enable = true; - dotDir = "${config.xdg.configHome}/zsh"; - history.path = "${config.xdg.cacheHome}/zsh/history"; - enableCompletion = true; - initContent = '' - setopt PROMPT_SUBST - - autoload -U colors && colors - - bindkey "^[[3~" delete-char - bindkey "^?" backward-delete-char - ${nixCommandWrappers} - ''; - }; - - programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter nixCommandWrappers); - - home.sessionVariables.SHELL = "${lib.getExe config.programs.zsh.package}"; - }; -} diff --git a/modules/tools/zsh/nix-aliases.sh b/modules/tools/zsh/nix-aliases.sh deleted file mode 100644 index 0a2f453..0000000 --- a/modules/tools/zsh/nix-aliases.sh +++ /dev/null @@ -1,27 +0,0 @@ -nix-shell() { - for arg in "$@"; do - if [[ "$arg" == "--run" || "$arg" == "--command" ]]; then - command nix-shell "$@" - return - fi - done - - command nix-shell "$@" --run "$SHELL" -} - -nix() { - if [[ "$1" == "develop" ]]; then - local args=("${@:2}") - - for arg in "${args[@]}"; do - if [[ "$arg" == "-c" || "$arg" == "--command" ]]; then - command nix "$@" - return - fi - done - - command nix develop "${args[@]}" -c "$SHELL" - else - command nix "$@" - fi -} diff --git a/users/arpit.nix b/users/arpit.nix index 1052937..7bb1242 100644 --- a/users/arpit.nix +++ b/users/arpit.nix @@ -11,45 +11,44 @@ desktop.enable = true; # Tools - tools.bat.enable = true; - tools.bluetui.enable = true; - tools.bottom.enable = true; - tools.brightnessctl.enable = true; - tools.bruno.enable = true; - tools.devenv.enable = true; - tools.fastfetch.enable = true; - tools.feh.enable = true; - tools.ffmpeg.enable = true; - tools.fzf.enable = true; - tools.git.enable = true; - tools.git.username = "Arpit Chakladar"; - tools.git.email = "arpitchakladar@proton.me"; - tools.htop.enable = true; - tools.impala.enable = true; - tools.kitty.enable = true; - tools.lf.enable = true; - tools.librewolf.enable = true; - tools.lsd.enable = true; - tools.maim.enable = true; - tools.nixvim.enable = true; - tools.nvtop.enable = true; - tools.opencode.enable = true; - tools.openssh.enable = true; - tools.openvpn.enable = true; - tools.ouch.enable = true; - tools.pamixer.enable = true; - tools.playerctl.enable = true; - tools.qemu.enable = true; - tools.slop.enable = true; - tools.starship.enable = true; - tools.systemctl-tui.enable = true; - tools.tmux.enable = true; - tools.tor.enable = true; - tools.umu-launcher.enable = true; - tools.vlc.enable = true; - tools.vscode.enable = true; - tools.zathura.enable = true; - tools.zsh.enable = true; + programs.bat.enable = true; + programs.bluetui.enable = true; + programs.bottom.enable = true; + programs.brightnessctl.enable = true; + programs.bruno.enable = true; + programs.devenv.enable = true; + programs.feh.enable = true; + programs.ffmpeg.enable = true; + programs.fzf.enable = true; + programs.git.enable = true; + programs.git.username = "Arpit Chakladar"; + programs.git.email = "arpitchakladar@proton.me"; + programs.htop.enable = true; + programs.impala.enable = true; + programs.kitty.enable = true; + programs.lf.enable = true; + programs.librewolf.enable = true; + programs.lsd.enable = true; + programs.maim.enable = true; + programs.nixvim.enable = true; + programs.nvtop.enable = true; + programs.opencode.enable = true; + programs.ssh.enable = true; + programs.openvpn.enable = true; + programs.ouch.enable = true; + programs.pamixer.enable = true; + programs.playerctl.enable = true; + programs.qemu.enable = true; + programs.slop.enable = true; + programs.starship.enable = true; + programs.systemctl-tui.enable = true; + programs.tmux.enable = true; + programs.tor.enable = true; + programs.umu-launcher.enable = true; + programs.vlc.enable = true; + programs.vscode.enable = true; + programs.zathura.enable = true; + programs.zsh.enable = true; programs.home-manager.enable = true; } -- cgit v1.2.3