diff options
Diffstat (limited to 'files')
48 files changed, 2024 insertions, 1348 deletions
diff --git a/files/audio/asoundrc b/files/audio/asoundrc new file mode 100644 index 0000000..051a420 --- /dev/null +++ b/files/audio/asoundrc @@ -0,0 +1,12 @@ +#pcm.!spdif { +# type hw +# card 1 +# device 1 +#} +# +#pcm.!default { +# type plug +# slave { +# pcm "spdif" +# } +#} diff --git a/files/convolver/Focal_Elegia_minimum_phase_44100Hz.wav b/files/audio/convolver/Focal_Elegia_minimum_phase_44100Hz.wav Binary files differindex 6620260..6620260 100644 --- a/files/convolver/Focal_Elegia_minimum_phase_44100Hz.wav +++ b/files/audio/convolver/Focal_Elegia_minimum_phase_44100Hz.wav diff --git a/files/convolver/Focal_Elegia_minimum_phase_48000Hz.wav b/files/audio/convolver/Focal_Elegia_minimum_phase_48000Hz.wav Binary files differindex ea009c2..ea009c2 100644 --- a/files/convolver/Focal_Elegia_minimum_phase_48000Hz.wav +++ b/files/audio/convolver/Focal_Elegia_minimum_phase_48000Hz.wav diff --git a/files/audio/gentoo-pipewire-launcher.conf b/files/audio/gentoo-pipewire-launcher.conf new file mode 100644 index 0000000..c609208 --- /dev/null +++ b/files/audio/gentoo-pipewire-launcher.conf @@ -0,0 +1,3 @@ +GENTOO_PIPEWIRE_LOG="/tmp/pipewire.log" +GENTOO_PIPEWIRE_PULSE_LOG="/tmp/pipewire-pulse.log" +GENTOO_WIREPLUMBER_LOG="/tmp/wireplumber.log" diff --git a/files/audio/pipewire/90-elegia-convolver.conf b/files/audio/pipewire/90-elegia-convolver.conf new file mode 100644 index 0000000..dd789ee --- /dev/null +++ b/files/audio/pipewire/90-elegia-convolver.conf @@ -0,0 +1,33 @@ +context.modules = [{ + name = "libpipewire-module-filter-chain" + args = { + node.description = "Focal Elegia EQ (Convolver)" + media.name = "Focal Elegia EQ (Convolver)" + filter.graph = { + nodes = [{ + type = "builtin" + name = "Convolver EQ" + label = "convolver" + config = { + filename = [ + "/opt/convolver/Focal_Elegia_minimum_phase_44100Hz.wav" + "/opt/convolver/Focal_Elegia_minimum_phase_48000Hz.wav" + ] + resample_quality = 10 + } + }] + } + capture.props = { + node.name = "eq_input.elegia_convolver_eq" + media.class = "Audio/Sink" + audio.channels = 2 + audio.position = [ FL FR ] + } + playback.props = { + node.name = "eq_output.elegia_convolver_eq" + node.passive = true + audio.channels = 2 + audio.position = [ FL FR ] + } + } +}] diff --git a/files/audio/pipewire/90-x570-taichi-spdif.conf b/files/audio/pipewire/90-x570-taichi-spdif.conf new file mode 100644 index 0000000..dabfbea --- /dev/null +++ b/files/audio/pipewire/90-x570-taichi-spdif.conf @@ -0,0 +1,5 @@ +context.properties = { + # cat /proc/asound/card1/codec#0 + # cat /proc/asound/card1/stream0 + default.clock.allowed-rates = [ 32000 44100 48000 88200 96000 192000 ] +} diff --git a/files/audio/pipewire/92-client-user.conf b/files/audio/pipewire/92-client-user.conf new file mode 100644 index 0000000..c956a7e --- /dev/null +++ b/files/audio/pipewire/92-client-user.conf @@ -0,0 +1,4 @@ +stream.properties = { + resample.quality = 10 + channelmix.normalize = false +} diff --git a/files/audio/pipewire/92-pulse-user.conf b/files/audio/pipewire/92-pulse-user.conf new file mode 100644 index 0000000..96dab58 --- /dev/null +++ b/files/audio/pipewire/92-pulse-user.conf @@ -0,0 +1,9 @@ +pulse.properties = { + pulse.default.format = S32 + pulse.default.position = [ FL FR ] +} + +stream.properties = { + resample.quality = 10 + channelmix.normalize = false +} diff --git a/files/audio/pipewire/92-user.conf b/files/audio/pipewire/92-user.conf new file mode 100644 index 0000000..329f9ad --- /dev/null +++ b/files/audio/pipewire/92-user.conf @@ -0,0 +1,20 @@ +context.properties = { + default.clock.rate = 48000 + default.clock.quantum = 1024 + default.clock.min-quantum = 16 + default.clock.max-quantum = 4096 + # https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#setting-buffer-size-quantum + # quantum settings above are scaled when rate is different than clock.rate. + # -limit and -floor apply to the scaled values. + default.clock.quantum-limit = 8192 + default.clock.quantum-floor = 16 + default.video.width = 640 + default.video.height = 480 + default.video.rate.num = 25 + default.video.rate.denom = 1 +} + +stream.properties = { + resample.quality = 10 + channelmix.normalize = false +} diff --git a/files/email/muttrc b/files/email/muttrc new file mode 100644 index 0000000..2f2efea --- /dev/null +++ b/files/email/muttrc @@ -0,0 +1,112 @@ +set send_charset = "utf-8" +set assumed_charset = "iso-8859-1" + +set sort = reverse-date + +set editor = "vi -c 'set syntax=mail ft=mail enc=utf-8'" + +set menu_scroll = yes + +set simple_search = "~f %s | ~C %s | ~s %s" + +set mail_check_stats = yes +set delete = ask-yes + +set rfc2047_parameters = yes +set sleep_time = 0 +set markers = no +set wait_key = no +set reverse_name +set fast_reply +set fcc_attach +set mime_forward = no +set forward_attachments = yes +set forward_format = "Fwd: %s" +set forward_quote + +set index_format = "%2C (%Z) %[%D %I:%M %p] %-15.15F %s (%c)" + +set sidebar_visible = yes +set sidebar_short_path = yes +set sidebar_width = 18 +set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S' + +auto_view text/html +auto_view application/pgp-encrypted +alternative_order text/plain text/enriched text/html + +set realname = "Andrew Opalach" +set from = "andrew@akon.city" + +set mail_check = 60 +set imap_keepalive = 300 + +set imap_user = "andrew@akon.city" +set imap_pass = "`pass andrew@akon.city`" +set folder = imaps://mail.akon.city/ +set spoolfile = "=INBOX" +set record = "=INBOX/Sent" +set postponed = "=INBOX/Drafts" +set trash = "=INBOX/Trash" +mailboxes =INBOX +mailboxes =INBOX/Sent +mailboxes =INBOX/Drafts +mailboxes =INBOX/Trash +mailboxes =INBOX/Junk +mailboxes =INBOX/Archive + +set smtp_pass = "`pass andrew@akon.city`" +set smtp_url = smtp://andrew@akon.city@mail.akon.city/ + +set header_cache = /var/tmp/mutt + +bind index i imap-fetch-mail +bind index,pager g noop +bind index gg first-entry +bind index j next-entry +bind index k previous-entry +bind index G last-entry +bind attach <Return> view-mailcap +bind attach l view-mailcap +bind editor <space> noop +bind pager j next-line +bind pager k previous-line +bind pager gg top +bind pager G bottom +bind pager l view-attachments +bind index h noop +bind pager,attach h exit +bind index,pager \Ck sidebar-prev +bind index,pager \Cj sidebar-next +bind index,pager \Co sidebar-open +bind editor <Tab> complete-query +bind browser l select-entry +bind browser gg top-page +bind browser G bottom-page +#bind index,pager H "view-raw-message" + +# https://superuser.com/a/695154 +macro index,pager \cB ": unset wait_key; set pipe_decode\n|w3m\n: set wait_key; unset pipe_decode\n" "call w3m to extract URLs out of a message" + +color normal white black +color attachment brightyellow black +color hdrdefault green black +color indicator black brightgreen +color markers brightyellow black +color quoted green black +color signature blue black +color status black green +color tilde blue black +color tree yellow black + +color index green black ~D +color index magenta black ~T + +color header brightyellow black ^From: +color header brightgreen black ^To: +color header brightgreen black ^Reply-To: +color header brightgreen black ^Cc: +color header brightgreen black ^Subject: + +#color body brightyellow black [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ +#color body brightgreen black (https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ diff --git a/files/firefox/user-overrides.js b/files/firefox/user-overrides.js index 3a73f4f..5535de3 100644 --- a/files/firefox/user-overrides.js +++ b/files/firefox/user-overrides.js @@ -93,6 +93,9 @@ user_pref("browser.tabs.drawInTitlebar", true); // Gnome theme user_pref("gnomeTheme.normalWidthTabs", true); +// adw3-gtk +user_pref("widget.gtk.libadwaita-colors.enabled", false); + // Hide bookmarks user_pref("browser.toolbars.bookmarks.visibility", "never"); diff --git a/files/gaming/MangoHud.conf b/files/gaming/MangoHud.conf new file mode 100644 index 0000000..1b2a7bd --- /dev/null +++ b/files/gaming/MangoHud.conf @@ -0,0 +1,31 @@ +gamemode +cpu_temp +cpu_mhz +vulkan_driver +gpu_name +gpu_power +gpu_temp +gpu_junction_temp +gpu_core_clock +gpu_voltage +throttling_status +vram +gpu_mem_temp +gpu_mem_clock +engine_version +wine +winesync +display_server +resolution +present_mode +table_columns=4 +cellpadding_y=-0.100 +font_size=22 +round_corners +toggle_preset= +toggle_hud_position= +toggle_fps_limit= +toggle_logging= +reload_cfg= +upload_log= +toggle_hud=Shift_R+F10 diff --git a/files/gaming/gamemode.ini b/files/gaming/gamemode.ini new file mode 100644 index 0000000..72a72f4 --- /dev/null +++ b/files/gaming/gamemode.ini @@ -0,0 +1,13 @@ +[general] +inhibit_screensaver=0 +#softrealtime=on +#renice=11 + +# 'high' is too aggressive for my system. +#[gpu] +#apply_gpu_optimisations=accept-responsibility +#gpu_device=0 +#amd_performance_level=high + +[cpu] +pin_cores=no diff --git a/files/gaming/scripts/run_egs.sh b/files/gaming/scripts/run_egs.sh new file mode 100755 index 0000000..88e4864 --- /dev/null +++ b/files/gaming/scripts/run_egs.sh @@ -0,0 +1,5 @@ +#! /usr/bin/env sh + +#gamescope -W 1920 -H 1080 -w 1920 -h 1080 -r 60 -- env WINEPREFIX=/mnt/hdd/Games/epic_games_store \ +env WINEPREFIX=/mnt/hdd/Games/epic_games_store \ + umu-run /mnt/hdd/Games/epic_games_store/drive_c/Program\ Files\ \(x86\)/Epic\ Games/Launcher/Portal/Binaries/Win64/EpicGamesLauncher.exe -opengl -SkipBuildPatchPrereq diff --git a/files/gaming/scripts/run_in_proton.sh b/files/gaming/scripts/run_in_proton.sh new file mode 100755 index 0000000..6a2cc2a --- /dev/null +++ b/files/gaming/scripts/run_in_proton.sh @@ -0,0 +1,85 @@ +#! /usr/bin/env sh +# https://github.com/Matoking/protontricks/issues/238 +# https://github.com/cheat-engine/cheat-engine/issues/2789 +# +# CC_Studio: +# Rotate -> 5 + 4 +# Move -> 5 + 6 +# +#EXE="Z:\mnt\hdd\Tools\cheat_engines\Cheat Engine 6.8.1\cheatengine-i386.exe" +#EXE="Z:\mnt\hdd\Tools\cheat_engines\Cheat Engine 7.5\Cheat Engine.exe" +#EXE="Z:\mnt\hdd\Tools\cheat_engines\CheatEngine752P.exe" +#EXE="regedit" +#EXE="Z:\mnt\hdd\Tools\mhw\CC_Studio/MHW CC Studio.exe" +#EXE="Z:\mnt\hdd\Tools\mhw\photo_mode\IGCSClient.exe" +#EXE="Z:\mnt\ssd\SteamLibrary\steamapps\common\Baldurs Gate 3\bin\bg3_dx11.exe" +#EXE="Z:\mnt\hdd\Tools\baldurs_gate3/modmanager/BG3ModManager.exe" +#EXE="Z:\home\andrew\dl\windowsdesktop-runtime-7.0.13-win-x64.exe" +#EXE="Z:\home\andrew\dl\ndp472-kb4054531-web.exe" +#EXE="Z:\mnt\hdd\Tools\elden_ring\injector\IGCSInjectorUI.exe" +#EXE="Z:\mnt\hdd\Tools\elden_ring\camera_tools\IGCSClient.exe" +#EXE="Z:\mnt\hdd\Tools\x360ce\x360ce.exe" +#EXE="Z:\mnt\hdd\Tools\fluffy_modmanager\Modmanager.exe" + +EXE="Z:\mnt\hdd\Tools\cheat_engines\Cheat Engine 7.5.2\Cheat Engine.exe" +#EXE="Z:\mnt\hdd\Tools\cheat_engines\Cheat Engine 7.5.2\cheatengine-i386.exe" + +#EXE="IGCSInjector.exe" + +#EXE="Z:\mnt\hdd\Tools\inject.exe" +#ARG0="MonsterHunterWorld.exe" + +#EXE="Z:\mnt\hdd\Tools\injector.exe" +#ARG0="-n" + +#ARG1="eldenring.exe" +#ARG2="Z:\mnt\hdd\Tools\elden_ring\camera_tools\EldenRingCameraTools.dll" + +#ARG1="TombRaider.exe" +#ARG2="TombRaiderCameraTools.dll" + +#ARG1="MonsterHunterWorld" +#ARG2="Z:\mnt\hdd\Tools\reshade\ReShade64.dll" + +#APP_ID=367500 # Dragon's Dogma +APP_ID=582010 # Monster Hunter World +#APP_ID=1086940 +#APP_ID=3737539014 +#APP_ID=1245620 +#APP_ID=2054970 +#APP_ID=203160 # Tomb Raider +#APP_ID=357190 # UMVC3 +BUS_NAME=com.steampowered.App$APP_ID +#BUS_NAME=com.steampowered.App0 + +#export WINEARCH=win64 +#export WINEARCH=win32 +export WINE="$HOME/.local/share/Steam/steamapps/common/Proton - Experimental/files/bin/wine" +#export WINE="/mnt/ssd/SteamLibrary/steamapps/common/Proton 10.0/files/bin/wine" + +export PROTON_NO_USERSETTINGS=1 +#export WINEDLLOVERRIDES="*mscoree=n;*fusion=n" +#export WINEDEBUG=+tid,err+all,fixme-all,-loaddll + +#STEAMAPPS=$HOME/.steam/steam/steamapps +#STEAMAPPS="/mnt/hdd/SteamLibrary/steamapps" +STEAMAPPS="/mnt/ssd/SteamLibrary/steamapps" + +WINEPREFIX=$STEAMAPPS/compatdata/$APP_ID/pfx +export WINEPREFIX + +#steam-run "$WINE" uninstaller +#steam-run "$WINE" winecfg -v win7 +#steam-run "$WINE" "Z:\home\andrew\.cache\winetricks\dotnet452\NDP452-KB2901907-x86-x64-AllOS-ENU.exe" +#steam-run "$WINE" "Z:\home\andrew\.cache\winetricks\dotnet48\ndp48-x86-x64-allos-enu.exe" + +#steam-run winetricks -q dotnet48 +#steam-run "$WINE" control + +#steam-run "$WINE" $EXE +#steam-run $HOME/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/pressure-vessel/bin/steam-runtime-launch-client --list + +$HOME/.local/share/Steam/steamapps/common/SteamLinuxRuntime_soldier/pressure-vessel/bin/steam-runtime-launch-client \ + --bus-name=$BUS_NAME -- \ + env STEAM_COMPAT_MOUNTS=/mnt/hdd/SteamLibrary:/mnt/hdd/Tools WINEPREFIX=$WINEPREFIX \ + "$WINE" "$EXE" $ARG0 $ARG1 $ARG2 diff --git a/files/gitconfig b/files/gitconfig new file mode 100644 index 0000000..3e31de7 --- /dev/null +++ b/files/gitconfig @@ -0,0 +1,16 @@ +[user] + email = andrew@akon.city + name = Andrew Opalach + signingKey = 99659CB58598BDDB + +[init] + defaultBranch = master + +[format] + signOff = true + +[commit] + gpgSign = true + +[tag] + gpgSign = true diff --git a/files/gtk/Xresources b/files/gtk/Xresources new file mode 100644 index 0000000..fbe97bc --- /dev/null +++ b/files/gtk/Xresources @@ -0,0 +1 @@ +Xcursor.theme: Mocu-White-Right diff --git a/files/gtk/gtk3_config.ini b/files/gtk/gtk3_config.ini new file mode 100644 index 0000000..f88b4f0 --- /dev/null +++ b/files/gtk/gtk3_config.ini @@ -0,0 +1,4 @@ +[Settings] +gtk-theme-name = adw-gtk3-dark +gtk-application-prefer-dark-theme = true +gtk-cursor-theme-name = Mocu-White-Right diff --git a/files/gtk/gtkrc-2.0 b/files/gtk/gtkrc-2.0 new file mode 100644 index 0000000..9d216a0 --- /dev/null +++ b/files/gtk/gtkrc-2.0 @@ -0,0 +1,2 @@ +gtk-theme-name = "adw-gtk3-dark" +gtk-icon-theme-name = "Mocu-White-Right" diff --git a/files/gtk/sway_gtk b/files/gtk/sway_gtk new file mode 100644 index 0000000..01c0660 --- /dev/null +++ b/files/gtk/sway_gtk @@ -0,0 +1,10 @@ +set $gnome-schema org.gnome.desktop.interface +exec_always { + gsettings set $gnome-schema gtk-theme 'adw-gtk3-dark' + gsettings set $gnome-schema color-scheme 'prefer-dark' + gsettings set $gnome-schema icon-theme 'Adwaita' + gsettings set $gnome-schema cursor-theme 'Mocu-White-Right' + gsettings set $gnome-schema font-name 'Sans 10' +} +seat seat0 xcursor_theme Mocu-White-Right +exec_always test -f ~/.Xresources && xrdb -merge ~/.Xresources diff --git a/files/kitty/kitty.conf b/files/kitty/kitty.conf new file mode 100644 index 0000000..4728717 --- /dev/null +++ b/files/kitty/kitty.conf @@ -0,0 +1,89 @@ +font_size 11.0 +font_family Liberation Mono +bold_font auto +italic_font auto +bold_italic_font auto +disable_ligatures always +#modify_font baseline +#modify_font cell_height + +window_padding_width 1 +placement_strategy top-left + +shell /bin/bash +shell_integration enabled + +clear_all_shortcuts yes +map kitty_mod+c copy_to_clipboard +map kitty_mod+v paste_from_clipboard +map ctrl+shift+u kitten unicode_input +map ctrl+shift+f5 load_config_file + +update_check_interval 0 +confirm_os_window_close 0 +initial_window_width 720 +initial_window_height 480 +scrollback_lines 3000 +remember_window_size no +linux_display_server wayland +allow_remote_control no +enabled_layouts splits,stack +paste_actions confirm,confirm-if-large + +sync_to_monitor no +# My understanding is that if repaint_delay equates to a refresh rate +# of just under my monitor's that VRR can avoid all tearing. +# --------------------------------------------------------- +# This probably doesn't work out. According to the man page +# repaint_delay is ignored if there is pending input. +# Tearing is still easily observable. +repaint_delay 7 +input_delay 1 +resize_debounce_time 0.025 0.5 + +cursor_shape block +#cursor_blink_interval -1 linear ease-out +#cursor_stop_blinking_after 20.0 +cursor_trail 3 +cursor_trail_decay 0.075 0.425 +cursor_trail_start_threshold 3 +#cursor #${colo.foreground} +#cursor none +#cursor_text_color background + +foreground #eeeeee +background #000000 +color0 #000000 +color1 #d75f00 +color2 #af5f00 +color3 #ffd75f +color4 #005f5f +color5 #ff5f87 +color6 #ffaf00 +color7 #eeeeee +color8 #808080 +color9 #d78700 +color10 #af8700 +color11 #ffff5f +color12 #00875f +color13 #ff8787 +color14 #ffd700 +color15 #ffffff +#selection_foreground #${colo.background} +#selection_background #${colo.color6} +#mark1_foreground #${colo.background} +#mark1_background #${colo.color5} +#mark2_foreground #${colo.background} +#mark2_background #${colo.color6} +#mark3_foreground #${colo.background} +#mark3_background #${colo.color4} +#background_opacity ${toString colo.alpha} +#active_border_color #${colo.color4} +#bell_border_color #${colo.color1} +#inactive_border_color #${colo.color3} +#active_tab_foreground #${colo.background} +#active_tab_background #${colo.color5} +#active_tab_font_style bold-italic +#inactive_tab_foreground #${colo.background} +#inactive_tab_background #${colo.color4} +#url_color #${colo.color5} diff --git a/files/nixpkgs-patches/.gitignore b/files/nixpkgs-patches/.gitignore deleted file mode 100644 index e69de29..0000000 --- a/files/nixpkgs-patches/.gitignore +++ /dev/null diff --git a/files/nixpkgs-patches/425312.diff b/files/nixpkgs-patches/425312.diff deleted file mode 100644 index f895dae..0000000 --- a/files/nixpkgs-patches/425312.diff +++ /dev/null @@ -1,143 +0,0 @@ -diff --git a/pkgs/applications/networking/msmtp/msmtpq-remove-binary-check.patch b/pkgs/by-name/ms/msmtp/msmtpq-remove-binary-check.patch -similarity index 100% -rename from pkgs/applications/networking/msmtp/msmtpq-remove-binary-check.patch -rename to pkgs/by-name/ms/msmtp/msmtpq-remove-binary-check.patch -diff --git a/pkgs/applications/networking/msmtp/msmtpq-systemd-logging.patch b/pkgs/by-name/ms/msmtp/msmtpq-systemd-logging.patch -similarity index 70% -rename from pkgs/applications/networking/msmtp/msmtpq-systemd-logging.patch -rename to pkgs/by-name/ms/msmtp/msmtpq-systemd-logging.patch -index a9db3e64580827..55f386bb31906a 100644 ---- a/pkgs/applications/networking/msmtp/msmtpq-systemd-logging.patch -+++ b/pkgs/by-name/ms/msmtp/msmtpq-systemd-logging.patch -@@ -1,17 +1,17 @@ - diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq --index bcb384e..dbaf1b5 100755 -+index 28d0754..3eaac58 100755 - --- a/scripts/msmtpq/msmtpq - +++ b/scripts/msmtpq/msmtpq --@@ -92,6 +92,8 @@ if [ ! -v MSMTPQ_LOG ] ; then -- fi -+@@ -182,6 +182,8 @@ if [ -n "$MSMTPQ_LOG" ] ; then -+ unset msmptq_log_dir - fi -- [ -d "$(dirname "$MSMTPQ_LOG")" ] || mkdir -p "$(dirname "$MSMTPQ_LOG")" --+ -+ - +JOURNAL=@journal@ -- ## ====================================================================================== -++ -+ umask 077 # set secure permissions on created directories and files - -- ## msmtpq can use the following environment variables : --@@ -144,6 +146,7 @@ on_exit() { # unlock the queue on exit if the lock was -+ declare -i CNT # a count of mail(s) currently in the queue -+@@ -214,6 +216,7 @@ on_exit() { # unlock the queue on exit if the lock was - ## display msg to user, as well - ## - log() { -@@ -19,7 +19,7 @@ index bcb384e..dbaf1b5 100755 - local ARG RC PFX - PFX="$('date' +'%Y %d %b %H:%M:%S')" - # time stamp prefix - "2008 13 Mar 03:59:45 " --@@ -161,10 +164,19 @@ log() { -+@@ -233,10 +236,19 @@ log() { - done - fi - -diff --git a/pkgs/applications/networking/msmtp/default.nix b/pkgs/by-name/ms/msmtp/package.nix -similarity index 84% -rename from pkgs/applications/networking/msmtp/default.nix -rename to pkgs/by-name/ms/msmtp/package.nix -index 60946106d0ddf1..c801fa83ee9b98 100644 ---- a/pkgs/applications/networking/msmtp/default.nix -+++ b/pkgs/by-name/ms/msmtp/package.nix -@@ -9,6 +9,7 @@ - bash, - coreutils, - gnugrep, -+ gnused, - gnutls, - gsasl, - libidn2, -@@ -20,6 +21,8 @@ - withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, - systemd, - withScripts ? true, -+ withLibnotify ? true, -+ libnotify, - gitUpdater, - binlore, - msmtp, -@@ -28,13 +31,13 @@ - let - inherit (lib) getBin getExe optionals; - -- version = "1.8.26"; -+ version = "1.8.30"; - - src = fetchFromGitHub { - owner = "marlam"; - repo = "msmtp"; - rev = "msmtp-${version}"; -- hash = "sha256-MV3fzjjyr7qZw/BbKgsSObX+cxDDivI+0ZlulrPFiWM="; -+ hash = "sha256-aM2qId08zvT9LbncCQYHsklbvHVtcZJgr91JTjwpQ/0="; - }; - - meta = with lib; { -@@ -112,13 +115,17 @@ let - msmtpq = { - scripts = [ "bin/msmtpq" ]; - interpreter = getExe bash; -- inputs = [ -- binaries -- coreutils -- gnugrep -- netcat-gnu -- which -- ] ++ optionals withSystemd [ systemd ]; -+ inputs = -+ [ -+ binaries -+ coreutils -+ gnugrep -+ gnused -+ netcat-gnu -+ which -+ ] -+ ++ optionals withSystemd [ systemd ] -+ ++ optionals withLibnotify [ libnotify ]; - execer = - [ - "cannot:${getBin binaries}/bin/msmtp" -@@ -126,9 +133,15 @@ let - ] - ++ optionals withSystemd [ - "cannot:${getBin systemd}/bin/systemd-cat" -+ ] -+ ++ optionals withLibnotify [ -+ "cannot:${getBin libnotify}/bin/notify-send" - ]; - fix."$MSMTP" = [ "msmtp" ]; -- fake.external = [ "ping" ] ++ optionals (!withSystemd) [ "systemd-cat" ]; -+ fake.external = -+ [ "ping" ] -+ ++ optionals (!withSystemd) [ "systemd-cat" ] -+ ++ optionals (!withLibnotify) [ "notify-send" ]; - keep.source = [ "~/.msmtpqrc" ]; - }; - -diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix -index 1f6cde48853370..2d89e07134d294 100644 ---- a/pkgs/top-level/all-packages.nix -+++ b/pkgs/top-level/all-packages.nix -@@ -13308,10 +13308,6 @@ with pkgs; - - taxi-cli = with python3Packages; toPythonApplication taxi; - -- msmtp = callPackage ../applications/networking/msmtp { -- autoreconfHook = buildPackages.autoreconfHook269; -- }; -- - imapfilter = callPackage ../applications/networking/mailreaders/imapfilter.nix { - lua = lua5; - }; diff --git a/files/nixpkgs-patches/425843.diff b/files/nixpkgs-patches/425843.diff deleted file mode 100644 index ded8544..0000000 --- a/files/nixpkgs-patches/425843.diff +++ /dev/null @@ -1,504 +0,0 @@ -diff --git a/pkgs/development/libraries/mesa/common.nix b/pkgs/development/libraries/mesa/common.nix -index 18f999dd83599c..8242549b63007b 100644 ---- a/pkgs/development/libraries/mesa/common.nix -+++ b/pkgs/development/libraries/mesa/common.nix -@@ -5,14 +5,14 @@ - # nix build .#legacyPackages.x86_64-darwin.mesa .#legacyPackages.aarch64-darwin.mesa - rec { - pname = "mesa"; -- version = "25.1.6"; -+ version = "25.2.0-rc1"; - - src = fetchFromGitLab { - domain = "gitlab.freedesktop.org"; - owner = "mesa"; - repo = "mesa"; - rev = "mesa-${version}"; -- hash = "sha256-SHYYezt2ez9awvIATEC6wVMZMuJUsOYXxlugs1Q6q7U="; -+ hash = "sha256-iVDnJ0MoLQbpEpjfRUy3MV6pjhMTqUMxR4yf9jkuXKw="; - }; - - meta = { -diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix -index db9ec527358508..ee10017b9d5aa0 100644 ---- a/pkgs/development/libraries/mesa/default.nix -+++ b/pkgs/development/libraries/mesa/default.nix -@@ -44,62 +44,53 @@ - enablePatentEncumberedCodecs ? true, - withValgrind ? lib.meta.availableOn stdenv.hostPlatform valgrind-light, - -- galliumDrivers ? -- [ -- "asahi" # Apple AGX, built on non-aarch64 for cross tools -- "d3d12" # WSL emulated GPU (aka Dozen) -- "iris" # new Intel (Broadwell+) -- "llvmpipe" # software renderer -- "nouveau" # Nvidia -- "panfrost" # ARM Mali Midgard and up (T/G series), built on non-ARM for cross tools -- "r300" # very old AMD -- "r600" # less old AMD -- "radeonsi" # new AMD (GCN+) -- "softpipe" # older software renderer -- "svga" # VMWare virtualized GPU -- "virgl" # QEMU virtualized GPU (aka VirGL) -- "zink" # generic OpenGL over Vulkan, experimental -- ] -- ++ lib.optionals (stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isAarch32) [ -- "etnaviv" # Vivante GPU designs (mostly NXP/Marvell SoCs) -- "freedreno" # Qualcomm Adreno (all Qualcomm SoCs) -- "lima" # ARM Mali 4xx -- "vc4" # Broadcom VC4 (Raspberry Pi 0-3) -- ] -- ++ lib.optionals stdenv.hostPlatform.isAarch64 [ -- "tegra" # Nvidia Tegra SoCs -- "v3d" # Broadcom VC5 (Raspberry Pi 4) -- ] -- ++ lib.optionals stdenv.hostPlatform.isx86 [ -- "crocus" # Intel legacy, x86 only -- "i915" # Intel extra legacy, x86 only -- ], -+ # We enable as many drivers as possible here, to build cross tools -+ # and support emulation use cases (emulated x86_64 on aarch64, etc) -+ galliumDrivers ? [ -+ "asahi" # Apple AGX -+ "crocus" # Intel legacy -+ "d3d12" # WSL emulated GPU (aka Dozen) -+ "etnaviv" # Vivante GPU designs (mostly NXP/Marvell SoCs) -+ "freedreno" # Qualcomm Adreno (all Qualcomm SoCs) -+ "i915" # Intel extra legacy -+ "iris" # new Intel (Broadwell+) -+ "lima" # ARM Mali 4xx -+ "llvmpipe" # software renderer -+ "nouveau" # Nvidia -+ "panfrost" # ARM Mali Midgard and up (T/G series) -+ "r300" # very old AMD -+ "r600" # less old AMD -+ "radeonsi" # new AMD (GCN+) -+ "softpipe" # older software renderer -+ "svga" # VMWare virtualized GPU -+ "tegra" # Nvidia Tegra SoCs -+ "v3d" # Broadcom VC5 (Raspberry Pi 4) -+ "vc4" # Broadcom VC4 (Raspberry Pi 0-3) -+ "virgl" # QEMU virtualized GPU (aka VirGL) -+ "zink" # generic OpenGL over Vulkan, experimental -+ ], - vulkanDrivers ? - [ - "amd" # AMD (aka RADV) -- "asahi" # Apple AGX, built on non-aarch64 for cross tools -- "intel" # new Intel (aka ANV) -- "microsoft-experimental" # WSL virtualized GPU (aka DZN/Dozen) -- "nouveau" # Nouveau (aka NVK) -- "swrast" # software renderer (aka Lavapipe) -- ] -- ++ -- lib.optionals -- (stdenv.hostPlatform.isAarch -> lib.versionAtLeast stdenv.hostPlatform.parsed.cpu.version "6") -- [ -- # QEMU virtualized GPU (aka VirGL) -- # Requires ATOMIC_INT_LOCK_FREE == 2. -- "virtio" -- ] -- ++ lib.optionals stdenv.hostPlatform.isAarch64 [ -+ "asahi" # Apple AGX - "broadcom" # Broadcom VC5 (Raspberry Pi 4, aka V3D) - "freedreno" # Qualcomm Adreno (all Qualcomm SoCs) -+ # "gfxstream" # Android virtualized GPU, breaks on some targets, doesn't seem useful? - "imagination-experimental" # PowerVR Rogue (currently N/A) -+ "intel_hasvk" # Intel Haswell/Broadwell, "legacy" Vulkan driver (https://www.phoronix.com/news/Intel-HasVK-Drop-Dead-Code) -+ "intel" # new Intel (aka ANV) -+ "microsoft-experimental" # WSL virtualized GPU (aka DZN/Dozen) -+ "nouveau" # Nouveau (aka NVK) - "panfrost" # ARM Mali Midgard and up (T/G series) -+ "swrast" # software renderer (aka Lavapipe) - ] -- ++ lib.optionals stdenv.hostPlatform.isx86 [ -- "intel_hasvk" # Intel Haswell/Broadwell, "legacy" Vulkan driver (https://www.phoronix.com/news/Intel-HasVK-Drop-Dead-Code) -- ], -+ ++ lib.optionals -+ (stdenv.hostPlatform.isAarch -> lib.versionAtLeast stdenv.hostPlatform.parsed.cpu.version "6") -+ [ -+ # QEMU virtualized GPU (aka VirGL) -+ # Requires ATOMIC_INT_LOCK_FREE == 2. -+ "virtio" -+ ], - eglPlatforms ? [ - "x11" - "wayland" -@@ -117,40 +108,26 @@ - }: - - let -- rustDeps = [ -- { -- pname = "paste"; -- version = "1.0.14"; -- hash = "sha256-+J1h7New5MEclUBvwDQtTYJCHKKqAEOeQkuKy+g0vEc="; -- } -- { -- pname = "proc-macro2"; -- version = "1.0.86"; -- hash = "sha256-9fYAlWRGVIwPp8OKX7Id84Kjt8OoN2cANJ/D9ZOUUZE="; -- } -- { -- pname = "quote"; -- version = "1.0.33"; -- hash = "sha256-VWRCZJO0/DJbNu0/V9TLaqlwMot65YjInWT9VWg57DY="; -- } -- { -- pname = "syn"; -- version = "2.0.68"; -- hash = "sha256-nGLBbxR0DFBpsXMngXdegTm/o13FBS6QsM7TwxHXbgQ="; -- } -- { -- pname = "unicode-ident"; -- version = "1.0.12"; -- hash = "sha256-KX8NqYYw6+rGsoR9mdZx8eT1HIPEUUyxErdk2H/Rlj8="; -- } -- ]; -+ rustDeps = lib.importJSON ./wraps.json; -+ -+ handleRustDep = dep: '' -+ ( -+ echo "Preparing Rust dependency wrap ${dep.pname}-${dep.version}..." -+ -+ wrapDir=subprojects/packagefiles/${dep.pname} -+ outDir=subprojects/${dep.pname}-${dep.version} -+ -+ mkdir -p $outDir -+ tar -C $outDir -xf ${fetchCrate (dep // { unpack = false; })} --strip-components=1 -+ cp $wrapDir/meson.build $outDir - -- copyRustDep = dep: '' -- cp -R --no-preserve=mode,ownership ${fetchCrate dep} subprojects/${dep.pname}-${dep.version} -- cp -R subprojects/packagefiles/${dep.pname}/* subprojects/${dep.pname}-${dep.version}/ -+ for patch in $wrapDir/*.patch; do -+ patch -d $outDir -i $(readlink -f $patch) -p1 -+ done -+ ) - ''; - -- copyRustDeps = lib.concatStringsSep "\n" (builtins.map copyRustDep rustDeps); -+ copyRustDeps = lib.concatStringsSep "\n" (builtins.map handleRustDep rustDeps); - - needNativeCLC = !stdenv.buildPlatform.canExecute stdenv.hostPlatform; - -@@ -227,13 +204,6 @@ stdenv.mkDerivation { - (lib.mesonEnable "gbm" true) - (lib.mesonBool "libgbm-external" true) - -- (lib.mesonBool "gallium-nine" false) # Direct3D9 in Wine, largely supplanted by DXVK -- -- # Only used by xf86-video-vmware, which has more features than VMWare's KMS driver, -- # so we're keeping it for now. Should be removed when that's no longer the case. -- # See: https://github.com/NixOS/nixpkgs/pull/392492 -- (lib.mesonEnable "gallium-xa" true) -- - (lib.mesonBool "teflon" true) # TensorFlow frontend - - # Enable all freedreno kernel mode drivers. (For example, virtio can be -@@ -241,9 +211,6 @@ stdenv.mkDerivation { - # is ignored when freedreno is not being built. - (lib.mesonOption "freedreno-kmds" "msm,kgsl,virtio,wsl") - -- # Enable Intel RT stuff when available -- (lib.mesonEnable "intel-rt" stdenv.hostPlatform.isx86_64) -- - # Required for OpenCL - (lib.mesonOption "clang-libdir" "${lib.getLib llvmPackages.clang-unwrapped}/lib") - -@@ -251,15 +218,16 @@ stdenv.mkDerivation { - (lib.mesonBool "gallium-rusticl" true) - (lib.mesonOption "gallium-rusticl-enable-drivers" "auto") - -- # meson auto_features enables this, but we do not want it -- (lib.mesonEnable "android-libbacktrace" false) -- (lib.mesonEnable "microsoft-clc" false) # Only relevant on Windows (OpenCL 1.2 API on top of D3D12) -- - # Enable more sensors in gallium-hud - (lib.mesonBool "gallium-extra-hud" true) - - # Disable valgrind on targets where it's not available - (lib.mesonEnable "valgrind" withValgrind) -+ -+ # meson auto_features enables these, but we do not want them -+ (lib.mesonEnable "gallium-mediafoundation" false) # Windows only -+ (lib.mesonEnable "android-libbacktrace" false) # Android only -+ (lib.mesonEnable "microsoft-clc" false) # Only relevant on Windows (OpenCL 1.2 API on top of D3D12) - ] - ++ lib.optionals enablePatentEncumberedCodecs [ - (lib.mesonOption "video-codecs" "all") -diff --git a/pkgs/development/libraries/mesa/opencl.patch b/pkgs/development/libraries/mesa/opencl.patch -index 9d40da82f85649..d71f168d83cf12 100644 ---- a/pkgs/development/libraries/mesa/opencl.patch -+++ b/pkgs/development/libraries/mesa/opencl.patch -@@ -1,23 +1,23 @@ - diff --git a/meson.build b/meson.build --index c150bff74ff..37fa7f0531b 100644 -+index 393f3ac1b93..fbc90b5645e 100644 - --- a/meson.build - +++ b/meson.build --@@ -1850,7 +1850,7 @@ endif -+@@ -1836,7 +1836,7 @@ endif - - dep_clang = null_dep -- if with_clc or with_gallium_clover -+ if with_clc - - llvm_libdir = dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir') - + llvm_libdir = get_option('clang-libdir') - - dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false) - --diff --git a/meson_options.txt b/meson_options.txt --index 82324617884..4bde97a8568 100644 -+diff --git a/meson.options b/meson.options -+index b1cdb06fcc9..3e8861979ae 100644 - --- a/meson.options - +++ b/meson.options --@@ -738,3 +738,10 @@ option( -- 'none', 'dri2' -- ], -+@@ -856,3 +856,10 @@ option( -+ value : false, -+ description : 'Build virtgpu_kumquat (only useful with gfxstream currently)' - ) - + - +option( -@@ -26,24 +26,11 @@ index 82324617884..4bde97a8568 100644 - + value : '', - + description : 'Locations to search for clang libraries.' - +) --diff --git a/src/gallium/targets/opencl/meson.build b/src/gallium/targets/opencl/meson.build --index ab2c83556a8..a59e88e122f 100644 ----- a/src/gallium/targets/opencl/meson.build --+++ b/src/gallium/targets/opencl/meson.build --@@ -56,7 +56,7 @@ if with_opencl_icd -- configuration : _config, -- input : 'mesa.icd.in', -- output : 'mesa.icd', --- install : true, --+ install : false, -- install_tag : 'runtime', -- install_dir : join_paths(get_option('sysconfdir'), 'OpenCL', 'vendors'), -- ) - diff --git a/src/gallium/targets/rusticl/meson.build b/src/gallium/targets/rusticl/meson.build --index 35833dc7423..41a95927cab 100644 -+index 2b214adbbf5..7f919397ad5 100644 - --- a/src/gallium/targets/rusticl/meson.build - +++ b/src/gallium/targets/rusticl/meson.build --@@ -63,7 +63,7 @@ configure_file( -+@@ -64,7 +64,7 @@ configure_file( - configuration : _config, - input : 'rusticl.icd.in', - output : 'rusticl.icd', -diff --git a/pkgs/development/libraries/mesa/update-wraps.py b/pkgs/development/libraries/mesa/update-wraps.py -new file mode 100644 -index 00000000000000..037dfc0397b24b ---- /dev/null -+++ b/pkgs/development/libraries/mesa/update-wraps.py -@@ -0,0 +1,50 @@ -+import base64 -+import binascii -+import configparser -+import json -+import pathlib -+import sys -+import urllib.parse -+ -+ -+def to_sri(hash: str): -+ raw = binascii.unhexlify(hash) -+ b64 = base64.b64encode(raw).decode() -+ return f"sha256-{b64}" -+ -+ -+def main(dir: str): -+ result = [] -+ for file in (pathlib.Path(dir) / "subprojects").glob("*.wrap"): -+ name = file.stem -+ parser = configparser.ConfigParser() -+ _ = parser.read(file) -+ sections = parser.sections() -+ if "wrap-file" not in sections: -+ continue -+ -+ url = parser.get("wrap-file", "source_url") -+ if "crates.io" not in url: -+ continue -+ -+ parsed = urllib.parse.urlparse(url) -+ path = parsed.path.split("/") -+ assert path[4] == name -+ version = path[5] -+ -+ hash = to_sri(parser.get("wrap-file", "source_hash")) -+ -+ result.append({ -+ "pname": name, -+ "version": version, -+ "hash": hash, -+ }) -+ -+ here = pathlib.Path(__file__).parent -+ with (here / "wraps.json").open("w") as fd: -+ json.dump(result, fd, indent=4) -+ _ = fd.write("\n") -+ -+ -+if __name__ == '__main__': -+ main(*sys.argv[1:]) -diff --git a/pkgs/development/libraries/mesa/wraps.json b/pkgs/development/libraries/mesa/wraps.json -new file mode 100644 -index 00000000000000..5b185c2d56239b ---- /dev/null -+++ b/pkgs/development/libraries/mesa/wraps.json -@@ -0,0 +1,137 @@ -+[ -+ { -+ "pname": "errno", -+ "version": "0.3.12", -+ "hash": "sha256-zqFO+TVeO+qwY3A6qdqxWv0l8GZ8NBMQweUnS7HQ2hg=" -+ }, -+ { -+ "pname": "quote", -+ "version": "1.0.35", -+ "hash": "sha256-KR7Jq179k0qvUDpkZsXVJRU10QjudHRyw5d8xazIaO8=" -+ }, -+ { -+ "pname": "pest", -+ "version": "2.8.0", -+ "hash": "sha256-GY23RTHVjHCjYcQiAe/efiWR6XbVGMr3ZipH3Fcg57Y=" -+ }, -+ { -+ "pname": "equivalent", -+ "version": "1.0.1", -+ "hash": "sha256-VEOAfW3/aTc9Qzq571N4rY31DKYpjK8V3m5S4kqvVNU=" -+ }, -+ { -+ "pname": "syn", -+ "version": "2.0.87", -+ "hash": "sha256-JapM40bQOm3NaN2LQBC8t05U5iyQxXPzlMRurpmroy0=" -+ }, -+ { -+ "pname": "remain", -+ "version": "0.2.12", -+ "hash": "sha256-GtXgESMMrSdNBTJGDFq2mCjqR651aBtCqEFmPv/695Q=" -+ }, -+ { -+ "pname": "unicode-ident", -+ "version": "1.0.12", -+ "hash": "sha256-M1S5rD+uH/Z1XLbbU2g622YWNPZ1V5Qt6k+s6+wP7ks=" -+ }, -+ { -+ "pname": "cfg-if", -+ "version": "1.0.0", -+ "hash": "sha256-uvHeQzl2FYi8Bhnjy8ASDuWC67dLU7Tvv3kRe9LaQP0=" -+ }, -+ { -+ "pname": "bitflags", -+ "version": "2.9.1", -+ "hash": "sha256-G45WmF7GLRfpwQAdyJyI7NfcCOR+ul7Hwpx7Xu7N6Wc=" -+ }, -+ { -+ "pname": "pest_derive", -+ "version": "2.8.0", -+ "hash": "sha256-1yXZz9eeh9zMk0Gi7znRtvY1PWjEszwXf+u+GkAsl8U=" -+ }, -+ { -+ "pname": "rustc-hash", -+ "version": "2.1.1", -+ "hash": "sha256-NXcD1BNltLJ8WQ4+2R6rsbZj8HxMCECV5gy+1DYt/w0=" -+ }, -+ { -+ "pname": "ucd-trie", -+ "version": "0.1.6", -+ "hash": "sha256-7WRikv/IGI746k0eDgFQ+xWlwuEq2bj8GRrnqKfzxLk=" -+ }, -+ { -+ "pname": "indexmap", -+ "version": "2.2.6", -+ "hash": "sha256-Fo+3Fd2kchXjYJEsCWZJ0j1Yvzkqxi9zkZ6DF0XkDyY=" -+ }, -+ { -+ "pname": "paste", -+ "version": "1.0.14", -+ "hash": "sha256-3jFFrwgCTeqfqZFPOBoXuPxgNN+wDzqEAT9/9D8p7Uw=" -+ }, -+ { -+ "pname": "hashbrown", -+ "version": "0.14.1", -+ "hash": "sha256-ff2mKhL1Xa6uUBX4GwuuoUU5HLRSD4bCSPxhXXJkDRI=" -+ }, -+ { -+ "pname": "libc", -+ "version": "0.2.168", -+ "hash": "sha256-Wq6ymB4GBsoR15cY+LsBFk8dbtdQgBgtOr8Bfm0kS20=" -+ }, -+ { -+ "pname": "thiserror-impl", -+ "version": "2.0.11", -+ "hash": "sha256-Jq/BuuqKmJM37rUrbnKgOXgM5Fw+38ycW50RL+6xc8I=" -+ }, -+ { -+ "pname": "once_cell", -+ "version": "1.8.0", -+ "hash": "sha256-aS/LY7ZLF1gCngqW7mPgSc6MWUhYfy9yCN8EYl5fa1Y=" -+ }, -+ { -+ "pname": "rustix", -+ "version": "1.0.7", -+ "hash": "sha256-xx6D1q/n/2SJDsa3HWppu4phCreM42SzNSh2u0yAEmY=" -+ }, -+ { -+ "pname": "pest_generator", -+ "version": "2.8.0", -+ "hash": "sha256-230Bcmvoq2arMvnfRnrosRSJBmhbvnXILR5l1/Wz+EE=" -+ }, -+ { -+ "pname": "thiserror", -+ "version": "2.0.11", -+ "hash": "sha256-1FLyhLc+bXbdNnWKDIaEsdW+MfkridB/1YIhdXMiBvw=" -+ }, -+ { -+ "pname": "proc-macro2", -+ "version": "1.0.86", -+ "hash": "sha256-XnGejfZl3w0cj7/SOAFXRHNhUdREXsCDa45iiq4QO3c=" -+ }, -+ { -+ "pname": "zerocopy", -+ "version": "0.8.13", -+ "hash": "sha256-Z5FKtFHzv9Lmnl6dLvOFhITnB01j8gT9Fm7DkbVN4h0=" -+ }, -+ { -+ "pname": "roxmltree", -+ "version": "0.20.0", -+ "hash": "sha256-bCC2eTtcL6ZVOyUBVLeNbQ2zfnJwCuNfrZOHpG9IfJc=" -+ }, -+ { -+ "pname": "zerocopy-derive", -+ "version": "0.8.13", -+ "hash": "sha256-eYjXOkMDyiid8DMWvEkOk0rM83Gva8dFOTzzwsXE8l0=" -+ }, -+ { -+ "pname": "pest_meta", -+ "version": "2.8.0", -+ "hash": "sha256-f5+DJHBJSQbR/KUyn4q1eRzGC+sjDHSBXf9UHL0rXKA=" -+ }, -+ { -+ "pname": "log", -+ "version": "0.4.27", -+ "hash": "sha256-E9wt81HjICeDof4NRDdfcpX/tASSZ7DzAYNG3BIqHZQ=" -+ } -+] -diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix -index 49f4838a058bda..6e14ad71a2b48c 100644 ---- a/pkgs/servers/x11/xorg/overrides.nix -+++ b/pkgs/servers/x11/xorg/overrides.nix -@@ -829,7 +829,6 @@ self: super: - }); - - xf86videovmware = super.xf86videovmware.overrideAttrs (attrs: { -- buildInputs = attrs.buildInputs ++ [ mesa ]; - env.NIX_CFLAGS_COMPILE = toString [ "-Wno-error=address" ]; # gcc12 - meta = attrs.meta // { - platforms = [ diff --git a/files/nixpkgs-patches/4c3870b23dded4e75292be48bdb03cd870fb1719.diff b/files/nixpkgs-patches/4c3870b23dded4e75292be48bdb03cd870fb1719.diff deleted file mode 100644 index 950ee0e..0000000 --- a/files/nixpkgs-patches/4c3870b23dded4e75292be48bdb03cd870fb1719.diff +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/pkgs/development/libraries/mesa/common.nix b/pkgs/development/libraries/mesa/common.nix -index d6377d6de7dabd..18f999dd83599c 100644 ---- a/pkgs/development/libraries/mesa/common.nix -+++ b/pkgs/development/libraries/mesa/common.nix -@@ -5,14 +5,14 @@ - # nix build .#legacyPackages.x86_64-darwin.mesa .#legacyPackages.aarch64-darwin.mesa - rec { - pname = "mesa"; -- version = "25.1.5"; -+ version = "25.1.6"; - - src = fetchFromGitLab { - domain = "gitlab.freedesktop.org"; - owner = "mesa"; - repo = "mesa"; - rev = "mesa-${version}"; -- hash = "sha256-AZAd1/wiz8d0lXpim9obp6/K7ySP12rGFe8jZrc9Gl0="; -+ hash = "sha256-SHYYezt2ez9awvIATEC6wVMZMuJUsOYXxlugs1Q6q7U="; - }; - - meta = { diff --git a/files/nvim/fzf_no_linenum.diff b/files/nvim/fzf_no_linenum.diff deleted file mode 100644 index bed26be..0000000 --- a/files/nvim/fzf_no_linenum.diff +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/autoload/fzf/vim.vim b/autoload/fzf/vim.vim -index 67945c3..ccfe729 100755 ---- a/autoload/fzf/vim.vim -+++ b/autoload/fzf/vim.vim -@@ -789,7 +789,7 @@ endfunction - - function! fzf#vim#_format_buffer(b) - let name = bufname(a:b) -- let line = exists('*getbufinfo') ? getbufinfo(a:b)[0]['lnum'] : 0 -+ "let line = exists('*getbufinfo') ? getbufinfo(a:b)[0]['lnum'] : 0 - let fullname = empty(name) ? '' : fnamemodify(name, ":p:~:.") - let dispname = empty(name) ? '[No Name]' : name - let flag = a:b == bufnr('') ? s:blue('%', 'Conditional') : -@@ -797,8 +797,8 @@ function! fzf#vim#_format_buffer(b) - let modified = getbufvar(a:b, '&modified') ? s:red(' [+]', 'Exception') : '' - let readonly = getbufvar(a:b, '&modifiable') ? '' : s:green(' [RO]', 'Constant') - let extra = join(filter([modified, readonly], '!empty(v:val)'), '') -- let target = empty(name) ? '' : (line == 0 ? fullname : fullname.':'.line) -- return s:rstrip(printf("%s\t%d\t[%s] %s\t%s\t%s", target, line, s:yellow(a:b, 'Number'), flag, dispname, extra)) -+ let target = empty(name) ? '' : (fullname) -+ return s:rstrip(printf("%s\t[%s] %s\t%s\t%s", target, s:yellow(a:b, 'Number'), flag, dispname, extra)) - endfunction - - function! s:sort_buffers(...) diff --git a/files/nvim/init.vim b/files/nvim/init.vim deleted file mode 100644 index 780f9d5..0000000 --- a/files/nvim/init.vim +++ /dev/null @@ -1,368 +0,0 @@ -" Basic settings. -set number -set noshowmode -set signcolumn=yes -set updatetime=250 -set scrolloff=5 - -" Change directory based on current file. -if !empty($NIX_SHELL) - " Attempt to conflict less with plugins. - autocmd BufEnter * if gitbranch#name() != '' | silent! lcd %:p:h -else - set autochdir -endif - -" inotify compat? -set backupcopy=yes - -" Old defaults (I think). -set splitright -set splitbelow - -" Syntax and indent from filetype. -set nocompatible -filetype plugin indent on -syntax on - -" Check for SHIFT_JIS. -set fileencodings=ucs-bom,utf-8,sjis,default,latin1 - -" 4 spaces autoindent. -set tabstop=4 -set shiftwidth=4 -set expandtab -set autoindent - -" C syntax preference. -let g:c_syntax_for_h=1 -let g:c_no_curly_error=1 -let g:c_function_pointers=1 -set cinoptions=:0,=4,l1,g2,h2,(4,u4,+4,m1,j1,J1 -set cindent - -" Set different format for mail and text files. -set nowrap nolinebreak nolist formatoptions=l textwidth=0 -autocmd FileType mail,text setlocal wrap formatoptions=l textwidth=0 - -" Ex tab complete that makes sense to me. -set wildmode=longest,list,full -set wildmenu - -" Allow distinguishing <C-i> from <Tab> in bindings. -let &t_TI = '\<Esc>[>4;2m' -let &t_TE = '\<Esc>[>4;m' -" Treat shift + backspace as normal backspace. -tnoremap <S-BS> <BS> - -" System clipboard on linux. -set clipboard+=unnamedplus - -" Session options. -set ssop=skiprtp,blank,buffers,folds,winsize,terminal -set vop-=curdir -if isdirectory(expand('~/c')) - let view_dir = expand('~/c/sessions/views') - if !isdirectory(view_dir) - call mkdir(view_dir, 'p', 0755) - endif - let &viewdir=view_dir - - " Staggered backups. - let backup_dir = '/mnt/store/backup/vim' - if !isdirectory(backup_dir) - let backup_dir = expand('~/c/sessions/backup//') - if !isdirectory(backup_dir) - call mkdir(backup_dir, 'p', 0755) - endif - endif - let &backupdir=backup_dir - set backup - - " Swap file directory. - let swap_dir = expand('~/c/sessions/swaps//') - if !isdirectory(swap_dir) - call mkdir(swap_dir, 'p', 0755) - endif - let &directory=swap_dir - - if has('persistent_undo') - let undo_dir = expand('~/c/sessions/undo') - if !isdirectory(undo_dir) - call mkdir(undo_dir, 'p', 0755) - endif - let &undodir=undo_dir - set undofile - endif -endif - -" Colorscheme. -set termguicolors -colo wal-gui - -" Cursor blink. -"set guicursor=a:blinkon1 - -" Highlight whitespace. -au BufEnter * match ExtraWhitespace /\s\+$/ -au InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/ -au InsertLeave * match ExtraWhitespace /\s\+$/ - -" Fzf format. -let g:fzf_colors = { - \'fg': ['fg', 'Normal'], - \'bg': ['bg', 'Normal'], - \'hl': ['fg', 'Type'], - \'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], - \'bg+': ['bg', 'CursorLine', 'CursorColumn'], - \'hl+': ['fg', 'Type'], - \'info': ['fg', 'PreProc'], - \'border': ['fg', 'Operator'], - \'prompt': ['fg', 'Identifier'], - \'pointer': ['fg', 'Type'], - \'marker': ['fg', 'Keyword'], - \'spinner': ['fg', 'String'], - \'header': ['fg', 'Type'] -\} -let g:fzf_preview_window = ['right,55%'] -" This is redundant but I want to keep FZF_DEFAULT_OPTS here. -let $FZF_DEFAULT_OPTS = '--preview-window=border-sharp' -let g:fzf_layout = { - \'window': { 'width': 0.75, 'height': 0.60, 'rounded': 0 }, -\} - -function! StatuslineMode() abort - if mode() == nr2char(22) - return mode() - else - return '-'.mode() - endif -endfunction - -function! StatuslineGit() - let l:branchname = gitbranch#name() - return strlen(l:branchname) > 0 ? ' '.l:branchname.' ' : ' ' -endfunction - -function! StatuslineLsp() abort - return luaeval('get_lsp_name()') -endfunction - -" Custom statusline. -function! Statusline() abort - let focused = g:statusline_winid == win_getid(winnr()) - let status = focused ? '%#StatusLine#' : '%#StatusLineNC#' - let status .= '%{StatuslineGit()}' - let status .= ' %f' - let status .= ' vim@%{hostname()}' - let status .= '%=' - let status .= ' %y' - let status .= '%{StatuslineLsp()}' - let status .= ' %{&fileencoding}' - let status .= '[%{&fileformat}]' - let status .= '%3p%%' - let status .= ' %3l:%-3c' - return status -endfunction -set statusline=%!Statusline() - -" Make shift + nav keys no-ops. -nmap H <nop> -nmap J <nop> -nmap K <nop> -nmap L <nop> -" Normal mode tab no-op. -nmap <Tab> <nop> -" ctrl + c no-op. -nmap <C-c> <nop> -" Disable F1 for help. -nmap <F1> <nop> -" Disable q: for histroy. -nmap q: <nop> -" Simplify split movement. -nmap <silent> <C-h> :wincmd h<CR> -nmap <silent> <C-j> :wincmd j<CR> -nmap <silent> <C-k> :wincmd k<CR> -nmap <silent> <C-l> :wincmd l<CR> -nmap <silent> <C-o> :vsplit<CR> -" Make ctrl + '.' and ',' map to previous buffer. -nmap <C-,> <C-^> -nmap <C-.> <C-^> -" Swap ctrl + f and b. -"nnoremap <C-b> <C-f> -"nnoremap <C-f> <C-b> -" Toggle colorcolumn. -nmap <silent> C :execute 'set colorcolumn=' . (&colorcolumn == '' ? '101' : '')<CR> -" Personally intuitive pop-up menu binds. -inoremap <expr> <CR> pumvisible() ? '<C-y><CR>' : '<CR>' -inoremap <expr> <Up> pumvisible() ? '<C-p>' : '<Up>' -inoremap <expr> <Down> pumvisible() ? '<C-n>' : '<Down>' -" Lsp Binds. -nmap <C-d> <C-]> -" Fzf binds. -nmap <silent> \ :Buffers<CR> -nmap <silent> <C-i> :GGrep<CR> -nmap <silent> <C-\> :GFiles<CR> -" Only Neogit bind, handle all further operations from this menu. -nmap <silent> Y :Neogit<CR> -nmap <silent> L :lua neogit_log_current()<CR> -" Undotree. -nmap <silent> U :UndotreeToggle<CR> -" Toggle hex color highlighting. -nnoremap <silent> # :CccHighlighterToggle<CR> - -command Tabify set noexpandtab | %retab! | set expandtab -command Untabify set expandtab | %retab! - -" https://stackoverflow.com/a/37040415 -function! SyntaxGroup() - let l:s = synID(line('.'), col('.'), 1) - echo synIDattr(l:s, 'name') . ' -> ' . synIDattr(synIDtrans(l:s), 'name') -endfun - -" https://vi.stackexchange.com/a/456 -function! TrimWhitespace() - let l:save = winsaveview() - keeppatterns %s/\s\+$//e - call winrestview(l:save) -endfun - -" https://github.com/junegunn/fzf.vim?tab=readme-ov-file#example-git-grep-wrapper -command! -bang -nargs=* GGrep - \ call fzf#vim#grep( - \ 'git grep --line-number -- '.fzf#shellescape(<q-args>), - \ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0) - -" https://vim.fandom.com/wiki/Replace_a_builtin_command_using_cabbrev -function! CommandCabbr(abbreviation, expansion) - execute 'cabbr ' . a:abbreviation . ' <C-R>=getcmdpos() == 1 && getcmdtype() == ":" ? "' . a:expansion . '" : "' . a:abbreviation . '"<CR>' -endfunction -command! -nargs=+ CommandCabbr call CommandCabbr(<f-args>) -CommandCabbr no nohlsearch - -call Juliana#Init() " Custom insert mode tab behavior inherited from Emacs. -inoremap <silent><Tab> <C-R>=Juliana#CompleteTab('START')<CR> - \<C-R>=Juliana#CompleteTab('TAB')<CR> - \<C-R>=Juliana#CompleteTab('ALIGN')<CR> - \<C-R>=Juliana#CompleteTab('NEXT')<CR> -inoremap <silent><S-Tab> <C-R>=Juliana#CompleteSTab('PREV')<CR> - -lua << EOF -function get_lsp_name() - local active_clients = vim.lsp.get_clients({bufnr = vim.api.nvim_get_current_buf()}) - if next(active_clients) == nil then - return '' - else - str = '<' - for _, v in pairs(active_clients) do - str = str .. v.name .. '+' - end - return str:sub(1, -2) .. '>' - end -end - -buf_is_big = function(bufnr) - local max_filesize = 100 * 1024 -- 100KB - local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(bufnr)) - if ok and stats and stats.size > max_filesize then - return true - else - return false - end -end - --- LSP configs. -if os.getenv('NIX_SHELL') ~= nil then - vim.diagnostic.config({ virtual_text = true }) - vim.lsp.config('clangd', { - cmd = { - 'clangd', - '-j=4', - '--log=error', - '--malloc-trim', - '--background-index', - '--clang-tidy', - '--completion-style=bundled', - '--pch-storage=memory', - '--header-insertion=never', - '--header-insertion-decorators=0', - '--query-driver=gcc' - }, - capabilities = { - textDocument = { - semanticHighlightingCapabilities = { - semanticHighlighting = true - }, - completion = { - completionItem = { - snippetSupport = false - } - } - } - }, - }) - vim.lsp.enable({'clangd', 'ruff', 'ty'}) - -- https://github.com/neovim/nvim-lspconfig/issues/2626#issuecomment-2117022664 - -- https://github.com/neovim/nvim-lspconfig/issues/2508 - vim.api.nvim_create_autocmd('BufReadPre', { - callback = function(t) - if buf_is_big(t.buf) then - vim.o.eventignore = 'FileType' - vim.schedule(function() - vim.o.eventignore = '' - print('Dropped FileType events because the buffer is too big') - end) - end - end - }) - require('inc_rename').setup({}) - vim.keymap.set('n', '<C-n>', function() - return ':IncRename ' .. vim.fn.expand('<cword>') - end, { expr = true }) -end - --- Set sessions folder and autowrite. -if vim.fn.isdirectory(vim.fn.expand('~/c')) then - require('mini.sessions').setup({ - autoread = false, - autowrite = true, - directory = '~/c/sessions' - }) -end - --- Completion. -require('mini.completion').setup({ - window = { - info = { border = 'none' }, - signature = { border = 'none' } - } -}) - --- Don't use tabs in Neogit. -require('neogit').setup({ - disable_hint = true, - kind = 'vsplit', - commit_editor = { kind = 'split' }, - commit_select_view = { kind = 'vsplit' }, - commit_view = { kind = 'vsplit' }, - log_view = { kind = 'split' }, - reflog_view = { kind = 'split' }, - preview_buffer = { kind = 'split' }, - popup = { kind = 'split' }, - refs_view = { kind = 'split' }, - -- Allow basic movement in Neogit without mapping conflicts. - mappings = { - popup = { ['l'] = false, ['L'] = 'LogPopup', ['d'] = false }, - status = { ['$'] = false, ['#'] = 'CommandHistory' } - }, - integrations = {} -}) - --- Doesn't work consistently. -function neogit_log_current() - require("neogit").action("log", "log_current", { "--", vim.fn.expand("%:p") })() -end - --- Preview colors in #<hex> format. -require('ccc').setup({ highlighter = { auto_enable = false, lsp = true } }) -EOF diff --git a/files/nvim/mini_completion_no_title.diff b/files/nvim/mini_completion_no_title.diff deleted file mode 100644 index e69de29..0000000 --- a/files/nvim/mini_completion_no_title.diff +++ /dev/null diff --git a/files/nvim/mini_starter_picture.diff b/files/nvim/mini_starter_picture.diff deleted file mode 100644 index 2efc2a1..0000000 --- a/files/nvim/mini_starter_picture.diff +++ /dev/null @@ -1,288 +0,0 @@ -diff --git a/lua/mini/starter.lua b/lua/mini/starter.lua -index 66d46a52..9b7e4397 100644 ---- a/lua/mini/starter.lua -+++ b/lua/mini/starter.lua -@@ -138,7 +138,7 @@ - --- local timer = vim.loop.new_timer() - --- local n_seconds = 0 - --- timer:start(0, 1000, vim.schedule_wrap(function() ----- if vim.bo.filetype ~= 'ministarter' then -+--- if vim.bo.filetype ~= 'dashboard' then - --- timer:stop() - --- return - --- end -@@ -239,6 +239,9 @@ MiniStarter.config = { - -- If `nil` (default), default items will be used (see |mini.starter|). - items = nil, - -+ -- Empty lines at the top of the content. -+ top_padding = 0, -+ - -- Header to be displayed before items. Converted to single string via - -- `tostring` (use `\n` to display several lines). If function, it is - -- evaluated first. If `nil` (default), polite greeting will be used. -@@ -249,6 +252,12 @@ MiniStarter.config = { - -- evaluated first. If `nil` (default), default usage help will be shown. - footer = nil, - -+ -- Amount of empty lines between items and the footer. -+ footer_offset = 1, -+ -+ -- Picture to show to the side of the content. -+ picture = nil, -+ - -- Array of functions to be applied consecutively to initial content. - -- Each function should take and return content for Starter buffer (see - -- |mini.starter| and |MiniStarter.get_content()| for more details). -@@ -373,7 +382,7 @@ MiniStarter.refresh = function(buf_id) - data.footer = H.normalize_header_footer(config.footer or H.default_footer) - - -- Evaluate content -- local content = H.make_initial_content(data.header, items, data.footer) -+ local content = H.make_initial_content(data.header, items, data.footer, config) - local hooks = config.content_hooks or H.default_content_hooks - for _, f in ipairs(hooks) do - content = f(content, buf_id) -@@ -400,6 +409,16 @@ MiniStarter.refresh = function(buf_id) - - -- Apply current query (clear command line afterwards) - H.make_query(buf_id) -+ -+ -- The picture drawn here used to get cleared at some point -+ -- that _usually_ came before any scheduled timers fired. -+ -- That seems to not happen anymore (nvim-0.11.1, kitty 0.42.1). -+ H.draw_picture(config, false) -+ --local timer = vim.loop.new_timer() -+ --timer:start(0, 0, vim.schedule_wrap(function() -+ -- timer:stop() -+ -- H.draw_picture(config, false) -+ --end)) - end - - --- Close Starter buffer -@@ -729,18 +748,45 @@ MiniStarter.gen_hook.aligning = function(horizontal, vertical) - local win_id = vim.fn.bufwinid(buf_id) - if win_id < 0 then return end - -+ local config = H.get_config() -+ - local line_strings = MiniStarter.content_to_lines(content) - -+ H.win_width = vim.api.nvim_win_get_width(win_id) -+ H.win_height = vim.api.nvim_win_get_height(win_id) -+ - -- Align horizontally - -- Don't use `string.len()` to account for multibyte characters - local lines_width = vim.tbl_map(function(l) return vim.fn.strdisplaywidth(l) end, line_strings) -- local min_right_space = vim.api.nvim_win_get_width(win_id) - math.max(unpack(lines_width)) -+ -- Ignore the max line width -+ local min_right_space = H.win_width -- - math.max(unpack(lines_width)) - local left_pad = math.max(math.floor(horiz_coef * min_right_space), 0) - - -- Align vertically -- local bottom_space = vim.api.nvim_win_get_height(win_id) - #line_strings -+ local bottom_space = H.win_height - #line_strings - local top_pad = math.max(math.floor(vert_coef * bottom_space), 0) - -+ -- Position picture -+ if config.picture ~= nil then -+ if config.picture.width == nil then config.picture.width = 25 end -+ if config.picture.position ~= 'right' then config.picture.position = 'left' end -+ if config.picture.padding == nil then config.picture.padding = {} end -+ if config.picture.padding.left == nil then config.picture.padding.left = 0 end -+ if config.picture.padding.top == nil then config.picture.padding.top = 0 end -+ if config.picture.padding.text == nil then config.picture.padding.text = 0 end -+ -+ local picture_left_pad = (config.picture.width / 2.0) - config.picture.padding.left -+ -+ left_pad = left_pad + config.picture.padding.text -+ if config.picture.position == 'left' then -+ H.picture_x = left_pad - picture_left_pad -+ else -+ H.picture_x = left_pad + picture_left_pad -+ end -+ if H.picture_x < 0.0 then H.picture_x = 0.0 end -+ H.picture_y = top_pad + config.picture.padding.top + config.top_padding -+ end -+ - return MiniStarter.gen_hook.padding(left_pad, top_pad)(content) - end - end -@@ -1003,7 +1049,7 @@ H.default_footer = [[ - Type query to filter items - <BS> deletes latest character from query - <Esc> resets current query --<Down/Up>, <C-n/p>, <M-j/k> move current item -+<C-j/k> move current item - <CR> executes action of current item - <C-c> closes this buffer]] - -@@ -1044,8 +1090,54 @@ end - - H.apply_config = function(config) MiniStarter.config = config end - -+H.is_file_readable = function(path) -+ return vim.fn.filereadable(vim.fn.expand(path)) ~= 0 -+end -+ -+H.draw_picture = function(config, clear) -+ if config ~= nil then -+ if config.picture == nil or config.picture.path == nil or not H.is_file_readable(config.picture.path) then return end -+ else -+ -- No picture, so nothing to clear -+ if H.picture_x == nil or H.picture_y == nil then return end -+ end -+ local cmd = '' -+ if clear and not config.picture.kitty then -+ cmd = ('for i in $(seq %d %d); do tput cup $i 0 && tput el; done'):format(0, H.win_height - 1) -+ else -+ cmd = ('chafa %s --align left,top -s %dx%d 2>&1'):format(config.picture.path, config.picture.width, (H.win_height - 2) - H.picture_y) -+ end -+ -- Resizing will not clear on non-kitty mode -+ local output = '' -+ if config.picture.kitty then -+ output = output .. '\027_Ga=d\027\\' -+ end -+ if not clear or not config.picture.kitty then -+ local handle = io.popen(cmd) -+ output = output .. handle:read('*a') -+ -- `rc` doesn't work when run from inside vim (last tested in neovim-0.9) -+ local rc = {handle:close()} -+ end -+ local tty, err = io.open('/proc/self/fd/0', 'wb') -+ if tty then -+ tty:write('\x1b[s') -+ if not clear then -+ tty:write(('\x1b[%d;%dH'):format(H.picture_y, H.picture_x)) -+ elseif not config.picture.kitty then -+ tty:write('\x1b[48;5;0m') -+ end -+ tty:write(output) -+ if not clear then -+ tty:write('\x1b[u') -+ end -+ tty:close() -+ else -+ H.echo('Error opening tty: ' .. err) -+ end -+end -+ - H.create_autocommands = function(config) -- local gr = vim.api.nvim_create_augroup('MiniStarter', {}) -+ H.augroup = vim.api.nvim_create_augroup('MiniStarter', {}) - - if config.autoopen then - local on_vimenter = function() -@@ -1057,7 +1149,7 @@ H.create_autocommands = function(config) - vim.cmd('noautocmd lua MiniStarter.open()') - end - -- local au_opts = { group = gr, nested = true, once = true, callback = on_vimenter, desc = 'Open on VimEnter' } -+ local au_opts = { group = H.augroup, nested = true, once = true, callback = on_vimenter, desc = 'Open on VimEnter' } - vim.api.nvim_create_autocmd('VimEnter', au_opts) - end - -@@ -1103,9 +1195,11 @@ H.normalize_header_footer = function(x) - end - - -- Work with buffer content --------------------------------------------------- --H.make_initial_content = function(header, items, footer) -+H.make_initial_content = function(header, items, footer, config) - local content = {} - -+ H.content_add_empty_lines(content, config.top_padding) -+ - -- Add header lines - for _, l in ipairs(header) do - H.content_add_line(content, { H.content_unit(l, 'header', 'MiniStarterHeader') }) -@@ -1116,7 +1210,7 @@ H.make_initial_content = function(header, items, footer) - H.content_add_items(content, items) - - -- Add footer lines -- H.content_add_empty_lines(content, #footer > 0 and 1 or 0) -+ H.content_add_empty_lines(content, #footer > 0 and config.footer_offset or 0) - for _, l in ipairs(footer) do - H.content_add_line(content, { H.content_unit(l, 'footer', 'MiniStarterFooter') }) - end -@@ -1319,11 +1413,23 @@ H.make_buffer_autocmd = function(buf_id) - au('VimResized', function() MiniStarter.refresh(buf_id) end, 'Refresh') - au('CursorMoved', function() H.position_cursor_on_current_item(buf_id) end, 'Position cursor') - -+ local config = H.get_config() -+ - local cache_showtabline = vim.o.showtabline - au('BufLeave', function() - if vim.o.cmdheight > 0 then vim.cmd("echo ''") end - if vim.o.showtabline == 1 then vim.o.showtabline = cache_showtabline end -+ H.draw_picture(config, true) - end, 'On BufLeave') -+ -+ au('BufEnter', function() -+ H.draw_picture(config, false) -+ --local timer = vim.loop.new_timer() -+ --timer:start(0, 0, vim.schedule_wrap(function() -+ -- timer:stop() -+ -- H.draw_picture(config, false) -+ --end)) -+ end, 'On BufEnter') - end - - H.apply_buffer_options = function(buf_id) -@@ -1336,7 +1442,7 @@ H.apply_buffer_options = function(buf_id) - vim.api.nvim_feedkeys('\28\14', 'nx', false) - - -- Having `noautocmd` is crucial for performance: ~9ms without it, ~1.6ms with it -- vim.cmd('noautocmd silent! set filetype=ministarter') -+ vim.cmd('noautocmd silent! set filetype=dashboard') - - local options = { - -- Taken from 'vim-startify' -@@ -1383,12 +1489,8 @@ H.apply_buffer_mappings = function(buf_id) - - buf_keymap('<CR>', 'MiniStarter.eval_current_item()') - -- buf_keymap('<Up>', [[MiniStarter.update_current_item('prev')]]) -- buf_keymap('<C-p>', [[MiniStarter.update_current_item('prev')]]) -- buf_keymap('<M-k>', [[MiniStarter.update_current_item('prev')]]) -- buf_keymap('<Down>', [[MiniStarter.update_current_item('next')]]) -- buf_keymap('<C-n>', [[MiniStarter.update_current_item('next')]]) -- buf_keymap('<M-j>', [[MiniStarter.update_current_item('next')]]) -+ buf_keymap('<C-k>', [[MiniStarter.update_current_item('prev')]]) -+ buf_keymap('<C-j>', [[MiniStarter.update_current_item('next')]]) - - -- Make all special symbols to update query - for _, key in ipairs(vim.split(H.get_config().query_updaters, '')) do -@@ -1464,21 +1566,21 @@ H.is_something_shown = function() - end - - -- Utilities ------------------------------------------------------------------ --H.error = function(msg) error('(mini.starter) ' .. msg, 0) end -+H.error = function(msg) error('' .. msg, 0) end - - H.check_type = function(name, val, ref, allow_nil) - if type(val) == ref or (ref == 'callable' and vim.is_callable(val)) or (allow_nil and val == nil) then return end - H.error(string.format('`%s` should be %s, not %s', name, ref, type(val))) - end - --H.set_buf_name = function(buf_id, name) vim.api.nvim_buf_set_name(buf_id, 'ministarter://' .. buf_id .. '/' .. name) end -+H.set_buf_name = function(buf_id, name) vim.api.nvim_buf_set_name(buf_id, '*dashboard*') end - - H.echo = function(msg, is_important) - if H.get_config().silent then return end - - -- Construct message chunks - msg = type(msg) == 'string' and { { msg } } or msg -- table.insert(msg, 1, { '(mini.starter) ', 'WarningMsg' }) -+ table.insert(msg, 1, { '', 'Warning' }) - - -- Avoid hit-enter-prompt - local max_width = vim.o.columns * math.max(vim.o.cmdheight - 1, 0) + vim.v.echospace -@@ -1527,7 +1629,7 @@ H.eval_fun_or_string = function(x, string_as_cmd) - if type(x) == 'function' then return x() end - if type(x) == 'string' then - if string_as_cmd then -- vim.cmd(x) -+ pcall(function() vim.cmd(x) end) - else - return x - end diff --git a/files/adw-gtk3-non-blue-accent.diff b/files/patches/adw-gtk3-non-blue-accent.diff index 90ab11c..90ab11c 100644 --- a/files/adw-gtk3-non-blue-accent.diff +++ b/files/patches/adw-gtk3-non-blue-accent.diff diff --git a/files/gamescope_1826.diff b/files/patches/gamescope_1826.diff index 69c85e8..69c85e8 100644 --- a/files/gamescope_1826.diff +++ b/files/patches/gamescope_1826.diff diff --git a/files/sway_background_covered.diff b/files/patches/sway_background_covered.diff index 3ba8ef4..3ba8ef4 100644 --- a/files/sway_background_covered.diff +++ b/files/patches/sway_background_covered.diff diff --git a/files/shell/bashrc b/files/shell/bashrc new file mode 100644 index 0000000..443501d --- /dev/null +++ b/files/shell/bashrc @@ -0,0 +1,69 @@ +source ~/.profile + +gpgconf --launch gpg-agent + +if [ -v $NIX_SHELL ]; then + complete -cf doas +else + complete -F _root_command doas +fi + +export HISTCONTROL=erasedups +export HISTFILE=$HOME/.bash_history +export HISTFILESIZE=100000 +export HISTSIZE=1000 + +bind 'set completion-query-items 0' +bind 'set show-all-if-ambiguous on' +bind 'set show-all-if-unmodified on' +bind 'set menu-complete-display-prefix on' +bind '"\t": menu-complete' +bind '"\e[Z": menu-complete-backward' +# Clear screen and set return code to 0. +# Caveat: The text 'clear' will flash in the command line as +# if it was pasted and sent extremely fast. +bind '"\C-l":"\C-a\C-kclear\n"' + +alias ls='ls --ignore=lost+found --color=auto' +alias cp='rsync -av' +alias gdb='gdb -q' +alias top='htop' +alias pgrep='pgrep -f' +alias python='python -q' +alias bc='bc -l' +alias make='make -j6' +alias diff='diff -u' +alias mail='mutt' +alias iroha='ssh andrew@iroha' +alias moyo='ssh andrew@moyo' +alias station='ssh moyo -t "ssh 192.168.122.89"' +alias rod='ssh -p 1738 rod' +alias bmrg='ssh boomerang' +alias cmv-add='$HOME/c/camu/scripts/cmv_add.sh' +alias cmv-pause='cmv-add PAUSE' +alias cmv-next='cmv-add NEXT' +alias cmv-prev='cmv-add PREV' +alias cmv-shuffle='cmv-add SHUFFLE' +alias cmv-sort='cmv-add SORT' +alias cmv-reverse='cmv-add REVERSE' +alias cmv-clear='cmv-add CLEAR' + +RESET="\001\017\002" +NORMAL="\001\033[0m\002" +GREEN="\001\033[0;32m\002" +RED="\001\033[0;31m\002" +IROHA="\001\033[38;5;214m\002" +export HOSTCOLOR=$IROHA +exit_code_guy() +{ + retcode=$? + if [ $retcode -eq 0 ]; then + printf "(・_・) >$RED" + else + printf "(″ãƒã‚›) >$RED *$retcode" + fi +} +export PS1="$RESET$GREEN\u@$HOSTCOLOR\H$GREEN:\w\$(exit_code_guy)$NORMAL " + +# Nix-specific. +LOCALE_ARCHIVE=$HOME/.nix-profile/lib/locale/locale-archive diff --git a/files/shell/profile b/files/shell/profile new file mode 100644 index 0000000..fc677a7 --- /dev/null +++ b/files/shell/profile @@ -0,0 +1,7 @@ +export PATH="$PATH:$HOME/.local/bin" +#export GPG_TTY=$(tty) +unset SSH_AGENT_PID +if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then + export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" +fi +export MAIN_MONITOR=DP-1 diff --git a/files/sway/config b/files/sway/config new file mode 100644 index 0000000..3ec0052 --- /dev/null +++ b/files/sway/config @@ -0,0 +1,108 @@ +set $mod1 Mod1 +set $mod4 Mod4 + +set $left h +set $down j +set $up k +set $right l + +set $term kitty -1 +set $menu dmenu-path | bemenu-colored | xargs swaymsg exec -- + +font pango:monospace 10 + +default_border normal 1 +titlebar_border_thickness 1 +titlebar_padding 4 3 + +floating_modifier $mod1 normal + +bindsym $mod1+Shift+q kill +bindsym $mod1+Return exec $term +bindsym $mod1+d exec $menu +bindsym $mod1+Shift+c reload + +bindsym $mod1+Shift+e exec swaynag -t warning -m 'Do you really want to exit?' -B 'Yes' 'swaymsg exit' + +bindsym $mod1+$left focus left +bindsym $mod1+$down focus down +bindsym $mod1+$up focus up +bindsym $mod1+$right focus right + +bindsym $mod1+Shift+$left move left +bindsym $mod1+Shift+$down move down +bindsym $mod1+Shift+$up move up +bindsym $mod1+Shift+$right move right + +workspace 1 output DP-1 +workspace 2 output DP-1 +workspace 3 output DP-1 +workspace 4 output DP-1 +workspace 5 output DP-2 +workspace 6 output DP-2 +workspace 7 output DP-2 +workspace 8 output DP-2 +workspace 9 output HDMI-A-1 + +bindsym $mod1+1 workspace number 1 +bindsym $mod1+2 workspace number 2 +bindsym $mod1+3 workspace number 3 +bindsym $mod1+4 workspace number 4 +bindsym $mod4+1 workspace number 5 +bindsym $mod4+2 workspace number 6 +bindsym $mod4+3 workspace number 7 +bindsym $mod4+4 workspace number 8 +bindsym $mod4+5 workspace number 9 + +bindsym $mod1+Shift+1 move container to workspace number 1 +bindsym $mod1+Shift+2 move container to workspace number 2 +bindsym $mod1+Shift+3 move container to workspace number 3 +bindsym $mod1+Shift+4 move container to workspace number 4 +bindsym $mod4+Shift+1 move container to workspace number 5 +bindsym $mod4+Shift+2 move container to workspace number 6 +bindsym $mod4+Shift+3 move container to workspace number 7 +bindsym $mod4+Shift+4 move container to workspace number 8 +bindsym $mod4+Shift+5 move container to workspace number 9 + +bindsym $mod1+b splith +bindsym $mod1+v splitv + +bindsym $mod1+f fullscreen +bindsym $mod1+space floating toggle + +bindsym $mod1+r mode "resize" +mode "resize" { + bindsym $left resize shrink width 1px + bindsym $down resize grow height 1px + bindsym $up resize shrink height 1px + bindsym $right resize grow width 1px + bindsym Escape mode "default" +} + +bindsym $mod1+Shift+s exec screenshot +bindsym Print exec screenshot main +bindsym Shift+Print exec screenshot full +bindsym $mod1+q exec screenshot qrcode +bindsym $mod1+c exec screenshot color + +bindsym button4 nop +bindsym button5 nop + +xwayland force + +include config.d/* + +# class border bground text indicator child_border +client.focused $c1_light $c1 $fg $c1 $c1 +client.focused_inactive $c1 $c2 $fg $c1 $c1 +client.unfocused $c2 $c2 $fg $bg $bg +client.urgent $urgent $urgent $fg $urgent $urgent +client.placeholder $bg $bg $fg $bg $bg +client.background $bg + +exec dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK +exec_always swaymsg 'seat * hide_cursor 4000' +exec swayidle -w \ + timeout 300 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' +exec mako +exec gentoo-pipewire-launcher restart diff --git a/files/sway/window_rules b/files/sway/window_rules new file mode 100644 index 0000000..f6ee9ee --- /dev/null +++ b/files/sway/window_rules @@ -0,0 +1,25 @@ +for_window [shell="xwayland"] title_format "(Xwayland) %title" +for_window [app_id=kitty] allow_tearing yes +for_window [app_id=gamescope] inhibit_idle fullscreen, allow_tearing yes, floating enable +for_window [app_id=cmv] inhibit_idle fullscreen, floating enable +for_window [class=cmv] floating enable +for_window [class=cmv.exe] floating enable +for_window [app_id=mauri] floating enable +for_window [app_id=imv] floating enable +for_window [app_id=Waydroid] floating enable +for_window [title=Parsec] inhibit_idle fullscreen +for_window [class=streaming_client] inhibit_idle fullscreen +for_window [class=steam_app_.*] inhibit_idle fullscreen, allow_tearing yes +for_window [app_id=gamescope] inhibit_idle fullscreen, allow_tearing yes, floating enable +for_window [class=.gamescope-wrapped] inhibit_idle fullscreen, allow_tearing yes +for_window [app_id=osu!] inhibit_idle fullscreen, allow_tearing yes +for_window [app_id=cs2] inhibit_idle fullscreen, allow_tearing yes +for_window [class=Minecraft*] inhibit_idle fullscreen, allow_tearing yes +for_window [title=Overwatch] inhibit_idle fullscreen, allow_tearing yes +for_window [class=Ryujinx] inhibit_idle fullscreen +for_window [app_id=org.yuzu_emu.yuzu] inhibit_idle fullscreen +for_window [app_id=info.cemu.Cemu] inhibit_idle fullscreen +for_window [class=dolphin-emu] inhibit_idle fullscreen +# Ishiiruka-Dolphin +for_window [class=AppRun] inhibit_idle fullscreen +for_window [class=SuperMeatBoy] inhibit_idle fullscreen diff --git a/files/user-dirs.dirs b/files/user-dirs.dirs new file mode 100644 index 0000000..018d12a --- /dev/null +++ b/files/user-dirs.dirs @@ -0,0 +1,8 @@ +XDG_DESKTOP_DIR="$HOME/tmp" +XDG_DOCUMENTS_DIR="$HOME/docs" +XDG_DOWNLOAD_DIR="$HOME/dl" +XDG_MUSIC_DIR="$HOME/tmp" +XDG_PICTURES_DIR="$HOME/pics" +XDG_PUBLICSHARE_DIR="$HOME/tmp" +XDG_TEMPLATES_DIR="$HOME/tmp" +XDG_VIDEOS_DIR="$HOME/dl/mp4" diff --git a/files/nvim/local/autoload/Juliana.vim b/files/vim/autoload/Juliana.vim index 1b684b9..4dd86db 100644 --- a/files/nvim/local/autoload/Juliana.vim +++ b/files/vim/autoload/Juliana.vim @@ -44,3 +44,13 @@ function! Juliana#CompleteSTab(type) endif endif endfunction + +function! Juliana#CompleteNTab(type) + if a:type == "FOLD" + if foldlevel(line(".")) " Toggle fold if on fold. + return "za" + else + return "\<Tab>" + endif + endif +endfunction diff --git a/files/vim/colors/lil_pablo.vim b/files/vim/colors/lil_pablo.vim new file mode 100644 index 0000000..1ab6d2a --- /dev/null +++ b/files/vim/colors/lil_pablo.vim @@ -0,0 +1,81 @@ +" Name: lil_pablo +" Author: Ron Aaron <ron@ronware.org> +" Maintainer: Original maintainerRon Aaron <ron@ronware.org> +" Website: https://github.com/vim/colorschemes +" License: Same as Vim +" Last Change: 2025 Aug 5 + +set background=dark + +hi clear +let g:colors_name = 'lil_pablo' + +" :%s/cterm\(bg\|fg\)=\([0-9]*\|NONE\|fg\)\ /cterm\1=\2\ gui\1=##\2##\ /g + +hi Normal ctermfg=15 guifg=#ffffff ctermbg=0 guibg=#000000 cterm=NONE +hi Comment ctermfg=8 guifg=#808080 ctermbg=NONE guibg=NONE cterm=NONE +hi Constant ctermfg=9 guifg=#d78700 ctermbg=NONE guibg=NONE cterm=NONE +hi Identifier ctermfg=6 guifg=#ffaf00 ctermbg=NONE guibg=NONE cterm=NONE +hi Statement ctermfg=3 guifg=#ffd75f ctermbg=NONE guibg=NONE cterm=bold +hi PreProc ctermfg=12 guifg=#00875f ctermbg=NONE guibg=NONE cterm=NONE +hi Type ctermfg=6 guifg=#ffaf00 ctermbg=NONE guibg=NONE cterm=NONE +hi Special ctermfg=14 guifg=#ffd700 ctermbg=NONE guibg=NONE cterm=NONE +hi Underlined ctermfg=2 guifg=#af5f00 ctermbg=NONE guibg=NONE cterm=underline +hi Ignore ctermfg=0 guifg=#000000 ctermbg=0 guibg=#000000 cterm=NONE +hi Error ctermfg=15 guifg=#ffffff ctermbg=9 guibg=#d78700 cterm=NONE +hi Todo ctermfg=0 guifg=#000000 ctermbg=3 guibg=#ffd75f cterm=NONE +hi Conceal ctermfg=8 guifg=#808080 ctermbg=NONE guibg=NONE cterm=NONE +hi Cursor ctermfg=0 guifg=#000000 ctermbg=15 guibg=#ffffff cterm=NONE +hi lCursor ctermfg=0 guifg=#000000 ctermbg=15 guibg=#ffffff cterm=NONE +hi CursorIM ctermfg=NONE guifg=NONE ctermbg=fg guibg=#eeeeee cterm=NONE +hi Title ctermfg=13 guifg=#ff8787 ctermbg=NONE guibg=NONE cterm=bold +hi Directory ctermfg=2 guifg=#af5f00 ctermbg=NONE guibg=NONE cterm=NONE +hi Search ctermfg=0 guifg=#000000 ctermbg=3 guibg=#ffd75f cterm=NONE +hi IncSearch ctermfg=15 guifg=#ffffff ctermbg=NONE guibg=NONE cterm=reverse +hi NonText ctermfg=12 guifg=#00875f ctermbg=NONE guibg=NONE cterm=bold +hi EndOfBuffer ctermfg=12 guifg=#00875f ctermbg=NONE guibg=NONE cterm=bold +hi ErrorMsg ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#d75f00 cterm=NONE +hi WarningMsg ctermfg=9 guifg=#d78700 ctermbg=NONE guibg=NONE cterm=NONE +hi SignColumn ctermfg=14 guifg=#ffd700 ctermbg=0 guibg=#000000 cterm=NONE +hi ColorColumn ctermfg=15 guifg=#ffffff ctermbg=8 guibg=#808080 cterm=NONE +hi FoldColumn ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE cterm=NONE +hi Folded ctermfg=12 guifg=#00875f ctermbg=NONE guibg=NONE cterm=NONE +hi CursorColumn ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE cterm=underline +hi CursorLine ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE cterm=underline +hi CursorLineNr ctermfg=11 guifg=#ffff5f ctermbg=NONE guibg=NONE cterm=underline +hi Visual ctermfg=4 guifg=#005f5f ctermbg=7 guibg=#eeeeee cterm=NONE +hi VisualNOS ctermfg=NONE guifg=NONE ctermbg=0 guibg=#000000 cterm=underline +hi LineNr ctermfg=8 guifg=#808080 ctermbg=NONE guibg=NONE cterm=NONE +hi! link LineNrAbove LineNr +hi! link LineNrBelow LineNr +hi MatchParen ctermfg=NONE guifg=NONE ctermbg=6 guibg=#ffaf00 cterm=NONE +hi ModeMsg ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE cterm=bold +hi MoreMsg ctermfg=12 guifg=#00875f ctermbg=NONE guibg=NONE cterm=bold +hi Question ctermfg=10 guifg=#af8700 ctermbg=NONE guibg=NONE cterm=bold +hi SpecialKey ctermfg=14 guifg=#ffd700 ctermbg=NONE guibg=NONE cterm=NONE +hi WildMenu ctermfg=0 guifg=#000000 ctermbg=11 guibg=#ffff5f cterm=NONE +hi QuickFixLine ctermfg=0 guifg=#000000 ctermbg=6 guibg=#ffaf00 cterm=NONE +hi SpellBad ctermfg=9 guifg=#d78700 ctermbg=NONE guibg=NONE cterm=underline +hi SpellCap ctermfg=12 guifg=#00875f ctermbg=NONE guibg=NONE cterm=underline +hi SpellLocal ctermfg=13 guifg=#ff8787 ctermbg=NONE guibg=NONE cterm=underline +hi SpellRare ctermfg=11 guifg=#ffff5f ctermbg=NONE guibg=NONE cterm=underline +hi StatusLine ctermfg=11 guifg=#ffff5f ctermbg=4 guibg=#005f5f cterm=NONE +hi StatusLineNC ctermfg=0 guifg=#000000 ctermbg=15 guibg=#ffffff cterm=NONE +hi VertSplit ctermfg=15 guifg=#ffffff ctermbg=15 guibg=#ffffff cterm=NONE +hi TabLine ctermfg=15 guifg=#ffffff ctermbg=8 guibg=#808080 cterm=NONE +hi TabLineFill ctermfg=NONE guifg=NONE ctermbg=0 guibg=#000000 cterm=reverse +hi TabLineSel ctermfg=15 guifg=#ffffff ctermbg=0 guibg=#000000 cterm=bold +hi ToolbarLine ctermfg=NONE guifg=NONE ctermbg=0 guibg=#000000 cterm=NONE +hi ToolbarButton ctermfg=0 guifg=#000000 ctermbg=7 guibg=#eeeeee cterm=bold +hi PmenuMatch ctermfg=fg guifg=#eeeeee ctermbg=8 guibg=#808080 cterm=bold +hi PmenuMatchSel ctermfg=0 guifg=#000000 ctermbg=7 guibg=#eeeeee cterm=bold +hi Pmenu ctermfg=fg guifg=#eeeeee ctermbg=8 guibg=#808080 cterm=NONE +hi PmenuSbar ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE cterm=NONE +hi PmenuSel ctermfg=0 guifg=#000000 ctermbg=7 guibg=#eeeeee cterm=NONE +hi PmenuThumb ctermfg=NONE guifg=NONE ctermbg=15 guibg=#ffffff cterm=NONE +hi DiffAdd ctermfg=15 guifg=#ffffff ctermbg=2 guibg=#af5f00 cterm=NONE +hi DiffChange ctermfg=15 guifg=#ffffff ctermbg=12 guibg=#00875f cterm=NONE +hi DiffText ctermfg=0 guifg=#000000 ctermbg=7 guibg=#eeeeee cterm=NONE +hi DiffDelete ctermfg=15 guifg=#ffffff ctermbg=13 guibg=#ff8787 cterm=NONE + +" vim: et ts=8 sw=2 sts=2 diff --git a/files/vim/pack/downloads/create_opt.sh b/files/vim/pack/downloads/create_opt.sh new file mode 100755 index 0000000..0029440 --- /dev/null +++ b/files/vim/pack/downloads/create_opt.sh @@ -0,0 +1,38 @@ +#! /usr/bin/env sh + +if [ ! -d "./opt" ]; then + echo "'opt' dir not found, create it here and re-run $0" + exit 1 +fi + +git clone --depth=1 https://github.com/tpope/vim-fugitive.git opt/vim-fugitive +cd opt/vim-fugitive +rm .git/hooks/* +git apply ../../../../patches/vim_fugitive_tab_expand.diff +cd ../.. + +git clone --depth=1 https://github.com/itchyny/vim-gitbranch.git opt/vim-gitbranch +cd opt/vim-gitbranch +rm .git/hooks/* +cd ../.. + +git clone --depth=1 https://github.com/matcatc/vim-asciidoc-folding.git opt/vim-asciidoc-folding +cd opt/vim-asciidoc-folding +rm .git/hooks/* +cd ../.. + +git clone --depth=1 https://github.com/chrisbra/Colorizer.git opt/Colorizer +cd opt/Colorizer +rm .git/hooks/* +cd ../.. + +#git clone --depth=1 https://github.com/yegappan/lsp.git opt/lsp +#cd opt/lsp +#rm .git/hooks/* +#cd ../.. + +vim -u NONE -c "helptags opt/vim-fugitive/doc" -c q +vim -u NONE -c "helptags opt/vim-gitbranch/doc" -c q +vim -u NONE -c "helptags opt/vim-asciidoc-folding/doc" -c q +vim -u NONE -c "helptags opt/Colorizer/doc" -c q +#vim -u NONE -c "helptags opt/lsp/doc" -c q diff --git a/files/vim/patches/qname_edit.diff b/files/vim/patches/qname_edit.diff new file mode 100644 index 0000000..4ca65ff --- /dev/null +++ b/files/vim/patches/qname_edit.diff @@ -0,0 +1,178 @@ +Post- dos2unix, Tabify, and Trim. +--- a/qname.1.2.vim 2025-08-03 20:12:24.629096223 -0400 ++++ b/qname.1.2.vim 2025-08-13 22:10:15.352953531 -0400 +@@ -7,7 +7,25 @@ + " License: Vim License + " ============================================================================= + ++" https://www.vim.org/scripts/script.php?script_id=2317 ++" + " Change Log ++" EDIT: ++" 2025-06-24: ++" Remove redraw on update ++" Don't wrap around in the list ++" ls! -> ls ++" <Tab> -> <C-j/k> ++" Take out built-in hotkey ++" 2025-08-05: ++" Use path relative to current dir ++" Match against file path ++" 2025-08-13: ++" Sort buffers by most recently used ++" Add bind to "flatten" the list ++" Replace fmatch() with built-in matchfuzzy() (speedup) ++" Fix logic to not include buffers with modifiable off ++" + " 1.2 2013-01-03 + " ADD: <Tab> and <S-Tab> moves selection like <Up> and <Down> + " ADD: Use <silent> mapping to keep cmdline clear +@@ -30,12 +48,6 @@ + finish + endif + +-if !exists("g:qname_hotkey") || g:qname_hotkey == "" +- let g:qname_hotkey = "<F3>" +-endif +-exe "nmap" g:qname_hotkey ":cal QNameInit(1)<cr>:~" +-let s:qname_hotkey = eval('"\'.g:qname_hotkey.'"') +- + if exists("g:qname_loaded") && g:qname_loaded + finish + endif +@@ -70,16 +82,19 @@ + call s:swb(str2nr(matchstr(s:s[_sel], '<\zs\d\+\ze>'))) + endif + call QNameInit(0) +- elseif _key ==# "\<Up>" || _key ==# "\<S-Tab>" ++ elseif _key ==# "\<Up>" || _key ==# "\<C-k>" + call s:colPrinter.vert(-1) +- elseif _key ==# "\<Down>" || _key ==# "\<Tab>" ++ elseif _key ==# "\<Down>" || _key ==# "\<C-j>" + call s:colPrinter.vert(1) + elseif _key ==# "\<Left>" + call s:colPrinter.horz(-1) + elseif _key ==# "\<Right>" + call s:colPrinter.horz(1) +- elseif _key ==# s:qname_hotkey +- call QNameInit(0) ++ elseif _key ==# "\<C-f>" ++ let s:flat = 1 - s:flat ++ let prev_sel = s:colPrinter.sel ++ call s:build() ++ let s:colPrinter.sel = prev_sel + else + call s:build() + endif +@@ -88,7 +103,6 @@ + cal QNameInit(0) + finally + " clean up screen after dismissing search window +- redraw! + call inputrestore() + endtry + endfunc +@@ -99,6 +113,7 @@ + let s:cmdh = &cmdheight + if a:start != -1 + let s:inp = "" ++ let s:flat = 0 + endif + call s:baselist() + call s:build() +@@ -112,16 +127,27 @@ + function! s:build() + let s:s = [] + let s:n = [] ++ let s:sp = [] ++ let s:np = [] + let s:blen = 0 + let _cmp = tolower(tr(s:inp, '\', '/')) + for _line in s:ls +- let _name = matchstr(_line, '^.\{-}\ze \+<') +- if s:fmatch(tolower(_name), _cmp) ++ " Match everthing before |<xx>| Match everthing after space. ++ let _match = matchlist(_line, '^.\{-}\ze \+<.*> \+\(.*\)') ++ let _name = _match[0] ++ let _path = _match[1] ++ if strlen(_cmp) == 0 || s:fmatch(tolower(_name), _cmp) + cal add(s:s, _line) + cal add(s:n, _name) ++ elseif s:fmatch(tolower(_path), _cmp) ++ cal add(s:sp, _line) ++ cal add(s:np, _name) + endif + endfor +- if len(s:n) > s:colPrinter.trow ++ " Put filename matches before path matches. ++ let s:n = s:n + s:np ++ let s:s = s:s + s:sp ++ if !s:flat && len(s:n) > s:colPrinter.trow + cal s:colPrinter.put(s:n) + else + cal s:colPrinter.put(s:s) +@@ -137,37 +163,28 @@ + endfunc + + function! s:fmatch(src,pat) +- let _si = strlen(a:src)-1 +- let _pi = strlen(a:pat)-1 +- while _si>=0 && _pi>=0 +- if a:src[_si] == a:pat[_pi] +- let _pi -= 1 +- endif +- let _si -= 1 +- endwhile +- return _pi < 0 ++ return len(matchfuzzy([a:src], a:pat)) > 0 + endfunc + + function! s:baselist() + let s:ls = [] +- redir => l:bufs | silent ls! | redir END ++ redir => l:bufs | silent ls t | redir END + for _line in split(l:bufs, "\n") +- if _line[3]!='u' || _line[6]!='-' ++ if _line[6] != '-' + let _bno = matchstr(_line, '^ *\zs\d*')+0 + let _fname = substitute(expand("#"._bno.":p"), '\', '/', 'g') + if _fname == "" + let _fname = "|".matchstr(_line, '"\[\zs[^\]]*')."|" + endif + let _name = fnamemodify(_fname,":t") +- cal add(s:ls, _name." <"._bno."> ".fnamemodify(_fname,":h")) ++ cal add(s:ls, _name." <"._bno."> ".fnamemodify(_fname,":.")) + endif + endfor + let _align = max(map(copy(s:ls),'stridx(v:val,">")')) + call map(s:ls, 'substitute(v:val, " <", repeat(" ",_align-stridx(v:val,">"))." <", "")') +- cal sort(s:ls, 1) + endfunc + +-let s:colPrinter = {"trow": 4} ++let s:colPrinter = {"trow": 5} + function! s:colPrinter.put(its) dict + let _cols = [] + let _trow = self.trow +@@ -224,11 +241,7 @@ + function! s:colPrinter.vert(mv) dict + let _t = self.sel + a:mv + let _len = self.len +- if _t < 0 && _len > 0 +- let self.sel = _len-1 +- elseif _t >= _len +- let self.sel = 0 +- else ++ if _t >= 0 && _t < _len + let self.sel = _t + endif + endfunc +@@ -244,7 +257,7 @@ + let _t = _sel/_trow + let _cpos = self.cpos + let _lcol = self.lcol +- let _tcol = &columns ++ let _tcol = s:flat ? 1 : &columns + if _cpos[_lcol]+_tcol < _cpos[_t+1] + let _rcol = _t + let _pos = _cpos[_t+1]-_tcol-2 diff --git a/files/vim/patches/vim_fugitive_tab_expand.diff b/files/vim/patches/vim_fugitive_tab_expand.diff new file mode 100644 index 0000000..aa7b0ef --- /dev/null +++ b/files/vim/patches/vim_fugitive_tab_expand.diff @@ -0,0 +1,17 @@ +diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim +index 7f2f602..fa178c4 100644 +--- a/autoload/fugitive.vim ++++ b/autoload/fugitive.vim +@@ -2696,10 +2696,10 @@ function! s:MapStatus() abort + call s:Map('n', 'C', ":echoerr 'fugitive: C has been removed in favor of cc'<CR>", '<silent><unique>') + call s:Map('n', 'a', ":echoerr 'fugitive: a has been removed in favor of s'<CR>", '<silent><unique>') + call s:Map('n', 'i', ":<C-U>execute <SID>NextExpandedHunk(v:count1)<CR>", '<silent>') +- call s:Map('n', "=", ":<C-U>execute <SID>StageInline('toggle',line('.'),v:count)<CR>", '<silent>') ++ call s:Map('n', "<Tab>", ":<C-U>execute <SID>StageInline('toggle',line('.'),v:count)<CR>", '<silent>') + call s:Map('n', "<", ":<C-U>execute <SID>StageInline('hide', line('.'),v:count)<CR>", '<silent>') + call s:Map('n', ">", ":<C-U>execute <SID>StageInline('show', line('.'),v:count)<CR>", '<silent>') +- call s:Map('x', "=", ":<C-U>execute <SID>StageInline('toggle',line(\"'<\"),line(\"'>\")-line(\"'<\")+1)<CR>", '<silent>') ++ call s:Map('x', "<Tab>", ":<C-U>execute <SID>StageInline('toggle',line(\"'<\"),line(\"'>\")-line(\"'<\")+1)<CR>", '<silent>') + call s:Map('x', "<", ":<C-U>execute <SID>StageInline('hide', line(\"'<\"),line(\"'>\")-line(\"'<\")+1)<CR>", '<silent>') + call s:Map('x', ">", ":<C-U>execute <SID>StageInline('show', line(\"'<\"),line(\"'>\")-line(\"'<\")+1)<CR>", '<silent>') + call s:Map('n', 'D', ":echoerr 'fugitive: D has been removed in favor of dd'<CR>", '<silent><unique>') diff --git a/files/vim/plugin/Hello.vim b/files/vim/plugin/Hello.vim new file mode 100644 index 0000000..224200e --- /dev/null +++ b/files/vim/plugin/Hello.vim @@ -0,0 +1,122 @@ +" https://github.com/arp242/startscreen.vim/blob/master/plugin/startscreen.vim + +scriptencoding utf-8 +if exists('g:Hello_Loaded') | finish | endif +let g:Hello_Loaded = 1 +let s:save_cpo = &cpo +set cpo&vim + +fun! Hello#start() + " Don't run if: + " - there are commandline arguments; + " - the buffer isn't empty (e.g. cmd | vi -); + " - we're not invoked as vim or gvim; + " - we're starting in insert mode. + if argc() || line2byte('$') != -1 || v:progname !~? '^[-gmnq]\=vim\=x\=\%[\.exe]$' || &insertmode + return + endif + + " Start a new buffer... + enew + + " ...set it's name... + keepalt file [Hello] + + " ...and set some options for it. + setlocal + \ bufhidden=wipe + \ buftype=nofile + \ nobuflisted + \ nocursorcolumn + \ nocursorline + \ nolist + \ nonumber + \ noswapfile + \ norelativenumber + + " Now we can just write to the buffer whatever you want. + + let pole = [' .', ' (` `)', ' `\./`', ' __|`|__', '/ |_| \', '|_______|', '\_______/', ' | |', ' | |', ' | |', ' `.| |.`', ' /| |\', ' / | | \', ' | |', ' .`| |`.', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |', ' | |'] + for i in reverse(range(0, len(pole) - 1)) + call append('0', ' '.pole[i]) + endfor + :1 + redraw! + + "call writefile([output], '/proc/self/fd/0', 'b') + + " No modifications to this buffer. + setlocal nomodifiable nomodified + + " When we go to insert mode start a new buffer, and start insert. + nnoremap <buffer><silent> e :enew<CR> + nnoremap <buffer><silent> i :enew <bar> startinsert<CR> + nnoremap <buffer><silent> p :enew<CR>p +endfun + +augroup Hello + autocmd! + autocmd VimEnter * call Hello#start() +augroup end + +let &cpo = s:save_cpo +unlet s:save_cpo +" +" +" +" +" +" +" +" +" Sketch +" +" +" +" +" +" +" +" +" +" +" +" https://www.asciiart.eu/buildings-and-places/fences +" . +" (` `) +" `\./` +" __|`|__ +" / |_| \ +" |_______| +" \_______/ +" | | +" | | +" | | +" `.| |.` +" /| |\ +" / | | \ +" | | +" .`| |`. +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" | | +" +" +" +" +" +" +" diff --git a/files/vim/plugin/qname.1.2.vim b/files/vim/plugin/qname.1.2.vim new file mode 100644 index 0000000..73b7dec --- /dev/null +++ b/files/vim/plugin/qname.1.2.vim @@ -0,0 +1,298 @@ +" ============================================================================= +" QuickName: The most convenient way navigating opened buffers, +" incremental search by name +" Last Change: 2013-01-03 +" Maintainer: Pal Nart <palnart@gmail.com> +" Version: 1.2 +" License: Vim License +" ============================================================================= + +" https://www.vim.org/scripts/script.php?script_id=2317 +" +" Change Log +" EDIT: +" 2025-06-24: +" Remove redraw on update +" Don't wrap around in the list +" ls! -> ls +" <Tab> -> <C-j/k> +" Take out built-in hotkey +" 2025-08-05: +" Use path relative to current dir +" Match against file path +" 2025-08-13: +" Sort buffers by most recently used +" Add bind to "flatten" the list +" Replace fmatch() with built-in matchfuzzy() (speedup) +" Fix logic to not include buffers with modifiable off +" +" 1.2 2013-01-03 +" ADD: <Tab> and <S-Tab> moves selection like <Up> and <Down> +" ADD: Use <silent> mapping to keep cmdline clear +" FIX: Catch interrupt (<C-C> or <Esc> keypress) and restore cmd line +" FIX: Use case-sensitive string comparisons to afford immunity from value +" of 'ignorecase' +" FIX: Do not clobber contents of @y register +" +" 1.1 2009-07-19 +" ADD: Key Shift+Enter open buffer in a new horizontally split window. Thanks +" to contribution by Salman Halim +" ADD: Key Ctrl+U reset input line and show all buffers +" FIX: If a buffer is already associated with a window, navigate to that +" window instead of opening in current window +" +" 1.0 2008-07-30 +" Initial upload + +if v:version < 700 + finish +endif + +if exists("g:qname_loaded") && g:qname_loaded + finish +endif +let g:qname_loaded = 1 + +function! QNameRun() + try + call s:colPrinter.print() + echo "\rMatch" len(s:n)."/".len(s:ls) "names:" s:inp + call inputsave() + let _key = getchar() + if !type(_key) + let _key = nr2char(_key) + endif + + " use case-sensitive equality operator, otherwise <BS> looks like + " <S-Tab> if 'ignorecase' is set + if _key ==# "\<BS>" + let s:inp = s:inp[:-2] + elseif _key ==# "\<C-U>" + let s:inp = "" + elseif strlen(_key) == 1 && char2nr(_key) > 31 + let s:inp = s:inp._key + endif + + if _key ==# "\<ESC>" || _key ==# "\<CR>" || _key ==# "\<S-CR>" + let _sel = s:colPrinter.sel + if _key != "\<ESC>" && _sel < len(s:n) && _sel >= 0 + if _key ==# "\<S-CR>" + :split + endif + call s:swb(str2nr(matchstr(s:s[_sel], '<\zs\d\+\ze>'))) + endif + call QNameInit(0) + elseif _key ==# "\<Up>" || _key ==# "\<C-k>" + call s:colPrinter.vert(-1) + elseif _key ==# "\<Down>" || _key ==# "\<C-j>" + call s:colPrinter.vert(1) + elseif _key ==# "\<Left>" + call s:colPrinter.horz(-1) + elseif _key ==# "\<Right>" + call s:colPrinter.horz(1) + elseif _key ==# "\<C-f>" + let s:flat = 1 - s:flat + let prev_sel = s:colPrinter.sel + call s:build() + let s:colPrinter.sel = prev_sel + else + call s:build() + endif + catch /^Vim:.*$/ + " restore cmdheight if search is interrupted + cal QNameInit(0) + finally + " clean up screen after dismissing search window + call inputrestore() + endtry +endfunc + +function! QNameInit(start) + if a:start + cmap <silent> ~ cal QNameRun()<CR>:~ + let s:cmdh = &cmdheight + if a:start != -1 + let s:inp = "" + let s:flat = 0 + endif + call s:baselist() + call s:build() + exe "set cmdheight=".(s:colPrinter.trow+1) + else + cmap <silent> ~ exe "cunmap \x7E"<CR> + exe "set cmdheight=".s:cmdh + endif +endfunc + +function! s:build() + let s:s = [] + let s:n = [] + let s:sp = [] + let s:np = [] + let s:blen = 0 + let _cmp = tolower(tr(s:inp, '\', '/')) + for _line in s:ls + " Match everthing before |<xx>| Match everthing after space. + let _match = matchlist(_line, '^.\{-}\ze \+<.*> \+\(.*\)') + let _name = _match[0] + let _path = _match[1] + if strlen(_cmp) == 0 || s:fmatch(tolower(_name), _cmp) + cal add(s:s, _line) + cal add(s:n, _name) + elseif s:fmatch(tolower(_path), _cmp) + cal add(s:sp, _line) + cal add(s:np, _name) + endif + endfor + " Put filename matches before path matches. + let s:n = s:n + s:np + let s:s = s:s + s:sp + if !s:flat && len(s:n) > s:colPrinter.trow + cal s:colPrinter.put(s:n) + else + cal s:colPrinter.put(s:s) + endif +endfunc + +function! s:swb(bno) + if bufwinnr(a:bno) == -1 + exe "hid b" a:bno + else + exe bufwinnr(a:bno) . "winc w" + endif +endfunc + +function! s:fmatch(src,pat) + return len(matchfuzzy([a:src], a:pat)) > 0 +endfunc + +function! s:baselist() + let s:ls = [] + redir => l:bufs | silent ls t | redir END + for _line in split(l:bufs, "\n") + if _line[6] != '-' + let _bno = matchstr(_line, '^ *\zs\d*')+0 + let _fname = substitute(expand("#"._bno.":p"), '\', '/', 'g') + if _fname == "" + let _fname = "|".matchstr(_line, '"\[\zs[^\]]*')."|" + endif + let _name = fnamemodify(_fname,":t") + cal add(s:ls, _name." <"._bno."> ".fnamemodify(_fname,":.")) + endif + endfor + let _align = max(map(copy(s:ls),'stridx(v:val,">")')) + call map(s:ls, 'substitute(v:val, " <", repeat(" ",_align-stridx(v:val,">"))." <", "")') +endfunc + +let s:colPrinter = {"trow": 5} +function! s:colPrinter.put(its) dict + let _cols = [] + let _trow = self.trow + + let _its = copy(a:its) + let _len = len(_its) + let _i = 0 + while _i < _len + if _i+_trow <= _len + cal add(_cols, remove(_its,0,_trow-1)) + else + cal add(_cols, _its) + endif + let _i += _trow + endwhile + + let _cpos = [0] + let _cw = [] + let _t = 0 + for _li in _cols + let _w = max(map(copy(_li),'strlen(v:val)'))+4 + let _t += _w + cal add(_cpos,_t) + cal add(_cw,_w) + endfor + + let _rows = [] + for _i in range(_trow) + let _row = [] + for _j in range(len(_cols)) + if _j*_trow+_i < _len + cal add(_row,_cols[_j][_i]) + endif + endfor + cal add(_rows, _row) + endfor + + let self.cols = _cols + let self.cw = _cw + let self.rows = _rows + let self.cpos = _cpos + let self.len = _len + let self.lcol = 0 + let self.sel = 0 +endfunc + +function! s:colPrinter.horz(mv) dict + let _t = self.sel + a:mv*self.trow + if _t >= 0 && _t < self.len + let self.sel = _t + endif +endfunc + +function! s:colPrinter.vert(mv) dict + let _t = self.sel + a:mv + let _len = self.len + if _t >= 0 && _t < _len + let self.sel = _t + endif +endfunc + +function! s:colPrinter.print() dict + let _len = self.len + let _trow = self.trow + if !_len + echo " [...NO MATCH...]" repeat("\n",_trow) + return + endif + let _sel = self.sel + let _t = _sel/_trow + let _cpos = self.cpos + let _lcol = self.lcol + let _tcol = s:flat ? 1 : &columns + if _cpos[_lcol]+_tcol < _cpos[_t+1] + let _rcol = _t + let _pos = _cpos[_t+1]-_tcol-2 + while _cpos[_lcol] < _pos + let _lcol += 1 + endwhile + let _lcol -= _lcol > _t + else + if _t < _lcol + let _lcol = _t + endif + let _rcol = len(_cpos)-1 + let _pos = _cpos[_lcol]+_tcol+2 + while _cpos[_rcol] > _pos + let _rcol -= 1 + endwhile + let _rcol -= _rcol > _lcol + endif + let _cw = self.cw + let _pos = _cpos[_lcol]+_tcol + let self.lcol = _lcol + for _i in range(_trow) + let _row = self.rows[_i] + for _j in range(_lcol,_rcol) + if _j*_trow+_i < _len + let _txt = " " . _row[_j] + let _txt .= repeat(" ", _cw[_j] - strlen(_txt)) + let _txt = _txt[:_pos-_cpos[_j]-2] + if _j*_trow + _i == _sel + echoh Search|echon _txt|echoh None + else + echon _txt + endif + endif + endfor + echon "\n" + endfor +endfunc diff --git a/files/vim/vimrc b/files/vim/vimrc new file mode 100644 index 0000000..41e30fb --- /dev/null +++ b/files/vim/vimrc @@ -0,0 +1,294 @@ +" @TODO: Map 'd' to delete no yank + +" Basic settings. +set nocompatible +set number +" showmode too often puts the cursor on the bottom line, this can make +" kitty's cursor_trail way too jumpy. +set noshowmode +"set signcolumn=yes +set updatetime=250 +set scrolloff=5 +"set lazyredraw +" Don't ask to save changes when switching buffers. +set hidden +" Use the last buffer instead of the right-most when opening from quickfix. +set switchbuf=uselast +" Show match count. +set shortmess-=S +" Old split defaults (I think). +set splitright +set splitbelow +" Stop buffers from jumping when opening buffer selection. +set splitkeep=screen + +set termguicolors +colo lil_pablo + +" Syntax and indent from filetype. +filetype plugin indent on +syntax on +" Search farther and longer to correctly highlight. +"au BufEnter * :syntax sync minlines=10 +set redrawtime=3000 +set maxmempattern=5000 + +" Highlight unwanted whitespace. +au BufEnter * match Error /\s\+$/ +au InsertEnter * match Error /\s\+\%#\@<!$/ +au InsertLeave * match Error /\s\+$/ + +" Check for SHIFT_JIS. +set fileencodings=ucs-bom,utf-8,sjis,default,latin1 + +" 4 spaces autoindent. +set tabstop=4 +set shiftwidth=4 +set expandtab +set autoindent + +" C syntax preference. +let g:c_syntax_for_h=1 +let g:c_no_curly_error=1 +let g:c_function_pointers=1 +set cinoptions=:0,=4,l1,g2,h2,(4,u4,+4,m1,j1,J1 +set cindent + +" Set different format for mail and text files. +set nowrap nolinebreak nolist formatoptions=l textwidth=0 +au FileType mail,text setlocal wrap formatoptions=l textwidth=0 + +" Ex tab complete that makes sense to me. +set wildmode=longest,list,full +set wildmenu + +" Set titlebar. +set title +au BufEnter * let &titlestring=expand("%:t") + +" https://github.com/csdvrx/CuteVim/blob/main/.vimrc + +" Allow distinguishing <C-i> from <Tab> in bindings. +" If using vim rather than neovim, this will disable the ability +" to map <C-h/j/k/l>. Apparently due to vim's lack of "CSI u" +" support, according to some issue reports. +" https://github.com/vim/vim/issues/10244 +"let &t_TI = "\<Esc>[>4;2m" +"let &t_TE = "\<Esc>[>4;m" +" Treat shift + backspace as normal backspace. +"noremap <S-BS> <BS> + +" System clipboard on linux. +set clipboard=unnamedplus + +" Session options. +set ssop=curdir,skiprtp,blank,buffers,folds,winsize,terminal +set vop-=curdir + +" Move ~/.viminfo. +set viminfo+=n~/.vim/viminfo + +" Session auto save. +" https://vim.fandom.com/wiki/Go_away_and_come_back +function! SaveSession() + if v:this_session != "" + echo "Saving." + exe "mksession! " . v:this_session + else + echo "No Session." + endif +endfunction +au VimLeave * :call SaveSession() + +if isdirectory(expand("~/c")) + " Swap file directory. + let swap_dir = expand("~/c/sessions/swaps//") + if !isdirectory(swap_dir) + call mkdir(swap_dir, "p", 0755) + endif + let &directory=swap_dir + + if has("persistent_undo") + let undo_dir = expand("~/c/sessions/undo//") + if !isdirectory(undo_dir) + call mkdir(undo_dir, "p", 0755) + endif + let &undodir=undo_dir + set undofile + endif + + " Staggered backups. + let backup_dir = "/mnt/store/backup/vim" + if !isdirectory(backup_dir) + let backup_dir = expand("~/c/sessions/backup//") + if !isdirectory(backup_dir) + call mkdir(backup_dir, "p", 0755) + endif + endif + let &backupdir=backup_dir + set backup +endif + +set autocomplete +set complete=.^5,w^5,b^5,u^5 +set completeopt=popup + +" Plugins. +let g:fugitive_no_maps = 1 +set diffopt+=vertical +packadd vim-fugitive +packadd vim-gitbranch +packadd vim-asciidoc-folding +packadd Colorizer +"if !empty($NIX_SHELL) +"packadd lsp +"call LspAddServer([#{ +"\ name: 'clangd', +"\ filetype: ['c', 'cpp'], +"\ path: 'clangd', +"\ args: ['--background-index'] +"\}]) +"endif + +" Custom statusline. +function! StatuslineGit() + let l:branchname = gitbranch#name() + return strlen(l:branchname) > 0 ? " ".l:branchname." " : " " +endfunction + +function! Statusline() abort + let focused = g:statusline_winid == win_getid(winnr()) + let status = focused ? "%#StatusLine#" : "%#StatusLineNC#" + let status .= "%{StatuslineGit()}" + let status .= " %{expand('%:~:.')}" " Explicitly expand to relative file, %f was flaky. + let status .= " vim@%{hostname()}" + let status .= "%=" + let status .= " %y" + let status .= " %{&fileencoding}" + let status .= "[%{&fileformat}]" + let status .= "%3p%%" + let status .= " %3l:%-3c" + return status +endfunction +set laststatus=2 " Always show statusline. +set statusline=%!Statusline() + +" Make shift + nav keys no-ops. +nnoremap <S-h> <nop> +nnoremap <S-j> <nop> +nnoremap <S-k> <nop> +nnoremap <S-l> <nop> +" Normal mode tab no-op. +nmap <Tab> <nop> +" ctrl + c no-op. +nnoremap <C-c> <nop> +" Disable F1 for help. +nmap <F1> <nop> +" Disable q: for histroy. +nmap q: <nop> +" Simplify split movement. +nnoremap <silent> <C-h> :wincmd h<CR> +nnoremap <silent> <C-j> :wincmd j<CR> +nnoremap <silent> <C-k> :wincmd k<CR> +nnoremap <silent> <C-l> :wincmd l<CR> +" Make ctrl + "." and "," map to previous buffer. +nmap <C-,> <C-^> +nmap <C-.> <C-^> +" Personally intuitive pop-up menu binds. +inoremap <expr> <CR> pumvisible() ? "<C-y><CR>" : "<CR>" +inoremap <expr> <Up> pumvisible() ? "<C-p>" : "<Up>" +inoremap <expr> <Down> pumvisible() ? "<C-n>" : "<Down>" +" Ctags +nnoremap <C-d> <C-]> +" Toggle colorcolumn. +nmap <silent> C :exe "set colorcolumn=" . (&colorcolumn == "" ? "101" : "")<CR> +" Toggle css color highlighting. +noremap <silent> # :ColorToggle<CR> +" Buffer select. +nmap <silent> \ :call QNameInit(1)<CR>:~ +" Git summary. +nmap <silent> Y :vertical G<CR> + +" Relative :e, :vs, and :s. +fun OpenBasedOnRelativeArgument(A, CMD) + " https://stackoverflow.com/a/14348204 + let arg = a:A + if arg != "" + let arg = (arg[0] == "/" ? arg : resolve(fnamemodify(expand("%:h")."/".arg, ":p"))) + endif + if a:CMD == "EDIT" + exe "edit" arg + elseif a:CMD == "VERTICAL_SPLIT" + exe "vsplit" arg + elseif a:CMD == "SPLIT" + exe "split" arg + endif +endfun +command -nargs=* -complete=customlist,RelativeFileComplete E :call OpenBasedOnRelativeArgument("<args>", "EDIT") +command -nargs=* -complete=customlist,RelativeFileComplete VS :call OpenBasedOnRelativeArgument("<args>", "VERTICAL_SPLIT") +command -nargs=* -complete=customlist,RelativeFileComplete S :call OpenBasedOnRelativeArgument("<args>", "SPLIT") +fun RelativeFileComplete(A,L,P) + let argpath = fnamemodify(a:A, ":h") + if argpath[0] == "~" || argpath[0] == "/" + let curpath = "" + else + let curpath = expand("%:h")."/" + endif + let argfile = fnamemodify(a:A, ":t") + let files = globpath(curpath.argpath, argfile."*", 0, 1) + for i in range(0, len(files) - 1) + if isdirectory(files[i]) + let files[i] = files[i]."/" + endif + if len(curpath) > 0 + let files[i] = substitute(files[i], curpath, "", "") + let files[i] = substitute(files[i], "^./", "", "") + endif + endfor + return files +endfun +" https://stackoverflow.com/a/20564623 +cnoreabbrev <expr> e getcmdtype() == ":" && getcmdline() == "e" ? "E" : "e" +cnoreabbrev <expr> vs getcmdtype() == ":" && getcmdline() == "vs" ? "VS" : "vs" +cnoreabbrev <expr> s getcmdtype() == ":" && getcmdline() == "s" ? "S" : "s" + +" :no -> :nohlsearch instead of :noremap. +cnoreabbrev <expr> no getcmdtype() == ":" && getcmdline() == "no" ? "nohlsearch" : "no" + +call Juliana#Init() " Custom insert mode tab behavior inherited from Emacs. +inoremap <silent> <Tab> <C-R>=Juliana#CompleteTab("START")<CR> + \<C-R>=Juliana#CompleteTab("TAB")<CR> + \<C-R>=Juliana#CompleteTab("ALIGN")<CR> + \<C-R>=Juliana#CompleteTab("NEXT")<CR> +inoremap <silent> <S-Tab> <C-R>=Juliana#CompleteSTab("PREV")<CR> +nnoremap <silent> <expr> <Tab> Juliana#CompleteNTab("FOLD") + +command Tabify set noexpandtab | %retab! | set expandtab +command Untabify set expandtab | %retab! + +command Hex :%!xxd +command Unhex :%!xxd -r + +" https://stackoverflow.com/a/27721306 +"command -nargs=+ Ggr execute 'Ggrep! -q' <q-args> +command -nargs=+ Ggr execute "silent Ggrep!" <q-args> | botright cwindow | redraw! +" I had this mapped to <C-i> for the longest time. Sadly with OG vim +" (not neovim) the fix for mapping <Tab> and <C-i> seperately doesn't work. +" Changing this bind as the only concession to be compatible with vim +" seems well worth it. +nnoremap <C-o> :Ggr + +"" https://stackoverflow.com/a/37040415 +function! SyntaxGroup() + let l:s = synID(line("."), col("."), 1) + echo synIDattr(l:s, "name") . " -> " . synIDattr(synIDtrans(l:s), "name") +endfun +command Syn :call SyntaxGroup() + +" https://vi.stackexchange.com/a/456 +function! TrimWhitespace() + let l:save = winsaveview() + keeppatterns %s/\s\+$//e + call winrestview(l:save) +endfun +command Trim :call TrimWhitespace() diff --git a/files/waydroid/waydroid.cfg b/files/waydroid/waydroid.cfg new file mode 100644 index 0000000..ef6ddc6 --- /dev/null +++ b/files/waydroid/waydroid.cfg @@ -0,0 +1,60 @@ +[waydroid] +arch = x86_64 +vendor_type = MAINLINE +system_datetime = 1754733814 +vendor_datetime = 1754691693 +suspend_action = freeze +mount_overlays = True +auto_adb = True +images_path = /var/lib/waydroid/images +binder = binder +vndbinder = vndbinder +hwbinder = hwbinder +system_ota = https://ota.waydro.id/system/lineage/waydroid_x86_64/GAPPS.json +vendor_ota = https://ota.waydro.id/vendor/waydroid_x86_64/MAINLINE.json +binder_protocol = aidl3 +service_manager_protocol = aidl3 + +[properties] +ro.product.brand = google +ro.product.manufacturer = Google +ro.product.device = komodo +ro.product.model = Pixel 9 Pro XL +ro.product.name = komodo +ro.system.build.fingerprint = google/komodo/komodo:16/BP2A.250705.008/13578956:user/release-keys +ro.build.fingerprint = google/komodo/komodo:16/BP2A.250705.008/13578956:user/release-keys +ro.vendor.build.fingerprint = google/komodo/komodo:16/BP2A.250705.008/13578956:user/release-keys +ro.bootimage.build.fingerprint = google/komodo/komodo:16/BP2A.250705.008/13578956:user/release-keys +ro.system.build.description = komodo-user 16 BP2A.250705.008 13578956 release-keys +ro.system.build.product = komodo +ro.system.build.flavor = komodo-user +ro.build.display.id = google/komodo/komodo:16/BP2A.250705.008/13578956:user/release-keys +ro.build.tags = release-keys +ro.build.description = komodo-user 16 BP2A.250705.008 13578956 release-keys +ro.vendor.build.id = BP2A.250705.008 +ro.vendor.build.tags = release-keys +ro.vendor.build.type = user +ro.odm.build.tags = release-keys +ro.boot.verifiedbootstate = green +ro.boot.flash.locked = 1 +ro.kernel.qemu = 0 +ro.secure = 1 +ro.adb.secure = 1 +ro.debuggable = 0 +ro.build.selinux = 1 +ro.secureboot.enable = 1 +ro.boot.selinux = enforcing +persist.sys.usb.config = none +persist.service.adb.enable = 0 +settings.secure.android_id = 5adea3426167354a +settings.secure.gsf_id = 127237629 +persist.graphics.vulkan.disable = false +persist.vulkan.enabled = 1 +ro.product.cpu.abilist = x86_64,x86,arm64-v8a,armeabi-v7a,armeabi +ro.product.cpu.abilist32 = x86,armeabi-v7a,armeabi +ro.product.cpu.abilist64 = x86_64,arm64-v8a +ro.dalvik.vm.native.bridge = libhoudini.so +ro.enable.native.bridge.exec = 1 +ro.dalvik.vm.isa.arm = x86 +ro.dalvik.vm.isa.arm64 = x86_64 + diff --git a/files/windows/iso_checksums.txt b/files/windows/iso_checksums.txt new file mode 100644 index 0000000..dbb32b6 --- /dev/null +++ b/files/windows/iso_checksums.txt @@ -0,0 +1,20 @@ +https://archive.org/details/en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428 +en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso +md5: f424a52153e6e5ed4c0d44235cf545d5 +sha1: 1c735b38931bf57fb14ebd9a9ba253ceb443d459 +sha256: 62b6c91563bad6cd12a352aa018627c314cfc5162d8e9f8af0756a642e602a46 +sha512: 4cbecbdce1091e79445678595a1d9606651f2a81b1853d36877319102f4e9c2d6cc0ad3b8247b5ebd305571a39c2608d41459d8d782afc1b76a10d195de10a88 + +== Research +https://pastebin.com/ufJkDPwe +https://gist.github.com/ivanagui2/6b8be4d8d2e618f8341937f67f243532 +https://forums.mydigitallife.net/threads/hashes-for-old-windows-sha-1-or-md5.26899/ +https://forums.mydigitallife.net/threads/windows-98-se-hash.9222/page-4 + +https://awuctl.github.io/mvs/ + +https://archive.org/details/windows-98-se-retail-english +https://archive.org/details/ENWIN2000PROSP4 +https://archive.org/details/en_windows_7_ultimate_with_sp1_x64_dvd_u_677332_202006 + +// vim: set syntax=asciidoc: diff --git a/files/windows/products.sha b/files/windows/products.sha new file mode 100644 index 0000000..2c93019 --- /dev/null +++ b/files/windows/products.sha @@ -0,0 +1,232 @@ +# Windows XP Media Center 2005 Update Rollup 2 [265] +be923dbf4887facc2ad8a42baa1749cd8b95e779 *de_winxp_mce_2005_update2.iso +59bd8c23730b78167a23d913c2c8818b891278bf *en_winxp_mce_2005_update2.iso +d20626ac9fe6aec2248209894ab72040ff29ce61 *fr_winxp_mce_2005_update2.iso +0f6e63312b604ccbb9eff3917336ceb2a64a50c0 *it_winxp_mce_2005_update2.iso +2674552c5987ff6ddb7fd21e2b0895cd6d0257ae *jp_winxp_mce_2005_update2.iso +7df06eb37a222c40e65ffbe1587c204369375a5a *ko_winxp_mce_2005_update2.iso +b7c99ef5fdcc632f82a914bedd4c29fdf85d1d6a *nl_winxp_mce_2005_update2.iso +1c52ff0c7a672f6beb2b043ea5269945c15507f9 *sc_winxp_mce_2005_update2.iso + +# Windows 7 Ultimate with Service Pack 1 [1241] +25565487abef877ebc6688c20a65e1c670b1f92d *ar_windows_7_ultimate_with_sp1_x64_dvd_u_677345.iso +302dfd114e2bf89ee69efb3b6ce9c982f84c9f91 *ar_windows_7_ultimate_with_sp1_x86_dvd_u_677448.iso +f408a16822a0445b68db294707a06cbe874704ec *bg_windows_7_ultimate_with_sp1_x64_dvd_u_677363.iso +94885a1482db7fcc00eed5460ec32b75b4db0a86 *bg_windows_7_ultimate_with_sp1_x86_dvd_u_677450.iso +2ce0b2db34d76ed3f697ce148cb7594432405e23 *cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso +b92119f5b732ece1c0850eda30134536e18ccce7 *cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso +ccf08ed048978ff7f902b76a19288d3b6f7fa901 *cs_windows_7_ultimate_with_sp1_x64_dvd_u_677376.iso +7b9488356ad3ac0444c421326d6c69fa96abb2f1 *cs_windows_7_ultimate_with_sp1_x86_dvd_u_677452.iso +324c85b0d952ec267b2ddb5a9760ede1497e775c *da_windows_7_ultimate_with_sp1_x64_dvd_u_677294.iso +8b0a1d5a5de47f5d508807db5893b97b1a4e78b4 *da_windows_7_ultimate_with_sp1_x86_dvd_u_677454.iso +0388de83934b51f44447e1435ca0ff5eb99d20b6 *de_windows_7_ultimate_with_sp1_x64_dvd_u_677306.iso +4de8a4198529b60d57e17e377efabb42b7b4f3a9 *de_windows_7_ultimate_with_sp1_x86_dvd_u_677456.iso +88fa98c86c9b919501f71bbbc559c8565d808832 *el_windows_7_ultimate_with_sp1_x64_dvd_u_677318.iso +3f08ce8a74e0cccaee7f946dcf250dc0712c2b1b *el_windows_7_ultimate_with_sp1_x86_dvd_u_677458.iso +36ae90defbad9d9539e649b193ae573b77a71c83 *en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso +65fce0f445d9bf7e78e43f17e441e08c63722657 *en_windows_7_ultimate_with_sp1_x86_dvd_u_677460.iso +af4b835557b5f15b574a3a643eecaf922fc1236c *es_windows_7_ultimate_with_sp1_x64_dvd_u_677350.iso +5c1d3e8cfdc70dc44dc5ac1cb89cacc3c515b1e8 *es_windows_7_ultimate_with_sp1_x86_dvd_u_677462.iso +a276277be05b62154965e9be2c80665cab91e213 *et_windows_7_ultimate_with_sp1_x64_dvd_u_677368.iso +a8b00577f1370b7411e821e4a1f65aaf7fb2b15c *et_windows_7_ultimate_with_sp1_x86_dvd_u_677464.iso +23c57b632d12e5de40543334be3dc56cdc4f9fd9 *fi_windows_7_ultimate_with_sp1_x64_dvd_u_677378.iso +593ab48ed74d7fb3ac85168ed488af2743934ee9 *fi_windows_7_ultimate_with_sp1_x86_dvd_u_677466.iso +5370bb44f497e1b19114c7cf70f5cdef9f3a2582 *fr_windows_7_ultimate_with_sp1_x64_dvd_u_677299.iso +6a4d873e82698f7bf157c67a69c2db9bce6c769e *fr_windows_7_ultimate_with_sp1_x86_dvd_u_677434.iso +e0f821d1d24504747f725950aa6ff5db706d3767 *he_windows_7_ultimate_with_sp1_x64_dvd_u_677312.iso +548e0937927193cc6e336e41c429cf401c4ef9e3 *he_windows_7_ultimate_with_sp1_x86_dvd_u_677436.iso +7dc2db86f2c2304f4f71bc651da49add77076dc6 *hk_windows_7_ultimate_with_sp1_x64_dvd_u_677411.iso +66cd3d00631df7ede1d94331a49b842e1c2d37ef *hk_windows_7_ultimate_with_sp1_x86_dvd_u_677487.iso +f725ea9bc7f63c504ef88abf40958fe7111d8e10 *hr_windows_7_ultimate_with_sp1_x64_dvd_u_677324.iso +2809bcef53fcf04fe410c16f5dd6be33c29cf1c9 *hr_windows_7_ultimate_with_sp1_x86_dvd_u_677438.iso +28249fc2426245c4bb43649091614ccfb294d2ed *hu_windows_7_ultimate_with_sp1_x64_dvd_u_677338.iso +bb1e5b2055511861196cbb4526d04b15a7e3ebe6 *hu_windows_7_ultimate_with_sp1_x86_dvd_u_677441.iso +9af84e5a557c30f9d0c10bdc5fed339a7159f830 *it_windows_7_ultimate_with_sp1_x64_dvd_u_677356.iso +3378d4bfdbab850407ab6047b68fa9cbb2275b75 *it_windows_7_ultimate_with_sp1_x86_dvd_u_677443.iso +643f7d12ff4b412e40c35bbb17b5bc11379e8c73 *ja_windows_7_ultimate_with_sp1_x64_dvd_u_677372.iso +19e0b9f78165731fc862eacca7f1801d6eca7980 *ja_windows_7_ultimate_with_sp1_x86_dvd_u_677445.iso +7bbf0f48937f4fcbbca63dce2cf2945cec1d6bc5 *lt_windows_7_ultimate_with_sp1_x64_dvd_u_677379.iso +a49b13daeaf462b05756e0d6d45aa29da0bd142c *lt_windows_7_ultimate_with_sp1_x86_dvd_u_677447.iso +436af00fcf6e026ba7ef9861b74d67643269c2e5 *lv_windows_7_ultimate_with_sp1_x64_dvd_u_677302.iso +32d05111a894cf4dcaab8ad4359cd4e1f6b54799 *lv_windows_7_ultimate_with_sp1_x86_dvd_u_677449.iso +8ea95845447abcc0a7bccee6df5142779e19fa58 *nl_windows_7_ultimate_with_sp1_x64_dvd_u_677325.iso +730e312b1a27deaed174841d9d4b562e3d81fcd7 *nl_windows_7_ultimate_with_sp1_x86_dvd_u_677453.iso +6f487f2a523c3de8e2d9c9d113b42c56ae7a10dc *no_windows_7_ultimate_with_sp1_x64_dvd_u_677314.iso +2add96c938e93c40fdab7154748befed18ab35e5 *no_windows_7_ultimate_with_sp1_x86_dvd_u_677451.iso +c6620ae85d42fca40c202b68c0e7124bc0eda7c2 *pl_windows_7_ultimate_with_sp1_x64_dvd_u_677341.iso +38dc423de68dd73fae600096ab82a1c5b63fa0ca *pl_windows_7_ultimate_with_sp1_x86_dvd_u_677455.iso +03686f4e838102220aa9925c3f2c067a6c7dc46e *pp_windows_7_ultimate_with_sp1_x64_dvd_u_677373.iso +8bd12c1a0925d77b3ef8c0dbf966f5b0b22a8a9e *pp_windows_7_ultimate_with_sp1_x86_dvd_u_677459.iso +2a015945685da102c2601af463b474a343985ef7 *pt_windows_7_ultimate_with_sp1_x64_dvd_u_677358.iso +95c625d1c6a80cd8f4a188bc8547a436a108efce *pt_windows_7_ultimate_with_sp1_x86_dvd_u_677457.iso +3d52a0b34af2f8151a40aedcb967d0e088f51c94 *ro_windows_7_ultimate_with_sp1_x64_dvd_u_677380.iso +142ce0e9af47753629a1060ed377472587f54fe7 *ro_windows_7_ultimate_with_sp1_x86_dvd_u_677461.iso +106caf0695318ad0d82e441a54be8460bf099b09 *ru_windows_7_ultimate_with_sp1_x64_dvd_u_677391.iso +d224888cfa62847faa3505630a206bdcd10a9930 *ru_windows_7_ultimate_with_sp1_x86_dvd_u_677463.iso +d096a8aa881d90e65be9a57d49c23dfb16ac01b1 *sk_windows_7_ultimate_with_sp1_x64_dvd_u_677393.iso +5234ecee1bbe1b60b91a75795388ca73ea300337 *sk_windows_7_ultimate_with_sp1_x86_dvd_u_677465.iso +b9e29e1905335a7109234f339b860109e954e172 *sl_windows_7_ultimate_with_sp1_x64_dvd_u_677396.iso +eb1a70a198e97c5d3fce1efb8fe684ad9b6af873 *sl_windows_7_ultimate_with_sp1_x86_dvd_u_677467.iso +a11551e1306b90208c5f703b1c229843c5fa0daf *sr_windows_7_ultimate_with_sp1_x64_dvd_u_677398.iso +4a343bdab5298b3467eacf571bf91aa8c2eae04c *sr_windows_7_ultimate_with_sp1_x86_dvd_u_677468.iso +839c4132d5169cfa2cfca76f1e71d92f5cfc6117 *sv_windows_7_ultimate_with_sp1_x64_dvd_u_677400.iso +cd875f8f0f72d8e6a2c9c617461990a67faeddbd *sv_windows_7_ultimate_with_sp1_x86_dvd_u_677482.iso +6e409e5174bbf83e62a5dfe91b952d11c8a078a3 *th_windows_7_ultimate_with_sp1_x64_dvd_u_677402.iso +aa9b3c5ddf2196cdaf002bb5dc2a1459dadfb041 *th_windows_7_ultimate_with_sp1_x86_dvd_u_677483.iso +86a6b3b55e7fc2cec798806a80263ca59b77a992 *tr_windows_7_ultimate_with_sp1_x64_dvd_u_677404.iso +c352f8b7071a7893edecacc02af1421f1cb6bf32 *tr_windows_7_ultimate_with_sp1_x86_dvd_u_677484.iso +c580ad0ffcb4c08e4f8c1b1ed8ce22675977bc05 *tw_windows_7_ultimate_with_sp1_x64_dvd_u_677414.iso +c281631b915aa24b93c37f6d5d586aa7b51211d8 *tw_windows_7_ultimate_with_sp1_x86_dvd_u_677488.iso +9fe311e57d626901e4a6205e345ebaa5ff9c2c5f *uk_windows_7_ultimate_with_sp1_x64_dvd_u_677406.iso +15c8de9014c9ec511878fb9bd4704a54d81a4d4f *uk_windows_7_ultimate_with_sp1_x86_dvd_u_677485.iso + +# Windows Vista with Service Pack 2 [1257] +b284c32290d619d6dc3afee60f462b25c55f436a *ar_windows_vista_with_sp2_x64_dvd_x15-36318.iso +caaa08290a55a17df9c15bd82960fbcbb179aea3 *ar_windows_vista_with_sp2_x86_dvd_x15-36282.iso +563261102ce9c012ba2b8dc44816c4bc726b057f *bg_windows_vista_with_sp2_x64_dvd_x15-36321.iso +f4af9b66b6b16a2e3253ec0302c4783783a68080 *bg_windows_vista_with_sp2_x86_dvd_x15-36284.iso +a1689c254fb3bd67807ee493ee7d4896bca39887 *cn_windows_vista_with_sp2_x64_dvd_x15-36322.iso +da7f7bdc841ddffabff7ddab6b1158873bf1246d *cn_windows_vista_with_sp2_x86_dvd_x15-36285.iso +d686d03e6e2985b87fb92b8f901f7253a28da7dc *cs_windows_vista_with_sp2_x64_dvd_x15-36327.iso +877237900943650852773fa8005c205775df81ec *cs_windows_vista_with_sp2_x86_dvd_x15-36289.iso +ceca9de5065828822720b3df0207076a0cb9574d *da_windows_vista_with_sp2_x64_dvd_x15-36329.iso +40a85490fb24f29b21c085af9a7f83586be460b8 *da_windows_vista_with_sp2_x86_dvd_x15-36290.iso +d3c6e5d3d01a13576af15533ec40f74abbddce9b *de_windows_vista_sp2_x64_dvd_342287.iso +bfb0973b0c2cfbb37e65d9e670910f080493c7c1 *de_windows_vista_sp2_x86_dvd_342286.iso +1136b9202aae3d5ba5d4d6d2714eaf3445e9ab55 *el_windows_vista_with_sp2_x64_dvd_x15-36343.iso +de27f554306fce123be27d6d3f543a757a361ae9 *el_windows_vista_with_sp2_x86_dvd_x15-36297.iso +aaee3c04533899f9f8c4ae0c4250ef5fafbe29a3 *en_windows_vista_sp2_x64_dvd_342267.iso +25ad9a776503e6a583bec07879dbcc5dfd20cd6e *en_windows_vista_with_sp2_x86_dvd_342266.iso +bb03bb83e82338c43296884b11588fdf987593a1 *es_windows_vista_sp2_x64_dvd_342309.iso +1c6f6b5041a7556bb8e3aa636d856aa206b99d3c *es_windows_vista_sp2_x86_dvd_342308.iso +e318595e9dae52966bdce60ba3e55356efaedbf8 *et_windows_vista_with_sp2_x64_dvd_x15-36335.iso +b598f56fd0b8394766db8fc4e2857afcc9a5b1b3 *et_windows_vista_with_sp2_x86_dvd_x15-36293.iso +8c4b4878333a4ec1decff67eaf360b2fcbc95b82 *fi_windows_vista_with_sp2_x64_dvd_x15-36337.iso +8f5e5807e208c70d0150362f995b50c5c915fd6e *fi_windows_vista_with_sp2_x86_dvd_x15-36294.iso +b8d697f8e9a21d25c5ef04ae80982d4f22673a6a *fr_windows_vista_sp2_x64_dvd_342277.iso +c5a0a891f15082b45e987fd583900591babd118c *fr_windows_vista_sp2_x86_dvd_342276.iso +92d9b4c4acaeab4006bec38aad73ef4bf70fdac5 *he_windows_vista_with_sp2_x64_dvd_x15-36344.iso +6fe8c70fa8aa9f4b849312ccd8125ec55665818f *he_windows_vista_with_sp2_x86_dvd_x15-36298.iso +be2b4e2be0d75182210e8084909483f177f5af03 *hk_windows_vista_with_sp2_x64_dvd_x15-36324.iso +c88aa86345083f482410ec7ed9e15de2c174ce4f *hk_windows_vista_with_sp2_x86_dvd_x15-36287.iso +35abf8d7ff2a01b77a64f808f0296c2946748d82 *hr_windows_vista_with_sp2_x64_dvd_x15-36325.iso +f0e298cd7f4e3804bea1f51bb911168f3e259c84 *hr_windows_vista_with_sp2_x86_dvd_x15-36288.iso +50e67aca9489f0ac34406d87d910d341dc38e226 *hu_windows_vista_with_sp2_x64_dvd_x15-36346.iso +57ff0ec21f1fd2df43c28174119f426cac697454 *hu_windows_vista_with_sp2_x86_dvd_x15-36299.iso +137fc1d51dd0f025e9e489e22d5cf8cc9cb0d8bf *it_windows_vista_with_sp2_x64_dvd_x15-36348.iso +25601d6333ef9966adf6c100ebc0d453a08823bb *it_windows_vista_with_sp2_x86_dvd_x15-36300.iso +a221c018638a5c0cf008b1feb57418178ae64815 *ja_windows_vista_sp2_x64_dvd_342298.iso +2561ca265260d98b687f6b896eabe89234a9cb27 *ja_windows_vista_sp2_x86_dvd_342296.iso +4664ddee58a9cb8a1fc7dd31d9c484cc176b8569 *lt_windows_vista_with_sp2_x64_dvd_x15-36355.iso +51eea18c696004630817de7d094bc55e441852b9 *lt_windows_vista_with_sp2_x86_dvd_x15-36304.iso +2602317b7e6a0da5b7b3b333f35d646ef703d9e3 *lv_windows_vista_with_sp2_x64_dvd_x15-36353.iso +bccf6135beb6932844f8366bcbfec49f59de042e *lv_windows_vista_with_sp2_x86_dvd_x15-36303.iso +959882845cfc5978e301266b47aa1430c5284d40 *nl_windows_vista_with_sp2_x64_dvd_x15-36331.iso +d0e07434493f063a7d6a13a67be36cb923598114 *nl_windows_vista_with_sp2_x86_dvd_x15-36291.iso +03e4b8dd2e69f62dd28cae7b37f79e3c722ddccb *no_windows_vista_with_sp2_x64_dvd_x15-36357.iso +3e6c07b6baccc2b69dadf652184465b291040d1e *no_windows_vista_with_sp2_x86_dvd_x15-36305.iso +15aa9ee504f937b3c32780f791e7af13729b9c17 *pl_windows_vista_with_sp2_x64_dvd_x15-36359.iso +3d086afce629b24463145409a182d3c9c9a75737 *pl_windows_vista_with_sp2_x86_dvd_x15-36306.iso +aea8a1cfbfc74be53833d22ee17ac044bca28c4b *pp_windows_vista_with_sp2_x64_dvd_x15-36361.iso +af873f67d68a1d426a7a7fd23a480be749e2614c *pp_windows_vista_with_sp2_x86_dvd_x15-36307.iso +4d61447f037e5ef925be200a8919604411f638b8 *pt_windows_vista_with_sp2_x64_dvd_x15-36319.iso +597eeac876033ba1df279acfa310f2e4fd56e7df *pt_windows_vista_with_sp2_x86_dvd_x15-36283.iso +5f75fb171bdb5c4a59540767ba0fd2163360d74e *ro_windows_vista_with_sp2_x64_dvd_x15-36363.iso +da86c65d91b6b4dd110e99e0bc61466040b54788 *ro_windows_vista_with_sp2_x86_dvd_x15-36308.iso +8b7ec16e567f3f2c113e8a229bbcd1215b97b4b8 *ru_windows_vista_with_sp2_x64_dvd_x15-36364.iso +5f80659031cfbfb702e1670a3698eee698fe0261 *ru_windows_vista_with_sp2_x86_dvd_x15-36309.iso +6bb704df605799b72222073802298eafc8fa0062 *sk_windows_vista_with_sp2_x64_dvd_x15-36367.iso +a3bd712c92736fe450d68407c59560416985ab68 *sk_windows_vista_with_sp2_x86_dvd_x15-36311.iso +fbb021df12783cc7ee40d7cfc0e2ad8f675e550b *sl_windows_vista_with_sp2_x64_dvd_x15-36369.iso +f3c9eab2193f9a73eeb56890c6b429b67d3bdf26 *sl_windows_vista_with_sp2_x86_dvd_x15-36312.iso +fee952fded3a3e403fc2fdd320babaf7c2f741f1 *sr_windows_vista_with_sp2_x64_dvd_x15-36365.iso +f05eb36aa6a6f58b1617290c9ca153a736e6c216 *sr_windows_vista_with_sp2_x86_dvd_x15-36310.iso +40b5dec573ae3aba12b2137ede23e0175ef061f6 *sv_windows_vista_with_sp2_x64_dvd_x15-36373.iso +64767dfe48be253be4c414eca9204ecc06310074 *sv_windows_vista_with_sp2_x86_dvd_x15-36314.iso +18be06d3183012e908997d4ef21d23ee040de796 *th_windows_vista_with_sp2_x64_dvd_x15-36374.iso +a114b8e05a97fed56eac63f38939c61a36dbfbbe *th_windows_vista_with_sp2_x86_dvd_x15-36315.iso +6ce6f528763a326e0da4b2d19c7687f4a008f64e *tr_windows_vista_with_sp2_x64_dvd_x15-36375.iso +74354142af15cb154ebbf76379e5b30f6fffb6e0 *tr_windows_vista_with_sp2_x86_dvd_x15-36316.iso +3888577027c9fe93aea0b6663937f364ed8147d4 *tw_windows_vista_with_sp2_x64_dvd_x15-36323.iso +bc116de2effd4daea5a331c6f2e209ab4cf5f99c *tw_windows_vista_with_sp2_x86_dvd_x15-36286.iso +fe63d62e8d9c62296a1eabb20124e7373884e749 *uk_windows_vista_with_sp2_x64_dvd_x15-36376.iso +cff5df9c964d7627ba99081ba5998180a0478d3e *uk_windows_vista_with_sp2_x86_dvd_x15-36317.iso + +# Windows XP Media Center 2005 [7180] +520d1abf754d63dbc394c91bb8593b4ac6d7bea8 *de_winxp_mce_2005_cd1.iso +9f0e3517426e87331e6ebff03231362757350040 *de_winxp_mce_2005_cd2.iso +263e59a41559bdb988304f033ea8116efc500456 *en_winxp_mce_2005_cd1.iso +4efc488f9ed6b746cec11e8b1cdc5241c50fa490 *en_winxp_mce_2005_cd2.iso +05504416dbc759479331abc82066a425f191d66d *fr_winxp_mce_2005_cd1.iso +c3d5f92ec313aeff20b962ff627c269340452ef8 *fr_winxp_mce_2005_cd2.iso +418fa8ff08602e7d0a738deec3ff823fd70b88ed *it_winxp_mce_2005_cd1.iso +a7859e72b3bcf1e76e86dd52941755688f4cf252 *it_winxp_mce_2005_cd2.iso +361479fdaa23708b090e73129023e2a7d760449c *ja_winxp_mce_2005_cd2.iso +0651ef452ba28467fcaea9fa1c1977ed03496e86 *jp_winxp_mce_2005_cd1.iso +6c905d3435f4575d1e68a14c0e924b0edbbb34c5 *ko_winxp_mce_2005_cd1.iso +f05d750f2fa15c2573e11f4ad20c8ce452a38c0c *ko_winxp_mce_2005_cd2.iso +4b75453c6841192e02e7a2630ac0d6d975c09431 *nl_winxp_mce_2005_cd1.iso +376a1fe3164b4787e1eff3fb091cd21101ca70e2 *nl_winxp_mce_2005_cd2.iso +8d6a1aa1871c49314cb9df4899e025ca63058fc0 *sc_winxp_mce_2005_cd1.iso +01b8242ac47bc04d1940869d5b06fdff30b370c6 *sc_winxp_mce_2005_cd2.iso + +# Windows XP Media Center 2005 Localization Pack [7184] +caf3c67fada58f12b8fb7da3d5629ec5da94fe51 *cht_winxp_mce_2005_locpack.iso +2a8ebb591e8835cdda270a8e04a5434e472d947e *cz_winxp_mce_2005_locpack.iso +a1a9b40dd628f20ccdd9308408f27a26812c43cd *da_winxp_mce_2005_locpack.iso +5c91fb60ce8f29aea3d16fa3f1db6277a219d164 *es_winxp_mce_2005_locpack.iso +d88adef74c5594fcefeb8419933115336cf4357d *fi_winxp_mce_2005_locpack.iso +e19ebad1a8ae918754d8d2f3d829ef02b97268ba *hk_winxp_mce_2005_locpack.iso +168209f3f4b44e5388ebf87516ff04515ab0740e *no_winxp_mce_2005_locpack.iso +50b8ea28f69ddd7a8f48216bc7b6c00d4b26cd03 *po_winxp_mce_2005_locpack.iso +8affd56c0588336d8306d3fb25874d3888637f82 *pt_winxp_mce_2005_locpack.iso +b3456382d646413e1ff61b09e0708bf0e25f687e *ru_winxp_mce_2005_locpack.iso +a735aec6b85cea32ca881a70325e51d8c5c8a296 *sv_winxp_mce_2005_locpack.iso +7476748aa58ce02311927028848212cf7a1d27b2 *tk_winxp_mce_2005_locpack.iso + +# Windows XP Professional with Service Pack 3 [7630] +22ae37b8f860d8ff7b30a82878e15931e41d1725 *ar_windows_xp_professional_with_service_pack_3_x86_cd_x14-80396.iso +9f4201afa36ae9f31ceaf4fc642e9764fcb5f536 *cs_windows_xp_professional_with_service_pack_3_x86_cd_x14-80416.iso +9a6c10040e4c5ce1f8a2d60c7e0319edf8dceb92 *da_windows_xp_professional_with_service_pack_3_x86_cd_x14-80420.iso +543b4a7c6779002a63614f09e5218056ee220af6 *de_windows_xp_professional_with_service_pack_3_x86_cd_x14-80444.iso +254a501babf9716f9b3c9c73cadc4900a21fb73c *el_windows_xp_professional_with_service_pack_3_x86_cd_x14-80448.iso +1c735b38931bf57fb14ebd9a9ba253ceb443d459 *en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso +11ffce4604bbf627c5695e30c2238266e214c5db *es_windows_xp_professional_with_service_pack_3_x86_cd_x14-80488.iso +ce9bf0c9dc49efeba3b868e72baccb7f07ce63f9 *fi_windows_xp_professional_with_service_pack_3_x86_cd_x14-80436.iso +ffba78eb8e5a965a178ebd0cf354e9dd67dd5064 *fr_windows_xp_professional_with_service_pack_3_x86_cd_x14-80440.iso +be5790b582368c5c3c7170760d2b578f22da76cb *he_windows_xp_professional_with_service_pack_3_x86_cd_x14-80452.iso +90476edef22543d7e56c7d924b4c54a0aa86303b *hu_windows_xp_professional_with_service_pack_3_x86_cd_x14-80456.iso +2ba80aa9de48c34b2ab488afda9666ba7f4aa963 *it_windows_xp_professional_with_service_pack_3_x86_cd_x14-80460.iso +3125aaed8f40a5d8a10dbb959a03e39acc0d9fcb *ja_windows_xp_professional_with_service_pack_3_x86_dvd_x14-80464.iso +ab323d40a96471675d12dde87bafd6fe0adc7141 *nl_windows_xp_professional_with_service_pack_3_x86_cd_x14-80424.iso +b5dac6d279e55b434c41ba8d5f9697a65affdc09 *no_windows_xp_professional_with_service_pack_3_x86_cd_x14-80472.iso +595ca475f4a80b42704ae2fca9fb9042c37d5c49 *pl_windows_xp_professional_with_service_pack_3_x86_cd_x14-80476.iso +32f376c2252849c81e1aa704838b01210c09ba96 *pt-br_windows_xp_professional_with_service_pack_3_x86_cd_x14-80400.iso +b8d34a720cbe3533ec45c870d1432fc568599e97 *pt-pt_windows_xp_professional_with_service_pack_3_x86_cd_x14-80480.iso +3686da63d3d3e8402eb43fe4bf29a58486eca6b3 *ru_windows_xp_professional_with_service_pack_3_x86_cd_x14-80484.iso +5060d593c8eac1d9875f5fd6f23691706abc5460 *sv_windows_xp_professional_with_service_pack_3_x86_cd_x14-80492.iso +ca1d57347afe6f9297e00381e0ae849fab8bc4f9 *tr_windows_xp_professional_with_service_pack_3_x86_cd_x14-80496.iso +69dbf131116760932dcf132ade111d6b45778098 *zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_x14-80404.iso +48ac651e487a7368be50163263c4a3927fb4e869 *zh-hk_windows_xp_professional_with_service_pack_3_x86_cd_x14-80412.iso +ce63c1b72e058e121db9d58f81623da3e7401fbf *zh-tw_windows_xp_professional_with_service_pack_3_x86_cd_x14-80408.iso + +# Windows Vista Ultimate with Service Pack 2 Debug-Checked [7641] +4b0be4a155dceea5ce8069f9806fd505f63fdbbc *en_windows_vista_ultimate_sp2_checked_build_x64_dvd_342433.iso +3617756d54dffc47b803b30a530ff389a15dc3d3 *en_windows_vista_ultimate_sp2_checked_build_x86_dvd_342432.iso + +# Windows 10 IoT Enterprise LTSC 2021 [8166] +d265df49b30a1477d010c79185a7bc88591a1be4b3eb690c994bed828ea17c00 *en-us_windows_10_iot_enterprise_ltsc_2021_arm64_dvd_e8d4fc46.iso +a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160 *en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso + +# Windows Vista Media Center Software Development Kit (SDK) Version 5.3 [8402] +3aac262d8ca5205b197a8378f3d66a4f1d2399dd *en_windows_vista_media_center_sdk_v5.3_x86_cd_x14-28827.iso + +# Windows Vista Media Center Software Development Kit (SDK) Version 5.2 [8403] +f54ea53d96e4b2558be56931a3f339649bf973c8 *en_windows_vista_media_center_software_development_kit_v5.2_cd_x14-07889.iso + +# Windows Vista Media Center Software Development Kit (SDK) Refresh [8404] +d6486e9b3e8bc9be3858e78287befba1605b603e *en_windows_vista_media_center_sdk_refresh_dvd_x13-77439.iso + +# Windows 11 IoT Enterprise LTSC 2024 [8870] +f8f068cdc90c894a55d8c8530db7c193234ba57bb11d33b71383839ac41246b4 *en-us_windows_11_iot_enterprise_ltsc_2024_arm64_dvd_ec517836.iso +4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a *en-us_windows_11_iot_enterprise_ltsc_2024_x64_dvd_f6b14814.iso |