diff options
| author | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2025-12-19 15:22:53 -0600 |
|---|---|---|
| committer | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2025-12-19 15:22:53 -0600 |
| commit | 7fc4bb05905697e6a43fa3805da45768ea9a9858 (patch) | |
| tree | 8d2857bb18ea5808f254e663f6da654313ab94b1 /modules/terminal | |
| parent | 5a5b183373c3732d96bb834b3ba0fcf2e88e590f (diff) | |
| parent | cdad26dfda64e94d19db576e93793ded9434bd09 (diff) | |
merge from main
Diffstat (limited to 'modules/terminal')
| -rw-r--r-- | modules/terminal/hjem/default.nix | 2 | ||||
| -rw-r--r-- | modules/terminal/hjem/programs/bash.nix | 27 | ||||
| -rw-r--r-- | modules/terminal/hjem/programs/cmus.nix | 74 | ||||
| -rw-r--r-- | modules/terminal/hjem/programs/fish.nix | 15 | ||||
| -rw-r--r-- | modules/terminal/hjem/programs/fzf.nix | 16 | ||||
| -rw-r--r-- | modules/terminal/hjem/programs/helix.nix | 12 | ||||
| -rw-r--r-- | modules/terminal/hjem/programs/starship.nix | 5 | ||||
| -rw-r--r-- | modules/terminal/hjem/programs/tmux.nix | 363 | ||||
| -rw-r--r-- | modules/terminal/nixos/bash.nix | 16 | ||||
| -rw-r--r-- | modules/terminal/nixos/default.nix | 4 | ||||
| -rw-r--r-- | modules/terminal/options.nix | 16 |
11 files changed, 137 insertions, 413 deletions
diff --git a/modules/terminal/hjem/default.nix b/modules/terminal/hjem/default.nix index 7915319..681c3b3 100644 --- a/modules/terminal/hjem/default.nix +++ b/modules/terminal/hjem/default.nix @@ -10,6 +10,8 @@ ./programs/broot.nix ./programs/cmus.nix ./programs/helix.nix + ./programs/fish.nix + ./programs/bash.nix ]; } diff --git a/modules/terminal/hjem/programs/bash.nix b/modules/terminal/hjem/programs/bash.nix index 646cbf8..fe6f21d 100644 --- a/modules/terminal/hjem/programs/bash.nix +++ b/modules/terminal/hjem/programs/bash.nix @@ -8,22 +8,23 @@ in lib.mkIf cfg.enable { files = { - ".bashrc".text = '' + ".config/bash/bashrc".text = '' eval "$(direnv hook bash)" for file in ~/.config/bash/conf.d/*; do source "$file"; done ''; - - packages = with pkgs; [ - fish - ripgrep - fd - moreutils - zip - unzip - btop - jq - direnv - ]; }; + + packages = with pkgs; [ + fish + ripgrep + fd + wget + moreutils + zip + unzip + btop + jq + direnv + ]; } diff --git a/modules/terminal/hjem/programs/cmus.nix b/modules/terminal/hjem/programs/cmus.nix index afd2350..7a5ac81 100644 --- a/modules/terminal/hjem/programs/cmus.nix +++ b/modules/terminal/hjem/programs/cmus.nix @@ -25,57 +25,34 @@ ''; cmus_theme = '' - set color_cmdline_bg=default - set color_cmdline_fg=default - set color_error=211 - set color_info=223 - set color_separator=8 - set color_statusline_bg=default - set color_statusline_fg=default - set color_titleline_bg=183 - set color_titleline_fg=8 - set color_titleline_attr=bold - set color_win_bg=default - set color_win_cur=117 - set color_win_cur_sel_bg=117 - set color_win_cur_sel_fg=235 - set color_win_dir=default - set color_win_fg=default - set color_win_inactive_cur_sel_bg=0 - set color_win_inactive_cur_sel_fg=default - set color_win_inactive_sel_bg=0 - set color_win_inactive_sel_fg=default - set color_win_sel_bg=15 - set color_win_sel_fg=235 - set color_win_title_bg=default - set color_win_title_fg=183 - set color_win_title_attr=bold + set color_cmdline_error=lightred + set color_cmdline_info=lightyellow + set color_cmdline_fg=lightred + set color_cmdline_bg=237 + set color_separator=238 + set color_statusline_bg=blue + set color_statusline_fg=233 + set color_titleline_bg=237 + set color_titleline_fg=white + set color_win_bg=black + set color_win_fg=241 + set color_win_cur=lightgreen + set color_win_cur_sel_bg=green + set color_win_cur_sel_fg=233 + set color_win_dir=lightblue + set color_win_fg=white + set color_win_inactive_cur_sel_bg=016 + set color_win_inactive_cur_sel_fg=233 + set color_win_sel_bg=237 + set color_win_sel_fg=white + set color_win_title_bg=237 + set color_win_title_fg=lightred ''; cmus_rc = '' - ${ - if (cfg.theme == "catppuccin") - then "colorscheme catppuccin" - else "" - } + colorscheme all set status_display_program=${scriptsDir}/status.sh ''; - - cava_config = - if cfg.theme == "catppuccin" - then '' - [color] - gradient=1 - gradient_color_1='#94e2d5' - gradient_color_2='#89dceb' - gradient_color_3='#74c7ec' - gradient_color_4='#89b4fa' - gradient_color_5='#cba6f7' - gradient_color_6='#f5c2e7' - gradient_color_7='#eba0ac' - gradient_color_8='#f38ba8' - '' - else ""; in lib.mkIf cfg.enable { files = let @@ -87,9 +64,8 @@ in ".config/cmus/scripts/status.sh" = e scripts.statusDisplay; ".config/cmus/rc".text = cmus_rc; - ".config/cmus/catppuccin.theme".text = lib.mkIf (cfg.theme == "catppuccin") cmus_theme; - ".config/cava/config".text = cava_config; + ".config/cmus/all.theme".text = cmus_theme; }; - packages = with pkgs; [cava cmus]; + packages = [pkgs.cmus]; } diff --git a/modules/terminal/hjem/programs/fish.nix b/modules/terminal/hjem/programs/fish.nix index 1aa4a40..2fdc184 100644 --- a/modules/terminal/hjem/programs/fish.nix +++ b/modules/terminal/hjem/programs/fish.nix @@ -8,6 +8,20 @@ in lib.mkIf cfg.enable { files = { + ".config/fish/conf.d/xdg.fish".text = + # fish + '' + set -gx XDG_DATA_HOME "$HOME/.local/share" + set -gx XDG_CONFIG_HOME "$HOME/.config" + set -gx XDG_STATE_HOME "$HOME/.local/state" + set -gx XDG_CACHE_HOME "$HOME/.cache" + + alias wget "wget --hsts-file=/dev/null" + set -gx GOPATH "$XDG_DATA_HOME/go" + set -gx GRADLE_USER_HOME "$XDG_DATA_HOME/gradle" + set -gx CARGO_HOME "$XDG_DATA_HOME/cargo" + ''; + ".config/fish/config.fish".text = '' set fish_greeting @@ -24,6 +38,7 @@ in fish ripgrep fd + wget moreutils zip unzip diff --git a/modules/terminal/hjem/programs/fzf.nix b/modules/terminal/hjem/programs/fzf.nix index 5a51739..f697a24 100644 --- a/modules/terminal/hjem/programs/fzf.nix +++ b/modules/terminal/hjem/programs/fzf.nix @@ -8,18 +8,24 @@ in lib.mkIf cfg.enable { files = - (lib.optionalAttrs config.collinux.terminal.shells.fish.enable { + lib.optionalAttrs config.collinux.terminal.shells.fish.enable (with config.collinux.palette; { ".config/fish/conf.d/fzf.fish".text = '' fzf --fish | source - set -gx FZF_DEFAULT_OPTS "--color bg:#1E1E2E,bg+:#313244,border:#313244,fg:#CDD6F4,fg+:#CDD6F4,header:#F38BA8,hl:#F38BA8,hl+:#F38BA8,info:#CBA6F7,label:#CDD6F4,marker:#B4BEFE,pointer:#F5E0DC,prompt:#CBA6F7,selected-bg:#45475A,spinner:#F5E0DC" + set -Ux FZF_DEFAULT_OPTS "$FZF_NON_COLOR_OPTS"\ + " --color=bg+:#${base01},bg:#${base00},spinner:#${base12},hl:#${base13}"\ + " --color=fg:#${base04},header:#${base13},info:#${base10},pointer:#${base12}"\ + " --color=marker:#${base12},fg+:#${base06},prompt:#${base10},hl+:#${base13}" ''; }) - // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable { + // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable (with config.collinux.palette; { ".config/bash/conf.d/fzf.bash".text = '' eval "$(fzf --bash)" - export FZF_DEFAULT_OPTS="--color bg:#1E1E2E,bg+:#313244,border:#313244,fg:#CDD6F4,fg+:#CDD6F4,header:#F38BA8,hl:#F38BA8,hl+:#F38BA8,info:#CBA6F7,label:#CDD6F4,marker:#B4BEFE,pointer:#F5E0DC,prompt:#CBA6F7,selected-bg:#45475A,spinner:#F5E0DC" + export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS"\ + " --color=bg+:#${base01},bg:#${base00},spinner:#${base12},hl:#${base13}"\ + " --color=fg:#${base04},header:#${base13},info:#${base10},pointer:#${base12}"\ + " --color=marker:#${base12},fg+:#${base06},prompt:#${base10},hl+:#${base13}" ''; - }); + })); packages = [pkgs.fzf]; } diff --git a/modules/terminal/hjem/programs/helix.nix b/modules/terminal/hjem/programs/helix.nix index e66877b..80279c4 100644 --- a/modules/terminal/hjem/programs/helix.nix +++ b/modules/terminal/hjem/programs/helix.nix @@ -44,8 +44,8 @@ ]; }; - theme = { - inherits = "catppuccin_mocha"; + mkTransparentBackground = inherits: { + inherit inherits; "ui.background" = {}; }; @@ -134,7 +134,9 @@ if cfg.theme == "catppuccin" then "catppuccin_mocha_transparent" else if cfg.theme == "adwaita" - then "adwaita-dark" + then "adwaita_dark_transparent" + else if cfg.theme == "kanagawa" + then "kanagawa_transparent" else ""; }; in @@ -148,7 +150,9 @@ in { ".config/helix/config.toml" = t settings; ".config/helix/languages.toml" = t languages; - ".config/helix/themes/catppuccin_mocha_transparent.toml" = t theme; + ".config/helix/themes/catppuccin_mocha_transparent.toml" = t (mkTransparentBackground "catppuccin_mocha"); + ".config/helix/themes/adwaita_dark_transparent.toml" = t (mkTransparentBackground "adwaita-dark"); + ".config/helix/themes/kanagawa_transparent.toml" = t (mkTransparentBackground "kanagawa"); } // (lib.optionalAttrs config.collinux.terminal.shells.fish.enable { ".config/fish/conf.d/helix.fish".text = '' diff --git a/modules/terminal/hjem/programs/starship.nix b/modules/terminal/hjem/programs/starship.nix index e9d79b5..7f537d9 100644 --- a/modules/terminal/hjem/programs/starship.nix +++ b/modules/terminal/hjem/programs/starship.nix @@ -51,11 +51,6 @@ in starship init fish | source enable_transience ''; - }) - // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable { - ".config/bash/conf.d/starship.bash".text = '' - eval "$(starship init bash)" - ''; }); packages = [pkgs.starship]; diff --git a/modules/terminal/hjem/programs/tmux.nix b/modules/terminal/hjem/programs/tmux.nix index 738e729..152c443 100644 --- a/modules/terminal/hjem/programs/tmux.nix +++ b/modules/terminal/hjem/programs/tmux.nix @@ -1,339 +1,44 @@ { + pkgs, + inputs, lib, config, - pkgs, ... }: let cfg = config.collinux.terminal.programs.tmux; +in { + imports = [ + inputs.tmux-tsunami.hjemModules.tsunami + ]; - scriptsDir = "~/.config/tmux/scripts"; - - scripts.minibuffer = '' - window_height="$(tmux display -p '#{window_height}')" - tmux display-popup -EB \ - -w 100% -h 16 \ - -x 0 -y "$(($window_height + 1))" \ - "$@" - ''; - - scripts.menu = '' - tmux display-menu \ - -x "#{window_width}" -y S \ - -b none \ - -s "bg=#313244,fg=#9399b2" \ - -S "bg=#313244" \ - -H "bg=#45475a fg=#b4befe" \ - "$@" - ''; - - scripts.paneSplit = '' - width=$(tmux display -p "#{pane_width}") - height=$(tmux display -p "#{pane_height}") - - if (( $(echo "$width / $height > 2.5" | ${pkgs.bc}/bin/bc -l) )); then - tmux split-window -h "$@" - else - tmux split-window -v "$@" - fi - ''; - - # -- SESSIONIZER -- - broot_sessionizer_config = { - imports = ["~/.config/broot/conf.toml"]; - quit_on_last_cancel = true; - verbs = [ - { - invocation = "sessionizer"; - external = ''bash -c -- "${scriptsDir}/sessionizer.sh '{file}'"''; - key = "enter"; - apply_to = "directory"; - leave_broot = true; - } - ]; - }; - - scripts.sessionizer = '' - selected="$1" - - session_name="$(basename "$selected" | tr '.' '_')" - - # if the session doesn't exist, create it - if tmux list-sessions -F '#{session_name}' | grep -vqx "$session_name"; then - tmux new-session -ds "$session_name" -c "$selected" - tmux set-option -t "$session_name" @default-path "$selected" - fi - - # switch to it - tmux switch -t "$session_name" - ''; - - scripts.newSession = '' - tmux switch-client -t "$(tmux new-session -dP)" - ''; - - scripts.sessionsMenu = '' - menu_items=( - "Switch Project" p "run-shell '${scriptsDir}/minibuffer.sh -d $HOME ${scriptsDir}/launch-sessionizer.sh'" - "New Unnamed Project" n "run-shell '${scriptsDir}/new-session.sh'" - ) - - # Get all tmux session names - mapfile -t sessions < <(tmux list-sessions -F "#{session_name}") - - # Only include up to 9 sessions - for i in "''\${!sessions[@]}"; do - (( i >= 9 )) && break # Stop after 9 sessions - - session="''\${sessions[$i]}" - key=$((i + 1)) # 1-based key - - menu_items+=("$session" "$key" "switch-client -t $session") - done - - # Display the menu - ${scriptsDir}/menu.sh -T "#[align=centre]Projects" "''\${menu_items[@]}" - ''; - - scripts.cleanSessions = '' - current="$(tmux display -p '#{session_name}')" - - tmux list-sessions -F '#{session_name}' | while read -r line; do - if [[ "$line" != "$current" && "$line" =~ ^[[:digit:]]+$ ]]; then - tmux kill-session -t "$line" - fi - done - ''; - - scripts.launchSessionizer = ''${pkgs.broot}/bin/broot --only-folders --conf ~/.config/tmux/broot/sessionizer.toml''; - - # -- FIND FILE -- - broot_file_config = { - imports = ["~/.config/broot/conf.toml"]; - quit_on_last_cancel = true; - verbs = [ - { - invocation = "tmux-split"; - external = ["bash" "-c" ''${scriptsDir}/split.sh -c "#{?@default-path,#{@default-path},#{pane_current_path}}" "hx '{file}'"'']; - key = "ctrl-s"; - apply_to = "file"; - leave_broot = true; - } - { - invocation = "tmux-window"; - external = ["tmux" "new-window" "-c" "#{?@default-path,#{@default-path},#{pane_current_path}}" "hx '{file}'"]; - key = "ctrl-w"; - apply_to = "file"; - leave_broot = true; - } - { - key = "enter"; - cmd = ":tmux-window"; - } - ]; - }; - - scripts.launchFindFile = ''${pkgs.broot}/bin/broot --conf ~/.config/tmux/broot/file.toml''; - - # -- BAR -- - scripts.battery = '' - energy_now=$(cat /sys/class/power_supply/BAT0/energy_now) - energy_full=$(cat /sys/class/power_supply/BAT0/energy_full) - percentage=$((energy_now * 100 / energy_full)) - printf "%.0f%%" "$percentage" - ''; - - scripts.bar = '' - bg="#1e1e2e" - - tmux set -g status on - - tmux set -g status-position bottom - tmux set -g status-justify absolute-centre - tmux set -g status-bg "$bg" - - tmux set -g status-left-style fg=green,bold - tmux set -g status-left " #{client_session}" - - tmux set -g window-status-style fg=color243 - tmux set -g window-status-format " #I " - tmux set -g window-status-current-style fg=color12,bold - tmux set -g window-status-current-format " #I " - tmux set -g window-status-separator "" - - tmux set -g status-right "#[fg=color243]%l:%M #[fg=red]#(${scriptsDir}/battery.sh) " - ''; - - scripts.catpuccinNoBorders = - if (cfg.theme == "catppuccin") - then '' - bg_dark="#181825" + config = lib.mkIf cfg.enable { + tsunami = { + enable = true; - ## pane borders - tmux set -g pane-border-style fg=$bg_dark,bg=$bg_dark - tmux set -g pane-active-border-style fg=$bg_dark,bg=$bg_dark + theme = + if (cfg.theme == "catppuccin") + then { + bg = "#1e1e2e"; + bg_dark = "#181825"; + } + else if (cfg.theme == "adwaita") + then { + bg = "#1d1d1d"; + bg_dark = "#171717"; + } + else {}; - ## pane backgrounds - # Set the foreground/background color for the active window - tmux set -g window-active-style bg=bg - - # Set the foreground/background color for all other windows - tmux set -g window-style bg=$bg_dark - '' - else '' - tmux set -g status-bg "#262626" - ''; - - # -- FZF EXEC -- - scripts.tmuxDoc = '' - usage=$(tmux list-commands -F "#{command_list_name} #{command_list_usage}" "$1") - - man tmux | awk -v usage="$usage" ' - index($0, usage) > 0 { found=1 } - found { - print - if ($0 == "") exit - } - ' - ''; - - scripts.fzfExec = '' - all_cmds() { - tmux list-commands -F $'#{command_list_name}#{?command_list_alias,\n#{command_list_alias},}' - } - - selected_cmd=$(all_cmds | ${pkgs.fzf}/bin/fzf --bind 'enter:accept-or-print-query,tab:replace-query,alt-backspace:clear-query' --prompt : --preview "~/.config/tmux/scripts/tmux-doc.sh $(printf '{}' | cut -d' ' -f1)") - test -z "$selected_cmd" && exit - - tmux $(echo "$selected_cmd" | sed "s@~@$HOME@g") - ''; - - # -- BUFFER SEARCH -- - scripts.searchBuffer = '' - trap 'rm -f -- "''\${scrollback:-}"' EXIT - scrollback="$(mktemp)" - - tmux capture-pane -e -p -S - > "$scrollback" - cat "$scrollback" | fzf --ansi - - exit 0 - ''; - - # -- PANE SEARCH -- - scripts.paneSearch = '' - LIST_DATA="#{window_name} #{pane_title} #{pane_current_path} #{pane_current_command}" - FZF_COMMAND="fzf --delimiter=: --with-nth 4 --color=hl:2" - - # do not change - TARGET_SPEC="#{session_name}:#{window_id}:#{pane_id}:" - - # select pane - LINE=$(tmux list-panes -a -F "$TARGET_SPEC $LIST_DATA" | $FZF_COMMAND) || exit 0 - # split the result - args=(''\${LINE//:/ }) - # activate session/window/pane - tmux select-pane -t ''\${args[2]} && tmux select-window -t ''\${args[1]} && tmux switch-client -t ''\${args[0]} - ''; - - # -- LEADER MENU -- - scripts.leaderMenu = '' - ${scriptsDir}/menu.sh -T "#[align=centre]Prefix" \ - "+Projects" C-p "run-shell ${scriptsDir}/sessions-menu.sh" \ - "Find File" C-f "run-shell \"${scriptsDir}/minibuffer.sh -d '#{?@default-path,#{@default-path},#{pane_current_path}}' '${scriptsDir}/launch-find-file.sh'\"" \ - "Find Window" C-w "run-shell \"${scriptsDir}/minibuffer.sh '${scriptsDir}/pane-search.sh'\"" \ - "Detach" C-d "detach" \ - "Lazygit" C-g "display-popup -E -w 80% -h 80% -x C -y C -d '#{?@default-path,#{@default-path},#{pane_current_path}}' lazygit" \ - "Search Buffer" / "run-shell \"${scriptsDir}/minibuffer.sh '${scriptsDir}/search-buffer.sh'\"" \ - "Todo" C-o "display-popup -E -w 70% -h 70% -x C -y C 'hx ~/Documents/todo.txt'" \ - "Reload" C-r "source-file ~/.config/tmux/tmux.conf" - ''; - - tmux-conf = '' - set -g mouse on - - # Panes - bind-key -n C-w kill-pane - - bind -n C-Enter run-shell "${scriptsDir}/split.sh -c '#{?@default-path,#{@default-path},#{pane_current_path}}'" - - unbind -n MouseDown3Pane ## disable right click menu - bind-key -n M-z resize-pane -Z ## Pane zoom - set -g allow-rename on - set -g automatic-rename off - - # Windows - bind-key -n C-t new-window -c '#{?@default-path,#{@default-path},#{pane_current_path}}' - bind-key -n C-Tab next-window - bind-key -n C-S-Tab previous-window # doesn't work in foot :( - unbind n - unbind p - - set -g renumber-windows on - set -g base-index 1 - - bind-key -n C-x run-shell "${scriptsDir}/leader-menu.sh" - bind-key -n M-x run-shell "${scriptsDir}/minibuffer.sh -h 10 '${scriptsDir}/fzf-exec.sh'" - - set-hook -ag client-detached 'run-shell ${scriptsDir}/clean-sessions.sh' - set-hook -ag client-session-changed 'run-shell ${scriptsDir}/clean-sessions.sh' - - # Statusbar - run-shell "${scriptsDir}/bar.sh" - run-shell "${scriptsDir}/catppuccin-borders.sh" - - # Scrollback - set-window-option -g mode-keys vi - ''; -in - lib.mkIf cfg.enable { - files = let - e = text: { - inherit text; - executable = true; - }; - in { - # helpers - ".config/tmux/scripts/minibuffer.sh" = e scripts.minibuffer; - ".config/tmux/scripts/menu.sh" = e scripts.menu; - ".config/tmux/scripts/split.sh" = e scripts.paneSplit; - - # sessionizer - ".config/tmux/scripts/sessionizer.sh" = e scripts.sessionizer; - ".config/tmux/broot/sessionizer.toml" = { - generator = (pkgs.formats.toml {}).generate "sessionizer.toml"; - value = broot_sessionizer_config; - }; - ".config/tmux/scripts/launch-sessionizer.sh" = e scripts.launchSessionizer; - ".config/tmux/scripts/clean-sessions.sh" = e scripts.cleanSessions; - ".config/tmux/scripts/new-session.sh" = e scripts.newSession; - ".config/tmux/scripts/sessions-menu.sh" = e scripts.sessionsMenu; - - # find-file - ".config/tmux/scripts/launch-find-file.sh" = e scripts.launchFindFile; - ".config/tmux/broot/file.toml" = { - generator = (pkgs.formats.toml {}).generate "file.toml"; - value = broot_file_config; - }; - - # search buffer - ".config/tmux/scripts/search-buffer.sh" = e scripts.searchBuffer; - - # pane search - ".config/tmux/scripts/pane-search.sh" = e scripts.paneSearch; - - # fzf-exec - ".config/tmux/scripts/tmux-doc.sh" = e scripts.tmuxDoc; - ".config/tmux/scripts/fzf-exec.sh" = e scripts.fzfExec; - - # leader menu - ".config/tmux/scripts/leader-menu.sh" = e scripts.leaderMenu; - - # Bar - ".config/tmux/scripts/battery.sh" = e scripts.battery; - ".config/tmux/scripts/bar.sh" = e scripts.bar; - ".config/tmux/scripts/catppuccin-borders.sh" = e scripts.catpuccinNoBorders; - - ".config/tmux/tmux.conf".text = tmux-conf; + keys.leader = [ + { + name = "Lazygit"; + key = "C-g"; + exec = "display-popup -E -w 80% -h 80% -x C -y C -d '#{?@default-path,#{@default-path},#{pane_current_path}}' ${lib.getExe pkgs.lazygit}"; + } + ]; + confs."main" = '' + set -g mouse on + set-window-option -g mode-keys vi + ''; }; - - packages = [pkgs.tmux]; - } + }; +} diff --git a/modules/terminal/nixos/bash.nix b/modules/terminal/nixos/bash.nix new file mode 100644 index 0000000..393ab94 --- /dev/null +++ b/modules/terminal/nixos/bash.nix @@ -0,0 +1,16 @@ +{ + config, + lib, + ... +}: let + cfg = config.collinux.terminal.shells.bash; +in + lib.mkIf cfg.enable { + environment.etc = { + "bashrc.local".text = '' + if [ -s "''${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc" ]; then + . "''${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc" + fi + ''; + }; + } diff --git a/modules/terminal/nixos/default.nix b/modules/terminal/nixos/default.nix index 8118c63..4ececfa 100644 --- a/modules/terminal/nixos/default.nix +++ b/modules/terminal/nixos/default.nix @@ -1,6 +1,10 @@ {config, ...}: let cfg = config.collinux.terminal.shells; in { + imports = [ + ./bash.nix + ]; + programs.command-not-found.enable = false; # broken without nix-channels users.users."${config.collinux.user.name}" = { diff --git a/modules/terminal/options.nix b/modules/terminal/options.nix index 47f2057..e55ab1b 100644 --- a/modules/terminal/options.nix +++ b/modules/terminal/options.nix @@ -6,15 +6,10 @@ ... }: let inherit (lib) mkOption mkEnableOption types; - inherit (my-lib.options {inherit lib config;}) mkProgramOption' mkProgramOption; + inherit (my-lib.options {inherit lib config;}) mkProgramOption; in { options = { collinux.terminal = { - theme = mkOption { - type = types.enum ["catppuccin" "adwaita"]; - default = config.collinux.theme; - }; - shells = { fish = mkProgramOption "fish shell"; bash = mkProgramOption "bash shell"; @@ -36,7 +31,7 @@ in { starship = mkProgramOption "starship prompt"; lazygit.enable = mkEnableOption "lazygit"; - cmus = mkProgramOption "cmus"; + cmus.enable = mkEnableOption "cmus"; nh.enable = mkEnableOption "nh nix helper"; git = { @@ -50,7 +45,12 @@ in { }; }; - helix = mkProgramOption' "helix text editor" { + helix = { + enable = mkEnableOption "helix text editor"; + theme = mkOption { + type = lib.types.enum ["catppuccin" "adwaita" "kanagawa"]; + default = config.collinux.theme; + }; hardMode = mkOption { type = types.bool; description = "Disable arrow keys and mouse"; |
