diff --git a/home/common.nix b/home/common.nix index 017e91d..dd546af 100644 --- a/home/common.nix +++ b/home/common.nix @@ -20,6 +20,9 @@ * ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH8P/3yzsruekSaZ9b+yk429VTcfCtI1j8jnkNbPAgnr th3r00t@nixos ''; imports = [ + ../modules/shells.nix + ../modules/tmux.nix + ../modules/ranger.nix ]; home.packages = with pkgs; [ autossh @@ -103,492 +106,6 @@ enable = true; guiAddress = "0.0.0.0:8384"; }; - programs.ranger = { - enable = true; - extraConfig = '' - set viewmode miller - set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$ - set show_hidden false - set confirm_on_delete multiple - set confirm_on_trash like_delete - set use_preview_script true - set automatically_count_files true - set open_all_images true - set vcs_aware true - set vcs_backend_git enabled - set vcs_backend_hg disabled - set vcs_backend_bzr disabled - set vcs_backend_svn disabled - set vcs_msg_length 50 - set preview_images true - set preview_images_method kitty - set w3m_delay 0.02 - set w3m_offset 0 - set sixel_dithering FloydSteinberg - set unicode_ellipsis false - set bidi_support false - set show_hidden_bookmarks true - set colorscheme jungle - set colorscheme snow - set colorscheme solarized - set colorscheme default - set preview_files true - set preview_directories true - set collapse_preview true - set wrap_plaintext_previews false - set save_console_history true - set status_bar_on_top false - set draw_progress_bar_in_status_bar true - set draw_borders both - set dirname_in_tabs true - set mouse_enabled true - set display_size_in_main_column true - set display_size_in_status_bar true - set display_free_space_in_status_bar true - set display_tags_in_all_columns true - set update_title false - set update_tmux_title true - set shorten_title 3 - set hostname_in_titlebar true - set tilde_in_titlebar false - set max_history_size 20 - set max_console_history_size 50 - set scroll_offset 8 - set flushinput true - set padding_right true - set autosave_bookmarks true - set save_backtick_bookmark true - set autoupdate_cumulative_size false - set show_cursor false - set sort natural - set sort_reverse false - set sort_case_insensitive true - set sort_directories_first true - set sort_unicode false - set xterm_alt_key false - set cd_bookmarks true - set cd_tab_case sensitive - set cd_tab_fuzzy true - set preview_max_size 0 - set hint_collapse_threshold 10 - set show_selection_in_titlebar true - set idle_delay 2000 - set metadata_deep_search false - set clear_filters_on_dir_change false - set line_numbers relative - set relative_current_zero true - set one_indexed false - set save_tabs_on_exit false - set filter_dead_tabs_on_startup true - set wrap_scroll false - set global_inode_type_filter - set freeze_files false - set size_in_bytes false - set binary_size_prefix true - set nested_ranger_warning true - alias e edit - alias q quit - alias q! quit! - alias qa quitall - alias qa! quitall! - alias qall quitall - alias qall! quitall! - alias setl setlocal - - alias filter scout -prts - alias hide scout -prtsv - alias find scout -aets - alias mark scout -mr - alias unmark scout -Mr - alias search scout -rs - alias search_inc scout -rts - alias travel scout -aefklst - - alias unnarrow narrow False - map Q quitall - map q quit - copymap q ZZ ZQ - - map R reload_cwd - map F set freeze_files! - map reset - map redraw_window - map abort - map change_mode normal - map ~ set viewmode! - - map i display_file - map scroll_preview 1 - map scroll_preview -1 - map ? help - map W display_log - map w taskview_open - map S shell $SHELL - - map : console - map ; console - map ! console shell%space - map @ console -p6 shell %%s - map # console shell -p%space - map s console shell%space - map r chain draw_possible_programs; console open_with%space - map f console find%space - map cd console cd%space - - map chain console; eval fm.ui.console.history_move(-1) - - map Mf linemode filename - map Mi linemode fileinfo - map Mm linemode mtime - map Mh linemode humanreadablemtime - map Mp linemode permissions - map Ms linemode sizemtime - map MH linemode sizehumanreadablemtime - map Mt linemode metatitle - - map t tag_toggle - map ut tag_remove - map " tag_toggle tag=%any - map mark_files toggle=True - map v mark_files all=True toggle=True - map uv mark_files all=True val=False - map V toggle_visual_mode - map uV toggle_visual_mode reverse=True - - map help - map rename_append - map display_file - map edit - map copy - map cut - map console mkdir%space - map console delete - map exit - - copymap k - copymap j - copymap h - copymap l - copymap gg - copymap G - copymap - copymap - - map J move down=0.5 pages=True - map K move up=0.5 pages=True - copymap J - copymap K - - map H history_go -1 - map L history_go 1 - map ] move_parent 1 - map [ move_parent -1 - map } traverse - map { traverse_backwards - map ) jump_non - - map gh cd ~ - map ge cd /etc - map gu cd /usr - map gd cd /dev - map gl cd -r . - map gL cd -r %f - map go cd /opt - map gv cd /var - map gm cd /media - map gi eval fm.cd('/run/media/' + os.getenv('USER')) - map gM cd /mnt - map gs cd /srv - map gp cd /tmp - map gr cd / - map gR eval fm.cd(ranger.RANGERDIR) - map g/ cd / - map g? cd /usr/share/doc/ranger - - map E nvim - map du shell -p du -d 1 -h "$(2>/dev/null >&2 du --apparent-size /dev/null && printf '%s\n' --apparent-size || printf '%s\n' --)" - map dU shell -p du -d 1 -h "$(2>/dev/null >&2 du --apparent-size /dev/null && printf '%s\n' --apparent-size || printf '%s\n' --)" | sort -rh - map yp yank path - map yd yank dir - map yn yank name - map y. yank name_without_extension - - map = chmod - - map cw console rename%space - map a rename_append - map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%")) - map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7) - - map pp paste - map po paste overwrite=True - map pP paste append=True - map pO paste overwrite=True append=True - map pl paste_symlink relative=False - map pL paste_symlink relative=True - map phl paste_hardlink - map pht paste_hardlinked_subtree - map pd console paste dest= - map p` paste dest=%any_path - map p' paste dest=%any_path - - map dD console delete - map dT console trash - - map dd cut - map ud uncut - map da cut mode=add - map dr cut mode=remove - map dt cut mode=toggle - - map yy copy - map uy uncut - map ya copy mode=add - map yr copy mode=remove - map yt copy mode=toggle - - map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier) - map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier) - map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier) - map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier) - map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier) - map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier) - map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier) - map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier) - - map / console search%space - map n search_next - map N search_next forward=False - map ct search_next order=tag - map cs search_next order=size - map ci search_next order=mimetype - map cc search_next order=ctime - map cm search_next order=mtime - map ca search_next order=atime - - map tab_new - map tab_close - map tab_move 1 - map tab_move -1 - map tab_move 1 - map tab_move -1 - map gt tab_move 1 - map gT tab_move -1 - map gn tab_new - map gc tab_close - map uq tab_restore - map tab_open 1 - map tab_open 2 - map tab_open 3 - map tab_open 4 - map tab_open 5 - map tab_open 6 - map tab_open 7 - map tab_open 8 - map tab_open 9 - map tab_shift 1 - map tab_shift -1 - - map or set sort_reverse! - map oz set sort=random - map os chain set sort=size; set sort_reverse=False - map ob chain set sort=basename; set sort_reverse=False - map on chain set sort=natural; set sort_reverse=False - map om chain set sort=mtime; set sort_reverse=False - map oc chain set sort=ctime; set sort_reverse=False - map oa chain set sort=atime; set sort_reverse=False - map ot chain set sort=type; set sort_reverse=False - map oe chain set sort=extension; set sort_reverse=False - - map oS chain set sort=size; set sort_reverse=True - map oB chain set sort=basename; set sort_reverse=True - map oN chain set sort=natural; set sort_reverse=True - map oM chain set sort=mtime; set sort_reverse=True - map oC chain set sort=ctime; set sort_reverse=True - map oA chain set sort=atime; set sort_reverse=True - map oT chain set sort=type; set sort_reverse=True - map oE chain set sort=extension; set sort_reverse=True - - map dc get_cumulative_size - - map zc set collapse_preview! - map zd set sort_directories_first! - map zh set show_hidden! - map set show_hidden! - copymap - copymap - map zI set flushinput! - map zi set preview_images! - map zm set mouse_enabled! - map zp set preview_files! - map zP set preview_directories! - map zs set sort_case_insensitive! - map zu set autoupdate_cumulative_size! - map zv set use_preview_script! - map zf console filter%space - copymap zf zz - - map .d filter_stack add type d - map .f filter_stack add type f - map .l filter_stack add type l - map .m console filter_stack add mime%space - map .n console filter_stack add name%space - map .# console filter_stack add hash%space - map ." filter_stack add duplicate - map .' filter_stack add unique - map .| filter_stack add or - map .& filter_stack add and - map .! filter_stack add not - map .r filter_stack rotate - map .c filter_stack clear - map .* filter_stack decompose - map .p filter_stack pop - map .. filter_stack show - - map ` enter_bookmark %any - map ' enter_bookmark %any - map m set_bookmark %any - map um unset_bookmark %any - - map m draw_bookmarks - copymap m um ` ' p` p' - - eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg)) - eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg)) - eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg)) - eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg)) - eval for arg in "rwxXst": cmd("map +{0} shell -f chmod +{0} %s".format(arg)) - - eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg)) - eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg)) - eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg)) - eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg)) - eval for arg in "rwxXst": cmd("map -{0} shell -f chmod -{0} %s".format(arg)) - - - cmap eval fm.ui.console.tab() - cmap eval fm.ui.console.tab(-1) - cmap eval fm.ui.console.close() - cmap eval fm.ui.console.execute() - cmap redraw_window - - copycmap - copycmap - - cmap eval fm.ui.console.history_move(-1) - cmap eval fm.ui.console.history_move(1) - cmap eval fm.ui.console.move(left=1) - cmap eval fm.ui.console.move(right=1) - cmap eval fm.ui.console.move(right=0, absolute=True) - cmap eval fm.ui.console.move(right=-1, absolute=True) - cmap eval fm.ui.console.move_word(left=1) - cmap eval fm.ui.console.move_word(right=1) - - copycmap - copycmap - - cmap eval fm.ui.console.delete(-1) - cmap eval fm.ui.console.delete(0) - cmap eval fm.ui.console.delete_word() - cmap eval fm.ui.console.delete_word(backward=False) - cmap eval fm.ui.console.delete_rest(1) - cmap eval fm.ui.console.delete_rest(-1) - cmap eval fm.ui.console.paste() - cmap eval fm.ui.console.transpose_chars() - cmap eval fm.ui.console.transpose_words() - - copycmap - - pmap pager_move down=1 - pmap pager_move up=1 - pmap pager_move left=4 - pmap pager_move right=4 - pmap pager_move to=0 - pmap pager_move to=-1 - pmap pager_move down=1.0 pages=True - pmap pager_move up=1.0 pages=True - pmap pager_move down=0.5 pages=True - pmap pager_move up=0.5 pages=True - - copypmap k - copypmap j - copypmap h - copypmap l - copypmap g - copypmap G - copypmap d - copypmap u - copypmap n f - copypmap p b - - pmap redraw_window - pmap pager_close - copypmap q Q i - pmap E edit_file - - tmap taskview_move up=1 - tmap taskview_move down=1 - tmap taskview_move to=0 - tmap taskview_move to=-1 - tmap taskview_move down=1.0 pages=True - tmap taskview_move up=1.0 pages=True - tmap taskview_move down=0.5 pages=True - tmap taskview_move up=0.5 pages=True - - copytmap k - copytmap j - copytmap g - copytmap G - copytmap u - copytmap n f - copytmap p b - - tmap J eval -q fm.ui.taskview.task_move(-1) - tmap K eval -q fm.ui.taskview.task_move(0) - tmap dd eval -q fm.ui.taskview.task_remove() - tmap eval -q fm.ui.taskview.task_move(-1) - tmap eval -q fm.ui.taskview.task_move(0) - tmap eval -q fm.ui.taskview.task_remove() - - tmap redraw_window - tmap taskview_close - copytmap q Q w - ''; - extraPackages = [ ]; - mappings = { - Q = "quitall"; - q = "quit"; - }; - plugins = [ - { - name = "zoxide"; - src = builtins.fetchGit { - url = "https://github.com/jchook/ranger-zoxide.git"; - rev = "363df97af34c96ea873c5b13b035413f56b12ead"; - }; - } - { - name = "tmux"; - src = builtins.fetchGit { - url = "https://github.com/joouha/ranger_tmux.git"; - rev = "05ba5ddf2ce5659a90aa0ada70eb1078470d972a"; - }; - } - { - name = "ranger_devicons"; - src = builtins.fetchGit { - url = "https://github.com/alexanderjeurissen/ranger_devicons.git"; - rev = "1bcaff0366a9d345313dc5af14002cfdcddabb82"; - }; - } - ]; - settings = { - column_ratios = "1,3,3"; - confirm_on_delete = "never"; - scroll_offset = 8; - unicode_ellipsis = true; - }; - }; programs.fzf = { enable = true; tmux.enableShellIntegration = true; @@ -608,131 +125,6 @@ header = "#87afaf"; }; }; - programs.tmux = { - enable = true; - baseIndex = 1; - clock24 = true; - disableConfirmationPrompt = true; - keyMode = "vi"; - mouse = true; - newSession = true; - plugins = with pkgs; [ - tmuxPlugins.cpu - { - plugin = tmuxPlugins.resurrect; - extraConfig = "set -g @resurrect-strategy-nvim 'session'"; - } - { - plugin = tmuxPlugins.continuum; - extraConfig = '' - set -g @continuum-restore 'on' - set -g @continuum-save-interval '60' - ''; - } - tmuxPlugins.yank - tmuxPlugins.vim-tmux-navigator - tmuxPlugins.vim-tmux-focus-events - tmuxPlugins.urlview - tmuxPlugins.tmux-fzf - { - plugin = tmuxPlugins.tokyo-night-tmux; - extraConfig = '' - set -g @tokyo-night-tmux_window_id_style digital - set -g @tokyo-night-tmux_pane_id_style hsquare - set -g @tokyo-night-tmux_zoom_id_style dsquare - set -g @tokyo-night-tmux_show_path 1 - set -g @tokyo-night-tmux_path_format relative # 'relative' or 'full' - set -g @tokyo-night-tmux_show_git 1 - if-shell "[[ $(hostname) = 'xps13' ]]" { - # set -g @tokyo-night-tmux_show_netspeed 1 - set -g @tokyo-night-tmux_netspeed_iface 'wlp2s0' - set -g @tokyo-night-tmux_netspeed_showip 1 - # set -g @tokyo-night-tmux_netspeed_refresh 1 - set -g @tokyo-night-tmux_show_battery_widget 1 - set -g @tokyo-night-tmux_battery_name "BAT0" - set -g @tokyo-night-tmux_battery_low_threshold 21 - } - ''; - } - # { - # plugin = tmuxPlugins.tilish; - # extraConfig = '' - # set -g @tilish-navigator 'on' - # set -g @tilish-default 'main-vertical' - # set -g @tilish-enforce 'none' - # set -g escape-time 0 - # set -g @tilish-dmenu 'on' - # ''; - # } - - ]; - prefix = "C-a"; - shell = "${pkgs.zsh}/bin/zsh"; - # terminal = "xterm-kitty:RGB"; - tmuxinator.enable = true; - extraConfig = '' - if-shell "[[ $(hostname) = 'xps13' ]]" { - set-option -as terminal-features 'foot:RGB' - } - - if-shell "[[ $(hostname) = 'Titan' ]]" { - # set-option -as terminal-features 'xterm-256color:RGB' - # set -g default-terminal "tmux-256color" - # set -g terminal-overrides ",xterm-256color:RGB" - set -g default-terminal "tmux-256color" - - # Enable 24-bit color for ANY parent terminal tmux detects - # (covers foot, kitty, wezterm, alacritty, xterm-256color, etc.) - set-option -as terminal-features '*:RGB' - - # If you previously set terminal-overrides/Tc, drop them to avoid conflicts - # set -gu terminal-overrides # uncomment if you had overrides before - } - - if-shell "[[ $(hostname) = 'Athena' ]]" { - # set-option -as terminal-features 'xterm-256color:RGB' - # set -g default-terminal "tmux-256color" - # set -g terminal-overrides ",xterm-256color:RGB" - set -g default-terminal "tmux-256color" - - # Enable 24-bit color for ANY parent terminal tmux detects - # (covers foot, kitty, wezterm, alacritty, xterm-256color, etc.) - set-option -as terminal-features '*:RGB' - - # If you previously set terminal-overrides/Tc, drop them to avoid conflicts - # set -gu terminal-overrides # uncomment if you had overrides before - } - - set-option -g update-environment "DISPLAY XAUTHORITY WAYLAND_DISPLAY XDG_RUNTIME_DIR HYPRLAND_INSTANCE_SIGNATURE" - set -g focus-events on - set -g escape-time 3 - set-option -g status-position top - set -g default-terminal 'tmux-256color' - bind-key b choose-tree -Z "run-shell 'tmux swap-pane -s %%'" - # bind C-p display-popup -E -w 60% -h 70% 'tmuxsessions.sh' - bind C-p run-shell 'tmuxsessions.sh' - bind C-d run-shell 'dotfile-picker.sh' - bind [ run-shell 'project-picker.sh' - # bind C-c display-popup -E -w 50% -h 50% 'nvim +":cd ~/org" ~/org/refile.norg' - # bind C-c display-popup -E -w 50% -h 50% 'nvim +"VimwikiIndex" - bind C-c display-popup -E -w 60% -h 60% "pytui -n" - bind m display-popup -E -w 60% -h 60% "pytui -m" - # bind C-w display-popup -E -w 40% -h 60% "pytui -D" - - bind C-o display-popup -E -w 50% -h 50% 'igrep ~/wiki/notes' - - bind j run-shell 'popuptmux' - bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!" - bind i split-window -v -c '\ - #{pane_current_path}' 'emojicherrypick.py --menu fzf\ - ' - bind-key -n F4 run-shell 'ranger' - # bind-key -n C-e split-window -v -c '\ - #{pane_current_path}' 'vifm\' - bind-key -n C-f split-window 'ranger .' - bind F3 send-keys 'igrep .' - ''; - }; programs.git = { enable = true; userName = "th3r00t"; @@ -777,64 +169,4 @@ }; }; }; - programs.starship = { - enable = true; - # custom settings - settings = { - add_newline = false; - aws.disabled = true; - gcloud.disabled = true; - line_break.disabled = true; - }; - }; - programs.zsh = { - enable = true; - sessionVariables = { - PATH="$PATH:$HOME/.local/usr/bin"; - PYTHONBREAKPOINT="pudb.set_trace"; - }; - oh-my-zsh = { - enable = true; - plugins = [ - "git" - "colored-man-pages" - "colorize" - "command-not-found" - "compleat" - "dirhistory" - "fzf" - "git-auto-fetch" - "git-extras" - "git-prompt" - "gitignore" - "gpg-agent" - "history" - "jsontools" - "man" - "nmap" - "pip" - "python" - "ssh-agent" - "sudo" - "tmux" - "vi-mode" - "zsh-navigation-tools" - ]; - # theme = "starship"; - }; - }; - programs.bash = { - enable = true; - enableCompletion = true; - bashrcExtra = '' - export PATH="$PATH:$HOME/.local/usr/bin"; - ''; - shellAliases = { - urlencode = "python3 -c 'import sys, urllib.parse as ul; print(ul.quote_plus(sys.stdin.read()))'"; - urldecode = "python3 -c 'import sys, urllib.parse as ul; print(il.unquote_plus(sys.stdin.read()))'"; - ls = "eza"; - cat = "bat"; - }; - }; - } diff --git a/modules/ranger.nix b/modules/ranger.nix new file mode 100644 index 0000000..5f674b3 --- /dev/null +++ b/modules/ranger.nix @@ -0,0 +1,489 @@ +{ pkgs, config, ... }: +{ + programs.ranger = { + enable = true; + extraConfig = '' + set viewmode miller + set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$ + set show_hidden false + set confirm_on_delete multiple + set confirm_on_trash like_delete + set use_preview_script true + set automatically_count_files true + set open_all_images true + set vcs_aware true + set vcs_backend_git enabled + set vcs_backend_hg disabled + set vcs_backend_bzr disabled + set vcs_backend_svn disabled + set vcs_msg_length 50 + set preview_images true + set preview_images_method kitty + set w3m_delay 0.02 + set w3m_offset 0 + set sixel_dithering FloydSteinberg + set unicode_ellipsis false + set bidi_support false + set show_hidden_bookmarks true + set colorscheme jungle + set colorscheme snow + set colorscheme solarized + set colorscheme default + set preview_files true + set preview_directories true + set collapse_preview true + set wrap_plaintext_previews false + set save_console_history true + set status_bar_on_top false + set draw_progress_bar_in_status_bar true + set draw_borders both + set dirname_in_tabs true + set mouse_enabled true + set display_size_in_main_column true + set display_size_in_status_bar true + set display_free_space_in_status_bar true + set display_tags_in_all_columns true + set update_title false + set update_tmux_title true + set shorten_title 3 + set hostname_in_titlebar true + set tilde_in_titlebar false + set max_history_size 20 + set max_console_history_size 50 + set scroll_offset 8 + set flushinput true + set padding_right true + set autosave_bookmarks true + set save_backtick_bookmark true + set autoupdate_cumulative_size false + set show_cursor false + set sort natural + set sort_reverse false + set sort_case_insensitive true + set sort_directories_first true + set sort_unicode false + set xterm_alt_key false + set cd_bookmarks true + set cd_tab_case sensitive + set cd_tab_fuzzy true + set preview_max_size 0 + set hint_collapse_threshold 10 + set show_selection_in_titlebar true + set idle_delay 2000 + set metadata_deep_search false + set clear_filters_on_dir_change false + set line_numbers relative + set relative_current_zero true + set one_indexed false + set save_tabs_on_exit false + set filter_dead_tabs_on_startup true + set wrap_scroll false + set global_inode_type_filter + set freeze_files false + set size_in_bytes false + set binary_size_prefix true + set nested_ranger_warning true + alias e edit + alias q quit + alias q! quit! + alias qa quitall + alias qa! quitall! + alias qall quitall + alias qall! quitall! + alias setl setlocal + + alias filter scout -prts + alias hide scout -prtsv + alias find scout -aets + alias mark scout -mr + alias unmark scout -Mr + alias search scout -rs + alias search_inc scout -rts + alias travel scout -aefklst + + alias unnarrow narrow False + map Q quitall + map q quit + copymap q ZZ ZQ + + map R reload_cwd + map F set freeze_files! + map reset + map redraw_window + map abort + map change_mode normal + map ~ set viewmode! + + map i display_file + map scroll_preview 1 + map scroll_preview -1 + map ? help + map W display_log + map w taskview_open + map S shell $SHELL + + map : console + map ; console + map ! console shell%space + map @ console -p6 shell %%s + map # console shell -p%space + map s console shell%space + map r chain draw_possible_programs; console open_with%space + map f console find%space + map cd console cd%space + + map chain console; eval fm.ui.console.history_move(-1) + + map Mf linemode filename + map Mi linemode fileinfo + map Mm linemode mtime + map Mh linemode humanreadablemtime + map Mp linemode permissions + map Ms linemode sizemtime + map MH linemode sizehumanreadablemtime + map Mt linemode metatitle + + map t tag_toggle + map ut tag_remove + map " tag_toggle tag=%any + map mark_files toggle=True + map v mark_files all=True toggle=True + map uv mark_files all=True val=False + map V toggle_visual_mode + map uV toggle_visual_mode reverse=True + + map help + map rename_append + map display_file + map edit + map copy + map cut + map console mkdir%space + map console delete + map exit + + copymap k + copymap j + copymap h + copymap l + copymap gg + copymap G + copymap + copymap + + map J move down=0.5 pages=True + map K move up=0.5 pages=True + copymap J + copymap K + + map H history_go -1 + map L history_go 1 + map ] move_parent 1 + map [ move_parent -1 + map } traverse + map { traverse_backwards + map ) jump_non + + map gh cd ~ + map ge cd /etc + map gu cd /usr + map gd cd /dev + map gl cd -r . + map gL cd -r %f + map go cd /opt + map gv cd /var + map gm cd /media + map gi eval fm.cd('/run/media/' + os.getenv('USER')) + map gM cd /mnt + map gs cd /srv + map gp cd /tmp + map gr cd / + map gR eval fm.cd(ranger.RANGERDIR) + map g/ cd / + map g? cd /usr/share/doc/ranger + + map E nvim + map du shell -p du -d 1 -h "$(2>/dev/null >&2 du --apparent-size /dev/null && printf '%s\n' --apparent-size || printf '%s\n' --)" + map dU shell -p du -d 1 -h "$(2>/dev/null >&2 du --apparent-size /dev/null && printf '%s\n' --apparent-size || printf '%s\n' --)" | sort -rh + map yp yank path + map yd yank dir + map yn yank name + map y. yank name_without_extension + + map = chmod + + map cw console rename%space + map a rename_append + map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%")) + map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7) + + map pp paste + map po paste overwrite=True + map pP paste append=True + map pO paste overwrite=True append=True + map pl paste_symlink relative=False + map pL paste_symlink relative=True + map phl paste_hardlink + map pht paste_hardlinked_subtree + map pd console paste dest= + map p` paste dest=%any_path + map p' paste dest=%any_path + + map dD console delete + map dT console trash + + map dd cut + map ud uncut + map da cut mode=add + map dr cut mode=remove + map dt cut mode=toggle + + map yy copy + map uy uncut + map ya copy mode=add + map yr copy mode=remove + map yt copy mode=toggle + + map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier) + map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier) + map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier) + map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier) + map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier) + map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier) + map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier) + map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier) + + map / console search%space + map n search_next + map N search_next forward=False + map ct search_next order=tag + map cs search_next order=size + map ci search_next order=mimetype + map cc search_next order=ctime + map cm search_next order=mtime + map ca search_next order=atime + + map tab_new + map tab_close + map tab_move 1 + map tab_move -1 + map tab_move 1 + map tab_move -1 + map gt tab_move 1 + map gT tab_move -1 + map gn tab_new + map gc tab_close + map uq tab_restore + map tab_open 1 + map tab_open 2 + map tab_open 3 + map tab_open 4 + map tab_open 5 + map tab_open 6 + map tab_open 7 + map tab_open 8 + map tab_open 9 + map tab_shift 1 + map tab_shift -1 + + map or set sort_reverse! + map oz set sort=random + map os chain set sort=size; set sort_reverse=False + map ob chain set sort=basename; set sort_reverse=False + map on chain set sort=natural; set sort_reverse=False + map om chain set sort=mtime; set sort_reverse=False + map oc chain set sort=ctime; set sort_reverse=False + map oa chain set sort=atime; set sort_reverse=False + map ot chain set sort=type; set sort_reverse=False + map oe chain set sort=extension; set sort_reverse=False + + map oS chain set sort=size; set sort_reverse=True + map oB chain set sort=basename; set sort_reverse=True + map oN chain set sort=natural; set sort_reverse=True + map oM chain set sort=mtime; set sort_reverse=True + map oC chain set sort=ctime; set sort_reverse=True + map oA chain set sort=atime; set sort_reverse=True + map oT chain set sort=type; set sort_reverse=True + map oE chain set sort=extension; set sort_reverse=True + + map dc get_cumulative_size + + map zc set collapse_preview! + map zd set sort_directories_first! + map zh set show_hidden! + map set show_hidden! + copymap + copymap + map zI set flushinput! + map zi set preview_images! + map zm set mouse_enabled! + map zp set preview_files! + map zP set preview_directories! + map zs set sort_case_insensitive! + map zu set autoupdate_cumulative_size! + map zv set use_preview_script! + map zf console filter%space + copymap zf zz + + map .d filter_stack add type d + map .f filter_stack add type f + map .l filter_stack add type l + map .m console filter_stack add mime%space + map .n console filter_stack add name%space + map .# console filter_stack add hash%space + map ." filter_stack add duplicate + map .' filter_stack add unique + map .| filter_stack add or + map .& filter_stack add and + map .! filter_stack add not + map .r filter_stack rotate + map .c filter_stack clear + map .* filter_stack decompose + map .p filter_stack pop + map .. filter_stack show + + map ` enter_bookmark %any + map ' enter_bookmark %any + map m set_bookmark %any + map um unset_bookmark %any + + map m draw_bookmarks + copymap m um ` ' p` p' + + eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg)) + eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg)) + eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg)) + eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg)) + eval for arg in "rwxXst": cmd("map +{0} shell -f chmod +{0} %s".format(arg)) + + eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg)) + eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg)) + eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg)) + eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg)) + eval for arg in "rwxXst": cmd("map -{0} shell -f chmod -{0} %s".format(arg)) + + + cmap eval fm.ui.console.tab() + cmap eval fm.ui.console.tab(-1) + cmap eval fm.ui.console.close() + cmap eval fm.ui.console.execute() + cmap redraw_window + + copycmap + copycmap + + cmap eval fm.ui.console.history_move(-1) + cmap eval fm.ui.console.history_move(1) + cmap eval fm.ui.console.move(left=1) + cmap eval fm.ui.console.move(right=1) + cmap eval fm.ui.console.move(right=0, absolute=True) + cmap eval fm.ui.console.move(right=-1, absolute=True) + cmap eval fm.ui.console.move_word(left=1) + cmap eval fm.ui.console.move_word(right=1) + + copycmap + copycmap + + cmap eval fm.ui.console.delete(-1) + cmap eval fm.ui.console.delete(0) + cmap eval fm.ui.console.delete_word() + cmap eval fm.ui.console.delete_word(backward=False) + cmap eval fm.ui.console.delete_rest(1) + cmap eval fm.ui.console.delete_rest(-1) + cmap eval fm.ui.console.paste() + cmap eval fm.ui.console.transpose_chars() + cmap eval fm.ui.console.transpose_words() + + copycmap + + pmap pager_move down=1 + pmap pager_move up=1 + pmap pager_move left=4 + pmap pager_move right=4 + pmap pager_move to=0 + pmap pager_move to=-1 + pmap pager_move down=1.0 pages=True + pmap pager_move up=1.0 pages=True + pmap pager_move down=0.5 pages=True + pmap pager_move up=0.5 pages=True + + copypmap k + copypmap j + copypmap h + copypmap l + copypmap g + copypmap G + copypmap d + copypmap u + copypmap n f + copypmap p b + + pmap redraw_window + pmap pager_close + copypmap q Q i + pmap E edit_file + + tmap taskview_move up=1 + tmap taskview_move down=1 + tmap taskview_move to=0 + tmap taskview_move to=-1 + tmap taskview_move down=1.0 pages=True + tmap taskview_move up=1.0 pages=True + tmap taskview_move down=0.5 pages=True + tmap taskview_move up=0.5 pages=True + + copytmap k + copytmap j + copytmap g + copytmap G + copytmap u + copytmap n f + copytmap p b + + tmap J eval -q fm.ui.taskview.task_move(-1) + tmap K eval -q fm.ui.taskview.task_move(0) + tmap dd eval -q fm.ui.taskview.task_remove() + tmap eval -q fm.ui.taskview.task_move(-1) + tmap eval -q fm.ui.taskview.task_move(0) + tmap eval -q fm.ui.taskview.task_remove() + + tmap redraw_window + tmap taskview_close + copytmap q Q w + ''; + extraPackages = [ ]; + mappings = { + Q = "quitall"; + q = "quit"; + }; + plugins = [ + { + name = "zoxide"; + src = builtins.fetchGit { + url = "https://github.com/jchook/ranger-zoxide.git"; + rev = "363df97af34c96ea873c5b13b035413f56b12ead"; + }; + } + { + name = "tmux"; + src = builtins.fetchGit { + url = "https://github.com/joouha/ranger_tmux.git"; + rev = "05ba5ddf2ce5659a90aa0ada70eb1078470d972a"; + }; + } + { + name = "ranger_devicons"; + src = builtins.fetchGit { + url = "https://github.com/alexanderjeurissen/ranger_devicons.git"; + rev = "1bcaff0366a9d345313dc5af14002cfdcddabb82"; + }; + } + ]; + settings = { + column_ratios = "1,3,3"; + confirm_on_delete = "never"; + scroll_offset = 8; + unicode_ellipsis = true; + }; + }; +} diff --git a/modules/shells.nix b/modules/shells.nix new file mode 100644 index 0000000..7185e83 --- /dev/null +++ b/modules/shells.nix @@ -0,0 +1,62 @@ +{ pkgs, config, ... }: +{ + programs.starship = { + enable = true; + # custom settings + settings = { + add_newline = false; + aws.disabled = true; + gcloud.disabled = true; + line_break.disabled = true; + }; + }; + programs.zsh = { + enable = true; + sessionVariables = { + PATH="$PATH:$HOME/.local/usr/bin"; + PYTHONBREAKPOINT="pudb.set_trace"; + }; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "colored-man-pages" + "colorize" + "command-not-found" + "compleat" + "dirhistory" + "fzf" + "git-auto-fetch" + "git-extras" + "git-prompt" + "gitignore" + "gpg-agent" + "history" + "jsontools" + "man" + "nmap" + "pip" + "python" + "ssh-agent" + "sudo" + "tmux" + "vi-mode" + "zsh-navigation-tools" + ]; + # theme = "starship"; + }; + }; + programs.bash = { + enable = true; + enableCompletion = true; + bashrcExtra = '' + export PATH="$PATH:$HOME/.local/usr/bin"; + ''; + shellAliases = { + urlencode = "python3 -c 'import sys, urllib.parse as ul; print(ul.quote_plus(sys.stdin.read()))'"; + urldecode = "python3 -c 'import sys, urllib.parse as ul; print(il.unquote_plus(sys.stdin.read()))'"; + ls = "eza"; + cat = "bat"; + }; + }; +} diff --git a/modules/tmux.nix b/modules/tmux.nix new file mode 100644 index 0000000..0364f86 --- /dev/null +++ b/modules/tmux.nix @@ -0,0 +1,128 @@ +{ pkgs, config, ... }: +{ + programs.tmux = { + enable = true; + baseIndex = 1; + clock24 = true; + disableConfirmationPrompt = true; + keyMode = "vi"; + mouse = true; + newSession = true; + plugins = with pkgs; [ + tmuxPlugins.cpu + { + plugin = tmuxPlugins.resurrect; + extraConfig = "set -g @resurrect-strategy-nvim 'session'"; + } + { + plugin = tmuxPlugins.continuum; + extraConfig = '' + set -g @continuum-restore 'on' + set -g @continuum-save-interval '60' + ''; + } + tmuxPlugins.yank + tmuxPlugins.vim-tmux-navigator + tmuxPlugins.vim-tmux-focus-events + tmuxPlugins.urlview + tmuxPlugins.tmux-fzf + { + plugin = tmuxPlugins.tokyo-night-tmux; + extraConfig = '' + set -g @tokyo-night-tmux_window_id_style digital + set -g @tokyo-night-tmux_pane_id_style hsquare + set -g @tokyo-night-tmux_zoom_id_style dsquare + set -g @tokyo-night-tmux_show_path 1 + set -g @tokyo-night-tmux_path_format relative # 'relative' or 'full' + set -g @tokyo-night-tmux_show_git 0 + if-shell "[[ $(hostname) = 'xps13' ]]" { + # set -g @tokyo-night-tmux_show_netspeed 1 + set -g @tokyo-night-tmux_netspeed_iface 'wlp2s0' + set -g @tokyo-night-tmux_netspeed_showip 1 + # set -g @tokyo-night-tmux_netspeed_refresh 1 + set -g @tokyo-night-tmux_show_battery_widget 1 + set -g @tokyo-night-tmux_battery_name "BAT0" + set -g @tokyo-night-tmux_battery_low_threshold 21 + } + ''; + } + # { + # plugin = tmuxPlugins.tilish; + # extraConfig = '' + # set -g @tilish-navigator 'on' + # set -g @tilish-default 'main-vertical' + # set -g @tilish-enforce 'none' + # set -g escape-time 0 + # set -g @tilish-dmenu 'on' + # ''; + # } + + ]; + prefix = "C-a"; + shell = "${pkgs.zsh}/bin/zsh"; + # terminal = "xterm-kitty:RGB"; + tmuxinator.enable = true; + extraConfig = '' + if-shell "[[ $(hostname) = 'xps13' ]]" { + set-option -as terminal-features 'foot:RGB' + } + + if-shell "[[ $(hostname) = 'Titan' ]]" { + # set-option -as terminal-features 'xterm-256color:RGB' + # set -g default-terminal "tmux-256color" + # set -g terminal-overrides ",xterm-256color:RGB" + set -g default-terminal "tmux-256color" + + # Enable 24-bit color for ANY parent terminal tmux detects + # (covers foot, kitty, wezterm, alacritty, xterm-256color, etc.) + set-option -as terminal-features '*:RGB' + + # If you previously set terminal-overrides/Tc, drop them to avoid conflicts + # set -gu terminal-overrides # uncomment if you had overrides before + } + + if-shell "[[ $(hostname) = 'Athena' ]]" { + # set-option -as terminal-features 'xterm-256color:RGB' + # set -g default-terminal "tmux-256color" + # set -g terminal-overrides ",xterm-256color:RGB" + set -g default-terminal "tmux-256color" + + # Enable 24-bit color for ANY parent terminal tmux detects + # (covers foot, kitty, wezterm, alacritty, xterm-256color, etc.) + set-option -as terminal-features '*:RGB' + + # If you previously set terminal-overrides/Tc, drop them to avoid conflicts + # set -gu terminal-overrides # uncomment if you had overrides before + } + + set-option -g update-environment "DISPLAY XAUTHORITY WAYLAND_DISPLAY XDG_RUNTIME_DIR HYPRLAND_INSTANCE_SIGNATURE" + set -g focus-events on + set -g escape-time 3 + set-option -g status-position top + set -g default-terminal 'tmux-256color' + bind-key b choose-tree -Z "run-shell 'tmux swap-pane -s %%'" + # bind C-p display-popup -E -w 60% -h 70% 'tmuxsessions.sh' + bind C-p run-shell 'tmuxsessions.sh' + bind C-d run-shell 'dotfile-picker.sh' + bind [ run-shell 'project-picker.sh' + # bind C-c display-popup -E -w 50% -h 50% 'nvim +":cd ~/org" ~/org/refile.norg' + # bind C-c display-popup -E -w 50% -h 50% 'nvim +"VimwikiIndex" + bind C-c display-popup -E -w 60% -h 60% "pytui -n" + bind m display-popup -E -w 60% -h 60% "pytui -m" + # bind C-w display-popup -E -w 40% -h 60% "pytui -D" + + bind C-o display-popup -E -w 50% -h 50% 'igrep ~/wiki/notes' + + bind j run-shell 'popuptmux' + bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!" + bind i split-window -v -c '\ + #{pane_current_path}' 'emojicherrypick.py --menu fzf\ + ' + bind-key -n F4 run-shell 'ranger' + # bind-key -n C-e split-window -v -c '\ + #{pane_current_path}' 'vifm\' + bind-key -n C-f split-window 'ranger .' + bind F3 send-keys 'igrep .' + ''; + }; +}