diff --git a/flake.lock b/flake.lock index 1c80221..c62aeca 100644 --- a/flake.lock +++ b/flake.lock @@ -182,11 +182,11 @@ "neovim-config": { "flake": false, "locked": { - "lastModified": 1757304493, - "narHash": "sha256-SjqJ1J/wXhWdbw21zrp4+xw6+ybypKL7LF/Zr6jEsSg=", + "lastModified": 1757442412, + "narHash": "sha256-3VNvnBxxiocReDnWH8w76eSKmetijt5YG9rU8H2+Sl8=", "ref": "master", - "rev": "bbde81753f12c0640cae09b91fb90dd3c3be526a", - "revCount": 14, + "rev": "1e613cef53946f3dc9b7c64dfd28bf8ca9bf81d0", + "revCount": 24, "type": "git", "url": "https://git.th3r00t.net/th3r00t/nvim-config.git" }, diff --git a/flake.nix b/flake.nix index a527545..fdf2892 100644 --- a/flake.nix +++ b/flake.nix @@ -46,8 +46,8 @@ modules = [ { nixpkgs.overlays = overlays; } sops-nix.nixosModules.sops - ./modules/configuration-xps13.nix - ./modules/hardware-configuration-xps13.nix + ./modules/configurations/configuration-xps13.nix + ./modules/hardware/hardware-configuration-xps13.nix nixos-hardware.nixosModules.dell-xps-13-9370 home-manager.nixosModules.home-manager { # home-manager.useGlobalPkgs = true; @@ -55,7 +55,7 @@ home-manager.sharedModules = [ {nixpkgs.overlays = overlays;} ]; home-manager.users.th3r00t = { imports = [ - ./home-xps13.nix + ./home/xps13.nix nix-index-database.homeModules.nix-index ]; home.file.".config/nvim" = { @@ -75,15 +75,15 @@ { nixpkgs.overlays = overlays; } disko.nixosModules.disko sops-nix.nixosModules.sops - ./modules/hardware-configuration-titan.nix - ./modules/configuration-server.nix + ./modules/hardware/hardware-configuration-titan.nix + ./modules/configurations/configuration-server.nix home-manager.nixosModules.home-manager { # home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.sharedModules = [ {nixpkgs.overlays = overlays;} ]; home-manager.users.th3r00t = { imports = [ - ./home-server.nix + ./home/server.nix nix-index-database.homeModules.nix-index ]; home.file.".config/nvim" = { @@ -104,15 +104,15 @@ { nixpkgs.overlays = overlays; } disko.nixosModules.disko sops-nix.nixosModules.sops - ./modules/hardware-configuration-athena.nix - ./modules/configuration-Athena.nix + ./modules/hardware/hardware-configuration-athena.nix + ./modules/configurations/configuration-Athena.nix home-manager.nixosModules.home-manager { # home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.sharedModules = [ {nixpkgs.overlays = overlays;} ]; home-manager.users.th3r00t = { imports = [ - ./home-server.nix + ./home/server.nix nix-index-database.homeModules.nix-index ]; home.file.".config/nvim" = { diff --git a/home/.local/usr/bin/hyprvirtmon.py b/home/.local/usr/bin/hyprvirtmon.py index b5960ca..07ec080 100755 --- a/home/.local/usr/bin/hyprvirtmon.py +++ b/home/.local/usr/bin/hyprvirtmon.py @@ -30,6 +30,10 @@ if __name__ == "__main__": print("Failed to stop wayvnc", file=sys.stderr) sys.exit(1) else: + subprocess.run(["hyprctl", "keyword", "decoration:blur:enabled", "true"]) + subprocess.run(["hyprctl", "keyword", "decoration:drop_shadow", "true"]) + subprocess.run(["hyprctl", "keyword", "decoration:active_opacity", "1.0"]) + subprocess.run(["hyprctl", "keyword", "decoration:inactive_opacity", "0.7"]) sys.exit(0) else: result = subprocess.run( @@ -50,6 +54,10 @@ if __name__ == "__main__": file=sys.stderr) sys.exit(1) else: + subprocess.run(["hyprctl", "keyword", "decoration:blur:enabled", "false"]) + subprocess.run(["hyprctl", "keyword", "decoration:drop_shadow", "false"]) + subprocess.run(["hyprctl", "keyword", "decoration:active_opacity", "1.0"]) + subprocess.run(["hyprctl", "keyword", "decoration:inactive_opacity", "1.0"]) result = subprocess.Popen( ["wayvnc", "--output=Virtual-1", "0.0.0.0", "5900", "&"], stdout=subprocess.DEVNULL, diff --git a/home/.local/usr/bin/pytui b/home/.local/usr/bin/pytui index 121819e..e281ca1 100755 Binary files a/home/.local/usr/bin/pytui and b/home/.local/usr/bin/pytui differ diff --git a/home/.local/usr/binc b/home/.local/usr/binc new file mode 100755 index 0000000..f7e92e8 Binary files /dev/null and b/home/.local/usr/binc differ diff --git a/home-server.nix b/home/server.nix similarity index 100% rename from home-server.nix rename to home/server.nix diff --git a/home-xps13.nix b/home/xps13 similarity index 51% rename from home-xps13.nix rename to home/xps13 index 424490a..f59a69c 100644 --- a/home-xps13.nix +++ b/home/xps13 @@ -50,6 +50,9 @@ "application/xhtml+xml" = [ "qutebrowser.desktop" ]; "application/xml" = [ "qutebrowser.desktop" ]; "image/svg+xml" = [ "qutebrowser.desktop" ]; + "image/png" = [ "qutebrowser.desktop" ]; + "image/jpeg" = [ "qutebrowser.desktop" ]; + "image/gif" = [ "qutebrowser.desktop" ]; "application/pdf" = [ "qutebrowser.desktop" ]; "video/mp4" = [ "qutebrowser.desktop" ]; "video/webm" = [ "qutebrowser.desktop" ]; @@ -104,85 +107,80 @@ hyprshot nim nimlangserver + nimlsp nimble + dunst ]; - services.udiskie = { - enable = false; - settings = { - program_options = { - file_manager = "${pkgs.nemo-with-extensions}/bin/nemo"; - }; - }; - }; - programs.ghostty = { - enable = true; - settings = { - theme = "tokyonight"; - font-family = "FiraCode Nerd Font Mono"; - font-size = 10; - keybind = [ - ]; - }; - installVimSyntax = true; - enableZshIntegration = true; - installBatSyntax = true; - themes = { - catppuccin-mocha = { - background = "1e1e2e"; - cursor-color = "f5e0dc"; - foreground = "cdd6f4"; - palette = [ - "0=#45475a" - "1=#f38ba8" - "2=#a6e3a1" - "3=#f9e2af" - "4=#89b4fa" - "5=#f5c2e7" - "6=#94e2d5" - "7=#bac2de" - "8=#585b70" - "9=#f38ba8" - "10=#a6e3a1" - "11=#f9e2af" - "12=#89b4fa" - "13=#f5c2e7" - "14=#94e2d5" - "15=#a6adc8" + programs = { + ghostty = { + enable = true; + settings = { + theme = "tokyonight"; + font-family = "FiraCode Nerd Font Mono"; + font-size = 10; + keybind = [ ]; - selection-background = "353749"; - selection-foreground = "cdd6f4"; + }; + installVimSyntax = true; + enableZshIntegration = true; + installBatSyntax = true; + themes = { + catppuccin-mocha = { + background = "1e1e2e"; + cursor-color = "f5e0dc"; + foreground = "cdd6f4"; + palette = [ + "0=#45475a" + "1=#f38ba8" + "2=#a6e3a1" + "3=#f9e2af" + "4=#89b4fa" + "5=#f5c2e7" + "6=#94e2d5" + "7=#bac2de" + "8=#585b70" + "9=#f38ba8" + "10=#a6e3a1" + "11=#f9e2af" + "12=#89b4fa" + "13=#f5c2e7" + "14=#94e2d5" + "15=#a6adc8" + ]; + selection-background = "353749"; + selection-foreground = "cdd6f4"; + }; }; }; - }; - programs.neovide = { - enable = true; - settings = { - fork = false; - frame = "full"; - idle = true; - maximized = false; - neovim-bin = "${pkgs.neovim}/bin/nvim"; - no-multigrid = false; - srgb = false; - tabs = true; - title-hidden = true; - vsync = true; - wsl = false; + neovide = { + enable = true; + settings = { + fork = false; + frame = "full"; + idle = true; + maximized = false; + neovim-bin = "${pkgs.neovim}/bin/nvim"; + no-multigrid = false; + srgb = false; + tabs = true; + title-hidden = true; + vsync = true; + wsl = false; - font = { - normal = "SauceCodePro Nerd Font Mono"; - size = 11; + font = { + normal = "SauceCodePro Nerd Font Mono"; + size = 11; + }; }; }; - }; - programs.wofi = { - enable = true; - settings = { - location = "top-center"; - allow_markup = true; - width = 400; - }; - style = '' + wofi = { + enable = true; + settings = { + location = "top-center"; + allow_markup = true; + width = 400; + }; + style = '' /* Base */ window { background-color: rgba(17, 24, 39, 0.6); @@ -231,67 +229,110 @@ background-color: rgba(38,50,56,0.1); outline: none; } - ''; - }; - programs.foot = { - enable = true; - server.enable = true; - settings = { - main = { - term = "foot"; - font = "FiraCode Nerd Font Mono:size=6"; - dpi-aware = "yes"; - shell = "${pkgs.zsh}/bin/zsh"; + ''; + }; + kitty = { + enable = true; + enableGitIntegration = true; + font = { + name = "FiraCode Nerd Font Mono"; + size = 10.5; }; - mouse = { hide-when-typing = "yes"; }; - cursor = { style = "block"; blink = "yes"; }; - colors = { - alpha = "0.7"; - background="1a1b26"; - foreground="a9b1d6"; - flash="ff9e64"; - flash-alpha="0.5"; - regular0="1a1b26"; - regular1="f7768e"; - regular2="9ece6a"; - regular3="e0af68"; - regular4="7aa2f7"; - regular5="bb9af7"; - regular6="7dcfff"; - regular7="c0caf5"; - bright0="545c7e"; - bright1="ff7a93"; - bright2="b9f27c"; - bright3="ff9e64"; - bright4="7aa2f7"; - bright5="bb9af7"; - bright6="7dcfff"; - bright7="a9b1d6"; - sixel0="1a1b26"; - sixel1="7aa2f7"; - sixel2="f7768e"; - sixel3="9ece6a"; - sixel4="bb9af7"; - sixel5="7dcfff"; - sixel6="e0af68"; - sixel7="565f89"; - sixel8="414868"; - sixel9="4e5173"; - sixel10="8f5151"; - sixel11="4e7652"; - sixel12="8a4d8f"; - sixel13="4e757a"; - sixel14="8a8851"; - sixel15="a9b1d6"; - selection-foreground="1a1b26"; - selection-background="a9b1d6"; - jump-labels="1a1b26 e0af68"; - scrollback-indicator="1a1b26 7aa2f7"; - search-box-no-match="1a1b26 f7768e"; - search-box-match="1a1b26 e0af68"; - urls="e0af68"; + actionAliases = { + "pytui" = "launch pytui"; + "ranger" = "launch ranger"; + }; + keybindings = { + "ctrl+c" = "copy_or_interupt"; + "ctrl+shift+c" = "pytui -n"; + "ctrl+f" = "ranger ."; + }; + settings = { + scrollback_lines = 10000; + enable_audio_bell = true; + update_check_interval = 7; + }; + # https://github.com/kovidgoyal/kitty-themes/tree/master/themes + themeFile = "tokyo_night_night"; + shellIntegration = { + enableBashIntegration = true; + enableZshIntegration = true; + enableFishIntegration = true; + }; + extraConfig = '' + dynamic_background_opacity yes + background_opacity 0.7 + ''; + }; + foot = { + enable = true; + server.enable = false; + settings = { + main = { + term = "foot"; + font = "FiraCode Nerd Font Mono:size=6"; + dpi-aware = "yes"; + shell = "${pkgs.zsh}/bin/zsh"; + }; + mouse = { hide-when-typing = "yes"; }; + cursor = { style = "block"; blink = "yes"; }; + colors = { + alpha = "0.7"; + background="1a1b26"; + foreground="a9b1d6"; + flash="ff9e64"; + flash-alpha="0.5"; + regular0="1a1b26"; + regular1="f7768e"; + regular2="9ece6a"; + regular3="e0af68"; + regular4="7aa2f7"; + regular5="bb9af7"; + regular6="7dcfff"; + regular7="c0caf5"; + bright0="545c7e"; + bright1="ff7a93"; + bright2="b9f27c"; + bright3="ff9e64"; + bright4="7aa2f7"; + bright5="bb9af7"; + bright6="7dcfff"; + bright7="a9b1d6"; + sixel0="1a1b26"; + sixel1="7aa2f7"; + sixel2="f7768e"; + sixel3="9ece6a"; + sixel4="bb9af7"; + sixel5="7dcfff"; + sixel6="e0af68"; + sixel7="565f89"; + sixel8="414868"; + sixel9="4e5173"; + sixel10="8f5151"; + sixel11="4e7652"; + sixel12="8a4d8f"; + sixel13="4e757a"; + sixel14="8a8851"; + sixel15="a9b1d6"; + selection-foreground="1a1b26"; + selection-background="a9b1d6"; + jump-labels="1a1b26 e0af68"; + scrollback-indicator="1a1b26 7aa2f7"; + search-box-no-match="1a1b26 f7768e"; + search-box-match="1a1b26 e0af68"; + urls="e0af68"; + }; }; }; }; + services.udiskie = { + enable = false; + settings = { + program_options = { + file_manager = "${pkgs.nemo-with-extensions}/bin/nemo"; + }; + }; + }; + services.mpris-proxy.enable = true; home.stateVersion = "25.05"; } diff --git a/modules/configuration-Athena.nix b/modules/configurations/configuration-Athena.nix similarity index 100% rename from modules/configuration-Athena.nix rename to modules/configurations/configuration-Athena.nix diff --git a/modules/configuration-common.nix b/modules/configurations/configuration-common.nix similarity index 100% rename from modules/configuration-common.nix rename to modules/configurations/configuration-common.nix diff --git a/modules/configuration-server.nix b/modules/configurations/configuration-server.nix similarity index 100% rename from modules/configuration-server.nix rename to modules/configurations/configuration-server.nix diff --git a/modules/configuration-xps13.nix b/modules/configurations/configuration-xps13.nix similarity index 93% rename from modules/configuration-xps13.nix rename to modules/configurations/configuration-xps13.nix index c975329..faafc7e 100644 --- a/modules/configuration-xps13.nix +++ b/modules/configurations/configuration-xps13.nix @@ -41,6 +41,19 @@ noto-fonts-emoji ]++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts); }; + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + settings = { + General = { + Experimental = true; + FastConnectable = true; + }; + Policy = { + AutoEnable=true; + }; + }; + }; # Define a user account. Don't forget to set a password with ‘passwd’. @@ -81,6 +94,7 @@ }; services = { + blueman.enable = true; openssh.enable = true; displayManager.autoLogin.enable = true; displayManager.autoLogin.user = "th3r00t"; diff --git a/hardware-configuration.nix b/modules/configurations/hardware-configuration.nix_ similarity index 100% rename from hardware-configuration.nix rename to modules/configurations/hardware-configuration.nix_ diff --git a/modules/hardware-configuration-athena.nix b/modules/hardware/hardware-configuration-athena.nix similarity index 100% rename from modules/hardware-configuration-athena.nix rename to modules/hardware/hardware-configuration-athena.nix diff --git a/modules/hardware-configuration-titan.nix b/modules/hardware/hardware-configuration-titan.nix similarity index 100% rename from modules/hardware-configuration-titan.nix rename to modules/hardware/hardware-configuration-titan.nix diff --git a/modules/hardware-configuration-xps13.nix b/modules/hardware/hardware-configuration-xps13.nix similarity index 100% rename from modules/hardware-configuration-xps13.nix rename to modules/hardware/hardware-configuration-xps13.nix diff --git a/modules/home-manager-common.nix b/modules/home-manager-common.nix index 0311d46..c31364d 100644 --- a/modules/home-manager-common.nix +++ b/modules/home-manager-common.nix @@ -7,6 +7,7 @@ autossh fastfetch ranger + mpv zip unzip xz @@ -40,7 +41,6 @@ cachix sqlite vifm-full - ranger zoxide ( python313.withPackages ( @@ -52,14 +52,13 @@ python-pkgs.pudb python-pkgs.ptpython python-pkgs.ipython + python-pkgs.pillow ] ) ) pyenv neovim zig - nodejs - go syncthing lazygit gopls @@ -72,10 +71,12 @@ sqlitebrowser claude-code marksman + unrar ]; programs.neovim.plugins = [ pkgs.vimPlugins.nvim-treesitter.withAllGrammars + pkgs.VimPlugins.coc-nvim ]; programs.taskwarrior = { enable = true; @@ -87,7 +88,453 @@ 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 = { @@ -109,6 +556,13 @@ rev = "05ba5ddf2ce5659a90aa0ada70eb1078470d972a"; }; } + { + name = "ranger_devicons"; + src = builtins.fetchGit { + url = "https://github.com/alexanderjeurissen/ranger_devicons.git"; + rev = "1bcaff0366a9d345313dc5af14002cfdcddabb82"; + }; + } ]; settings = { column_ratios = "1,3,3"; @@ -153,8 +607,8 @@ { plugin = tmuxPlugins.continuum; extraConfig = '' - set -g @continuum-restore 'on' - set -g @continuum-save-interval '60' + set -g @continuum-restore 'on' + set -g @continuum-save-interval '60' ''; } tmuxPlugins.yank @@ -170,6 +624,7 @@ 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' @@ -198,66 +653,66 @@ # terminal = "xterm-kitty:RGB"; tmuxinator.enable = true; extraConfig = '' - if-shell "[[ $(hostname) = 'xps13' ]]" { - set-option -as terminal-features 'foot:RGB' - } + 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" + 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' + # 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 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" + 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' + # 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 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" + 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 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 .' + 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 = { diff --git a/modules/hyprland.nix b/modules/hyprland.nix index 531208d..e874f8c 100644 --- a/modules/hyprland.nix +++ b/modules/hyprland.nix @@ -63,14 +63,15 @@ } exec-once = waybar + exec-once = dunst monitor = eDP-1, preferred,0x0,2 # monitor = Virtual-1, 2800x1752@120, 1920x0, 1 - + $terminal = kitty # $terminal = ghostty - $terminal = footclient + # $terminal = footclient # $terminal = footclient -e tmux new-session zsh -c '~/.local/usr/bin/tmuxstartup.sh' - $fileManager = footclient -T ranger -e ranger - $fileManager = footclient -T ranger -e ranger + $fileManager = kitty -T ranger -e ranger + # $fileManager = footclient -T ranger -e ranger $systeminfo = hyprsysteminfo $menu = wofi --show drun $browser = qutebrowser @@ -180,6 +181,9 @@ # Fix some dragging issues with XWayland windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + # Performance optimizations for Virtual-1 monitor + workspace = name:virtual,monitor:Virtual-1,default:true,gapsin:0,gapsout:0 + ''; }; programs.hyprlock = { @@ -215,60 +219,89 @@ ]; }; }; - services.hyprpaper = { - enable = true; - settings = { - ipc = "on"; - splash = false; - splash_offset = 2.0; - preload = [ - "/etc/nixos/home/Wallpapers/tokyonight1.jpg" - "/etc/nixos/home/Wallpapers/nord1.jpg" - "/etc/nixos/home/Wallpapers/gonrrogue.jpg" - "/etc/nixos/home/Wallpapers/cyber_terminal.jpg" - "/etc/nixos/home/Wallpapers/jesus_terminal.jpg" - "/etc/nixos/home/Wallpapers/overhead_board.jpg" - "/etc/nixos/home/Wallpapers/rogue_developer.jpg" - "/etc/nixos/home/Wallpapers/luther.jpg" - "/etc/nixos/home/Wallpapers/Fallout_1920x1080.jpg" - "/etc/nixos/home/Wallpapers/chatgpt_luther_tokyo.jpg" - "/etc/nixos/home/Wallpapers/avatar_starship_bridge.png" - "/etc/nixos/home/Wallpapers/Star_Wars_Linux-1250471.jpg" - "/etc/nixos/home/Wallpapers/kylo-ren-dark-wallpaper.jpg" - "/etc/nixos/home/Wallpapers/cyberpunk-samurai-on-roof.jpg" - "/etc/nixos/home/Wallpapers/the-last-jedi-red-wallpaper.jpg" - "/etc/nixos/home/Wallpapers/starwars-hires-sith-wallpaper.jpg" - "/etc/nixos/home/Wallpapers/Fallout_1920x1200.jpg" - "/etc/nixos/home/Wallpapers/Fallout_VaultTec_Boy_1920x1080.jpg" - "/etc/nixos/home/Wallpapers/star-wars-battle-dark-wallpaper.jpg" - "/etc/nixos/home/Wallpapers/starwars-minimal-battle-wallpaper.jpg" - "/etc/nixos/home/Wallpapers/star-wars-movie-shadow-stormtrooper-wallpaper-3440x1440_15.jpg" - ]; - wallpaper = [ - # ",/etc/nixos/home/Wallpapers/starwars-minimal-battle-wallpaper.jpg" - ",/etc/nixos/home/Wallpapers/kylo-ren-dark-wallpaper.jpg" - ]; - }; - }; - services.hypridle = { - enable = true; - settings = { - general = { - after_sleep_cmd = "hyprctl dispatch dpms on"; - ignore_dbus_inhibit = false; - lock_cmd = "hyprlock"; + services = { + hyprpaper = { + enable = true; + settings = { + ipc = "on"; + splash = false; + splash_offset = 2.0; + preload = [ + "/etc/nixos/home/Wallpapers/tokyonight1.jpg" + "/etc/nixos/home/Wallpapers/nord1.jpg" + "/etc/nixos/home/Wallpapers/gonrrogue.jpg" + "/etc/nixos/home/Wallpapers/cyber_terminal.jpg" + "/etc/nixos/home/Wallpapers/jesus_terminal.jpg" + "/etc/nixos/home/Wallpapers/overhead_board.jpg" + "/etc/nixos/home/Wallpapers/rogue_developer.jpg" + "/etc/nixos/home/Wallpapers/luther.jpg" + "/etc/nixos/home/Wallpapers/Fallout_1920x1080.jpg" + "/etc/nixos/home/Wallpapers/chatgpt_luther_tokyo.jpg" + "/etc/nixos/home/Wallpapers/avatar_starship_bridge.png" + "/etc/nixos/home/Wallpapers/Star_Wars_Linux-1250471.jpg" + "/etc/nixos/home/Wallpapers/kylo-ren-dark-wallpaper.jpg" + "/etc/nixos/home/Wallpapers/cyberpunk-samurai-on-roof.jpg" + "/etc/nixos/home/Wallpapers/the-last-jedi-red-wallpaper.jpg" + "/etc/nixos/home/Wallpapers/starwars-hires-sith-wallpaper.jpg" + "/etc/nixos/home/Wallpapers/Fallout_1920x1200.jpg" + "/etc/nixos/home/Wallpapers/Fallout_VaultTec_Boy_1920x1080.jpg" + "/etc/nixos/home/Wallpapers/star-wars-battle-dark-wallpaper.jpg" + "/etc/nixos/home/Wallpapers/starwars-minimal-battle-wallpaper.jpg" + "/etc/nixos/home/Wallpapers/star-wars-movie-shadow-stormtrooper-wallpaper-3440x1440_15.jpg" + ]; + wallpaper = [ + # ",/etc/nixos/home/Wallpapers/starwars-minimal-battle-wallpaper.jpg" + # ",/etc/nixos/home/Wallpapers/kylo-ren-dark-wallpaper.jpg" + ",/etc/nixos/home/Wallpapers/starwars-hires-sith-wallpaper.jpg" + ]; + }; + }; + hypridle = { + enable = true; + settings = { + general = { + after_sleep_cmd = "hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "hyprlock"; + }; + listener = [ + { + timeout = 300; + on-timeout = "hyprlock"; + } + { + timeout = 600; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; + }; + }; + dunst = { + enable = true; + settings = { + global = { + font = "SauceCodePro Nerd Font Mono 10"; + frame_width = 0; + separator_height = 2; + transparency = 10; + origin = "top-right"; + offset = "8"; + width = "300"; + }; + urgency_low = { + background = "#1f2335"; + frame_color = "#1f2335"; + }; + urgency_normal = { + background = "#1f2335"; + frame_color = "#1f2335"; + }; + urgency_critical = { + background = "#1f2335"; + frame_color = "#1f2335"; + }; }; - listener = [ - { - timeout = 300; - on-timeout = "hyprlock"; - } - { - timeout = 600; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; }; }; } diff --git a/modules/services.nix b/modules/services.nix index ef65a08..7774c5e 100644 --- a/modules/services.nix +++ b/modules/services.nix @@ -4,7 +4,7 @@ glances = { enable = true; port = 61208; - extraArgs = "--webserver"; + extraArgs = [ "--webserver" ]; }; }; } diff --git a/modules/shares.nix b/modules/shares.nix index a384649..f4bc105 100644 --- a/modules/shares.nix +++ b/modules/shares.nix @@ -1,17 +1,21 @@ { config, pkgs, ... }: { systemd.tmpfiles.rules = [ + "d /mnt/audiobooks 0755 root root -" "d /mnt/books 0755 root root -" "d /mnt/books_extra 0755 root root -" - "d /mnt/music 0755 root root -" - "d /mnt/music_ext 0755 root root -" + "d /mnt/books 0755 root root -" + "d /mnt/download 0755 root root -" "d /mnt/games 0755 root root -" "d /mnt/games_ext 0755 root root -" - "d /mnt/roms_ext 0755 root root -" + "d /mnt/music 0755 root root -" + "d /mnt/music_ext 0755 root root -" "d /mnt/podcasts 0755 root root -" - "d /mnt/audiobooks 0755 root root -" "d /mnt/movies 0755 root root -" "d /mnt/movies_ext 0755 root root -" + "d /mnt/roms_ext 0755 root root -" + "d /mnt/tv 0755 root root -" + "d /mnt/tv_ext 0755 root root -" ]; fileSystems."/mnt/books" = { @@ -42,6 +46,20 @@ "x-systemd.idle-timeout=10min" ]; }; + fileSystems."/mnt/download" = { + device = "//10.0.0.76/download"; + fsType = "cifs"; + options = [ + "credentials=/run/secrets/smb" + "vers=3.0" + "uid=1000" "gid=1000" + "file_mode=0664" "dir_mode=0775" + "rw" "iocharset=utf8" "cache=strict" "mfsymlinks" + "_netdev" "nofail" + "x-systemd.automount" "noauto" + "x-systemd.idle-timeout=10min" + ]; + }; fileSystems."/mnt/music" = { device = "//10.0.0.76/music"; fsType = "cifs"; @@ -168,4 +186,32 @@ "x-systemd.idle-timeout=10min" ]; }; + fileSystems."/mnt/tv" = { + device = "//10.0.0.76/tv"; + fsType = "cifs"; + options = [ + "credentials=/run/secrets/smb" + "vers=3.0" + "uid=1000" "gid=1000" + "file_mode=0664" "dir_mode=0775" + "rw" "iocharset=utf8" "cache=strict" "mfsymlinks" + "_netdev" "nofail" + "x-systemd.automount" "noauto" + "x-systemd.idle-timeout=10min" + ]; + }; + fileSystems."/mnt/tv_ext" = { + device = "//10.0.0.76/tv_ext"; + fsType = "cifs"; + options = [ + "credentials=/run/secrets/smb" + "vers=3.0" + "uid=1000" "gid=1000" + "file_mode=0664" "dir_mode=0775" + "rw" "iocharset=utf8" "cache=strict" "mfsymlinks" + "_netdev" "nofail" + "x-systemd.automount" "noauto" + "x-systemd.idle-timeout=10min" + ]; + }; }