From 816b85e06e75b75a29fd224a2392565858b28f3d Mon Sep 17 00:00:00 2001 From: Chris Kruining Date: Fri, 28 Mar 2025 22:07:09 +0100 Subject: [PATCH] fix cli tools config --- modules/home/shell/default.nix | 10 +- modules/home/shell/toolset/btop.nix | 155 +++++++++++----------- modules/home/shell/toolset/eza.nix | 26 ++-- modules/home/shell/toolset/fzf.nix | 45 ++++--- modules/home/shell/toolset/git.nix | 164 ++++++++++++------------ modules/home/shell/toolset/starship.nix | 160 ++++++++++++----------- modules/home/shell/toolset/tmux.nix | 154 +++++++++++----------- modules/home/shell/toolset/yazi.nix | 10 +- modules/home/shell/toolset/zoxide.nix | 22 ++++ 9 files changed, 393 insertions(+), 353 deletions(-) create mode 100644 modules/home/shell/toolset/zoxide.nix diff --git a/modules/home/shell/default.nix b/modules/home/shell/default.nix index a1ea44b..1f52c40 100644 --- a/modules/home/shell/default.nix +++ b/modules/home/shell/default.nix @@ -34,12 +34,13 @@ in yazi.enable = true; eza.enable = true; git.enable = true; + zoxide.enable = true; }; home-manager.users.${user} = { home.packages = attrValues { - inherit (pkgs) any-nix-shell pwgen yt-dlp ripdrag yazi; - inherit (pkgs) bat fd zoxide; + inherit (pkgs) any-nix-shell pwgen yt-dlp ripdrag; + inherit (pkgs) fd; rgFull = pkgs.ripgrep.override {withPCRE2 = true;}; }; @@ -62,11 +63,6 @@ in nix-direnv.enable = true; config.whitelist.prefix = ["/home"]; }; - - bat.enable = true; - eza.enable = true; - fzf.enable = true; - zoxide.enable = true; }; }; }) diff --git a/modules/home/shell/toolset/btop.nix b/modules/home/shell/toolset/btop.nix index 5e5f934..8374956 100644 --- a/modules/home/shell/toolset/btop.nix +++ b/modules/home/shell/toolset/btop.nix @@ -1,91 +1,94 @@ -{ config, options, lib, pkgs, user, ... }: +{ config, lib, pkgs, user, ... }: let - inherit (lib.modules) mkIf; + inherit (lib) mkIf mkEnableOption; inherit (lib.strings) concatStringsSep; + + cfg = config.modules.${user}.shell.toolset.btop; in { - options.modules.${user}.shell.toolset.btop = let - inherit (lib.options) mkEnableOption; - in { enable = mkEnableOption "system-monitor"; }; + options.modules.${user}.shell.toolset.btop = { + enable = mkEnableOption "system-monitor"; + }; - config = mkIf config.modules.${user}.shell.toolset.btop.enable { - home-manager.users.${user}.programs.btop = let - inherit (config.modules.themes) active; - in - { - enable = true; - settings = { - force_tty = false; - vim_keys = true; # Directional keys: "h,j,k,l,g,G" - update_ms = 1500; # ms (s^{-3}) - temp_scale = "celsius"; - base_10_sizes = false; - show_cpu_freq = true; - clock_format = "%H:%M"; - background_update = true; - disks_filter = "exclude=/boot"; + config = mkIf cfg.enable { + home-manager.users.${user} = { + packages = with pkgs; [ btop ]; - rounded_corners = true; - theme_background = false; - truecolor = true; - presets = concatStringsSep "," [ - "cpu:1:default" - "proc:0:default cpu:0:default" - "mem:0:default" - "net:0:default cpu:0:block" - "net:0:tty" - ]; - graph_symbol = "braille"; - graph_symbol_cpu = "default"; - graph_symbol_mem = "default"; - graph_symbol_net = "default"; - graph_symbol_proc = "default"; - shown_boxes = "proc cpu mem net"; + programs.btop = { + enable = true; + settings = { + force_tty = false; + vim_keys = true; # Directional keys: "h,j,k,l,g,G" + update_ms = 1500; # ms (s^{-3}) + temp_scale = "celsius"; + base_10_sizes = false; + show_cpu_freq = true; + clock_format = "%H:%M"; + background_update = true; + disks_filter = "exclude=/boot"; - proc_sorting = "cpu lazy"; - proc_reversed = false; - proc_tree = false; - proc_colors = true; - proc_gradient = true; - proc_per_core = true; - proc_mem_bytes = true; - proc_info_smaps = false; - proc_left = false; + rounded_corners = true; + theme_background = false; + truecolor = true; + presets = concatStringsSep "," [ + "cpu:1:default" + "proc:0:default cpu:0:default" + "mem:0:default" + "net:0:default cpu:0:block" + "net:0:tty" + ]; + graph_symbol = "braille"; + graph_symbol_cpu = "default"; + graph_symbol_mem = "default"; + graph_symbol_net = "default"; + graph_symbol_proc = "default"; + shown_boxes = "proc cpu mem net"; - cpu_graph_upper = "total"; - cpu_graph_lower = "total"; - cpu_single_graph = false; - cpu_bottom = false; - show_uptime = true; - check_temp = true; - cpu_sensor = "Auto"; - show_coretemp = true; - cpu_core_map = ""; - custom_cpu_name = ""; + proc_sorting = "cpu lazy"; + proc_reversed = false; + proc_tree = false; + proc_colors = true; + proc_gradient = true; + proc_per_core = true; + proc_mem_bytes = true; + proc_info_smaps = false; + proc_left = false; - mem_graphs = true; - mem_below_net = false; + cpu_graph_upper = "total"; + cpu_graph_lower = "total"; + cpu_single_graph = false; + cpu_bottom = false; + show_uptime = true; + check_temp = true; + cpu_sensor = "Auto"; + show_coretemp = true; + cpu_core_map = ""; + custom_cpu_name = ""; - show_swap = true; - swap_disk = true; - show_disks = true; - only_physical = true; - use_fstab = false; # Enable -> disables `only_physical` - disk_free_priv = false; - show_io_stat = true; + mem_graphs = true; + mem_below_net = false; - io_mode = false; - io_graph_combined = false; - io_graph_speeds = ""; + show_swap = true; + swap_disk = true; + show_disks = true; + only_physical = true; + use_fstab = false; # Enable -> disables `only_physical` + disk_free_priv = false; + show_io_stat = true; - net_download = 100; - net_upload = 100; - net_auto = true; - net_sync = false; - net_iface = "br0"; - show_battery = true; - selected_battery = "Auto"; - log_level = "DEBUG"; + io_mode = false; + io_graph_combined = false; + io_graph_speeds = ""; + + net_download = 100; + net_upload = 100; + net_auto = true; + net_sync = false; + net_iface = "br0"; + show_battery = true; + selected_battery = "Auto"; + log_level = "DEBUG"; + }; }; }; }; diff --git a/modules/home/shell/toolset/eza.nix b/modules/home/shell/toolset/eza.nix index 2d64dfb..1f73c81 100644 --- a/modules/home/shell/toolset/eza.nix +++ b/modules/home/shell/toolset/eza.nix @@ -7,20 +7,24 @@ let cfg = config.modules.${user}.shell.toolset.eza; in { - options.modules.${user}.shell.toolset.eza = { - enable = mkEnableOption "system-monitor"; + options.modules.${user}.shell.toolset.eza = { + enable = mkEnableOption "system-monitor"; }; config = mkIf cfg.enable { - home-manager.users.${user}.programs.eza = { - enable = true; - icons = "auto"; - git = true; - extraOptions = [ - "--hyperlink" - "--across" - "--group-directories-first" - ]; + home-manager.users.${user} = { + packages = with pkgs; [ eza ]; + + programs.eza = { + enable = true; + icons = "auto"; + git = true; + extraOptions = [ + "--hyperlink" + "--across" + "--group-directories-first" + ]; + }; }; }; } diff --git a/modules/home/shell/toolset/fzf.nix b/modules/home/shell/toolset/fzf.nix index 5b81574..7ffc988 100644 --- a/modules/home/shell/toolset/fzf.nix +++ b/modules/home/shell/toolset/fzf.nix @@ -1,34 +1,37 @@ { config, options, lib, pkgs, user, ... }: let - inherit (lib.attrsets) optionalAttrs; - inherit (lib.modules) mkIf; + inherit (lib) mkIf mkEnableOption; + + defShell = config.modules.${user}.shell.default; in { - options.modules.${user}.shell.toolset.fzf = let - inherit (lib.options) mkEnableOption; - in { enable = mkEnableOption "TUI Fuzzy Finder."; }; + options.modules.${user}.shell.toolset.fzf = { + enable = mkEnableOption "TUI Fuzzy Finder."; + }; config = mkIf config.modules.${user}.shell.toolset.fzf.enable { - home-manager.users.${user}.programs.fzf = let - defShell = config.modules.${user}.shell.default; - in { - enable = true; - enableBashIntegration = true; - enableZshIntegration = defShell == "zsh"; - enableFishIntegration = defShell == "fish"; + home-manager.users.${user} = { + packages = with pkgs; [ fzf ]; - tmux.enableShellIntegration = true; - tmux.shellIntegrationOptions = ["-d 40%"]; + programs.fzf = { + enable = true; + enableBashIntegration = true; + enableZshIntegration = defShell == "zsh"; + enableFishIntegration = defShell == "fish"; - defaultCommand = "fd --type f"; - defaultOptions = ["--height 40%" "--border"]; + tmux.enableShellIntegration = true; + tmux.shellIntegrationOptions = ["-d 40%"]; - changeDirWidgetCommand = "fd --type d"; - changeDirWidgetOptions = ["--preview 'tree -C {} | head -200'"]; + defaultCommand = "fd --type f"; + defaultOptions = ["--height 40%" "--border"]; - fileWidgetCommand = "fd --type f"; - fileWidgetOptions = ["--preview 'head {}'"]; - historyWidgetOptions = ["--sort" "--exact"]; + changeDirWidgetCommand = "fd --type d"; + changeDirWidgetOptions = ["--preview 'tree -C {} | head -200'"]; + + fileWidgetCommand = "fd --type f"; + fileWidgetOptions = ["--preview 'head {}'"]; + historyWidgetOptions = ["--sort" "--exact"]; + }; }; }; } diff --git a/modules/home/shell/toolset/git.nix b/modules/home/shell/toolset/git.nix index fa920f5..3706459 100644 --- a/modules/home/shell/toolset/git.nix +++ b/modules/home/shell/toolset/git.nix @@ -14,103 +14,103 @@ in home-manager.users.${user} = { home.packages = attrValues { - inherit (pkgs) act dura lazygit; + inherit (pkgs) git act dura lazygit; inherit (pkgs.gitAndTools) gh git-open git-crypt; }; programs = { - zsh.initExtra = '' - # -------===[ Helpful Git Fn's ]===------- # - gitignore() { - curl -s -o .gitignore https://gitignore.io/api/$1 - } - ''; + zsh.initExtra = '' + # -------===[ Helpful Git Fn's ]===------- # + gitignore() { + curl -s -o .gitignore https://gitignore.io/api/$1 + } + ''; - fish.functions = { - gitignore = "curl -sL https://www.gitignore.io/api/$argv"; - }; + fish.functions = { + gitignore = "curl -sL https://www.gitignore.io/api/$argv"; + }; - git = { - enable = true; - package = pkgs.gitFull; - difftastic = { + git = { enable = true; - background = "dark"; - color = "always"; - display = "inline"; - }; - - ignores = [ - # General: - "*.bloop" - "*.bsp" - "*.metals" - "*.metals.sbt" - "*metals.sbt" - "*.direnv" - "*.envrc" - "*hie.yaml" - "*.mill-version" - "*.jvmopts" - - # OS-related: - ".DS_Store?" - ".DS_Store" - ".CFUserTextEncoding" - ".Trash" - ".Xauthority" - "thumbs.db" - "Thumbs.db" - "Icon?" - - # Compiled residues: - "*.class" - "*.exe" - "*.o" - "*.pyc" - "*.elc" - ]; - - extraConfig = { - init.defaultBranch = "main"; - core = { - editor = "nvim"; - whitespace = "trailing-space,space-before-tab"; - }; - credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret"; - - user = { - name = config.modules.${user}.user.full_name; - email = config.modules.${user}.user.email; - signingKey = "~/.ssh/id_rsa.pub"; + package = pkgs.gitFull; + difftastic = { + enable = true; + background = "dark"; + color = "always"; + display = "inline"; }; - gpg.format = "ssh"; - commit.gpgSign = true; - tag.gpgSign = true; + ignores = [ + # General: + "*.bloop" + "*.bsp" + "*.metals" + "*.metals.sbt" + "*metals.sbt" + "*.direnv" + "*.envrc" + "*hie.yaml" + "*.mill-version" + "*.jvmopts" - push = { - autoSetupRemote = true; - default = "current"; - gpgSign = "if-asked"; - autoSquash = true; - }; - pull.rebase = true; + # OS-related: + ".DS_Store?" + ".DS_Store" + ".CFUserTextEncoding" + ".Trash" + ".Xauthority" + "thumbs.db" + "Thumbs.db" + "Icon?" - filter = { - required = true; - smudge = "git-lfs smudge -- %f"; - process = "git-lfs filter-process"; - clean = "git-lfs clean -- %f"; - }; + # Compiled residues: + "*.class" + "*.exe" + "*.o" + "*.pyc" + "*.elc" + ]; - url = { - "https://github.com/".insteadOf = "gh:"; - "git@github.com:".insteadOf = "ssh+gh:"; + extraConfig = { + init.defaultBranch = "main"; + core = { + editor = "nvim"; + whitespace = "trailing-space,space-before-tab"; + }; + credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret"; + + user = { + name = config.modules.${user}.user.full_name; + email = config.modules.${user}.user.email; + signingKey = "~/.ssh/id_rsa.pub"; + }; + + gpg.format = "ssh"; + commit.gpgSign = true; + tag.gpgSign = true; + + push = { + autoSetupRemote = true; + default = "current"; + gpgSign = "if-asked"; + autoSquash = true; + }; + pull.rebase = true; + + filter = { + required = true; + smudge = "git-lfs smudge -- %f"; + process = "git-lfs filter-process"; + clean = "git-lfs clean -- %f"; + }; + + url = { + "https://github.com/".insteadOf = "gh:"; + "git@github.com:".insteadOf = "ssh+gh:"; + }; }; }; }; }; - }; }; } diff --git a/modules/home/shell/toolset/starship.nix b/modules/home/shell/toolset/starship.nix index d614301..64d9259 100644 --- a/modules/home/shell/toolset/starship.nix +++ b/modules/home/shell/toolset/starship.nix @@ -1,4 +1,4 @@ -{ config, lib, user, ... }: +{ config, lib, pkgs, user, ... }: let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; @@ -9,87 +9,91 @@ in }; config = mkIf config.modules.${user}.shell.toolset.starship.enable { - home-manager.users.${user}.programs.starship = { - enable = true; - settings = { - format = "[╭](bold green) $username@$hostname$nix_shell: $directory$cmd_duration$git_branch$git_commit$git_state$git_status$line_break[╰](green bold)$character"; + home-manager.users.${user} = { + packages = with pkgs; [ starship ]; - username = { - format = "[$user]($style)"; - show_always = true; - }; + programs.starship = { + enable = true; + settings = { + format = "[╭](bold green) $username@$hostname$nix_shell: $directory$cmd_duration$git_branch$git_commit$git_state$git_status$line_break[╰](green bold)$character"; - hostname = { - ssh_only = false; - ssh_symbol = "🌐 "; - format = "[$hostname](bold red)"; - trim_at = ".local"; - disabled = false; - }; - - nix_shell = { - symbol = " "; - format = "[$symbol$name]($style) "; - style = "magenta bold"; - }; - - git_branch = { - only_attached = true; - format = "[$symbol$branch]($style) "; - symbol = " "; - style = "yellow bold"; - }; - - git_commit = { - tag_disabled = false; - }; - - git_state = { - style = "magenta bold"; - }; - - git_status = { - format = "[$all_status $ahead_behind]($style) "; - style = "bold green"; - conflicted = "🏳"; - up_to_date = ""; - untracked = " "; - ahead = "⇡\${count}"; - diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; - behind = "⇣\${count}"; - stashed = " "; - modified = " "; - staged = "[++\($count\)](green)"; - renamed = "襁 "; - deleted = " "; - }; - - directory = { - read_only = " 󰌾"; - }; - - cmd_duration = { - format = "[$duration]($style) "; - style = "blue"; - }; - - os = { - format = "[$symbol](bold white)"; - disabled = false; - - symbols = { - Windows = " "; - Arch = "󰣇"; - Ubuntu = ""; - Macos = "󰀵"; - Manjaro = " "; - Nobara = " "; - Unknown = "󰠥"; + username = { + format = "[$user]($style)"; + show_always = true; }; - }; - fill = { - symbol = " "; + hostname = { + ssh_only = false; + ssh_symbol = "🌐 "; + format = "[$hostname](bold red)"; + trim_at = ".local"; + disabled = false; + }; + + nix_shell = { + symbol = " "; + format = "[$symbol$name]($style) "; + style = "magenta bold"; + }; + + git_branch = { + only_attached = true; + format = "[$symbol$branch]($style) "; + symbol = " "; + style = "yellow bold"; + }; + + git_commit = { + tag_disabled = false; + }; + + git_state = { + style = "magenta bold"; + }; + + git_status = { + format = "[$all_status $ahead_behind]($style) "; + style = "bold green"; + conflicted = "🏳"; + up_to_date = ""; + untracked = " "; + ahead = "⇡\${count}"; + diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; + behind = "⇣\${count}"; + stashed = " "; + modified = " "; + staged = "[++\($count\)](green)"; + renamed = "襁 "; + deleted = " "; + }; + + directory = { + read_only = " 󰌾"; + }; + + cmd_duration = { + format = "[$duration]($style) "; + style = "blue"; + }; + + os = { + format = "[$symbol](bold white)"; + disabled = false; + + symbols = { + Windows = " "; + Arch = "󰣇"; + Ubuntu = ""; + Macos = "󰀵"; + Manjaro = " "; + Nobara = " "; + Unknown = "󰠥"; + }; + }; + + fill = { + symbol = " "; + }; }; }; }; diff --git a/modules/home/shell/toolset/tmux.nix b/modules/home/shell/toolset/tmux.nix index a018187..b530f0f 100644 --- a/modules/home/shell/toolset/tmux.nix +++ b/modules/home/shell/toolset/tmux.nix @@ -8,96 +8,100 @@ in in { enable = mkEnableOption "terminal multiplexer"; }; config = mkIf config.modules.${user}.shell.toolset.tmux.enable { - home-manager.users.${user}.programs.tmux = { - enable = true; - secureSocket = true; - keyMode = "vi"; - prefix = "C-a"; - terminal = "tmux-256color"; + home-manager.users.${user} = { + packages = with pkgs; [ tmux ]; - baseIndex = 1; - clock24 = true; - disableConfirmationPrompt = true; - escapeTime = 0; + programs.tmux = { + enable = true; + secureSocket = true; + keyMode = "vi"; + prefix = "C-a"; + terminal = "tmux-256color"; - aggressiveResize = false; - resizeAmount = 2; - reverseSplit = false; - historyLimit = 5000; - newSession = true; + baseIndex = 1; + clock24 = true; + disableConfirmationPrompt = true; + escapeTime = 0; - plugins = let - inherit (pkgs.tmuxPlugins) resurrect continuum; - in [ - { - plugin = resurrect; - extraConfig = "set -g @resurrect-strategy-nvim 'session'"; - } - { - plugin = continuum; - extraConfig = '' - set -g @continuum-restore 'on' - set -g @continuum-save-interval '60' # minutes - ''; - } - ]; + aggressiveResize = false; + resizeAmount = 2; + reverseSplit = false; + historyLimit = 5000; + newSession = true; - extraConfig = '' - # -------===[ Color Correction ]===------- # - set-option -ga terminal-overrides ",*256col*:Tc" - set-option -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' - set-environment -g COLORTERM "truecolor" + plugins = let + inherit (pkgs.tmuxPlugins) resurrect continuum; + in [ + { + plugin = resurrect; + extraConfig = "set -g @resurrect-strategy-nvim 'session'"; + } + { + plugin = continuum; + extraConfig = '' + set -g @continuum-restore 'on' + set -g @continuum-save-interval '60' # minutes + ''; + } + ]; - # -------===[ General-Configurations ]===------- # - set-option -g renumber-windows on - set-window-option -g automatic-rename on - set-window-option -g word-separators ' @"=()[]' + extraConfig = '' + # -------===[ Color Correction ]===------- # + set-option -ga terminal-overrides ",*256col*:Tc" + set-option -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' + set-environment -g COLORTERM "truecolor" - set-option -g mouse on - set-option -s focus-events on - set-option -g renumber-windows on - set-option -g allow-rename off + # -------===[ General-Configurations ]===------- # + set-option -g renumber-windows on + set-window-option -g automatic-rename on + set-window-option -g word-separators ' @"=()[]' - # -------===[ Activity/Sound ]===------- # - set-option -g bell-action none - set-option -g visual-bell off - set-option -g visual-silence off - set-option -g visual-activity off - set-window-option -g monitor-activity off + set-option -g mouse on + set-option -s focus-events on + set-option -g renumber-windows on + set-option -g allow-rename off - # -------===[ Status-Bar ]===------- # - set-option -g status on - set-option -g status-interval 1 - set-option -g status-style bg=default,bold,italics + # -------===[ Activity/Sound ]===------- # + set-option -g bell-action none + set-option -g visual-bell off + set-option -g visual-silence off + set-option -g visual-activity off + set-window-option -g monitor-activity off - set-option -g status-position top - set-option -g status-justify left + # -------===[ Status-Bar ]===------- # + set-option -g status on + set-option -g status-interval 1 + set-option -g status-style bg=default,bold,italics - set-option -g status-left-length "40" - set-option -g status-right-length "80" + set-option -g status-position top + set-option -g status-justify left - # -------===[ Keybindings ]===------- # - bind-key c clock-mode + set-option -g status-left-length "40" + set-option -g status-right-length "80" - # Window Control(s): - bind-key q kill-session - bind-key Q kill-server - bind-key t new-window -c '#{pane_current_path}' + # -------===[ Keybindings ]===------- # + bind-key c clock-mode - # Buffers: - bind-key b list-buffers - bind-key p paste-buffer - bind-key P choose-buffer + # Window Control(s): + bind-key q kill-session + bind-key Q kill-server + bind-key t new-window -c '#{pane_current_path}' - # Split bindings: - bind-key - split-window -v -c '#{pane_current_path}' - bind-key / split-window -h -c '#{pane_current_path}' + # Buffers: + bind-key b list-buffers + bind-key p paste-buffer + bind-key P choose-buffer - # Copy/Paste bindings: - bind-key -T copy-mode-vi v send-keys -X begin-selection -N "Start visual mode for selection" - bind-key -T copy-mode-vi y send-keys -X copy-selection -N "Yank text into buffer" - bind-key -T copy-mode-vi r send-keys -X rectangle-toggle -N "Yank region into buffer" - ''; + # Split bindings: + bind-key - split-window -v -c '#{pane_current_path}' + bind-key / split-window -h -c '#{pane_current_path}' + + # Copy/Paste bindings: + bind-key -T copy-mode-vi v send-keys -X begin-selection -N "Start visual mode for selection" + bind-key -T copy-mode-vi y send-keys -X copy-selection -N "Yank text into buffer" + bind-key -T copy-mode-vi r send-keys -X rectangle-toggle -N "Yank region into buffer" + ''; + }; }; }; } diff --git a/modules/home/shell/toolset/yazi.nix b/modules/home/shell/toolset/yazi.nix index ce96e8a..2a4e0c6 100644 --- a/modules/home/shell/toolset/yazi.nix +++ b/modules/home/shell/toolset/yazi.nix @@ -1,4 +1,4 @@ -{ config, lib, user, ... }: +{ config, lib, pkgs, user, ... }: let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; @@ -11,8 +11,12 @@ in }; config = mkIf cfg.enable { - home-manager.users.${user}.programs.yazi = { - enable = true; + home-manager.users.${user} = { + packages = with pkgs; [ yazi ]; + + programs.yazi = { + enable = true; + }; }; }; } diff --git a/modules/home/shell/toolset/zoxide.nix b/modules/home/shell/toolset/zoxide.nix new file mode 100644 index 0000000..f3659f3 --- /dev/null +++ b/modules/home/shell/toolset/zoxide.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, user, ... }: +let + inherit (lib.modules) mkIf; + inherit (lib.options) mkEnableOption; + + cfg = config.modules.${user}.shell.toolset.zoxide; +in +{ + options.modules.${user}.shell.toolset.zoxide = { + enable = mkEnableOption "system-monitor"; + }; + + config = mkIf cfg.enable { + home-manager.users.${user} = { + packages = with pkgs; [ zoxide ]; + + programs.zoxide = { + enable = true; + }; + }; + }; +}