Compare

16a21d07b9ff455b744398dcbfffd0396fe3f044main · 113 commits

merge base 16a21d07b9ff…

Changed files

FileChanges
.gitmodules +3 −0 raw
README.md +21 −1 raw
RyanThinkpad.scm +9 −3 raw
RyanTower.scm +39 −0 raw
SmallLaptop.scm +30 −0 raw
channels.scm +4 −4 raw
deploy.sh +1 −1 raw
home-config/aerc/accounts.conf +0 −32 raw
home-config/aerc/aerc.conf +0 −568 raw
home-config/aerc/binds.conf +0 −149 raw
home-config/aerc/signature_personal +0 −3 raw
home-config/aerc/signature_rit_personal +0 −5 raw
home-config/aerc/templates/quoted_reply +0 −6 raw
home-config/aerc/templates/thanks +0 −7 raw
home-config/alacritty/alacritty.yml +0 −15 raw
home-config/bash_profile +3 −6 raw
home-config/bashrc +14 −1 raw
home-config/docker/cli-plugins/docker-compose binary raw
home-config/fish/config.fish +5 −0 raw
home-config/fish/fish_plugins +0 −5 raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Bold.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFont-BoldItalic.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Italic.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Regular.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Bold.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-BoldItalic.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Italic.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Regular.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Bold.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-BoldItalic.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Italic.ttf binary raw
home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Regular.ttf binary raw
home-config/fonts/AnonymicePro/OFL.txt +0 −94 raw
home-config/fonts/AnonymicePro/readme.md +0 −8 raw
home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Mono Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Mono.ttf binary raw
home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete.ttf binary raw
home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Mono Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Mono.ttf binary raw
home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete.ttf binary raw
home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Mono Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Mono.ttf binary raw
home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete.ttf binary raw
home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Mono Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Mono.ttf binary raw
home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete.ttf binary raw
home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Mono Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Mono.ttf binary raw
home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete.ttf binary raw
home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Mono Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Mono.ttf binary raw
home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Windows Compatible.ttf binary raw
home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete.ttf binary raw
home-config/fonts/Lilex/LilexNerdFont-Bold.ttf binary raw
home-config/fonts/Lilex/LilexNerdFont-ExtraLight.ttf binary raw
home-config/fonts/Lilex/LilexNerdFont-ExtraThick.ttf binary raw
home-config/fonts/Lilex/LilexNerdFont-Medium.ttf binary raw
home-config/fonts/Lilex/LilexNerdFont-Regular.ttf binary raw
home-config/fonts/Lilex/LilexNerdFont-Thin.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontMono-Bold.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontMono-ExtraLight.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontMono-ExtraThick.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontMono-Medium.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontMono-Regular.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontMono-Thin.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontPropo-Bold.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontPropo-ExtraLight.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontPropo-ExtraThick.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontPropo-Medium.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontPropo-Regular.ttf binary raw
home-config/fonts/Lilex/LilexNerdFontPropo-Thin.ttf binary raw
home-config/fonts/Monofur For Powerline/Monofur Bold for Powerline.ttf binary raw
home-config/fonts/Monofur For Powerline/Monofur Italic for Powerline.ttf binary raw
home-config/fonts/Monofur For Powerline/Monofur for Powerline.ttf binary raw
home-config/fonts/MonofurNerdFont/LICENSE.txt +0 −20 raw
home-config/fonts/MonofurNerdFont/MonofurNerdFont-Bold.ttf binary raw
home-config/fonts/MonofurNerdFont/MonofurNerdFont-Italic.ttf binary raw
home-config/fonts/MonofurNerdFont/MonofurNerdFont-Regular.ttf binary raw
home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Bold.ttf binary raw
home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Italic.ttf binary raw
home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Regular.ttf binary raw
home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Bold.ttf binary raw
home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Italic.ttf binary raw
home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Regular.ttf binary raw
home-config/fonts/MonofurNerdFont/readme.md +0 −8 raw
home-config/foot/foot.ini +0 −6 raw
home-config/gitconfig +9 −0 raw
home-config/gnupg/gpg-agent.conf +0 −3 raw
home-config/gnupg/sshcontrol +0 −10 raw
home-config/home-configuration.scm +186 −133 raw
home-config/hypr/Wallpapers/static/1720750738377603.jpg binary raw
home-config/hypr/Wallpapers/static/above-clouds.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-eclipse-1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-eternity-1080px.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-light-at-the-end-hd.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-portal-1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-solar-1k.jpg binary raw
home-config/hypr/Wallpapers/static/autumn1.jpg binary raw
home-config/hypr/Wallpapers/static/autumn1.png binary raw
home-config/hypr/Wallpapers/static/dawn-mountains-vibrant.jpg binary raw
home-config/hypr/Wallpapers/static/lake-winter.jpg binary raw
home-config/hypr/Wallpapers/static/mountains.jpg binary raw
home-config/hypr/Wallpapers/static/northern-lights-2.jpg binary raw
home-config/hypr/Wallpapers/static/northern-lights-bridge.jpg binary raw
home-config/hypr/Wallpapers/static/purple-grass.jpg binary raw
home-config/hypr/Wallpapers/static/purple-intersection.jpg binary raw
home-config/hypr/Wallpapers/static/purple-lakescape.jpg binary raw
home-config/hypr/Wallpapers/static/scarecrow.jpg binary raw
home-config/hypr/Wallpapers/static/snow-1.jpg binary raw
home-config/hypr/Wallpapers/static/snow-2.jpg binary raw
home-config/hypr/autostart.sh +0 −19 raw
home-config/hypr/family_guy.mp4 binary raw
home-config/hypr/hyprland.conf +0 −258 raw
home-config/hypr/hyprlock.conf +0 −55 raw
home-config/hypr/kanshi.conf +0 −21 raw
home-config/hypr/monitors.conf +0 −2 raw
home-config/hypr/subwaysurfer.webm binary raw
home-config/hypr/wallpaper-daemon-animated-old.sh +0 −106 raw
home-config/hypr/wallpaper-daemon.sh +0 −35 raw
home-config/hypr/wallpaper.sh +0 −9 raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/X_cursor.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bd_double_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_left_corner.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_right_corner.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_side.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_tee.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/center_ptr.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/circle.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/context-menu.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/copy.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/cross.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/crossed_circle.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/crosshair.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-ask.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-copy.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-link.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd_no_drop.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dotbox.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/fd_double_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/grabbing.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/hand1.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/hand2.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_ptr.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_ptr_watch.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_side.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_tee.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/link.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ll_angle.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/lr_angle.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/move.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/pencil.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/plus.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/pointer-move.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/question_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_ptr.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_side.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_tee.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_down_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_h_double_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_left_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_right_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_up_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_v_double_arrow.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/tcross.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_left_corner.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_right_corner.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_side.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_tee.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ul_angle.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ur_angle.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/vertical-text.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/wait.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/wayland-cursor.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/xterm.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/zoom-in.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/zoom-out.hlc binary raw
home-config/icons/Bibata-Modern-Classic-Hyprland/manifest.hl +4 −0 raw
home-config/icons/Bibata-Modern-Classic/LICENSE +21 −0 raw
home-config/icons/Bibata-Modern-Classic/README.txt +35 −0 raw
home-config/icons/Bibata-Modern-Classic/VERSION +4 −0 raw
home-config/icons/Bibata-Modern-Classic/cursor.theme +3 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/00000000000000020006000e7e9ffc3f +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/00008160000006810000408080010102 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/028006030e0e7ebffc7f7070c0600140 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/03b6e0fcb3499374a867c041f52298f0 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/08e8e1c95fe2fc01f976f1e063a24ccd +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/1081e37283d90000800003c07f3ef6bf +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/14fef782d02440884392942c1120523 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/2870a09082c103050810ffdffffe0204 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/3085a0e285430894940527032f8b26df +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/3ecb610c1bf2410f44200f48c40d3599 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/4498f0e0c1937ffe01fd06f973665830 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/5c6cd98b3f3ebcb1f9c7f1c204630408 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/6407b0e94181790501fd1e167b474872 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/640fb0e74195791501fd1ed57b41487f +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/9081237383d90e509aa00f00170e968f +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/9d800788f1b08800ae810202380a0822 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/X_cursor binary raw
home-config/icons/Bibata-Modern-Classic/cursors/a2a266d0498c3104214a47bd64ab0fc8 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/alias +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/all-scroll +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/b66166c04f8c3109214a4fbd64a50fc8 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/bd_double_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/bottom_left_corner binary raw
home-config/icons/Bibata-Modern-Classic/cursors/bottom_right_corner binary raw
home-config/icons/Bibata-Modern-Classic/cursors/bottom_side binary raw
home-config/icons/Bibata-Modern-Classic/cursors/bottom_tee binary raw
home-config/icons/Bibata-Modern-Classic/cursors/c7088f0f3e6c8088236ef8e1e3e70000 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/cell +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/center_ptr binary raw
home-config/icons/Bibata-Modern-Classic/cursors/circle binary raw
home-config/icons/Bibata-Modern-Classic/cursors/closedhand +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/col-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/color-picker +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/context-menu binary raw
home-config/icons/Bibata-Modern-Classic/cursors/copy binary raw
home-config/icons/Bibata-Modern-Classic/cursors/cross binary raw
home-config/icons/Bibata-Modern-Classic/cursors/cross_reverse +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/crossed_circle binary raw
home-config/icons/Bibata-Modern-Classic/cursors/crosshair binary raw
home-config/icons/Bibata-Modern-Classic/cursors/d9ce0ab605698f320427677b458ad60b +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/default +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/diamond_cross +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/dnd-ask binary raw
home-config/icons/Bibata-Modern-Classic/cursors/dnd-copy binary raw
home-config/icons/Bibata-Modern-Classic/cursors/dnd-link binary raw
home-config/icons/Bibata-Modern-Classic/cursors/dnd-move +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/dnd-none +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/dnd_no_drop binary raw
home-config/icons/Bibata-Modern-Classic/cursors/dot_box_mask +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/dotbox binary raw
home-config/icons/Bibata-Modern-Classic/cursors/double_arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/down-arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/draft +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/draft_large +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/draft_small +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/draped_box +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/e-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/e29285e634086352946a0e7090d73106 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/ew-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/fcf1c3c7cd4491d801f1e1c78f100000 +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/fcf21c00b30f7e3f83fe0dfd12e71cff +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/fd_double_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/fleur +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/forbidden +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/grab +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/grabbing binary raw
home-config/icons/Bibata-Modern-Classic/cursors/h_double_arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/hand1 binary raw
home-config/icons/Bibata-Modern-Classic/cursors/hand2 binary raw
home-config/icons/Bibata-Modern-Classic/cursors/help +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/ibeam +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/icon +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/left-arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/left_ptr binary raw
home-config/icons/Bibata-Modern-Classic/cursors/left_ptr_help +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/left_ptr_watch binary raw
home-config/icons/Bibata-Modern-Classic/cursors/left_side binary raw
home-config/icons/Bibata-Modern-Classic/cursors/left_tee binary raw
home-config/icons/Bibata-Modern-Classic/cursors/link binary raw
home-config/icons/Bibata-Modern-Classic/cursors/ll_angle binary raw
home-config/icons/Bibata-Modern-Classic/cursors/lr_angle binary raw
home-config/icons/Bibata-Modern-Classic/cursors/move binary raw
home-config/icons/Bibata-Modern-Classic/cursors/n-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/ne-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/nesw-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/no-drop +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/not-allowed +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/ns-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/nw-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/nwse-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/openhand +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/pencil binary raw
home-config/icons/Bibata-Modern-Classic/cursors/pirate +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/plus binary raw
home-config/icons/Bibata-Modern-Classic/cursors/pointer +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/pointer-move binary raw
home-config/icons/Bibata-Modern-Classic/cursors/pointing_hand +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/progress +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/question_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/right-arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/right_ptr binary raw
home-config/icons/Bibata-Modern-Classic/cursors/right_side binary raw
home-config/icons/Bibata-Modern-Classic/cursors/right_tee binary raw
home-config/icons/Bibata-Modern-Classic/cursors/row-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/s-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/sb_down_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/sb_h_double_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/sb_left_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/sb_right_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/sb_up_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/sb_v_double_arrow binary raw
home-config/icons/Bibata-Modern-Classic/cursors/se-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/size-hor +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/size-ver +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/size_all +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/size_bdiag +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/size_fdiag +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/size_hor +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/size_ver +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/split_h +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/split_v +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/sw-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/target +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/tcross binary raw
home-config/icons/Bibata-Modern-Classic/cursors/text +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/top_left_arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/top_left_corner binary raw
home-config/icons/Bibata-Modern-Classic/cursors/top_right_corner binary raw
home-config/icons/Bibata-Modern-Classic/cursors/top_side binary raw
home-config/icons/Bibata-Modern-Classic/cursors/top_tee binary raw
home-config/icons/Bibata-Modern-Classic/cursors/ul_angle binary raw
home-config/icons/Bibata-Modern-Classic/cursors/up-arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/ur_angle binary raw
home-config/icons/Bibata-Modern-Classic/cursors/v_double_arrow +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/vertical-text binary raw
home-config/icons/Bibata-Modern-Classic/cursors/w-resize +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/wait binary raw
home-config/icons/Bibata-Modern-Classic/cursors/watch +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/wayland-cursor binary raw
home-config/icons/Bibata-Modern-Classic/cursors/whats_this +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/x-cursor +1 −0 raw
home-config/icons/Bibata-Modern-Classic/cursors/xterm binary raw
home-config/icons/Bibata-Modern-Classic/cursors/zoom-in binary raw
home-config/icons/Bibata-Modern-Classic/cursors/zoom-out binary raw
home-config/icons/Bibata-Modern-Classic/index.theme +4 −0 raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/X_cursor.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/all-scroll.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_left_corner.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_right_corner.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_tee.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/center_ptr.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/context-menu.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/copy.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/cross.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crossed_circle.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crosshair.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dnd_no_drop.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dotbox.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand1.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand2.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr_watch.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_side.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_tee.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/link.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ll_angle.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/lr_angle.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/move.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pencil.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/person.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pin.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/plus.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/question_arrow.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_ptr.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_tee.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_down_arrow.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_h_double_arrow.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_left_arrow.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_right_arrow.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_up_arrow.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_v_double_arrow.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_side.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_tee.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ul_angle.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ur_angle.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/vertical-text.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wait.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wayland-cursor.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/xterm.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-in.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-out.hlc binary raw
home-config/icons/XCursor-Pro-Dark-Hyprcursor/manifest.hl +4 −0 raw
home-config/icons/XCursor-Pro-Dark/cursor.theme +3 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/00000000000000020006000e7e9ffc3f +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/00008160000006810000408080010102 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/028006030e0e7ebffc7f7070c0600140 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/03b6e0fcb3499374a867c041f52298f0 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/08e8e1c95fe2fc01f976f1e063a24ccd +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/1081e37283d90000800003c07f3ef6bf +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/14fef782d02440884392942c1120523 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/2870a09082c103050810ffdffffe0204 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/3085a0e285430894940527032f8b26df +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/3ecb610c1bf2410f44200f48c40d3599 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/4498f0e0c1937ffe01fd06f973665830 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/5c6cd98b3f3ebcb1f9c7f1c204630408 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/6407b0e94181790501fd1e167b474872 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/640fb0e74195791501fd1ed57b41487f +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/9081237383d90e509aa00f00170e968f +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/9d800788f1b08800ae810202380a0822 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/X_cursor binary raw
home-config/icons/XCursor-Pro-Dark/cursors/a2a266d0498c3104214a47bd64ab0fc8 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/alias +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/all-scroll binary raw
home-config/icons/XCursor-Pro-Dark/cursors/arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/b66166c04f8c3109214a4fbd64a50fc8 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/bd_double_arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/bottom_left_corner binary raw
home-config/icons/XCursor-Pro-Dark/cursors/bottom_right_corner binary raw
home-config/icons/XCursor-Pro-Dark/cursors/bottom_side +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/bottom_tee binary raw
home-config/icons/XCursor-Pro-Dark/cursors/c7088f0f3e6c8088236ef8e1e3e70000 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/cell +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/center_ptr binary raw
home-config/icons/XCursor-Pro-Dark/cursors/circle +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/closedhand +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/col-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/color-picker +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/context-menu binary raw
home-config/icons/XCursor-Pro-Dark/cursors/copy binary raw
home-config/icons/XCursor-Pro-Dark/cursors/cross binary raw
home-config/icons/XCursor-Pro-Dark/cursors/cross_reverse +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/crossed_circle binary raw
home-config/icons/XCursor-Pro-Dark/cursors/crosshair binary raw
home-config/icons/XCursor-Pro-Dark/cursors/d9ce0ab605698f320427677b458ad60b +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/default +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/diamond_cross +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/dnd-ask +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/dnd-copy +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/dnd-link +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/dnd-move +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/dnd-none +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/dnd_no_drop binary raw
home-config/icons/XCursor-Pro-Dark/cursors/dot_box_mask +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/dotbox binary raw
home-config/icons/XCursor-Pro-Dark/cursors/double_arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/down-arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/draft +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/draft_large +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/draft_small +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/draped_box +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/e-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/e29285e634086352946a0e7090d73106 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/ew-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/fcf1c3c7cd4491d801f1e1c78f100000 +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/fcf21c00b30f7e3f83fe0dfd12e71cff +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/fd_double_arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/fleur +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/forbidden +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/grab +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/grabbing +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/h_double_arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/hand1 binary raw
home-config/icons/XCursor-Pro-Dark/cursors/hand2 binary raw
home-config/icons/XCursor-Pro-Dark/cursors/help +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/ibeam +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/icon +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/left-arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/left_ptr binary raw
home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_help +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_watch binary raw
home-config/icons/XCursor-Pro-Dark/cursors/left_side binary raw
home-config/icons/XCursor-Pro-Dark/cursors/left_tee binary raw
home-config/icons/XCursor-Pro-Dark/cursors/link binary raw
home-config/icons/XCursor-Pro-Dark/cursors/ll_angle binary raw
home-config/icons/XCursor-Pro-Dark/cursors/lr_angle binary raw
home-config/icons/XCursor-Pro-Dark/cursors/move binary raw
home-config/icons/XCursor-Pro-Dark/cursors/n-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/ne-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/nesw-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/no-drop +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/not-allowed +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/ns-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/nw-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/nwse-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/openhand +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/pencil binary raw
home-config/icons/XCursor-Pro-Dark/cursors/pirate +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/plus binary raw
home-config/icons/XCursor-Pro-Dark/cursors/pointer +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/pointer_move +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/pointing_hand +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/progress +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/question_arrow binary raw
home-config/icons/XCursor-Pro-Dark/cursors/right-arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/right_ptr binary raw
home-config/icons/XCursor-Pro-Dark/cursors/right_side +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/right_tee binary raw
home-config/icons/XCursor-Pro-Dark/cursors/row-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/s-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/sb_down_arrow binary raw
home-config/icons/XCursor-Pro-Dark/cursors/sb_h_double_arrow binary raw
home-config/icons/XCursor-Pro-Dark/cursors/sb_left_arrow binary raw
home-config/icons/XCursor-Pro-Dark/cursors/sb_right_arrow binary raw
home-config/icons/XCursor-Pro-Dark/cursors/sb_up_arrow binary raw
home-config/icons/XCursor-Pro-Dark/cursors/sb_v_double_arrow binary raw
home-config/icons/XCursor-Pro-Dark/cursors/se-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/size-hor +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/size-ver +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/size_all +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/size_bdiag +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/size_fdiag +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/size_hor +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/size_ver +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/split_h +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/split_v +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/sw-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/target +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/tcross +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/text +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/top_left_arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/top_left_corner +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/top_right_corner +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/top_side binary raw
home-config/icons/XCursor-Pro-Dark/cursors/top_tee binary raw
home-config/icons/XCursor-Pro-Dark/cursors/ul_angle binary raw
home-config/icons/XCursor-Pro-Dark/cursors/up-arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/ur_angle binary raw
home-config/icons/XCursor-Pro-Dark/cursors/v_double_arrow +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/vertical-text binary raw
home-config/icons/XCursor-Pro-Dark/cursors/w-resize +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/wait binary raw
home-config/icons/XCursor-Pro-Dark/cursors/watch +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/wayland-cursor binary raw
home-config/icons/XCursor-Pro-Dark/cursors/whats_this +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/x-cursor +1 −0 raw
home-config/icons/XCursor-Pro-Dark/cursors/xterm binary raw
home-config/icons/XCursor-Pro-Dark/cursors/zoom-in binary raw
home-config/icons/XCursor-Pro-Dark/cursors/zoom-out binary raw
home-config/icons/XCursor-Pro-Dark/index.theme +4 −0 raw
home-config/mpv/scripts/easycrop.lua +0 −254 raw
home-config/nix-channels +0 −2 raw
home-config/nix-config/nix.conf +0 −1 raw
home-config/nix-files +1 −0 raw
home-config/nix-home-manager/flake.lock +0 −69 raw
home-config/nix-home-manager/flake.nix +0 −40 raw
home-config/nix-home-manager/home.nix +0 −92 raw
home-config/nvim/config/after/ftplugin/mail/custom.vim +0 −2 raw
home-config/nvim/config/after/ftplugin/markdown/custom.vim +0 −2 raw
home-config/nvim/config/init.vim +0 −91 raw
home-config/nvim/plugin-manager/plug.vim +0 −2812 raw
home-config/spotify-player/app.toml +0 −34 raw
home-config/ssh/config +0 −20 raw
home-config/waybar/config +0 −154 raw
home-config/waybar/modules/check-for-music.sh +0 −7 raw
home-config/waybar/modules/spotify.sh +0 −19 raw
home-config/waybar/modules/storage.sh +0 −25 raw
home-config/waybar/modules/weather.sh +0 −77 raw
home-config/waybar/style.css +0 −77 raw
modules/ryan-bootloader/uki.scm +115 −0 raw
modules/ryan-config/base-system.scm +116 −49 raw
modules/ryan-config/lyconfig.ini +10 −0 raw
modules/ryan-packages/{binaries.scm => binaries.bak} +14 −1 raw
modules/ryan-packages/bootloaders.scm +148 −0 raw
modules/ryan-packages/calcurse.scm +6 −1 raw
modules/ryan-packages/freedesktop.scm +1 −1 raw
modules/ryan-packages/hyprland.-ryan.bak +46 −0 raw
modules/ryan-packages/hyprland.bak +495 −0 raw
modules/ryan-packages/linux.scm +54 −13 raw
modules/ryan-packages/login.scm +102 −0 raw
modules/ryan-packages/networking.scm +24 −1 raw
modules/ryan-packages/package-management.scm +237 −0 raw
modules/ryan-packages/patches/aquamarine-fix-cmake.patch +25 −0 raw
modules/ryan-packages/patches/hyprland-fix-cmake.patch +41 −0 raw
modules/ryan-packages/wm.scm +5 −6 raw
modules/ryan-services/file-manager.scm +42 −1 raw
modules/ryan-services/networking.scm +84 −0 raw
modules/ryan-services/nix.scm +182 −0 raw

Commits

HashSubjectAuthorDate
b7559d2d bump nix-files Ryan Schanzenbacher
6c4fc5e4 remove old filesand bump nix-files Ryan Schanzenbacher
72d1c1aa bump nix-files Ryan Schanzenbacher
0f472179 migration to mostly nix Ryan Schanzenbacher
a16f1941 update nix files Ryan Schanzenbacher
d40a56ec move more packages and prep for migration Ryan Schanzenbacher
044a02a1 re-add submodule Ryan Schanzenbacher
e094c2eb update ryantower kernel args Ryan Schanzenbacher
01132663 delete modules Ryan Schanzenbacher
8811e556 submodule chores Ryan Schanzenbacher
753b1518 prep for bump Ryan Schanzenbacher
6eb6fb89 updated deprecated option Ryan Schanzenbacher
49288569 updated channels Ryan Schanzenbacher
51dfd859 added lyconfig, fork seems to work kinda, need to update to get newest kmscon Ryan Schanzenbacher
7a693dde half working ly display Ryan Schanzenbacher
a68eca16 defined ly Ryan Schanzenbacher
69433624 updated netbird and added supercell wx Ryan Schanzenbacher
9c982aa7 update windowrules for screenshot tool Ryan Schanzenbacher
30239e43 new wallpaper Ryan Schanzenbacher
7351aa54 need tree-sitter-cli now Ryan Schanzenbacher
7f01041b forgot to enable marks Ryan Schanzenbacher
be3902a7 nvim fixes and new plugin Ryan Schanzenbacher
062e1a68 I am feeling OOGLY GOO Ryan Schanzenbacher
e1360107 Talos and k8s stuff Ryan Schanzenbacher
69df0e16 Netbird service Ryan Schanzenbacher
5855a033 Added netbird binary Ryan Schanzenbacher
65cfa0ed Auto pop-out video when playing Ryan Schanzenbacher
ad097168 Migrate to bluetui instead of blueman Ryan Schanzenbacher
756a6f61 initial systemd-cryptsetup testing for fido2 unlocking Ryan Schanzenbacher
e04163af Manage more zen settings via nix Ryan Schanzenbacher
2be21394 RyanTower V1 Ryan Schanzenbacher
be43161f Update SmallLaptop with new UUIDs Ryan Schanzenbacher
1e1225d6 Fixed hyprlock Ryan Schanzenbacher
edb6623a fixed wpaperd Ryan Schanzenbacher
ed9918f2 Finalized update Ryan Schanzenbacher
ffa13af6 Package name change Ryan Schanzenbacher
412c2ffd Fixed neovim and systemd-stub Ryan Schanzenbacher
ff9e209f Removed openconnect Ryan Schanzenbacher
b3071729 bumped channels Ryan Schanzenbacher
bb168b86 Moved kdenlive to nix, added hibernate key inhibitor, moved email to JMAP Ryan Schanzenbacher
5555894e bumped flake lockfile Ryan Schanzenbacher
7cc0f11d Bumped zen-browser to 1.15 Ryan Schanzenbacher
f2efb254 changed sleep settings when docked Ryan Schanzenbacher
2d5c431c fixed nvim issue Ryan Schanzenbacher
a3bb1315 added waybar entry for second battery Ryan Schanzenbacher
3e08a754 updated neovim Ryan Schanzenbacher
a4b31544 switched to signed bootloader Ryan Schanzenbacher
6d16b960 update flake.lock Ryan Schanzenbacher
5fac2fe2 updated all nix flakes Ryan Schanzenbacher
86245d77 updated all guix channels Ryan Schanzenbacher
8417362b updated guix channel url Ryan Schanzenbacher
6734df2e updated nonguix url for substitutes due to outage Ryan Schanzenbacher
b469379f updated nix Ryan Schanzenbacher
4d22f5ac fixed spacing in packages Ryan Schanzenbacher
dfef019f Changed to codeberg mirror Ryan Schanzenbacher
342f5aa6 SmallLaptop config added, home-config changed before adding SOPs, README updat… Ryan Schanzenbacher
335ac274 changed readme for time-machine woes Ryan Schanzenbacher
77dbb818 fix vertical monitor wallpaper issue Ryan Schanzenbacher
8b506661 changed restic to be nix, updated wpaperd Ryan Schanzenbacher
48d0963e Added talosctl and kubectl Ryan Schanzenbacher
ce414f70 new screenshot stuff that is good Ryan Schanzenbacher
3d07221e updated zen and have policies again Ryan Schanzenbacher
66c84675 added new texlive package for tikz Ryan Schanzenbacher
930ee906 Fixed zen PiP and added wallpapers Ryan Schanzenbacher
6e286466 Added pyprland for zoom and updated some options for hyprland Ryan Schanzenbacher
f77555e1 updated zen (broken policies for now) and hyprland Ryan Schanzenbacher
04342290 Use temp updated nix Ryan Schanzenbacher
8e7ca704 updated tridactyl native_host Ryan Schanzenbacher
5db04dd0 fix modules that do not exist anymore Ryan Schanzenbacher
88b87ca0 Flake updates Ryan Schanzenbacher
f34e77ef Temp home config change, added mailvelope native-host Ryan Schanzenbacher
20d64b16 Changes to screenshots that didn't work, change script location Ryan Schanzenbacher
d465e926 Using Zen, added nix update to be upstreamed Ryan Schanzenbacher
365a13de changed hyprland build, added mouse fx, firefox changes Ryan Schanzenbacher
b64aeaac changed to try and fix policies Ryan Schanzenbacher
aa1a1e82 updates to channels, new cursor, probably other fixes idk Ryan Schanzenbacher
bd9bdb7b just gonna use -delete Ryan Schanzenbacher
51bdc767 Fixed download folder manager service Ryan Schanzenbacher
ba2e2d7b Added dockerg alias for GUI docker runs Ryan Schanzenbacher
f1bc7731 enabled secure boot on the thinkpad Ryan Schanzenbacher
05c721a1 Added openconnect to try and connect to rit vpn. Seems like it will not work. Ryan Schanzenbacher
2cbe73ac Updated hyprland to 0.47.2 Ryan Schanzenbacher
eb7e7cb7 nix flake updated after commit woops Ryan Schanzenbacher
6b3c30c7 Added chromium, delta is git pager, updated hyprland and friends Ryan Schanzenbacher
cd99ce84 Updated bashrc to use eza and delta, installed delta. Ryan Schanzenbacher
479e112a Taskwarrior is now nix, updated bluez Ryan Schanzenbacher
012e5869 Added service to periodically clean Downloads folder Ryan Schanzenbacher
de3f5434 fixed hyprlock and updated hyprpicker Ryan Schanzenbacher
ddd6e973 Updated Thinkpad config to latest, updated all packages, updated docker compos… Ryan Schanzenbacher
ce1c24e3 added uki bootloader maybe Ryan Schanzenbacher
67da3160 updated nix channels Ryan Schanzenbacher
a5218684 Adding updates from however long ago Ryan Schanzenbacher
a04498c0 Changed firefox to use nix configuration, completely reset profile. No longer … Ryan Schanzenbacher
bdb08351 Changed firefox to nightly bin overlay. Flake will be impure for the time bein… Ryan Schanzenbacher
c23b60f8 wttr popup fix, firefox on nix, fontconfig fixes Ryan Schanzenbacher
1c3f6332 Changed kanshi config and trying to debug hyprland Ryan Schanzenbacher
ebc32292 changed wrapper for fonts Ryan Schanzenbacher
a0ac1133 Some updates to get locking working again, also added performance mode script Ryan Schanzenbacher
f4b1d571 added wpaperd config Ryan Schanzenbacher
f8a56388 Have you tried the wallpaper drug? Ryan Schanzenbacher
9f740aa8 Re-arranged some packages to allow mpv and imv to work again Ryan Schanzenbacher
bde398cb got portals working again for screensharing Ryan Schanzenbacher
260a2e3d Added hyprlock Ryan Schanzenbacher
cc6e0d95 added fix for pinentry Ryan Schanzenbacher
9a7ddba4 added hyprland to flakes and added cursor theme Ryan Schanzenbacher
a01f7ce1 Changed things, i dunno Ryan Schanzenbacher
ca201bd9 Changed some packages around for update to succeed Ryan Schanzenbacher
1c883be6 Updated packages to latest Ryan Schanzenbacher
f3ee8355 changes for wails development Ryan Schanzenbacher
f2d68275 added tmux Ryan Schanzenbacher
6cc18a0d added tridactyl stuffs Ryan Schanzenbacher
7b8185c6 various thinkpad changes Ryan Schanzenbacher
08263029 working on hyprland update Ryan Schanzenbacher
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..006b8ae
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "home-config/nix-files"]
+ path = home-config/nix-files
+ url = ssh://git@git.rschanz.org/nix-combined.git
diff --git a/README.md b/README.md
index e224cc1..57922c3 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,27 @@
## Installing Guix
-### Instructions
+### New Instructions
+
+- Boot from Bootable media
+- Setup network and partitions with graphical installer
+- bail out before installation, go to terminal
+ - mount cow-store using `herd start cow-store /mnt`
+ - download latest personal config
+ - add authorization keys
+ - use guix time-machine with `env GUILE_LOAD_PATH='' GUILD_LOAD_COMPILED_PATH='' ...` to init system
+ - place copy of config in /mnt to copy over later. MAKE SURE TO INCLUDE .git FOLDER!!
+ - reboot into new system
+- assign root and ryan pw
+- login to ryan
+ - place config into ~/.config/guix
+ - run `guix pull -C ~/.config/guix/channels.scm`
+ - run `sudo -E guix system -L ~/.config/guix/modules reconfigure ...`
+ - run `guix home -L ~/.config/guix/modules reconfigure ...`
+ - run `nix run --no-write-lock-file github:nix-community/home-manager/ -- --flake ".#$USER" switch`
+- you may have a system now
+
+### Instructions (old, for reference)
- Create USB with Guix installation image
- Boot and create partitions using graphical installer
diff --git a/RyanThinkpad.scm b/RyanThinkpad.scm
index 1066bac..f27974d 100644
--- a/RyanThinkpad.scm
+++ b/RyanThinkpad.scm
@@ -1,4 +1,5 @@
(use-modules (ryan-config base-system)
+ (ryan-bootloader uki)
(gnu))
(operating-system
@@ -10,7 +11,7 @@
(host-name "RyanThinkpad")
(mapped-devices (list (mapped-device
(source (uuid
- "adcaf322-7ee5-48ec-abf6-4a9b10643878"))
+ "40a2c899-a54f-400b-b3b8-9f83b8378c61"))
(target "sysroot")
(type luks-device-mapping))))
(file-systems (cons* (file-system
@@ -20,9 +21,14 @@
(dependencies mapped-devices))
(file-system
(mount-point "/boot/efi")
- (device (uuid "DFE8-32EF"
+ (device (uuid "A73D-7D13"
'fat32))
(type "vfat")) %base-file-systems))
+ (bootloader (bootloader-configuration
+ (bootloader (uefi-uki-signed-bootloader
+ "/var/lib/sbctl/keys/db/db.pem" "/var/lib/sbctl/keys/db/db.key"))
+ (targets (list "/boot/efi"))
+ (keyboard-layout (keyboard-layout "us"))))
(swap-devices
(list
- (swap-space (target (uuid "7e1bb7c5-da2a-4509-8263-f707fc752993"))))))
+ (swap-space (target (uuid "87b91351-93b6-4dcc-814f-64c0f901c4f3"))))))
diff --git a/RyanTower.scm b/RyanTower.scm
new file mode 100644
index 0000000..01e5985
--- /dev/null
+++ b/RyanTower.scm
@@ -0,0 +1,39 @@
+(use-modules (ryan-config base-system)
+ (ryan-bootloader uki)
+ (gnu))
+
+(operating-system
+ (inherit base-operating-system)
+ (kernel-arguments (append (list "amd_iommu=on"
+ "iommu=pt"
+ "pci=noats"
+ "pcie_aspm=off"
+ "modprobe.blacklist=nouveau"
+ "vfio-pci.disable_idle_d3=1"
+ "vfio-pci.ids=10de:13f1,10de:0fbb")
+ %default-kernel-arguments))
+ (initrd-modules (cons* "vfio_pci" "vfio" "vfio_iommu_type1"
+ %base-initrd-modules))
+ (host-name "RyanTower")
+ (mapped-devices (list (mapped-device
+ (source (uuid
+ "e9f000b6-5532-499b-8278-bba30c1a2673"))
+ (target "sysroot")
+ (type luks-device-mapping))))
+ (file-systems (cons* (file-system
+ (mount-point "/")
+ (device "/dev/mapper/sysroot")
+ (type "ext4")
+ (dependencies mapped-devices))
+ (file-system
+ (mount-point "/boot/efi")
+ (device (uuid "89A8-89B0"
+ 'fat32))
+ (type "vfat")) %base-file-systems))
+ (bootloader (bootloader-configuration
+ (bootloader uefi-uki-bootloader)
+ (targets (list "/boot/efi"))
+ (keyboard-layout (keyboard-layout "us"))))
+ (swap-devices
+ (list
+ (swap-space (target (uuid "e9f000b6-5532-499b-8278-bba30c1a2673"))))))
diff --git a/SmallLaptop.scm b/SmallLaptop.scm
new file mode 100644
index 0000000..70d6114
--- /dev/null
+++ b/SmallLaptop.scm
@@ -0,0 +1,30 @@
+(use-modules (ryan-config base-system)
+ (ryan-bootloader uki)
+ (gnu))
+
+(operating-system
+ (inherit base-operating-system)
+ (host-name "SmallLaptop")
+ (mapped-devices (list (mapped-device
+ (source (uuid
+ "f2daabc9-543e-4128-8c61-dd5278988781"))
+ (target "sysroot")
+ (type luks-device-mapping))))
+ (file-systems (cons* (file-system
+ (mount-point "/")
+ (device "/dev/mapper/sysroot")
+ (type "ext4")
+ (dependencies mapped-devices))
+ (file-system
+ (mount-point "/boot/efi")
+ (device (uuid "1E29-F197"
+ 'fat32))
+ (type "vfat")) %base-file-systems))
+ (bootloader (bootloader-configuration
+ (bootloader (uefi-uki-signed-bootloader
+ "/var/lib/sbctl/keys/db/db.pem" "/var/lib/sbctl/keys/db/db.key"))
+ (targets (list "/boot/efi"))
+ (keyboard-layout (keyboard-layout "us"))))
+ (swap-devices
+ (list
+ (swap-space (target (uuid "93ded2d1-da41-4b74-a1ca-697fe99b7efb"))))))
diff --git a/channels.scm b/channels.scm
index c49781a..a82a043 100644
--- a/channels.scm
+++ b/channels.scm
@@ -1,9 +1,9 @@
(list (channel
(name 'guix)
- (url "https://git.savannah.gnu.org/git/guix.git")
+ (url "https://codeberg.org/guix/guix.git")
(branch "master")
(commit
- "e32e3d0a03dc17c4c54a91aad053c9036998b601")
+ "85a7d902c039d82a646f771f661d6935f0a6a1cf")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
@@ -14,7 +14,7 @@
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(commit
- "1d8f477b6d3e497a3b98d68dfcb575c7df50416a")
+ "a3f4e7bff779da4593a2922516064a8edaafa3e6")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
@@ -25,7 +25,7 @@
(url "https://codeberg.org/hako/rosenthal.git")
(branch "trunk")
(commit
- "8ca24e4559bc0b9eb5c736af1e04e600101dc593")
+ "9e60a11917cbdca57e10c51e174dfa56379e74cc")
(introduction
(make-channel-introduction
"7677db76330121a901604dfbad19077893865f35"
diff --git a/deploy.sh b/deploy.sh
index 5971681..de88a93 100755
--- a/deploy.sh
+++ b/deploy.sh
@@ -95,7 +95,7 @@ install_user_env() {
# Copy some files over to prepare for reboot
USER=ryan
- guix shell git -- git clone https://git.stationery.faith/ryan77627/guix-dotfiles /mnt/home/$USER/.config/guix
+ guix shell git -- git clone --recurse-submodules https://git.stationery.faith/ryan77627/guix-dotfiles /mnt/home/$USER/.config/guix
cp ~/guix-dotfiles/$install_hostname.scm /mnt/home/$USER/.config/guix/$install_hostname.scm
cp ~/guix-dotfiles/modules/ryan-config/user_first_run.sh /mnt/home/$USER/.bashrc
diff --git a/home-config/aerc/accounts.conf b/home-config/aerc/accounts.conf
deleted file mode 100644
index 91a75c3..0000000
--- a/home-config/aerc/accounts.conf
+++ /dev/null
@@ -1,32 +0,0 @@
-[Personal]
-source = imaps://ryan%40rschanz.org@mail.rschanz.org:993
-source-cred-cmd = pass emails/personal 2>/dev/null | tr -d '\n'
-outgoing = smtps://ryan%40rschanz.org@mail.rschanz.org:465
-outgoing-cred-cmd = pass emails/personal 2>/dev/null | tr -d '\n'
-default = INBOX
-from = Ryan Schanzenbacher <ryan@rschanz.org>
-copy-to = Sent
-signature-file = ~/.config/aerc/signature_personal
-check-mail = 5m
-aliases = Ryan S <ryan+ritlugdemo@rschanz.org>, Ryan Schanzenbacher <ryan+guixdevel@rschanz.org>
-
-[Development]
-source = imaps://ryan_devel%40rschanz.org@mail.rschanz.org:993
-source-cred-cmd = pass emails/development 2>/dev/null | tr -d '\n'
-outgoing = smtps://ryan_devel%40rschanz.org@mail.rschanz.org:465
-outgoing-cred-cmd = pass emails/development 2>/dev/null | tr -d '\n'
-default = INBOX
-from = Ryan <ryan_devel@rschanz.org>
-copy-to = Sent
-check-mail = 5m
-
-[School]
-source = imaps+oauthbearer://rjs1877%40rit.edu@imap.gmail.com:993?token_endpoint=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken&client_id=667738788924-0rdfvaq9ijfo1vk4474eb3quf8206h2t.apps.googleusercontent.com&client_secret=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
-source-cred-cmd = pass emails/rit_personal 2>/dev/null | tr -d '\n'
-outgoing = smtps+oauthbearer://rjs1877%40rit.edu@imap.gmail.com:465?token_endpoint=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken&client_id=667738788924-0rdfvaq9ijfo1vk4474eb3quf8206h2t.apps.googleusercontent.com&client_secret=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
-outgoing-cred-cmd = pass emails/rit_personal 2>/dev/null | tr -d '\n'
-from = Ryan Schanzenbacher <rjs1877@rit.edu>
-signature-file = ~/.config/aerc/signature_rit_personal
-check-mail = 5m
-default = INBOX
-copy-to = [Gmail]/Sent Mail
diff --git a/home-config/aerc/aerc.conf b/home-config/aerc/aerc.conf
deleted file mode 100644
index 04ac815..0000000
--- a/home-config/aerc/aerc.conf
+++ /dev/null
@@ -1,568 +0,0 @@
-#
-# aerc main configuration
-
-[general]
-#
-# Used as a default path for save operations if no other path is specified.
-# ~ is expanded to the current user home dir.
-#
-default-save-path=~/Downloads/
-
-# If set to "gpg", aerc will use system gpg binary and keystore for all crypto
-# operations. If set to "internal", the internal openpgp keyring will be used.
-# If set to "auto", the system gpg will be preferred unless the internal
-# keyring already exists, in which case the latter will be used.
-#
-# Default: auto
-pgp-provider=gpg
-
-# By default, the file permissions of accounts.conf must be restrictive and
-# only allow reading by the file owner (0600). Set this option to true to
-# ignore this permission check. Use this with care as it may expose your
-# credentials.
-#
-# Default: false
-unsafe-accounts-conf=true # I don't store my creds in this
-
-# Output log messages to specified file. A path starting with ~/ is expanded to
-# the user home dir. When redirecting aerc's output to a file using > shell
-# redirection, this setting is ignored and log messages are printed to stdout.
-#
-#log-file=~/aerc_log
-
-# Only log messages above the specified level to log-file. Supported levels
-# are: trace, debug, info, warn and error. When redirecting aerc's output to
-# a file using > shell redirection, this setting is ignored and the log level
-# is forced to trace.
-#
-# Default: info
-log-level=trace
-
-# Set the $TERM environment variable used for the embedded terminal.
-#
-# Default: xterm-256color
-#term=xterm-256color
-
-# Display OSC8 strings in the embedded terminal
-#
-# Default: false
-#enable-osc8=false
-
-[ui]
-#
-# Describes the format for each row in a mailbox view. This is a comma
-# separated list of column names with an optional align and width suffix. After
-# the column name, one of the '<' (left), ':' (center) or '>' (right) alignment
-# characters can be added (by default, left) followed by an optional width
-# specifier. The width is either an integer representing a fixed number of
-# characters, or a percentage between 1% and 99% representing a fraction of the
-# terminal width. It can also be one of the '*' (auto) or '=' (fit) special
-# width specifiers. Auto width columns will be equally attributed the remaining
-# terminal width. Fit width columns take the width of their contents. If no
-# width specifier is set, '*' is used by default.
-#
-# Default: date<20,name<17,flags>4,subject<*
-#index-columns=date<20,name<17,flags>4,subject<*
-
-spinner = '/,-,\,|'
-
-#
-# Each name in index-columns must have a corresponding column-$name setting.
-# All column-$name settings accept golang text/template syntax. See
-# aerc-templates(7) for available template attributes and functions.
-#
-# Default settings
-#column-date={{.DateAutoFormat .Date.Local}}
-#column-name={{index (.From | names) 0}}
-#column-flags={{.Flags | join ""}}
-#column-subject={{.ThreadPrefix}}{{.Subject}}
-
-#
-# String separator inserted between columns. When the column width specifier is
-# an exact number of characters, the separator is added to it (i.e. the exact
-# width will be fully available for the column contents).
-#
-# Default: " "
-#column-separator=" "
-
-#
-# See time.Time#Format at https://godoc.org/time#Time.Format
-#
-# Default: 2006-01-02 03:04 PM (ISO 8601 + 12 hour time)
-#timestamp-format=2006-01-02 03:04 PM
-
-#
-# Index-only time format for messages that were received/sent today.
-# If this is not specified, timestamp-format is used instead.
-#
-#this-day-time-format=
-
-#
-# Index-only time format for messages that were received/sent within the last
-# 7 days. If this is not specified, timestamp-format is used instead.
-#
-#this-week-time-format=
-
-#
-# Index-only time format for messages that were received/sent this year.
-# If this is not specified, timestamp-format is used instead.
-#
-#this-year-time-format=
-
-#
-# Width of the sidebar, including the border.
-#
-# Default: 20
-#sidebar-width=20
-
-#
-# Message to display when viewing an empty folder.
-#
-# Default: (no messages)
-#empty-message=(no messages)
-
-# Message to display when no folders exists or are all filtered
-#
-# Default: (no folders)
-#empty-dirlist=(no folders)
-
-# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
-#
-# Default: false
-#mouse-enabled=false
-
-#
-# Ring the bell when new messages are received
-#
-# Default: true
-#new-message-bell=true
-
-#
-# Template to use for Account tab titles
-#
-# Default: {{.Account}}
-#tab-title-account={{.Account}}
-
-# Marker to show before a pinned tab's name.
-#
-# Default: `
-#pinned-tab-marker='`'
-
-# Template for the left side of the directory list.
-# See aerc-templates(7) for all available fields and functions.
-#
-# Default: {{.Folder}}
-#dirlist-left={{.Folder}}
-
-# Template for the right side of the directory list.
-# See aerc-templates(7) for all available fields and functions.
-#
-# Default: {{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}
-#dirlist-right={{if .Unread}}{{humanReadable .Unread}}/{{end}}{{if .Exists}}{{humanReadable .Exists}}{{end}}
-
-# Delay after which the messages are actually listed when entering a directory.
-# This avoids loading messages when skipping over folders and makes the UI more
-# responsive. If you do not want that, set it to 0s.
-#
-# Default: 200ms
-#dirlist-delay=200ms
-
-# Display the directory list as a foldable tree that allows to collapse and
-# expand the folders.
-#
-# Default: false
-#dirlist-tree=false
-
-# If dirlist-tree is enabled, set level at which folders are collapsed by
-# default. Set to 0 to disable.
-#
-# Default: 0
-#dirlist-collapse=0
-
-# List of space-separated criteria to sort the messages by, see *sort*
-# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
-# reverses that criterion.
-#
-# Example: "from -r date"
-#
-#sort=
-
-# Moves to next message when the current message is deleted
-#
-# Default: true
-#next-message-on-delete=true
-
-# Automatically set the "seen" flag when a message is opened in the message
-# viewer.
-#
-# Default: true
-#auto-mark-read=true
-
-# The directories where the stylesets are stored. It takes a colon-separated
-# list of directories. If this is unset or if a styleset cannot be found, the
-# following paths will be used as a fallback in that order:
-#
-# ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets
-# ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets
-# /usr/local/share/aerc/stylesets
-# /usr/share/aerc/stylesets
-#
-#stylesets-dirs=
-
-# Uncomment to use box-drawing characters for vertical and horizontal borders.
-#
-# Default: " "
-#border-char-vertical=" "
-#border-char-horizontal=" "
-
-# Sets the styleset to use for the aerc ui elements.
-#
-# Default: default
-#styleset-name=default
-
-# Activates fuzzy search in commands and their arguments: the typed string is
-# searched in the command or option in any position, and need not be
-# consecutive characters in the command or option.
-#
-# Default: false
-#fuzzy-complete=false
-
-# How long to wait after the last input before auto-completion is triggered.
-#
-# Default: 250ms
-#completion-delay=250ms
-
-# The minimum required characters to allow auto-completion to be triggered after
-# completion-delay.
-#
-# Default: 1
-#completion-min-chars=1
-
-#
-# Global switch for completion popovers
-#
-# Default: true
-#completion-popovers=true
-
-# Uncomment to use UTF-8 symbols to indicate PGP status of messages
-#
-# Default: ASCII
-#icon-unencrypted=
-#icon-encrypted=✔
-#icon-signed=✔
-#icon-signed-encrypted=✔
-#icon-unknown=✘
-#icon-invalid=⚠
-
-# Reverses the order of the message list. By default, the message list is
-# ordered with the newest (highest UID) message on top. Reversing the order
-# will put the oldest (lowest UID) message on top. This can be useful in cases
-# where the backend does not support sorting.
-#
-# Default: false
-#reverse-msglist-order = false
-
-# Reverse display of the mesage threads. Default order is the the intial
-# message is on the top with all the replies being displayed below. The
-# reverse option will put the initial message at the bottom with the
-# replies on top.
-#
-# Default: false
-#reverse-thread-order=false
-
-# Sort the thread siblings according to the sort criteria for the messages. If
-# sort-thread-siblings is false, the thread siblings will be sorted based on
-# the message UID in ascending order. This option is only applicable for
-# client-side threading with a backend that enables sorting. Note that there's
-# a performance impact when sorting is activated.
-#
-# Default: false
-#sort-thread-siblings=false
-
-#[ui:account=Personal]
-#
-# Enable a threaded view of messages. If this is not supported by the backend
-# (IMAP server or notmuch), threads will be built by the client.
-#
-# Default: false
-threading-enabled=true
-
-# Force client-side thread building
-#
-# Default: false
-#force-client-threads=false
-
-# Debounce client-side thread building
-#
-# Default: 50ms
-#client-threads-delay=50ms
-
-[statusline]
-#
-# Describes the format for the status line. This is a comma separated list of
-# column names with an optional align and width suffix. See [ui].index-columns
-# for more details. To completely mute the status line except for push
-# notifications, explicitly set status-columns to an empty string.
-#
-# Default: left<*,center:=,right>*
-#status-columns=left<*,center:=,right>*
-
-#
-# Each name in status-columns must have a corresponding column-$name setting.
-# All column-$name settings accept golang text/template syntax. See
-# aerc-templates(7) for available template attributes and functions.
-#
-# Default settings
-#column-left=[{{.Account}}] {{.StatusInfo}}
-#column-center={{.PendingKeys}}
-#column-right={{.TrayInfo}}
-
-#
-# String separator inserted between columns.
-# See [ui].column-separator for more details.
-#
-#column-separator=" "
-
-# Specifies the separator between grouped statusline elements.
-#
-# Default: " | "
-#separator=" | "
-
-# Defines the mode for displaying the status elements.
-# Options: text, icon
-#
-# Default: text
-#display-mode=text
-
-[viewer]
-#
-# Specifies the pager to use when displaying emails. Note that some filters
-# may add ANSI codes to add color to rendered emails, so you may want to use a
-# pager which supports ANSI codes.
-#
-# Default: less -R
-#pager=less -R
-
-#
-# If an email offers several versions (multipart), you can configure which
-# mimetype to prefer. For example, this can be used to prefer plaintext over
-# html emails.
-#
-# Default: text/plain,text/html
-#alternatives=text/plain,text/html
-
-#
-# Default setting to determine whether to show full headers or only parsed
-# ones in message viewer.
-#
-# Default: false
-#show-headers=false
-
-#
-# Layout of headers when viewing a message. To display multiple headers in the
-# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if
-# none of their specified headers are present in the message.
-#
-# Default: From|To,Cc|Bcc,Date,Subject
-#header-layout=From|To,Cc|Bcc,Date,Subject
-
-# Whether to always show the mimetype of an email, even when it is just a single part
-#
-# Default: false
-#always-show-mime=false
-
-# Parses and extracts http links when viewing a message. Links can then be
-# accessed with the open-link command.
-#
-# Default: true
-#parse-http-links=true
-
-[compose]
-#
-# Specifies the command to run the editor with. It will be shown in an embedded
-# terminal, though it may also launch a graphical window if the environment
-# supports it. Defaults to $EDITOR, or vi.
-#editor=
-
-# Address book command
-address-book-cmd = sh -c 'abook --mutt-query "%s" | tail -n +2'
-
-#
-# Default header fields to display when composing a message. To display
-# multiple headers in the same row, separate them with a pipe, e.g. "To|From".
-#
-# Default: To|From,Subject
-#header-layout=To|From,Subject
-
-#
-# Specifies the command to be used to tab-complete email addresses. Any
-# occurrence of "%s" in the address-book-cmd will be replaced with what the
-# user has typed so far.
-#
-# The command must output the completions to standard output, one completion
-# per line. Each line must be tab-delimited, with an email address occurring as
-# the first field. Only the email address field is required. The second field,
-# if present, will be treated as the contact name. Additional fields are
-# ignored.
-#
-# This parameter can also be set per account in accounts.conf.
-#address-book-cmd=
-
-# Specifies the command to be used to select attachments. Any occurence of '%s'
-# in the file-picker-cmd will be replaced the argument <arg> to :attach -m
-# <arg>.
-#
-# The command must output the selected files to standard output, one file per
-# line.
-file-picker-cmd=fzf --multi --query=%s
-
-#
-# Allow to address yourself when replying
-#
-# Default: true
-#reply-to-self=true
-
-#
-# Warn before sending an email that matches the specified regexp but does not
-# have any attachments. Leave empty to disable this feature.
-#
-# Uses Go's regexp syntax, documented at https://golang.org/s/re2syntax. The
-# "(?im)" flags are set by default (case-insensitive and multi-line).
-#
-# Example:
-# no-attachment-warning=^[^>]*attach(ed|ment)
-#
-#no-attachment-warning=
-
-#
-# When set, aerc will generate "format=flowed" bodies with a content type of
-# "text/plain; format=flowed" as described in RFC3676. This format is easier to
-# handle for some mailing software, and generally just looks like ordinary
-# text. To actually make use of this format's features, you'll need support in
-# your editor.
-#
-format-flowed=true
-
-[multipart-converters]
-#
-# Converters allow to generate multipart/alternative messages by converting the
-# main text/plain part into any other MIME type. Only exact MIME types are
-# accepted. The commands are invoked with sh -c and are expected to output
-# valid UTF-8 text.
-#
-# Example (obviously, this requires that you write your main text/plain body
-# using the markdown syntax):
-text/html=pandoc --wrap=preserve -f gfm+hard_line_breaks -t html --standalone
-
-[filters]
-#
-# Filters allow you to pipe an email body through a shell command to render
-# certain emails differently, e.g. highlighting them with ANSI escape codes.
-#
-# The commands are invoked with sh -c. The following folders are appended to
-# the system $PATH to allow referencing filters from their name only:
-#
-# ${XDG_CONFIG_HOME:-~/.config}/aerc/filters
-# ${XDG_DATA_HOME:-~/.local/share}/aerc/filters
-# $PREFIX/share/aerc/filters
-# /usr/share/aerc/filters
-#
-# The following variables are defined in the filter command environment:
-#
-# AERC_MIME_TYPE the part MIME type/subtype
-# AERC_FORMAT the part content type format= parameter
-# AERC_FILENAME the attachment filename (if any)
-# AERC_SUBJECT the message Subject header value
-# AERC_FROM the message From header value
-#
-# The first filter which matches the email's mimetype will be used, so order
-# them from most to least specific.
-#
-# You can also match on non-mimetypes, by prefixing with the header to match
-# against (non-case-sensitive) and a comma, e.g. subject,text will match a
-# subject which contains "text". Use header,~regex to match against a regex.
-#
-#text/plain=colorize
-#text/calendar=calendar
-message/delivery-status=bat -fn
-message/rfc822=bat -fn
-text/html=pandoc -f html -t plain | bat -fn
-#text/html=html | colorize
-text/*=bat -fn
-application/x-sh=bat -fn -l sh
-#image/*=catimg -w $(tput cols) -
-#subject,~Git(hub|lab)=lolcat -f
-#from,thatguywhodoesnothardwraphismessages=wrap -w 100 | colorize
-
-# This special filter is only used to post-process email headers when
-# [viewer].show-headers=true
-# By default, headers are piped directly into the pager.
-#
-#.headers=bat -fp
-
-[openers]
-#
-# Openers allow you to specify the command to use for the :open and :open-link
-# actions on a per-MIME-type basis. The :open-link URL scheme is used to
-# determine the MIME type as follows: x-scheme-handler/<scheme>.
-#
-# {} is expanded as the temporary filename to be opened. If it is not
-# encountered in the command, the temporary filename will be appened to the end
-# of the command.
-#
-# Like [filters], openers support basic shell globbing. The first opener which
-# matches the part's MIME type (or URL scheme handler MIME type) will be used,
-# so order them from most to least specific.
-#
-# Examples:
-# x-scheme-handler/irc=hexchat
-# x-scheme-handler/http*=firefox
-# text/html=surf -dfgms
-# text/plain=gvim {} +125
-# message/rfc822=thunderbird
-
-[hooks]
-#
-# Hooks are triggered whenever the associated event occurs.
-
-#
-# Executed when a new email arrives in the selected folder
-mail-received=notify-send "$AERC_FROM_NAME" "$AERC_SUBJECT"
-
-#
-# Executed when aerc starts
-#aerc-startup=aerc :terminal calcurse && aerc :next-tab
-
-#
-# Executed when aerc shuts down.
-#aerc-shutdown=
-
-[templates]
-# Templates are used to populate email bodies automatically.
-#
-
-# The directories where the templates are stored. It takes a colon-separated
-# list of directories. If this is unset or if a template cannot be found, the
-# following paths will be used as a fallback in that order:
-#
-# ${XDG_CONFIG_HOME:-~/.config}/aerc/templates
-# ${XDG_DATA_HOME:-~/.local/share}/aerc/templates
-# /usr/local/share/aerc/templates
-# /usr/share/aerc/templates
-#
-#template-dirs=
-
-# The default template to be used for new messages.
-#
-# default: new_message
-#new-message=new_message
-
-# The default template to be used for quoted replies.
-#
-# default: quoted_reply
-#quoted-reply=quoted_reply
-
-# The default template to be used for forward as body.
-#
-# default: forward_as_body
-#forwards=forward_as_body
diff --git a/home-config/aerc/binds.conf b/home-config/aerc/binds.conf
deleted file mode 100644
index 4dee57f..0000000
--- a/home-config/aerc/binds.conf
+++ /dev/null
@@ -1,149 +0,0 @@
-# Binds are of the form <key sequence> = <command to run>
-# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
-# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
-<C-p> = :prev-tab<Enter>
-<C-n> = :next-tab<Enter>
-<C-t> = :term<Enter>
-? = :help keys<Enter>
-
-[messages]
-q = :quit<Enter>
-
-j = :next<Enter>
-<Down> = :next<Enter>
-<C-d> = :next 50%<Enter>
-<C-f> = :next 100%<Enter>
-<PgDn> = :next 100%<Enter>
-
-k = :prev<Enter>
-<Up> = :prev<Enter>
-<C-u> = :prev 50%<Enter>
-<C-b> = :prev 100%<Enter>
-<PgUp> = :prev 100%<Enter>
-g = :select 0<Enter>
-G = :select -1<Enter>
-<C-r> = :read<Enter>
-<C-u> = :unread<Enter>
-
-J = :next-folder<Enter>
-K = :prev-folder<Enter>
-H = :collapse-folder<Enter>
-L = :expand-folder<Enter>
-
-v = :mark -t<Enter>
-V = :mark -v<Enter>
-
-T = :toggle-threads<Enter>
-
-<Enter> = :view<Enter>
-dd = :mv Trash<Enter>
-dg = :mv [Gmail]/Trash<Enter>
-D = :delete<Enter>
-A = :archive year<Enter>
-
-C = :compose<Enter>
-
-rr = :reply -a<Enter>
-rq = :reply -aq<Enter>
-Rr = :reply<Enter>
-Rq = :reply -q<Enter>
-f = :forward -A<Enter>
-
-# Git custom stuff ala Drew Devault
-ga = :pipe -mb git am -3<Enter>
-gp = :term git push<Enter>
-rt = :reply -aTthanks<Enter>
-
-c = :cf<space>
-$ = :term<space>
-! = :term<space>
-| = :pipe<space>
-
-/ = :search<space>
-\ = :filter<space>
-n = :next-result<Enter>
-N = :prev-result<Enter>
-<Esc> = :clear<Enter>
-
-[messages:folder=Drafts]
-<Enter> = :recall<Enter>
-
-[view]
-/ = :toggle-key-passthrough<Enter>/
-q = :close<Enter>
-O = :open<Enter>
-S = :save<space>
-| = :pipe<space>
-D = :delete<Enter>
-dd = :mv Trash<Enter>
-dg = :mv [Gmail]/Trash<Enter>
-A = :archive year<Enter>
-
-<C-l> = :open-link <space>
-
-f = :forward -A<Enter>
-rr = :reply -a<Enter>
-rq = :reply -aq<Enter>
-Rr = :reply<Enter>
-Rq = :reply -q<Enter>
-
-H = :toggle-headers<Enter>
-<C-k> = :prev-part<Enter>
-<C-j> = :next-part<Enter>
-J = :next<Enter>
-K = :prev<Enter>
-
-[view::passthrough]
-$noinherit = true
-$ex = <C-x>
-<Esc> = :toggle-key-passthrough<Enter>
-
-[compose]
-# Keybindings used when the embedded terminal is not selected in the compose
-# view
-$noinherit = true
-$ex = <C-x>
-<C-k> = :prev-field<Enter>
-<C-j> = :next-field<Enter>
-<A-p> = :switch-account -p<Enter>
-<A-n> = :switch-account -n<Enter>
-<tab> = :next-field<Enter>
-<backtab> = :prev-field<Enter>
-<C-p> = :prev-tab<Enter>
-<C-n> = :next-tab<Enter>
-<C-c> = :cc<Enter>
-<C-b> = :bcc<Enter>
-<C-q> = :abort<Enter>
-
-[compose::editor]
-# Keybindings used when the embedded terminal is selected in the compose view
-$noinherit = true
-$ex = <C-x>
-<C-k> = :prev-field<Enter>
-<C-j> = :next-field<Enter>
-<C-p> = :prev-tab<Enter>
-<C-n> = :next-tab<Enter>
-<C-q> = :abort<Enter>
-
-[compose::review]
-# Keybindings used when reviewing a message to be sent
-y = :send<Enter>
-n = :abort<Enter>
-v = :preview<Enter>
-p = :postpone<Enter>
-q = :choose -o d discard abort -o p postpone postpone<Enter>
-e = :edit<Enter>
-a = :attach<space>
-d = :detach<space>
-S = :sign<Enter>
-E = :encrypt<Enter>
-A = :attach-key<Enter>
-C = :multipart text/html<Enter>
-
-[terminal]
-$noinherit = true
-$ex = <C-x>
-<C-q> = :close<Enter>
-
-<C-p> = :prev-tab<Enter>
-<C-n> = :next-tab<Enter>
diff --git a/home-config/aerc/signature_personal b/home-config/aerc/signature_personal
deleted file mode 100644
index d9a8de7..0000000
--- a/home-config/aerc/signature_personal
+++ /dev/null
@@ -1,3 +0,0 @@
---
-Best,
-Ryan Schanzenbacher
diff --git a/home-config/aerc/signature_rit_personal b/home-config/aerc/signature_rit_personal
deleted file mode 100644
index efe4ceb..0000000
--- a/home-config/aerc/signature_rit_personal
+++ /dev/null
@@ -1,5 +0,0 @@
---
-Best,
-Ryan Schanzenbacher
-Rochester Institute of Technology
-Cybersecurity BS/MS Student
diff --git a/home-config/aerc/templates/quoted_reply b/home-config/aerc/templates/quoted_reply
deleted file mode 100644
index 402515f..0000000
--- a/home-config/aerc/templates/quoted_reply
+++ /dev/null
@@ -1,6 +0,0 @@
-X-Mailer: aerc {{version}}
-
-{{.Signature}}
-
-On {{dateFormat (.OriginalDate | toLocal) "Mon Jan 2, 2006 at 3:04 PM MST"}}, {{(index .OriginalFrom 0).Name}} wrote:
-{{trimSignature .OriginalText | quote}}
diff --git a/home-config/aerc/templates/thanks b/home-config/aerc/templates/thanks
deleted file mode 100644
index bc920a6..0000000
--- a/home-config/aerc/templates/thanks
+++ /dev/null
@@ -1,7 +0,0 @@
-X-Mailer: aerc {{version}}
-
-Thanks!
-
-{{exec "{ git remote get-url --push origin; git reflog -2 origin/main --pretty=format:%h; } | xargs printf 'To %s\n %s..%s main -> main\n'" ""}}
-
-{{.Signature}}
diff --git a/home-config/alacritty/alacritty.yml b/home-config/alacritty/alacritty.yml
deleted file mode 100644
index 4fbd991..0000000
--- a/home-config/alacritty/alacritty.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-window:
- opacity: 0.70
-font:
- size: 15
- normal:
- family: "Monofur Nerd Font Mono"
- style: Regular
-
- bold:
- family: "Monofur Nerd Font Mono"
- style: Bold
-
- italic:
- family: "Monofur Nerd Font Mono"
- style: Italic
diff --git a/home-config/bash_profile b/home-config/bash_profile
index 6bc7def..72ea319 100644
--- a/home-config/bash_profile
+++ b/home-config/bash_profile
@@ -1,16 +1,13 @@
export MOZ_ENABLE_WAYLAND=1
-export XDG_CURRENT_DESKTOP=sway
-export XDG_SESSION_DESKTOP=sway
-export _JAVA_AWT_WM_NONREPEATING=1
-
export XDG_DATA_DIRS=$XDG_DATA_DIRS:~/.nix-profile/share
-export PATH=~/.local/bin:$PATH:~/.nix-profile/bin
+export PATH=~/.local/bin:$PATH:~/.nix-profile/bin:~/.go/bin
+export GOPATH=~/.go
# Honor per-interactive-shell startup file
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
if [ -z "$SSH_CLIENT" ] && [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
- exec Hyprland
+ exec nixGLIntel Hyprland
fi
diff --git a/home-config/bashrc b/home-config/bashrc
index 26fbbf4..5e12cf6 100644
--- a/home-config/bashrc
+++ b/home-config/bashrc
@@ -44,6 +44,8 @@ alias gc='git -C ~/.config/guix add . && git -C ~/.config/guix commit && git -C
alias cg='git -C ~/.config/guix pull'
alias cgh='git -C ~/.config/guix pull stationeryh main'
alias gencs="awk 'BEGIN {print \"# Crib Sheet\"} /<!-- START CS -->/,/<!-- END CS -->/ {if (! /<!-- START CS -->/ && ! /<!-- END CS -->/) print; if (/<!-- END CS -->/) print \"\"}' notes.mkd | pandoc -f gfm -t pdf | zathura -"
+alias dockerg="docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix"
+
export XDG_DATA_DIRS=$XDG_DATA_DIRS:/var/lib/flatpak/exports/share:/home/ryan/.local/share/flatpak/exports/share
# GPG SETUP FOR SSH
@@ -51,4 +53,15 @@ export XDG_DATA_DIRS=$XDG_DATA_DIRS:/var/lib/flatpak/exports/share:/home/ryan/.l
#gpgconf --launch gpg-agent
export GPG_TTY=$(tty)
-eval "$(zoxide init bash)"
+# eza
+alias ls='eza --icons=always -Gx'
+
+# Delta
+alias diff='delta'
+
+# Starship
+eval "$(starship init bash)"
+
+# Zoxide
+eval "$(zoxide init --cmd cd bash)"
+
diff --git a/home-config/docker/cli-plugins/docker-compose b/home-config/docker/cli-plugins/docker-compose
index bf829e0..911e760 100755
Binary files a/home-config/docker/cli-plugins/docker-compose and b/home-config/docker/cli-plugins/docker-compose differ
diff --git a/home-config/fish/config.fish b/home-config/fish/config.fish
index 3ccd0cb..7e054bf 100644
--- a/home-config/fish/config.fish
+++ b/home-config/fish/config.fish
@@ -12,6 +12,8 @@ if status is-login
fish_add_path -Pp ~/.guix-home/profile/bin
fish_add_path -Pp /run/setuid-programs
fish_add_path -Pp ~/.nix-profile/bin
+ fish_add_path -Pp ~/.go/bin
+ set -gx GOPATH ~/.go
set -gx EDITOR nvim
set -gax --path XDG_DATA_DIRS ~/.nix-profile/share
# Bad
@@ -19,6 +21,9 @@ if status is-login
end
if status is-interactive
set -gax --path XDG_DATA_DIRS ~/.local/share/flatpak/exports/share
+
+ set GPG_TTY $(tty)
+ export GPG_TTY
# Commands to run in interactive sessions can go here
alias quit exit
alias cat "bat --paging=never"
diff --git a/home-config/fish/fish_plugins b/home-config/fish/fish_plugins
deleted file mode 100644
index 32f71ac..0000000
--- a/home-config/fish/fish_plugins
+++ /dev/null
@@ -1,5 +0,0 @@
-jorgebucaran/fisher
-ilancosman/tide@v6
-patrickf1/fzf.fish
-lilyball/nix-env.fish
-oh-my-fish/plugin-foreign-env
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Bold.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Bold.ttf
deleted file mode 100644
index 0482a5d..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-BoldItalic.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-BoldItalic.ttf
deleted file mode 100644
index 0ea8dfe..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-BoldItalic.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Italic.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Italic.ttf
deleted file mode 100644
index c373d01..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Italic.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Regular.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Regular.ttf
deleted file mode 100644
index 5fcf955..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFont-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Bold.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Bold.ttf
deleted file mode 100644
index ccdfff1..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-BoldItalic.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-BoldItalic.ttf
deleted file mode 100644
index 2091671..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-BoldItalic.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Italic.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Italic.ttf
deleted file mode 100644
index 67103b6..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Italic.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Regular.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Regular.ttf
deleted file mode 100644
index 8610b5b..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontMono-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Bold.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Bold.ttf
deleted file mode 100644
index 303c6cf..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-BoldItalic.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-BoldItalic.ttf
deleted file mode 100644
index 71f2427..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-BoldItalic.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Italic.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Italic.ttf
deleted file mode 100644
index 5e1885e..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Italic.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Regular.ttf b/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Regular.ttf
deleted file mode 100644
index 2ef511d..0000000
Binary files a/home-config/fonts/AnonymicePro/AnonymiceProNerdFontPropo-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/AnonymicePro/OFL.txt b/home-config/fonts/AnonymicePro/OFL.txt
deleted file mode 100644
index 68d1d00..0000000
--- a/home-config/fonts/AnonymicePro/OFL.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-Copyright (c) 2009, Mark Simonson (http://www.ms-studio.com, mark@marksimonson.com),
-with Reserved Font Name Anonymous Pro.
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/home-config/fonts/AnonymicePro/readme.md b/home-config/fonts/AnonymicePro/readme.md
deleted file mode 100644
index 9f2e700..0000000
--- a/home-config/fonts/AnonymicePro/readme.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
-# Nerd Fonts
-
-This is an archived font from a Nerd Fonts release.
-
-For more information see:
-* https://github.com/ryanoasis/nerd-fonts/
-* https://github.com/ryanoasis/nerd-fonts/releases/latest/
diff --git a/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Mono Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Mono Windows Compatible.ttf
deleted file mode 100644
index 73fdee5..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Mono.ttf b/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Mono.ttf
deleted file mode 100644
index 08fa68f..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Mono.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Windows Compatible.ttf
deleted file mode 100644
index 9bebcda..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete.ttf b/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete.ttf
deleted file mode 100644
index 2be7265..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Bold Nerd Font Complete.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Mono Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Mono Windows Compatible.ttf
deleted file mode 100644
index 5a096ab..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Mono.ttf b/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Mono.ttf
deleted file mode 100644
index e962f63..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Mono.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Windows Compatible.ttf
deleted file mode 100644
index 4121a0f..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete.ttf b/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete.ttf
deleted file mode 100644
index c481973..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Light Nerd Font Complete.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Mono Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Mono Windows Compatible.ttf
deleted file mode 100644
index 0cad1c9..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Mono.ttf b/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Mono.ttf
deleted file mode 100644
index 399b713..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Mono.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Windows Compatible.ttf
deleted file mode 100644
index a4bb8f4..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete.ttf b/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete.ttf
deleted file mode 100644
index 5d05cec..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Medium Nerd Font Complete.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Mono Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Mono Windows Compatible.ttf
deleted file mode 100644
index 83e3f02..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Mono.ttf b/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Mono.ttf
deleted file mode 100644
index e237398..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Mono.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Windows Compatible.ttf
deleted file mode 100644
index 807b5a8..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete.ttf b/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete.ttf
deleted file mode 100644
index 0d48c23..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Regular Nerd Font Complete.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Mono Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Mono Windows Compatible.ttf
deleted file mode 100644
index 7394fcf..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Mono.ttf b/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Mono.ttf
deleted file mode 100644
index fb042d6..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Mono.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Windows Compatible.ttf
deleted file mode 100644
index 1039298..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete.ttf b/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete.ttf
deleted file mode 100644
index 6b9dd2c..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code Retina Nerd Font Complete.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Mono Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Mono Windows Compatible.ttf
deleted file mode 100644
index b272520..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Mono.ttf b/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Mono.ttf
deleted file mode 100644
index 9521c6f..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Mono.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Windows Compatible.ttf b/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Windows Compatible.ttf
deleted file mode 100644
index 0707a13..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete Windows Compatible.ttf and /dev/null differ
diff --git a/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete.ttf b/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete.ttf
deleted file mode 100644
index a147dac..0000000
Binary files a/home-config/fonts/Fira Code/Fira Code SemiBold Nerd Font Complete.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFont-Bold.ttf b/home-config/fonts/Lilex/LilexNerdFont-Bold.ttf
deleted file mode 100644
index 17e96ee..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFont-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFont-ExtraLight.ttf b/home-config/fonts/Lilex/LilexNerdFont-ExtraLight.ttf
deleted file mode 100644
index 8facc07..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFont-ExtraLight.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFont-ExtraThick.ttf b/home-config/fonts/Lilex/LilexNerdFont-ExtraThick.ttf
deleted file mode 100644
index a724e13..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFont-ExtraThick.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFont-Medium.ttf b/home-config/fonts/Lilex/LilexNerdFont-Medium.ttf
deleted file mode 100644
index 0ed3ae9..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFont-Medium.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFont-Regular.ttf b/home-config/fonts/Lilex/LilexNerdFont-Regular.ttf
deleted file mode 100644
index 4a11634..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFont-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFont-Thin.ttf b/home-config/fonts/Lilex/LilexNerdFont-Thin.ttf
deleted file mode 100644
index 01259b3..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFont-Thin.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontMono-Bold.ttf b/home-config/fonts/Lilex/LilexNerdFontMono-Bold.ttf
deleted file mode 100644
index c80849d..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontMono-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontMono-ExtraLight.ttf b/home-config/fonts/Lilex/LilexNerdFontMono-ExtraLight.ttf
deleted file mode 100644
index e869852..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontMono-ExtraLight.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontMono-ExtraThick.ttf b/home-config/fonts/Lilex/LilexNerdFontMono-ExtraThick.ttf
deleted file mode 100644
index 92a05bd..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontMono-ExtraThick.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontMono-Medium.ttf b/home-config/fonts/Lilex/LilexNerdFontMono-Medium.ttf
deleted file mode 100644
index 1f307b8..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontMono-Medium.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontMono-Regular.ttf b/home-config/fonts/Lilex/LilexNerdFontMono-Regular.ttf
deleted file mode 100644
index 137d8f8..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontMono-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontMono-Thin.ttf b/home-config/fonts/Lilex/LilexNerdFontMono-Thin.ttf
deleted file mode 100644
index 816470a..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontMono-Thin.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontPropo-Bold.ttf b/home-config/fonts/Lilex/LilexNerdFontPropo-Bold.ttf
deleted file mode 100644
index b6f3f50..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontPropo-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontPropo-ExtraLight.ttf b/home-config/fonts/Lilex/LilexNerdFontPropo-ExtraLight.ttf
deleted file mode 100644
index dce2ad5..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontPropo-ExtraLight.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontPropo-ExtraThick.ttf b/home-config/fonts/Lilex/LilexNerdFontPropo-ExtraThick.ttf
deleted file mode 100644
index 921c748..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontPropo-ExtraThick.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontPropo-Medium.ttf b/home-config/fonts/Lilex/LilexNerdFontPropo-Medium.ttf
deleted file mode 100644
index 76c13ef..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontPropo-Medium.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontPropo-Regular.ttf b/home-config/fonts/Lilex/LilexNerdFontPropo-Regular.ttf
deleted file mode 100644
index 4785f1e..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontPropo-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/Lilex/LilexNerdFontPropo-Thin.ttf b/home-config/fonts/Lilex/LilexNerdFontPropo-Thin.ttf
deleted file mode 100644
index 2f1c77e..0000000
Binary files a/home-config/fonts/Lilex/LilexNerdFontPropo-Thin.ttf and /dev/null differ
diff --git a/home-config/fonts/Monofur For Powerline/Monofur Bold for Powerline.ttf b/home-config/fonts/Monofur For Powerline/Monofur Bold for Powerline.ttf
deleted file mode 100644
index f27b5a2..0000000
Binary files a/home-config/fonts/Monofur For Powerline/Monofur Bold for Powerline.ttf and /dev/null differ
diff --git a/home-config/fonts/Monofur For Powerline/Monofur Italic for Powerline.ttf b/home-config/fonts/Monofur For Powerline/Monofur Italic for Powerline.ttf
deleted file mode 100644
index d5c8db0..0000000
Binary files a/home-config/fonts/Monofur For Powerline/Monofur Italic for Powerline.ttf and /dev/null differ
diff --git a/home-config/fonts/Monofur For Powerline/Monofur for Powerline.ttf b/home-config/fonts/Monofur For Powerline/Monofur for Powerline.ttf
deleted file mode 100644
index baf799e..0000000
Binary files a/home-config/fonts/Monofur For Powerline/Monofur for Powerline.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/LICENSE.txt b/home-config/fonts/MonofurNerdFont/LICENSE.txt
deleted file mode 100644
index b20cf9b..0000000
--- a/home-config/fonts/MonofurNerdFont/LICENSE.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-------------------------------------------------------------------------
-The monofur typeface by tobias b koehler (unci@tigerden.com)
-------------------------------------------------------------------------
-
-This is a monospaced geometric rounded sans serif font based on the
-eurofurence typeface family.
-
-The character set includes Roman, Greek and Cyrillic characters as well
-as box drawing characters. File format is TrueType for PC (under
-Windows, Linux etc).
-
-These fonts are freeware and can be distributed as long as they are
-together with this text file. I would appreciate it though if you could
-contact me at unci@tigerden.com if you put them on a server. Free
-samples from commercial users are always very welcome. :)
-
-For more information, please see the uncifonts WWW page at:
-http://mercurio.iet.unipi.it/users/tobias/uncifonts.html
-
-Have fun! tobias b koehler, 2000-04-02
\ No newline at end of file
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Bold.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Bold.ttf
deleted file mode 100644
index a7f5a8f..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Italic.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Italic.ttf
deleted file mode 100644
index 4ae48d3..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Italic.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Regular.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Regular.ttf
deleted file mode 100644
index bfce77f..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFont-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Bold.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Bold.ttf
deleted file mode 100644
index 459891e..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Italic.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Italic.ttf
deleted file mode 100644
index 75e7ed9..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Italic.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Regular.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Regular.ttf
deleted file mode 100644
index f69999c..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFontMono-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Bold.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Bold.ttf
deleted file mode 100644
index 7b3a405..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Bold.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Italic.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Italic.ttf
deleted file mode 100644
index a639973..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Italic.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Regular.ttf b/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Regular.ttf
deleted file mode 100644
index f02fd35..0000000
Binary files a/home-config/fonts/MonofurNerdFont/MonofurNerdFontPropo-Regular.ttf and /dev/null differ
diff --git a/home-config/fonts/MonofurNerdFont/readme.md b/home-config/fonts/MonofurNerdFont/readme.md
deleted file mode 100644
index 9f2e700..0000000
--- a/home-config/fonts/MonofurNerdFont/readme.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
-# Nerd Fonts
-
-This is an archived font from a Nerd Fonts release.
-
-For more information see:
-* https://github.com/ryanoasis/nerd-fonts/
-* https://github.com/ryanoasis/nerd-fonts/releases/latest/
diff --git a/home-config/foot/foot.ini b/home-config/foot/foot.ini
deleted file mode 100644
index 8f329a6..0000000
--- a/home-config/foot/foot.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-font=Lilex Nerd Font Mono:size=14,FiraCode Nerd Font Mono:size=14
-
-notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
-
-[colors]
-alpha=0.75
diff --git a/home-config/gitconfig b/home-config/gitconfig
index 6fa1c67..7b9df6a 100644
--- a/home-config/gitconfig
+++ b/home-config/gitconfig
@@ -8,6 +8,15 @@
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
+[core]
+ pager = delta
+[interactive]
+ diffFilter = delta --color-only
+[delta]
+ navigate = true
+ side-by-side = true
+[merge]
+ conflictStyle = zdiff3
[color]
ui = auto
[init]
diff --git a/home-config/gnupg/gpg-agent.conf b/home-config/gnupg/gpg-agent.conf
deleted file mode 100644
index 53927ac..0000000
--- a/home-config/gnupg/gpg-agent.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-enable-ssh-support
-
-pinentry-program /run/current-system/profile/bin/pinentry
diff --git a/home-config/gnupg/sshcontrol b/home-config/gnupg/sshcontrol
deleted file mode 100644
index 55e6073..0000000
--- a/home-config/gnupg/sshcontrol
+++ /dev/null
@@ -1,10 +0,0 @@
-# List of allowed ssh keys. Only keys present in this file are used
-# in the SSH protocol. The ssh-add tool may add new entries to this
-# file to enable them; you may also add them manually. Comment
-# lines, like this one, as well as empty lines are ignored. Lines do
-# have a certain length limit but this is not serious limitation as
-# the format of the entries is fixed and checked by gpg-agent. A
-# non-comment line starts with optional white spaces, followed by the
-# keygrip of the key given as 40 hex digits, optionally followed by a
-# caching TTL in seconds, and another optional field for arbitrary
-# flags. Prepend the keygrip with an '!' mark to disable it.
diff --git a/home-config/home-configuration.scm b/home-config/home-configuration.scm
index 08c17a8..47cd45c 100644
--- a/home-config/home-configuration.scm
+++ b/home-config/home-configuration.scm
@@ -15,6 +15,7 @@
(gnu home services shells)
(gnu home services desktop)
(gnu home services gnupg)
+ (gnu home services fontutils)
(gnu home services)
(ryan-services pipewire)
(ryan-services spotify)
@@ -22,160 +23,212 @@
(ryan-config utils)
(ryan-packages freedesktop)
(ryan-packages calcurse)
- (ryan-packages binaries)
+ ;(ryan-packages binaries)
(rosenthal packages binaries)
(ryan-packages mozilla))
-(define my-neovim
- (package
- (inherit neovim)
- (native-inputs
- (modify-inputs (package-native-inputs neovim)
- (prepend gcc-12)))))
+; (define my-neovim
+; (package
+; (inherit neovim)
+; (native-inputs
+; (modify-inputs (package-native-inputs neovim)
+; (prepend gcc-13)))))
-(define %home-symlinks
- `((".config/guix/home-config/fish" ".config/fish")
- (".config/guix/home-config/nix-config" ".config/nix")
- (".config/guix/home-config/nix-home-manager" ".config/home-manager")))
+ (define %home-symlinks
+; `((".config/guix/home-config/fish" ".config/fish")
+; (".config/guix/home-config/nix-config" ".config/nix")
+ `((".config/guix/home-config/nix-files" ".config/home-manager")))
(home-symlinks %home-symlinks)
(home-environment
;; Below is the list of packages that will show up in your
;; Home profile, under ~/.guix-home/profile.
- (packages (append (specifications->packages (list "bat"
- "fd"
- "fish"
- "xdg-utils"
- "abook"
- "libnotify"
- "fzf"
- "waypipe"
- "pulseaudio" ;only for pactl
- "qpwgraph"
- "gnunet"
- "ffmpeg"
- "qrencode"
- "binutils"
- "gcc-toolchain"
- "borg"
- "restic"
- "rsync"
- "cloc"
- "sc-im"
- "pv"
- "jq"
- "bombadillo"
- "python-msgpack"
- "wdisplays"
- "kanshi"
- "libreoffice"
- "flatpak"
- "gnupg"
- "spotifyd"
- "lsof"
- "pavucontrol"
- "netcat"
- "bind:utils"
- "font-cns11643"
- "font-google-noto-emoji"
- "syncthing"
- "taskwarrior"
- "tasksh"
- "imv"
- "perl"
- "tor"
- "unzip"
- "htop"
- "curl"
- "pandoc"
- "texlive-bin"
- "texlive-scheme-basic"
- "texlive-txfonts"
- "texlive-amsfonts"
- "texlive-lm"
- "texlive-lm-math"
- "texlive-iftex"
- "texlive-unicode-math"
- "texlive-fontspec"
- "texlive-xcolor"
- "texlive-geometry"
- "texlive-hyperref"
- "texlive-parskip"
- "texlive-etoolbox"
- "texlive-setspace"
- "zathura"
- "zathura-pdf-mupdf"
- "go"
- "fzf"
- "weechat"
- "gimp"
- "python"
- "python:tk"
- "file"
- "python-lsp-server"
- "kdenlive"
- "sqlite"
- "mpv"
- "qbittorrent"
- "playerctl"
+ ;(packages (append (specifications->packages (list ;"bat"
+ ;"fd"
+ ;"fish"
+ ;"xdg-utils"
+ ;"abook"
+ ;"libnotify"
+ ;"fzf"
+ ;"waypipe"
+ ;"foot"
+ ;"pulseaudio" ;only for pactl
+ ;"qpwgraph"
+ ;"gnunet"
+ ;"ffmpeg" ; removed for mpv prop input
+ ;"qrencode"
+ ;"tmux"
+ ;"binutils"
+ ;"gcc-toolchain"
+ ;"borg"
+ ;"restic"
+ ;"rsync"
+ ;"cloc"
+ ;"sc-im"
+ ;"pv"
+ ;"jq"
+ ;"gpgme"
+ ;"bombadillo"
+ ;"python-msgpack"
+ ;"wdisplays"
+ ;"kanshi"
+ ;"libreoffice"
+ ;"flatpak"
+ ;"gnupg"
+ ;"spotifyd"
+ ;"lsof"
+ ;"pavucontrol"
+ ;"netcat"
+ ;"bind:utils"
+ ;"font-cns11643-swjz"
+ ;"font-google-noto-emoji"
+ ;"syncthing"
+ ;"taskwarrior"
+ ;"tasksh"
+ ;"imv" ; Nix pkg now for MESA stuff
+ ;"perl"
+ ;"tor"
+ ;"unzip"
+ ;"htop"
+ ;"curl"
+ ;"pandoc"
+ ;"texlive-bin"
+ ;"texlive-scheme-basic"
+ ;"texlive-txfonts"
+ ;"texlive-amsfonts"
+ ;"texlive-lm"
+ ;"texlive-lm-math"
+ ;"texlive-iftex"
+ ;"texlive-unicode-math"
+ ;"texlive-fontspec"
+ ;"texlive-xcolor"
+ ;"texlive-geometry"
+ ;"texlive-hyperref"
+ ;"texlive-parskip"
+ ;"texlive-etoolbox"
+ ;"texlive-setspace"
+ ;"texlive-booktabs"
+ ;"texlive-mdwtools"
+ ;"texlive-caption"
+ ;"texlive-diagbox"
+ ;"texlive-pict2e"
+ ;"texlive-ulem"
+ ;"texlive-pgf"
+ ;"zathura"
+ ;"zathura-pdf-mupdf"
+ ;"go"
+ ;"fzf"
+ ;"weechat"
+ ;"gimp"
+ ;"python"
+ ;"python:tk"
+ ;"file"
+ ;"python-lsp-server"
+ ;"kdenlive"
+ ;"sqlite"
+ ;"mpv" ; Now a nix pkg for MESA stuff
+ ;"qbittorrent"
+ ;"playerctl"
;"aerc"
- "tcpdump"
- "pamixer"
- "git"
- "git:send-email"
- "password-store"
- "node"
- "kanshi"
+ ;"tcpdump"
+ ;"pamixer"
+ ;"git"
+ ;"git:send-email"
+ ;"password-store"
+ ;"node"
+ ;"kanshi"
;"firefox"
- "signal-desktop"
- "sc-im"
- "git-lfs"))
- (list my-neovim wl-mirror firefox-wrapped calcurse-fixed superfile-bin)))
+ ;"signal-desktop"
+ ;"sc-im"
+ ;"tree-sitter-cli"
+ ;"git-lfs"))
+ ;(list calcurse-fixed )))
;; Below is the list of Home services. To search for available
;; services, run 'guix home search KEYWORD' in a terminal.
(services
- (list ;(service home-bash-service-type
- ; (home-bash-configuration
- ;(aliases '(("grep" . "grep --color=auto") ("ll" . "ls -l")
- ; ("ls" . "ls -p --color=auto")
- ; ("spt" . "spotify_player")
- ; ("python" . "python3")))
- ; (bashrc (list (local-file
- ; "bashrc")))
- ; (bash-profile (list (local-file
- ; "bash_profile")))))
- (service home-xdg-configuration-files-service-type
- `(("nvim/init.vim" ,(local-file "nvim/config/init.vim"))
- ("nvim/after/ftplugin/markdown/custom.vim" ,(local-file "nvim/config/after/ftplugin/markdown/custom.vim"))
- ("nvim/after/ftplugin/mail/custom.vim" ,(local-file "nvim/config/after/ftplugin/mail/custom.vim"))
- ("sway" ,(local-file "sway" #:recursive? #t))
- ("hypr" ,(local-file "hypr" #:recursive? #t))
- ("mpv" ,(local-file "mpv" #:recursive? #t))
- ("foot" ,(local-file "foot" #:recursive? #t))
- ("pulse/client.conf" ,(local-file "pulseaudio/client.conf"))
- ("waybar" ,(local-file "waybar" #:recursive? #t))
- ("alacritty" ,(local-file "alacritty" #:recursive? #t))
- ("aerc" ,(local-file "aerc" #:recursive? #t)) ))
- (service home-files-service-type
- `((".local/share/nvim/site/autoload/plug.vim" ,(local-file "nvim/plugin-manager/plug.vim"))
- (".ssh/config" ,(local-file "ssh/config"))
+ (list (service home-bash-service-type
+ (home-bash-configuration
+ (aliases '(("grep" . "grep --color=auto") ("ll" . "ls -l")
+ ("ls" . "ls -p --color=auto")
+ ;("spt" . "spotify_player")
+ ;("python" . "python3")))
+ ))
+ (bashrc (list (local-file
+ "bashrc")))
+ (bash-profile (list (local-file
+ "bash_profile")))))
+ ;(service home-xdg-configuration-files-service-type
+ ; Migrated to nix
+ ;`(("nvim/init.vim" ,(local-file "nvim/config/init.vim"))
+ ;("nvim/after/ftplugin/markdown/custom.vim" ,(local-file "nvim/config/after/ftplugin/markdown/custom.vim"))
+ ;("nvim/after/ftplugin/mail/custom.vim" ,(local-file "nvim/config/after/ftplugin/mail/custom.vim"))
+ ;("sway" ,(local-file "sway" #:recursive? #t))
+ ;("hypr" ,(local-file "hypr" #:recursive? #t))
+ ;("hypr/monitors.conf", (local-file "hypr/monitors.conf"))
+ ;("hypr/pyprland.toml", (local-file "hypr/pyprland.toml"))
+ ;("hypr/family_guy.mp4", (local-file "hypr/family_guy.mp4"))
+ ;("hypr/hyprlock.conf", (local-file "hypr/hyprlock.conf"))
+ ;("hypr/hypridle.conf", (local-file "hypr/hypridle.conf"))
+ ;("hypr/kanshi.conf", (local-file "hypr/kanshi.conf"))
+ ;("hypr/subwaysurfer.webm", (local-file "hypr/subwaysurfer.webm"))
+ ;("hypr/Wallpapers", (local-file "hypr/Wallpapers" #:recursive? #t))
+ ;("hypr/scripts", (local-file "hypr/scripts" #:recursive? #t))
+ ;("wpaperd" ,(local-file "wpaperd" #:recursive? #t))
+ ;("mpv" ,(local-file "mpv" #:recursive? #t))
+ ;("foot" ,(local-file "foot" #:recursive? #t))
+ ;("pulse/client.conf" ,(local-file "pulseaudio/client.conf"))
+ ;("waybar" ,(local-file "waybar" #:recursive? #t))
+ ;("alacritty" ,(local-file "alacritty" #:recursive? #t))
+ ;("aerc" ,(local-file "aerc" #:recursive? #t)) ))
+ ;(service home-files-service-type
+ ;l`(;(".local/share/nvim/site/autoload/plug.vim" ,(local-file "nvim/plugin-manager/plug.vim"))
+ ;(".ssh/config" ,(local-file "ssh/config"))
+ ;(".icons" ,(local-file "icons" #:recursive? #t))
+ ;(".mozilla/native-messaging-hosts/gpgmejson.json" ,(local-file "mailvelope/gpgmejson.json"))
+ ;(".local/share/mailvelope" ,(local-file "mailvelope" #:recursive? #t))
+ ;(".mozilla/native-messaging-hosts/tridactyl.json" ,(local-file "tridactyl/tridactyl.json"))
+ ;(".local/share/tridactyl" ,(local-file "tridactyl" #:recursive? #t))
;(".gnupg/sshcontrol" ,(local-file "gnupg/sshcontrol"))
;(".gnupg/gpg-agent.conf" ,(local-file "gnupg/gpg-agent.conf"))
- (".fonts" ,(local-file "fonts" #:recursive? #t))
- (".gitconfig" ,(local-file "gitconfig"))
- (".docker/cli-plugins" ,(local-file "docker/cli-plugins" #:recursive? #t))
- (".nix-channels" ,(local-file "nix-channels"))))
+ ;(".gnupg/gpg.conf" ,(local-file "gnupg/gpg.conf"))
+ ;(".local/share/fonts" ,(local-file "fonts" #:recursive? #t))
+ ;(".gitconfig" ,(local-file "gitconfig"))
+ ;(".docker/cli-plugins" ,(local-file "docker/cli-plugins" #:recursive? #t))
+ ;(".nix-channels" ,(local-file "nix-channels"))))
(service home-pipewire-service-type)
- (service home-spotifyd-service-type)
+ ;(service home-spotifyd-service-type)
+ ; font things for nix to play nice
+ ; (simple-service 'additional-fonts-service
+ ; home-fontconfig-service-type
+ ; (list "~/.nix-profile/share/fonts"
+ ; '(match (@ (target "pattern"))
+ ; (edit (@ (name "family") (mode "prepend"))
+ ; (string "DejaVu Sans")))
+ ; '(alias
+ ; (family "serif")
+ ; (prefer
+ ; (family "DejaVu Serif")))
+ ; '(alias
+ ; (family "sans")
+ ; (prefer
+ ; (family "DejaVu Sans")))
+ ; '(alias
+ ; (family "monospace")
+ ; (prefer
+ ; (family "DejaVu Sans Mono")))))
(service home-dbus-service-type)
+ (service downloads-garbage-collector-service-type
+ (downloads-garbage-collector-configuration
+ (user "ryan")))
;;; trying some changes
;(template-files "."
;'("spotify-player/app.toml"
;;;
- (service home-gpg-agent-service-type
- (home-gpg-agent-configuration
- (pinentry-program
- (file-append pinentry "/bin/pinentry"))
- (ssh-support? #t))) )))
+ ;(service home-gpg-agent-service-type
+ ; (home-gpg-agent-configuration
+ ; (pinentry-program
+ ; (file-append pinentry "/bin/pinentry"))
+ ; (ssh-support? #t))) )))
+)))
diff --git a/home-config/hypr/Wallpapers/static/1720750738377603.jpg b/home-config/hypr/Wallpapers/static/1720750738377603.jpg
deleted file mode 100644
index f8dd9cd..0000000
Binary files a/home-config/hypr/Wallpapers/static/1720750738377603.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/above-clouds.jpg b/home-config/hypr/Wallpapers/static/above-clouds.jpg
deleted file mode 100644
index a525ee8..0000000
Binary files a/home-config/hypr/Wallpapers/static/above-clouds.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-eclipse-1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-eclipse-1k.jpg
deleted file mode 100644
index acf008e..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-eclipse-1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-eternity-1080px.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-eternity-1080px.jpg
deleted file mode 100644
index f8a50f8..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-eternity-1080px.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-light-at-the-end-hd.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-light-at-the-end-hd.jpg
deleted file mode 100644
index 00cbcb1..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-light-at-the-end-hd.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-portal-1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-portal-1k.jpg
deleted file mode 100644
index 24311ff..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-portal-1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-solar-1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-solar-1k.jpg
deleted file mode 100644
index cb71169..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-solar-1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/autumn1.jpg b/home-config/hypr/Wallpapers/static/autumn1.jpg
deleted file mode 100644
index 1f06edd..0000000
Binary files a/home-config/hypr/Wallpapers/static/autumn1.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/autumn1.png b/home-config/hypr/Wallpapers/static/autumn1.png
deleted file mode 100644
index 72cac31..0000000
Binary files a/home-config/hypr/Wallpapers/static/autumn1.png and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/dawn-mountains-vibrant.jpg b/home-config/hypr/Wallpapers/static/dawn-mountains-vibrant.jpg
deleted file mode 100644
index c678fec..0000000
Binary files a/home-config/hypr/Wallpapers/static/dawn-mountains-vibrant.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/lake-winter.jpg b/home-config/hypr/Wallpapers/static/lake-winter.jpg
deleted file mode 100644
index b47a8c9..0000000
Binary files a/home-config/hypr/Wallpapers/static/lake-winter.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/mountains.jpg b/home-config/hypr/Wallpapers/static/mountains.jpg
deleted file mode 100644
index f51a09b..0000000
Binary files a/home-config/hypr/Wallpapers/static/mountains.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/northern-lights-2.jpg b/home-config/hypr/Wallpapers/static/northern-lights-2.jpg
deleted file mode 100644
index cb2a7f4..0000000
Binary files a/home-config/hypr/Wallpapers/static/northern-lights-2.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/northern-lights-bridge.jpg b/home-config/hypr/Wallpapers/static/northern-lights-bridge.jpg
deleted file mode 100644
index 8fa7b28..0000000
Binary files a/home-config/hypr/Wallpapers/static/northern-lights-bridge.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/purple-grass.jpg b/home-config/hypr/Wallpapers/static/purple-grass.jpg
deleted file mode 100644
index 2a81c54..0000000
Binary files a/home-config/hypr/Wallpapers/static/purple-grass.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/purple-intersection.jpg b/home-config/hypr/Wallpapers/static/purple-intersection.jpg
deleted file mode 100644
index cf75de4..0000000
Binary files a/home-config/hypr/Wallpapers/static/purple-intersection.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/purple-lakescape.jpg b/home-config/hypr/Wallpapers/static/purple-lakescape.jpg
deleted file mode 100644
index 23d28e2..0000000
Binary files a/home-config/hypr/Wallpapers/static/purple-lakescape.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/scarecrow.jpg b/home-config/hypr/Wallpapers/static/scarecrow.jpg
deleted file mode 100644
index f095d15..0000000
Binary files a/home-config/hypr/Wallpapers/static/scarecrow.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/snow-1.jpg b/home-config/hypr/Wallpapers/static/snow-1.jpg
deleted file mode 100644
index d00fcd1..0000000
Binary files a/home-config/hypr/Wallpapers/static/snow-1.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/snow-2.jpg b/home-config/hypr/Wallpapers/static/snow-2.jpg
deleted file mode 100644
index 5343822..0000000
Binary files a/home-config/hypr/Wallpapers/static/snow-2.jpg and /dev/null differ
diff --git a/home-config/hypr/autostart.sh b/home-config/hypr/autostart.sh
deleted file mode 100755
index 6e64202..0000000
--- a/home-config/hypr/autostart.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-
-waybar &
-
-mako &
-
-#swaybg -i ~/.config/hypr/Wallpapers/above-clouds.jpg &
-
-nice -n13 swww init &
-
-~/.config/hypr/wallpaper-daemon.sh &
-
-swayidle -w timeout 300 'swaylock --screenshots --clock --indicator --grace 3 --fade-in 1 --effect-blur 7x5 --effect-greyscale' timeout 600 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep 'swaylock -f -c 000000' &
-
-syncthing serve --no-browser &
-
-wl-clip-persist -c regular &
-
-kanshi -c ~/.config/hypr/kanshi.conf
diff --git a/home-config/hypr/family_guy.mp4 b/home-config/hypr/family_guy.mp4
deleted file mode 100644
index 077fe49..0000000
Binary files a/home-config/hypr/family_guy.mp4 and /dev/null differ
diff --git a/home-config/hypr/hyprland.conf b/home-config/hypr/hyprland.conf
deleted file mode 100644
index df05971..0000000
--- a/home-config/hypr/hyprland.conf
+++ /dev/null
@@ -1,258 +0,0 @@
-exec-once = dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=Hyprland
-
-#
-# Please note not all available settings / options are set here.
-# For a full list, see the wiki
-#
-
-# See https://wiki.hyprland.org/Configuring/Monitors/
-monitor=,preferred,auto,1
-
-
-# See https://wiki.hyprland.org/Configuring/Keywords/ for more
-
-# Execute your favorite apps at launch
-# exec-once = waybar & hyprpaper & firefox
-
-# Source a file (multi-file configs)
-source = ~/.config/hypr/monitors.conf
-
-# Some default env vars.
-env = XCURSOR_SIZE,24
-
-# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
-input {
- kb_layout = us
- kb_variant =
- kb_model =
- kb_options =
- kb_rules =
- numlock_by_default = true
-
- follow_mouse = 1
-
- touchpad {
- natural_scroll = no
- }
-
- sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
-}
-
-general {
- # See https://wiki.hyprland.org/Configuring/Variables/ for more
-
- gaps_in = 5
- gaps_out = 10
- border_size = 2
- col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
- col.inactive_border = rgba(595959aa)
-
- layout = dwindle
-}
-
-decoration {
- # See https://wiki.hyprland.org/Configuring/Variables/ for more
-
- rounding = 5
- blur {
- enabled = yes
- size = 3
- passes = 1
- new_optimizations = on
- }
-
- drop_shadow = yes
- shadow_range = 4
- shadow_render_power = 3
- col.shadow = rgba(1a1a1aee)
-}
-
-animations {
- enabled = yes
-
- # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
-
- bezier = myBezier, 0.05, 0.9, 0.1, 1.05
-
- animation = windows, 1, 7, myBezier
- animation = windowsOut, 1, 7, default, popin 80%
- animation = border, 1, 10, default
- animation = borderangle, 1, 8, default
- animation = fade, 1, 7, default
- animation = workspaces, 1, 6, default
-}
-
-dwindle {
- # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
- pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
- preserve_split = yes # you probably want this
-}
-
-master {
- # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
- new_is_master = true
-}
-
-gestures {
- # See https://wiki.hyprland.org/Configuring/Variables/ for more
- workspace_swipe = off
-}
-
-# Example per-device config
-# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
-device {
- name = epic-mouse-v1
- sensitivity = -0.5
-}
-
-# Example windowrule v1
-# windowrule = float, ^(kitty)$
-# Example windowrule v2
-# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
-# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
-
-
-# See https://wiki.hyprland.org/Configuring/Keywords/ for more
-$mainMod = SUPER
-
-# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
-bind = $mainMod, Return, exec, foot
-bind = $mainMod CTRL, Return, exec, foot -a float-foot
-bind = $mainMod SHIFT, Q, killactive
-bind = $mainMod SHIFT, E, exit
-bind = $mainMod SHIFT, Space, togglefloating
-bind = $mainMod SHIFT, Return, pin, active
-bind = $mainMod, D, exec, fuzzel --width=35 --font='Hack:weight=bold:size=12' --background-color='282a36fa' --selection-color='3d4460fa' --line-height=20 --border-radius=20
-bind = $mainMod, P, pseudo, # dwindle
-bind = $mainMod, J, togglesplit, # dwindle
-bind = $mainMod, F, fullscreen, 1
-bind = $mainMod SHIFT, F, fullscreen
-bind = ,XF86MonBrightnessUp, exec, light -A 10
-bind = ,XF86MonBrightnessDown, exec, light -U 10
-bind = ,XF86AudioRaiseVolume, exec, pamixer -i 5
-bind = ,XF86AudioLowerVolume, exec, pamixer -d 5
-bind = ,XF86AudioMute, exec, pamixer -t
-bind = ,XF86AudioPlay, exec, playerctl play-pause
-bind = ,XF86AudioPause, exec, playerctl play-pause
-bind = ,XF86AudioNext, exec, playerctl next
-bind = ,XF86AudioPrev, exec, playerctl previous
-bind = ,XF86AudioStop, exec, playerctl stop
-
-# "Auto-connect headphones"
-bind = $mainMod, H, exec, bluetoothctl connect AC:80:0A:1C:D6:C7
-
-# Move workspace between monitors
-bind = $mainMod CTRL SHIFT, left, movecurrentworkspacetomonitor, l
-bind = $mainMod CTRL SHIFT, right, movecurrentworkspacetomonitor, r
-bind = $mainMod CTRL SHIFT, up, movecurrentworkspacetomonitor, u
-bind = $mainMod CTRL SHIFT, down, movecurrentworkspacetomonitor, d
-
-# Move focus with mainMod + arrow keys
-bind = $mainMod, left, movefocus, l
-bind = $mainMod, right, movefocus, r
-bind = $mainMod, up, movefocus, u
-bind = $mainMod, down, movefocus, d
-
-# Move window with mainMod + SHIFT + arrow keys
-bind = $mainMod SHIFT, left, movewindow, l
-bind = $mainMod SHIFT, right, movewindow, r
-bind = $mainMod SHIFT, up, movewindow, u
-bind = $mainMod SHIFT, down, movewindow, d
-
-# Switch workspaces with mainMod + [0-9]
-bind = $mainMod, 1, workspace, 1
-bind = $mainMod, 2, workspace, 2
-bind = $mainMod, 3, workspace, 3
-bind = $mainMod, 4, workspace, 4
-bind = $mainMod, 5, workspace, 5
-bind = $mainMod, 6, workspace, 6
-bind = $mainMod, 7, workspace, 7
-bind = $mainMod, 8, workspace, 8
-bind = $mainMod, 9, workspace, 9
-bind = $mainMod, 0, workspace, 10
-
-# Move active window to a workspace with mainMod + SHIFT + [0-9]
-bind = $mainMod SHIFT, 1, movetoworkspace, 1
-bind = $mainMod SHIFT, 2, movetoworkspace, 2
-bind = $mainMod SHIFT, 3, movetoworkspace, 3
-bind = $mainMod SHIFT, 4, movetoworkspace, 4
-bind = $mainMod SHIFT, 5, movetoworkspace, 5
-bind = $mainMod SHIFT, 6, movetoworkspace, 6
-bind = $mainMod SHIFT, 7, movetoworkspace, 7
-bind = $mainMod SHIFT, 8, movetoworkspace, 8
-bind = $mainMod SHIFT, 9, movetoworkspace, 9
-bind = $mainMod SHIFT, 0, movetoworkspace, 10
-
-# Scroll through existing workspaces with mainMod + scroll
-bind = $mainMod, mouse_down, workspace, e+1
-bind = $mainMod, mouse_up, workspace, e-1
-
-# Move/resize windows with mainMod + LMB/RMB and dragging
-bindm = $mainMod, mouse:272, movewindow
-bindm = $mainMod, mouse:273, resizewindow
-
-# Bind mainMod + L to screenlocker
-bind = $mainMod, L, exec, swaylock --screenshots --clock --indicator --fade-in 0.3 --effect-blur 7x5 --effect-greyscale
-bind = $mainMod SHIFT, L, exec, swaylock --screenshots --clock --indicator --effect-blur 7x5 --effect-greyscale & sleep 0.5; loginctl suspend
-
-# Keybind for screenshot
-bind = $mainMod SHIFT, S, exec, grimblast copy area
-bind = $mainMod SHIFT, Print, exec, grimblast edit area
-bind = $mainMod, S, exec, grimblast save area - | imv -
-
-# Notifications keybinds
-bind = $mainMod, N, exec, makoctl dismiss
-bind = $mainMod SHIFT, N, exec, makoctl dismiss -a
-
-# Color picker
-bind = $mainMod SHIFT, C, exec, hyprpicker -a
-
-# LinkedIn Joke (very serious)
-bind = $mainMod SHIFT CTRL ALT, L, exec, xdg-open https://linkedin.com
-
-# Window Rules
-
-# Firefox PiP
-windowrulev2 = float, class:^(firefox)$, title:^(Picture-in-Picture)$
-windowrulev2 = pin, class:^(firefox)$, title:^(Picture-in-Picture)$
-windowrulev2 = size 578 326, class:^(firefox)$, title:^(Picture-in-Picture)$
-
-# Firefox Sharing Indicator
-windowrulev2 = float, class:^(firefox)$, title:^(Firefox — Sharing Indicator)$
-windowrulev2 = size 56 31, class:^(firefox)$, title:^(Firefox — Sharing Indicator)$
-windowrulev2 = move 50% 0, class:^(firefox)$, title:^(Firefox — Sharing Indicator)$
-windowrulev2 = suppressevent fullscreen maximize, class:^(firefox)$, title:^(Firefox — Sharing Indicator)$
-
-# Weather
-windowrulev2 = float,class:^(ala-wttr)$
-windowrulev2 = size 740 712, class:^(ala-wttr)$
-
-# Floating terminal
-windowrulev2 = float,class:^(float-foot)$
-windowrulev2 = size 930 680,class:^(float-foot)$
-windowrulev2 = center,class:^(float-foot)$
-
-# Change color of pinned windows
-windowrulev2 = bordercolor rgba(bf0000ee) rgba(ab00adee) 45deg,pinned:1
-
-# Fun Keybinds
-# Subway surfer
-bind = $mainMod CTRL SHIFT, S, exec, mpv ~/.config/hypr/subwaysurfer.webm
-windowrulev2 = float,class:^(mpv)$, title:^(subwaysurfer.webm - mpv)$
-windowrulev2 = size 310 554,class:^(mpv)$, title:^(subwaysurfer.webm - mpv)$
-windowrulev2 = move 81% 46% ,class:^(mpv)$, title:^(subwaysurfer.webm - mpv)$
-windowrulev2 = pin,class:^(mpv)$, title:^(subwaysurfer.webm - mpv)$
-
-# Family guy funny moments
-bind = $mainMod CTRL SHIFT, F, exec, mpv ~/.config/hypr/family_guy.mp4
-windowrulev2 = float,class:^(mpv)$, title:^(family_guy.mp4 - mpv)$
-windowrulev2 = size 595 336,class:^(mpv)$, title:^(family_guy.mp4 - mpv)$
-windowrulev2 = move 67% 5% ,class:^(mpv)$, title:^(family_guy.mp4 - mpv)$
-windowrulev2 = pin,class:^(mpv)$, title:^(family_guy.mp4 - mpv)$
-
-exec-once = ~/.config/hypr/autostart.sh
-
-misc {
- disable_hyprland_logo = true
- force_default_wallpaper = 0
-}
diff --git a/home-config/hypr/hyprlock.conf b/home-config/hypr/hyprlock.conf
deleted file mode 100644
index ca1534c..0000000
--- a/home-config/hypr/hyprlock.conf
+++ /dev/null
@@ -1,55 +0,0 @@
-background {
- monitor =
- path = /home/ryan/.config/hypr/Wallpapers/static/autumn1.png
-
- # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
- blur_passes = 2 # 0 disables blurring
- blur_size = 7
- noise = 0.2
- contrast = 0.8916
- brightness = 0.8172
- vibrancy = 0.1696
- vibrancy_darkness = 0.0
-}
-
-input-field {
- monitor =
- size = 200, 50
- outline_thickness = 3
- dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
- dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
- dots_center = false
- dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
- outer_color = rgb(151515)
- inner_color = rgb(200, 200, 200)
- font_color = rgb(10, 10, 10)
- fade_on_empty = true
- fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
- placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
- hide_input = false
- rounding = -1 # -1 means complete rounding (circle/oval)
- check_color = rgb(204, 136, 34)
- fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
- fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
- fail_timeout = 2000 # milliseconds before fail_text and fail_color disappears
- fail_transition = 300 # transition time in ms between normal outer_color and fail_color
- capslock_color = -1
- numlock_color = -1
- bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
- invert_numlock = false # change color if numlock is off
- swap_font_color = false # see below
-
- position = 0, -20
- halign = center
- valign = center
-}
-
-label {
- monitor =
- text = cmd[update:1000] echo "$(date +"%-H:%M:%S")"
- #color = rgba(255, 255, 255, 0.6)
- font_size = 80
- position = 0, 300
- halign = center
- valign = center
-}
diff --git a/home-config/hypr/kanshi.conf b/home-config/hypr/kanshi.conf
deleted file mode 100644
index 92eed88..0000000
--- a/home-config/hypr/kanshi.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-profile {
- output "AU Optronics 0x103D Unknown" enable
-}
-
-profile tylerdesk {
- output "AU Optronics 0x103D Unknown" disable
- output "Dell Inc. DELL U3421WE 6WK8753" enable
-}
-
-profile emilydesk {
- output "AU Optronics 0x103D Unknown" disable
- output "Dell Inc. DELL U2422H JN4SF83" position 0,0 mode 1920x1080
- output "Dell Inc. DELL U2414H R9F1P5C59WDL" position 1920,0 mode 1920x1080
- output "Dell Inc. DELL U2422H 5S9SF83" position 3840,0 mode 1920x1080
-}
-
-profile justindesk {
- output "AU Optronics 0x103D Unknown" position 0,0 mode 1920x1080
- output "Dell Inc. DELL U2417H XVNNT7CDC80L" position 1920,0 mode 1920x1080
- output "Dell Inc. DELL U2417H XVNNT82M978L" position 3840,0 mode 1920x1080
-}
diff --git a/home-config/hypr/monitors.conf b/home-config/hypr/monitors.conf
deleted file mode 100644
index 7b3b503..0000000
--- a/home-config/hypr/monitors.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-monitor=eDP-1,1920x1080, 0x0, 1
-monitor=HDMI-A-1,1920x1080, 1920x0, 1
diff --git a/home-config/hypr/subwaysurfer.webm b/home-config/hypr/subwaysurfer.webm
deleted file mode 100644
index 594e1c0..0000000
Binary files a/home-config/hypr/subwaysurfer.webm and /dev/null differ
diff --git a/home-config/hypr/wallpaper-daemon-animated-old.sh b/home-config/hypr/wallpaper-daemon-animated-old.sh
deleted file mode 100755
index 39b2aae..0000000
--- a/home-config/hypr/wallpaper-daemon-animated-old.sh
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/usr/bin/env bash
-
-# Script initialization
-# Check if animated wallpapers exist, set env var if so
-# Sleep for swww init to finish
-sleep 3
-script_init() {
- if [ `find ~/.config/hypr/Wallpapers/animated/ -name '*.gif' | wc -l` -gt 0 ]; then
- echo "true" > /tmp/$USER-desktop-anim
- ANIM_READY=true
- else
- # Download or bail here?
- echo "no animations found, static only!"
- fi
-}
-# check if on ac or battery
-check_if_ac() {
- ON_AC=`cat /sys/class/power_supply/AC/online`
- if [ $ON_AC -eq 1 ] && [ "$ANIM_READY" = true ]; then
- echo "Anim"
- init_anim
- else
- echo "Static"
- init_static
- fi
-}
-
-init_static() {
- # On battery or missing wallpapers, just load a random image
- IMG=`find ~/.config/hypr/Wallpapers/static/ -type f | sort -R | tail -n1`
- echo $IMG >> /tmp/$USER-desktop-anim
- swww img $IMG
- # This is hacky but sometimes we get into a race condition where the
- # animated background will load anyways, so this will ensure we stay static
- # until we definitely control swww and its state is known
- sleep 60
- swww img $IMG
-}
-
-init_anim() {
- # Preload a static image until the animated one is ready
- swww img --transition-step 255 `find ~/.config/hypr/Wallpapers/static/ -type f | sort -R | tail -n1`
- sleep 2
- IMG=`find ~/.config/hypr/Wallpapers/animated/ -name '*.gif' | sort -R | tail -n1`
- echo $IMG >> /tmp/$USER-desktop-anim
- swww img $IMG
-}
-
-begin_randomizer() {
- while :; do
- echo "Invoke selector"
- sleep 3600
- if [ `cat /sys/class/power_supply/AC/online` -eq 1 ] && [ `cat /tmp/$USER-desktop-anim | head -n1` == "true" ]; then
- switch_check `find ~/.config/hypr/Wallpapers/animated/ -name '*.gif' | sort -R | tail -n1`
- else
- switch_check `find ~/.config/hypr/Wallpapers/static/ -type f | sort -R | tail -n1`
- fi
- done
-}
-
-switch_check() {
- # Simply query what image is displayed and make sure we do not overwrite
- # it. This is more for animated wallpapers since it causes corruption
- CURRENT_FILE=`swww query | awk -F'/' '{print $NF}'`
- SELECTION=`echo $1 | awk -F'/' '{print $NF}'`
-
- if ! [ "$CURRENT_FILE" == "$SELECTION" ]; then
- # Update the file
- sed -i '2c'"$1" /tmp/$USER-desktop-anim
- # Set the background!
- swww img $1
- fi
-}
-
-check_load() {
- # If system is under stress, disable animated wallpaper. If not, allow them
- while :; do
- sleep 60
- ANIM_ENABLE=`cat /tmp/$USER-desktop-anim`
- LOAD=`cat /proc/loadavg | cut -d' ' -f1`
-
- if [ "$ANIM_ENABLE" == "true" ] && [ $LOAD -gt 8.00 ] && [ $ANIM_READY = true ]; then
- sed -i '1c\false' /tmp/$USER-desktop-anim
- switch_check `find ~/.config/hypr/Wallpapers/static/ -type f | sort -R | tail -n1`
- elif [ "$ANIM_ENABLE" == "false" ] && [ $LOAD -lt 8.00 ] && [ $ANIM_READY = true ]; then
- sed -i '1c\true' /tmp/$USER-desktop-anim
- switch_check `find ~/.config/hypr/Wallpapers/animated/ -name '*.gif' | sort -R | tail -n1`
- fi
- done
-}
-
-script_init
-check_if_ac
-begin_randomizer &
-check_load &
-
-dbus-monitor --system "interface='org.freedesktop.DBus.Properties',member='PropertiesChanged',sender=':1.2',path='/org/freedesktop/UPower/devices/line_power_AC'" 2>/dev/null | stdbuf -o0 awk -F' ' '/variant boolean/ {print $(NF)}' |
-while read -r line; do
- if [ "$line" == "true" ]; then
- echo "switching to ac"
- switch_check `find ~/.config/hypr/Wallpapers/animated/ -name '*.gif' | sort -R | tail -n1`
- elif [ "$line" == "false" ]; then
- echo "switching to bat"
- switch_check `find ~/.config/hypr/Wallpapers/static/ -type f | sort -R | tail -n1`
- fi
-done
diff --git a/home-config/hypr/wallpaper-daemon.sh b/home-config/hypr/wallpaper-daemon.sh
deleted file mode 100755
index b793c5a..0000000
--- a/home-config/hypr/wallpaper-daemon.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-
-# Script initialization
-# Check if animated wallpapers exist, set env var if so
-# Sleep for swww init to finish
-init_static() {
- # On battery or missing wallpapers, just load a random image
- IMG=`find ~/.config/hypr/Wallpapers/static/ -type f | sort -R | tail -n1`
- echo $IMG >> /tmp/$USER-desktop-anim
- swww img $IMG
-}
-
-begin_randomizer() {
- while :; do
- sleep 3600
- switch_check `find ~/.config/hypr/Wallpapers/static/ -type f | sort -R | tail -n1`
- done
-}
-
-switch_check() {
- # Simply query what image is displayed and make sure we do not overwrite
- # it. This is more for animated wallpapers since it causes corruption
- CURRENT_FILE=`swww query | awk -F'/' '{print $NF}'`
- SELECTION=`echo $1 | awk -F'/' '{print $NF}'`
-
- if ! [ "$CURRENT_FILE" == "$SELECTION" ]; then
- # Update the file
- sed -i '2c'"$1" /tmp/$USER-desktop-anim
- # Set the background!
- swww img $1
- fi
-}
-
-init_static
-begin_randomizer &
diff --git a/home-config/hypr/wallpaper.sh b/home-config/hypr/wallpaper.sh
deleted file mode 100755
index c6266fc..0000000
--- a/home-config/hypr/wallpaper.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-sleep 2
-
-# Get currently loaded image
-IMG=`cat /tmp/$USER-desktop-anim | tail -n1`
-
-# Load it for the monitors
-swww img $IMG -o $1
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/X_cursor.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/X_cursor.hlc
new file mode 100644
index 0000000..dbf1252
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/X_cursor.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bd_double_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bd_double_arrow.hlc
new file mode 100644
index 0000000..94782da
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bd_double_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_left_corner.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_left_corner.hlc
new file mode 100644
index 0000000..6192211
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_left_corner.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_right_corner.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_right_corner.hlc
new file mode 100644
index 0000000..f5b4962
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_right_corner.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_side.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_side.hlc
new file mode 100644
index 0000000..e410c8f
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_side.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_tee.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_tee.hlc
new file mode 100644
index 0000000..38798c0
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/bottom_tee.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/center_ptr.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/center_ptr.hlc
new file mode 100644
index 0000000..f2b246c
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/center_ptr.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/circle.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/circle.hlc
new file mode 100644
index 0000000..b1ed3ad
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/circle.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/context-menu.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/context-menu.hlc
new file mode 100644
index 0000000..b521021
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/context-menu.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/copy.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/copy.hlc
new file mode 100644
index 0000000..822dd3e
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/copy.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/cross.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/cross.hlc
new file mode 100644
index 0000000..625c3fb
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/cross.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/crossed_circle.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/crossed_circle.hlc
new file mode 100644
index 0000000..15710d4
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/crossed_circle.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/crosshair.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/crosshair.hlc
new file mode 100644
index 0000000..467650d
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/crosshair.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-ask.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-ask.hlc
new file mode 100644
index 0000000..3a87400
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-ask.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-copy.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-copy.hlc
new file mode 100644
index 0000000..65d729f
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-copy.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-link.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-link.hlc
new file mode 100644
index 0000000..1c9c6b3
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd-link.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd_no_drop.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd_no_drop.hlc
new file mode 100644
index 0000000..bb211eb
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dnd_no_drop.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dotbox.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dotbox.hlc
new file mode 100644
index 0000000..8c3811d
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/dotbox.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/fd_double_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/fd_double_arrow.hlc
new file mode 100644
index 0000000..b8abfea
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/fd_double_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/grabbing.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/grabbing.hlc
new file mode 100644
index 0000000..798fe88
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/grabbing.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/hand1.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/hand1.hlc
new file mode 100644
index 0000000..5468c4d
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/hand1.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/hand2.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/hand2.hlc
new file mode 100644
index 0000000..fa04568
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/hand2.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_ptr.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_ptr.hlc
new file mode 100644
index 0000000..91797ee
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_ptr.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_ptr_watch.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_ptr_watch.hlc
new file mode 100644
index 0000000..70573ed
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_ptr_watch.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_side.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_side.hlc
new file mode 100644
index 0000000..ec50ae5
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_side.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_tee.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_tee.hlc
new file mode 100644
index 0000000..98e240c
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/left_tee.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/link.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/link.hlc
new file mode 100644
index 0000000..0ae7c58
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/link.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ll_angle.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ll_angle.hlc
new file mode 100644
index 0000000..af6daea
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ll_angle.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/lr_angle.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/lr_angle.hlc
new file mode 100644
index 0000000..7662b57
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/lr_angle.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/move.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/move.hlc
new file mode 100644
index 0000000..9ef7f8d
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/move.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/pencil.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/pencil.hlc
new file mode 100644
index 0000000..14a799a
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/pencil.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/plus.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/plus.hlc
new file mode 100644
index 0000000..7e4d670
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/plus.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/pointer-move.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/pointer-move.hlc
new file mode 100644
index 0000000..204e355
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/pointer-move.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/question_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/question_arrow.hlc
new file mode 100644
index 0000000..540b671
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/question_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_ptr.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_ptr.hlc
new file mode 100644
index 0000000..528027e
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_ptr.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_side.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_side.hlc
new file mode 100644
index 0000000..18bb2fc
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_side.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_tee.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_tee.hlc
new file mode 100644
index 0000000..5535f0c
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/right_tee.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_down_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_down_arrow.hlc
new file mode 100644
index 0000000..c6aed37
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_down_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_h_double_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_h_double_arrow.hlc
new file mode 100644
index 0000000..af06dab
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_h_double_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_left_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_left_arrow.hlc
new file mode 100644
index 0000000..e3155ef
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_left_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_right_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_right_arrow.hlc
new file mode 100644
index 0000000..1ee75d8
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_right_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_up_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_up_arrow.hlc
new file mode 100644
index 0000000..45fb16f
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_up_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_v_double_arrow.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_v_double_arrow.hlc
new file mode 100644
index 0000000..75df049
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/sb_v_double_arrow.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/tcross.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/tcross.hlc
new file mode 100644
index 0000000..f395cd8
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/tcross.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_left_corner.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_left_corner.hlc
new file mode 100644
index 0000000..8857f76
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_left_corner.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_right_corner.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_right_corner.hlc
new file mode 100644
index 0000000..e6addec
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_right_corner.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_side.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_side.hlc
new file mode 100644
index 0000000..5c79490
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_side.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_tee.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_tee.hlc
new file mode 100644
index 0000000..1225128
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/top_tee.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ul_angle.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ul_angle.hlc
new file mode 100644
index 0000000..3eb485c
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ul_angle.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ur_angle.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ur_angle.hlc
new file mode 100644
index 0000000..c923400
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/ur_angle.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/vertical-text.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/vertical-text.hlc
new file mode 100644
index 0000000..4ab02f1
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/vertical-text.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/wait.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/wait.hlc
new file mode 100644
index 0000000..d9978b0
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/wait.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/wayland-cursor.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/wayland-cursor.hlc
new file mode 100644
index 0000000..95052f0
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/wayland-cursor.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/xterm.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/xterm.hlc
new file mode 100644
index 0000000..aa53c5a
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/xterm.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/zoom-in.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/zoom-in.hlc
new file mode 100644
index 0000000..62df09c
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/zoom-in.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/zoom-out.hlc b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/zoom-out.hlc
new file mode 100644
index 0000000..22cf467
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic-Hyprland/hyprcursors/zoom-out.hlc differ
diff --git a/home-config/icons/Bibata-Modern-Classic-Hyprland/manifest.hl b/home-config/icons/Bibata-Modern-Classic-Hyprland/manifest.hl
new file mode 100644
index 0000000..8b3285a
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic-Hyprland/manifest.hl
@@ -0,0 +1,4 @@
+name = Bibata-Modern-Classic-Hyprland
+description = Generated Bibata repository
+version = 0.1
+cursors_directory = hyprcursors
diff --git a/home-config/icons/Bibata-Modern-Classic/LICENSE b/home-config/icons/Bibata-Modern-Classic/LICENSE
new file mode 100644
index 0000000..6b01281
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023-2024 Abdulkaiz Khatri
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/home-config/icons/Bibata-Modern-Classic/README.txt b/home-config/icons/Bibata-Modern-Classic/README.txt
new file mode 100644
index 0000000..f567209
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/README.txt
@@ -0,0 +1,35 @@
+[::] Bibata Cursor
+TLDR; This cursor set is a masterpiece of cursors available on the internet,
+hand-designed by Abdulkaiz Khatri(https://twitter.com/ful1e5).
+
+Bibata is an open source, compact, and material designed cursor set that aims
+to improve the cursor experience for users. It is one of the most popular cursor sets
+in the Linux community and is now available for free on Windows as well, with multiple color
+and size options. Its goal is to offer personalized cursors to users.
+
+[::] What does "Bibata" mean?
+The sweetest word I ever spoke was "BI-Buh," which, coincidentally, is also the word for peanuts.
+To make it more pronounceable and not sound like a baby's words, I added the suffix "Ta."
+And with that, my journey in the world of open source began.
+
+[::] Become Sponsor
+https://github.com/sponsors/ful1e5
+
+[::] LICENSE
+MIT License
+
+[::] Bug Reports & Contact
+https://github.com/ful1e5/bibata/issues
+
+[::] Installation
+```bash
+tar -xvf Bibata.tar.gz # extract `Bibata.tar.gz`
+mv Bibata-* ~/.icons/ # Install to local users
+sudo mv Bibata-* /usr/share/icons/ # Install to all users
+```
+
+[::] Uninstallation
+```bash
+rm ~/.icons/Bibata-* # Remove from local users
+sudo rm /usr/share/icons/Bibata-* # Remove from all users
+```
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/VERSION b/home-config/icons/Bibata-Modern-Classic/VERSION
new file mode 100644
index 0000000..32a80fe
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/VERSION
@@ -0,0 +1,4 @@
+ID=daed906f-99d6-4fb8-ae03-623d988962e3
+Author=Abdualkaiz Khatri <kaizmandhu@gmail.com>
+Type=Bibata-Modern
+Version=1.0.2
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursor.theme b/home-config/icons/Bibata-Modern-Classic/cursor.theme
new file mode 100644
index 0000000..6514956
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursor.theme
@@ -0,0 +1,3 @@
+[Icon Theme]
+Name=Bibata-Modern-daed9-v1.0.2-x11
+Inherits="Bibata-Modern-daed9-v1.0.2-x11"
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/00000000000000020006000e7e9ffc3f b/home-config/icons/Bibata-Modern-Classic/cursors/00000000000000020006000e7e9ffc3f
new file mode 120000
index 0000000..b0e6589
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/00000000000000020006000e7e9ffc3f
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/00008160000006810000408080010102 b/home-config/icons/Bibata-Modern-Classic/cursors/00008160000006810000408080010102
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/00008160000006810000408080010102
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/028006030e0e7ebffc7f7070c0600140 b/home-config/icons/Bibata-Modern-Classic/cursors/028006030e0e7ebffc7f7070c0600140
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/028006030e0e7ebffc7f7070c0600140
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/03b6e0fcb3499374a867c041f52298f0 b/home-config/icons/Bibata-Modern-Classic/cursors/03b6e0fcb3499374a867c041f52298f0
new file mode 120000
index 0000000..01c907d
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/03b6e0fcb3499374a867c041f52298f0
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/08e8e1c95fe2fc01f976f1e063a24ccd b/home-config/icons/Bibata-Modern-Classic/cursors/08e8e1c95fe2fc01f976f1e063a24ccd
new file mode 120000
index 0000000..b0e6589
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/08e8e1c95fe2fc01f976f1e063a24ccd
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/1081e37283d90000800003c07f3ef6bf b/home-config/icons/Bibata-Modern-Classic/cursors/1081e37283d90000800003c07f3ef6bf
new file mode 120000
index 0000000..88740b2
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/1081e37283d90000800003c07f3ef6bf
@@ -0,0 +1 @@
+copy
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/14fef782d02440884392942c1120523 b/home-config/icons/Bibata-Modern-Classic/cursors/14fef782d02440884392942c1120523
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/14fef782d02440884392942c1120523
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/2870a09082c103050810ffdffffe0204 b/home-config/icons/Bibata-Modern-Classic/cursors/2870a09082c103050810ffdffffe0204
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/2870a09082c103050810ffdffffe0204
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/3085a0e285430894940527032f8b26df b/home-config/icons/Bibata-Modern-Classic/cursors/3085a0e285430894940527032f8b26df
new file mode 120000
index 0000000..c150ede
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/3085a0e285430894940527032f8b26df
@@ -0,0 +1 @@
+link
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/3ecb610c1bf2410f44200f48c40d3599 b/home-config/icons/Bibata-Modern-Classic/cursors/3ecb610c1bf2410f44200f48c40d3599
new file mode 120000
index 0000000..b0e6589
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/3ecb610c1bf2410f44200f48c40d3599
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/4498f0e0c1937ffe01fd06f973665830 b/home-config/icons/Bibata-Modern-Classic/cursors/4498f0e0c1937ffe01fd06f973665830
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/4498f0e0c1937ffe01fd06f973665830
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/5c6cd98b3f3ebcb1f9c7f1c204630408 b/home-config/icons/Bibata-Modern-Classic/cursors/5c6cd98b3f3ebcb1f9c7f1c204630408
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/5c6cd98b3f3ebcb1f9c7f1c204630408
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/6407b0e94181790501fd1e167b474872 b/home-config/icons/Bibata-Modern-Classic/cursors/6407b0e94181790501fd1e167b474872
new file mode 120000
index 0000000..88740b2
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/6407b0e94181790501fd1e167b474872
@@ -0,0 +1 @@
+copy
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/640fb0e74195791501fd1ed57b41487f b/home-config/icons/Bibata-Modern-Classic/cursors/640fb0e74195791501fd1ed57b41487f
new file mode 120000
index 0000000..c150ede
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/640fb0e74195791501fd1ed57b41487f
@@ -0,0 +1 @@
+link
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/9081237383d90e509aa00f00170e968f b/home-config/icons/Bibata-Modern-Classic/cursors/9081237383d90e509aa00f00170e968f
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/9081237383d90e509aa00f00170e968f
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/9d800788f1b08800ae810202380a0822 b/home-config/icons/Bibata-Modern-Classic/cursors/9d800788f1b08800ae810202380a0822
new file mode 120000
index 0000000..0b08654
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/9d800788f1b08800ae810202380a0822
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/X_cursor b/home-config/icons/Bibata-Modern-Classic/cursors/X_cursor
new file mode 100644
index 0000000..11028bb
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/X_cursor differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/a2a266d0498c3104214a47bd64ab0fc8 b/home-config/icons/Bibata-Modern-Classic/cursors/a2a266d0498c3104214a47bd64ab0fc8
new file mode 120000
index 0000000..c150ede
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/a2a266d0498c3104214a47bd64ab0fc8
@@ -0,0 +1 @@
+link
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/alias b/home-config/icons/Bibata-Modern-Classic/cursors/alias
new file mode 120000
index 0000000..35beaab
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/alias
@@ -0,0 +1 @@
+dnd-link
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/all-scroll b/home-config/icons/Bibata-Modern-Classic/cursors/all-scroll
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/all-scroll
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/arrow b/home-config/icons/Bibata-Modern-Classic/cursors/arrow
new file mode 120000
index 0000000..0de4e80
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/arrow
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/b66166c04f8c3109214a4fbd64a50fc8 b/home-config/icons/Bibata-Modern-Classic/cursors/b66166c04f8c3109214a4fbd64a50fc8
new file mode 120000
index 0000000..88740b2
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/b66166c04f8c3109214a4fbd64a50fc8
@@ -0,0 +1 @@
+copy
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/bd_double_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/bd_double_arrow
new file mode 100644
index 0000000..48c2be6
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/bd_double_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/bottom_left_corner b/home-config/icons/Bibata-Modern-Classic/cursors/bottom_left_corner
new file mode 100644
index 0000000..6c8d3ca
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/bottom_left_corner differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/bottom_right_corner b/home-config/icons/Bibata-Modern-Classic/cursors/bottom_right_corner
new file mode 100644
index 0000000..61ce574
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/bottom_right_corner differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/bottom_side b/home-config/icons/Bibata-Modern-Classic/cursors/bottom_side
new file mode 100644
index 0000000..d23e62f
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/bottom_side differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/bottom_tee b/home-config/icons/Bibata-Modern-Classic/cursors/bottom_tee
new file mode 100644
index 0000000..e6ce2fa
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/bottom_tee differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/c7088f0f3e6c8088236ef8e1e3e70000 b/home-config/icons/Bibata-Modern-Classic/cursors/c7088f0f3e6c8088236ef8e1e3e70000
new file mode 120000
index 0000000..a8afe37
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/c7088f0f3e6c8088236ef8e1e3e70000
@@ -0,0 +1 @@
+bd_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/cell b/home-config/icons/Bibata-Modern-Classic/cursors/cell
new file mode 120000
index 0000000..b070a6a
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/cell
@@ -0,0 +1 @@
+plus
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/center_ptr b/home-config/icons/Bibata-Modern-Classic/cursors/center_ptr
new file mode 100644
index 0000000..8c76544
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/center_ptr differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/circle b/home-config/icons/Bibata-Modern-Classic/cursors/circle
new file mode 100644
index 0000000..3afbe0e
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/circle differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/closedhand b/home-config/icons/Bibata-Modern-Classic/cursors/closedhand
new file mode 120000
index 0000000..bc5dcc0
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/closedhand
@@ -0,0 +1 @@
+grabbing
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/col-resize b/home-config/icons/Bibata-Modern-Classic/cursors/col-resize
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/col-resize
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/color-picker b/home-config/icons/Bibata-Modern-Classic/cursors/color-picker
new file mode 120000
index 0000000..c2d6c2a
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/color-picker
@@ -0,0 +1 @@
+tcross
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/context-menu b/home-config/icons/Bibata-Modern-Classic/cursors/context-menu
new file mode 100644
index 0000000..e17d951
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/context-menu differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/copy b/home-config/icons/Bibata-Modern-Classic/cursors/copy
new file mode 100644
index 0000000..dbb9741
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/copy differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/cross b/home-config/icons/Bibata-Modern-Classic/cursors/cross
new file mode 100644
index 0000000..ab959fa
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/cross differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/cross_reverse b/home-config/icons/Bibata-Modern-Classic/cursors/cross_reverse
new file mode 120000
index 0000000..982ae30
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/cross_reverse
@@ -0,0 +1 @@
+cross
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/crossed_circle b/home-config/icons/Bibata-Modern-Classic/cursors/crossed_circle
new file mode 100644
index 0000000..75f6a2f
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/crossed_circle differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/crosshair b/home-config/icons/Bibata-Modern-Classic/cursors/crosshair
new file mode 100644
index 0000000..56a2211
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/crosshair differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/d9ce0ab605698f320427677b458ad60b b/home-config/icons/Bibata-Modern-Classic/cursors/d9ce0ab605698f320427677b458ad60b
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/d9ce0ab605698f320427677b458ad60b
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/default b/home-config/icons/Bibata-Modern-Classic/cursors/default
new file mode 120000
index 0000000..0de4e80
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/default
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/diamond_cross b/home-config/icons/Bibata-Modern-Classic/cursors/diamond_cross
new file mode 120000
index 0000000..982ae30
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/diamond_cross
@@ -0,0 +1 @@
+cross
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/dnd-ask b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-ask
new file mode 100644
index 0000000..c2a6ff4
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-ask differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/dnd-copy b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-copy
new file mode 100644
index 0000000..557a8b8
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-copy differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/dnd-link b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-link
new file mode 100644
index 0000000..a6279eb
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-link differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/dnd-move b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-move
new file mode 120000
index 0000000..bc5dcc0
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-move
@@ -0,0 +1 @@
+grabbing
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/dnd-none b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-none
new file mode 120000
index 0000000..bc5dcc0
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/dnd-none
@@ -0,0 +1 @@
+grabbing
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/dnd_no_drop b/home-config/icons/Bibata-Modern-Classic/cursors/dnd_no_drop
new file mode 100644
index 0000000..a4b28d9
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/dnd_no_drop differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/dot_box_mask b/home-config/icons/Bibata-Modern-Classic/cursors/dot_box_mask
new file mode 120000
index 0000000..def8590
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/dot_box_mask
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/dotbox b/home-config/icons/Bibata-Modern-Classic/cursors/dotbox
new file mode 100644
index 0000000..1a8dbff
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/dotbox differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/double_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/double_arrow
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/double_arrow
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/down-arrow b/home-config/icons/Bibata-Modern-Classic/cursors/down-arrow
new file mode 120000
index 0000000..022a111
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/down-arrow
@@ -0,0 +1 @@
+sb_down_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/draft b/home-config/icons/Bibata-Modern-Classic/cursors/draft
new file mode 120000
index 0000000..644fb7b
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/draft
@@ -0,0 +1 @@
+pencil
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/draft_large b/home-config/icons/Bibata-Modern-Classic/cursors/draft_large
new file mode 120000
index 0000000..cb9c1b4
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/draft_large
@@ -0,0 +1 @@
+right_ptr
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/draft_small b/home-config/icons/Bibata-Modern-Classic/cursors/draft_small
new file mode 120000
index 0000000..cb9c1b4
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/draft_small
@@ -0,0 +1 @@
+right_ptr
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/draped_box b/home-config/icons/Bibata-Modern-Classic/cursors/draped_box
new file mode 120000
index 0000000..def8590
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/draped_box
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/e-resize b/home-config/icons/Bibata-Modern-Classic/cursors/e-resize
new file mode 120000
index 0000000..acbf1f9
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/e-resize
@@ -0,0 +1 @@
+right_side
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/e29285e634086352946a0e7090d73106 b/home-config/icons/Bibata-Modern-Classic/cursors/e29285e634086352946a0e7090d73106
new file mode 120000
index 0000000..0b08654
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/e29285e634086352946a0e7090d73106
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/ew-resize b/home-config/icons/Bibata-Modern-Classic/cursors/ew-resize
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/ew-resize
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/fcf1c3c7cd4491d801f1e1c78f100000 b/home-config/icons/Bibata-Modern-Classic/cursors/fcf1c3c7cd4491d801f1e1c78f100000
new file mode 120000
index 0000000..3d249d7
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/fcf1c3c7cd4491d801f1e1c78f100000
@@ -0,0 +1 @@
+fd_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/fcf21c00b30f7e3f83fe0dfd12e71cff b/home-config/icons/Bibata-Modern-Classic/cursors/fcf21c00b30f7e3f83fe0dfd12e71cff
new file mode 120000
index 0000000..bc5dcc0
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/fcf21c00b30f7e3f83fe0dfd12e71cff
@@ -0,0 +1 @@
+grabbing
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/fd_double_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/fd_double_arrow
new file mode 100644
index 0000000..d396e0d
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/fd_double_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/fleur b/home-config/icons/Bibata-Modern-Classic/cursors/fleur
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/fleur
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/forbidden b/home-config/icons/Bibata-Modern-Classic/cursors/forbidden
new file mode 120000
index 0000000..031757c
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/forbidden
@@ -0,0 +1 @@
+circle
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/grab b/home-config/icons/Bibata-Modern-Classic/cursors/grab
new file mode 120000
index 0000000..1a38f92
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/grab
@@ -0,0 +1 @@
+hand1
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/grabbing b/home-config/icons/Bibata-Modern-Classic/cursors/grabbing
new file mode 100644
index 0000000..1bb1d83
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/grabbing differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/h_double_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/h_double_arrow
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/h_double_arrow
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/hand1 b/home-config/icons/Bibata-Modern-Classic/cursors/hand1
new file mode 100644
index 0000000..5150af4
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/hand1 differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/hand2 b/home-config/icons/Bibata-Modern-Classic/cursors/hand2
new file mode 100644
index 0000000..9b9f76c
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/hand2 differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/help b/home-config/icons/Bibata-Modern-Classic/cursors/help
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/help
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/ibeam b/home-config/icons/Bibata-Modern-Classic/cursors/ibeam
new file mode 120000
index 0000000..18632c4
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/ibeam
@@ -0,0 +1 @@
+xterm
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/icon b/home-config/icons/Bibata-Modern-Classic/cursors/icon
new file mode 120000
index 0000000..def8590
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/icon
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/left-arrow b/home-config/icons/Bibata-Modern-Classic/cursors/left-arrow
new file mode 120000
index 0000000..f473dff
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/left-arrow
@@ -0,0 +1 @@
+sb_left_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr b/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr
new file mode 100644
index 0000000..b07377f
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr_help b/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr_help
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr_help
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr_watch b/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr_watch
new file mode 100644
index 0000000..b667e0a
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/left_ptr_watch differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/left_side b/home-config/icons/Bibata-Modern-Classic/cursors/left_side
new file mode 100644
index 0000000..5931303
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/left_side differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/left_tee b/home-config/icons/Bibata-Modern-Classic/cursors/left_tee
new file mode 100644
index 0000000..af1448f
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/left_tee differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/link b/home-config/icons/Bibata-Modern-Classic/cursors/link
new file mode 100644
index 0000000..6d0f971
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/link differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/ll_angle b/home-config/icons/Bibata-Modern-Classic/cursors/ll_angle
new file mode 100644
index 0000000..8e00ab1
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/ll_angle differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/lr_angle b/home-config/icons/Bibata-Modern-Classic/cursors/lr_angle
new file mode 100644
index 0000000..043e721
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/lr_angle differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/move b/home-config/icons/Bibata-Modern-Classic/cursors/move
new file mode 100644
index 0000000..b821f28
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/move differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/n-resize b/home-config/icons/Bibata-Modern-Classic/cursors/n-resize
new file mode 120000
index 0000000..83cc946
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/n-resize
@@ -0,0 +1 @@
+top_side
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/ne-resize b/home-config/icons/Bibata-Modern-Classic/cursors/ne-resize
new file mode 120000
index 0000000..19274a2
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/ne-resize
@@ -0,0 +1 @@
+top_right_corner
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/nesw-resize b/home-config/icons/Bibata-Modern-Classic/cursors/nesw-resize
new file mode 120000
index 0000000..3d249d7
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/nesw-resize
@@ -0,0 +1 @@
+fd_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/no-drop b/home-config/icons/Bibata-Modern-Classic/cursors/no-drop
new file mode 120000
index 0000000..1f6c0fd
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/no-drop
@@ -0,0 +1 @@
+dnd_no_drop
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/not-allowed b/home-config/icons/Bibata-Modern-Classic/cursors/not-allowed
new file mode 120000
index 0000000..01c907d
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/not-allowed
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/ns-resize b/home-config/icons/Bibata-Modern-Classic/cursors/ns-resize
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/ns-resize
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/nw-resize b/home-config/icons/Bibata-Modern-Classic/cursors/nw-resize
new file mode 120000
index 0000000..be1ee95
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/nw-resize
@@ -0,0 +1 @@
+top_left_corner
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/nwse-resize b/home-config/icons/Bibata-Modern-Classic/cursors/nwse-resize
new file mode 120000
index 0000000..a8afe37
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/nwse-resize
@@ -0,0 +1 @@
+bd_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/openhand b/home-config/icons/Bibata-Modern-Classic/cursors/openhand
new file mode 120000
index 0000000..1a38f92
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/openhand
@@ -0,0 +1 @@
+hand1
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/pencil b/home-config/icons/Bibata-Modern-Classic/cursors/pencil
new file mode 100644
index 0000000..d4711b6
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/pencil differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/pirate b/home-config/icons/Bibata-Modern-Classic/cursors/pirate
new file mode 120000
index 0000000..7b84daf
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/pirate
@@ -0,0 +1 @@
+X_cursor
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/plus b/home-config/icons/Bibata-Modern-Classic/cursors/plus
new file mode 100644
index 0000000..d592c51
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/plus differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/pointer b/home-config/icons/Bibata-Modern-Classic/cursors/pointer
new file mode 120000
index 0000000..0b08654
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/pointer
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/pointer-move b/home-config/icons/Bibata-Modern-Classic/cursors/pointer-move
new file mode 100644
index 0000000..4a5a409
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/pointer-move differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/pointing_hand b/home-config/icons/Bibata-Modern-Classic/cursors/pointing_hand
new file mode 120000
index 0000000..0b08654
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/pointing_hand
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/progress b/home-config/icons/Bibata-Modern-Classic/cursors/progress
new file mode 120000
index 0000000..b0e6589
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/progress
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/question_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/question_arrow
new file mode 100644
index 0000000..cde5f05
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/question_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/right-arrow b/home-config/icons/Bibata-Modern-Classic/cursors/right-arrow
new file mode 120000
index 0000000..feb3132
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/right-arrow
@@ -0,0 +1 @@
+sb_right_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/right_ptr b/home-config/icons/Bibata-Modern-Classic/cursors/right_ptr
new file mode 100644
index 0000000..1b735d7
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/right_ptr differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/right_side b/home-config/icons/Bibata-Modern-Classic/cursors/right_side
new file mode 100644
index 0000000..2fed849
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/right_side differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/right_tee b/home-config/icons/Bibata-Modern-Classic/cursors/right_tee
new file mode 100644
index 0000000..aef2cf3
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/right_tee differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/row-resize b/home-config/icons/Bibata-Modern-Classic/cursors/row-resize
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/row-resize
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/s-resize b/home-config/icons/Bibata-Modern-Classic/cursors/s-resize
new file mode 120000
index 0000000..b9cca67
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/s-resize
@@ -0,0 +1 @@
+bottom_side
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/sb_down_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/sb_down_arrow
new file mode 100644
index 0000000..1aa94a0
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/sb_down_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/sb_h_double_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/sb_h_double_arrow
new file mode 100644
index 0000000..5b223f0
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/sb_h_double_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/sb_left_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/sb_left_arrow
new file mode 100644
index 0000000..940edea
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/sb_left_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/sb_right_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/sb_right_arrow
new file mode 100644
index 0000000..2869309
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/sb_right_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/sb_up_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/sb_up_arrow
new file mode 100644
index 0000000..4d0d763
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/sb_up_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/sb_v_double_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/sb_v_double_arrow
new file mode 100644
index 0000000..6b93db3
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/sb_v_double_arrow differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/se-resize b/home-config/icons/Bibata-Modern-Classic/cursors/se-resize
new file mode 120000
index 0000000..9a02514
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/se-resize
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/size-hor b/home-config/icons/Bibata-Modern-Classic/cursors/size-hor
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/size-hor
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/size-ver b/home-config/icons/Bibata-Modern-Classic/cursors/size-ver
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/size-ver
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/size_all b/home-config/icons/Bibata-Modern-Classic/cursors/size_all
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/size_all
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/size_bdiag b/home-config/icons/Bibata-Modern-Classic/cursors/size_bdiag
new file mode 120000
index 0000000..3d249d7
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/size_bdiag
@@ -0,0 +1 @@
+fd_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/size_fdiag b/home-config/icons/Bibata-Modern-Classic/cursors/size_fdiag
new file mode 120000
index 0000000..a8afe37
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/size_fdiag
@@ -0,0 +1 @@
+bd_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/size_hor b/home-config/icons/Bibata-Modern-Classic/cursors/size_hor
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/size_hor
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/size_ver b/home-config/icons/Bibata-Modern-Classic/cursors/size_ver
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/size_ver
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/split_h b/home-config/icons/Bibata-Modern-Classic/cursors/split_h
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/split_h
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/split_v b/home-config/icons/Bibata-Modern-Classic/cursors/split_v
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/split_v
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/sw-resize b/home-config/icons/Bibata-Modern-Classic/cursors/sw-resize
new file mode 120000
index 0000000..aab13ad
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/sw-resize
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/target b/home-config/icons/Bibata-Modern-Classic/cursors/target
new file mode 120000
index 0000000..def8590
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/target
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/tcross b/home-config/icons/Bibata-Modern-Classic/cursors/tcross
new file mode 100644
index 0000000..f6fc278
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/tcross differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/text b/home-config/icons/Bibata-Modern-Classic/cursors/text
new file mode 120000
index 0000000..18632c4
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/text
@@ -0,0 +1 @@
+xterm
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/top_left_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/top_left_arrow
new file mode 120000
index 0000000..0de4e80
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/top_left_arrow
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/top_left_corner b/home-config/icons/Bibata-Modern-Classic/cursors/top_left_corner
new file mode 100644
index 0000000..5d36127
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/top_left_corner differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/top_right_corner b/home-config/icons/Bibata-Modern-Classic/cursors/top_right_corner
new file mode 100644
index 0000000..8f3b4e6
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/top_right_corner differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/top_side b/home-config/icons/Bibata-Modern-Classic/cursors/top_side
new file mode 100644
index 0000000..fe22ccc
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/top_side differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/top_tee b/home-config/icons/Bibata-Modern-Classic/cursors/top_tee
new file mode 100644
index 0000000..aa8bf37
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/top_tee differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/ul_angle b/home-config/icons/Bibata-Modern-Classic/cursors/ul_angle
new file mode 100644
index 0000000..a9d8202
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/ul_angle differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/up-arrow b/home-config/icons/Bibata-Modern-Classic/cursors/up-arrow
new file mode 120000
index 0000000..258ca58
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/up-arrow
@@ -0,0 +1 @@
+sb_up_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/ur_angle b/home-config/icons/Bibata-Modern-Classic/cursors/ur_angle
new file mode 100644
index 0000000..66a6cd9
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/ur_angle differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/v_double_arrow b/home-config/icons/Bibata-Modern-Classic/cursors/v_double_arrow
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/v_double_arrow
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/vertical-text b/home-config/icons/Bibata-Modern-Classic/cursors/vertical-text
new file mode 100644
index 0000000..92e7504
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/vertical-text differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/w-resize b/home-config/icons/Bibata-Modern-Classic/cursors/w-resize
new file mode 120000
index 0000000..1d46245
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/w-resize
@@ -0,0 +1 @@
+left_side
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/wait b/home-config/icons/Bibata-Modern-Classic/cursors/wait
new file mode 100644
index 0000000..02de192
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/wait differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/watch b/home-config/icons/Bibata-Modern-Classic/cursors/watch
new file mode 120000
index 0000000..fd80437
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/watch
@@ -0,0 +1 @@
+wait
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/wayland-cursor b/home-config/icons/Bibata-Modern-Classic/cursors/wayland-cursor
new file mode 100644
index 0000000..300ae31
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/wayland-cursor differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/whats_this b/home-config/icons/Bibata-Modern-Classic/cursors/whats_this
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/whats_this
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/x-cursor b/home-config/icons/Bibata-Modern-Classic/cursors/x-cursor
new file mode 120000
index 0000000..7b84daf
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/cursors/x-cursor
@@ -0,0 +1 @@
+X_cursor
\ No newline at end of file
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/xterm b/home-config/icons/Bibata-Modern-Classic/cursors/xterm
new file mode 100644
index 0000000..e3a8294
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/xterm differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/zoom-in b/home-config/icons/Bibata-Modern-Classic/cursors/zoom-in
new file mode 100644
index 0000000..0b6e690
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/zoom-in differ
diff --git a/home-config/icons/Bibata-Modern-Classic/cursors/zoom-out b/home-config/icons/Bibata-Modern-Classic/cursors/zoom-out
new file mode 100644
index 0000000..2a70c26
Binary files /dev/null and b/home-config/icons/Bibata-Modern-Classic/cursors/zoom-out differ
diff --git a/home-config/icons/Bibata-Modern-Classic/index.theme b/home-config/icons/Bibata-Modern-Classic/index.theme
new file mode 100644
index 0000000..273de80
--- /dev/null
+++ b/home-config/icons/Bibata-Modern-Classic/index.theme
@@ -0,0 +1,4 @@
+[Icon Theme]
+Name=Bibata-Modern-daed9-v1.0.2-x11
+Comment=Bibata XCursors
+Inherits="hicolor"
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/X_cursor.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/X_cursor.hlc
new file mode 100644
index 0000000..3355c90
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/X_cursor.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/all-scroll.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/all-scroll.hlc
new file mode 100644
index 0000000..3bb70ee
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/all-scroll.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_left_corner.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_left_corner.hlc
new file mode 100644
index 0000000..c8b13fe
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_left_corner.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_right_corner.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_right_corner.hlc
new file mode 100644
index 0000000..3b8bc23
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_right_corner.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_tee.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_tee.hlc
new file mode 100644
index 0000000..b307b6e
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_tee.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/center_ptr.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/center_ptr.hlc
new file mode 100644
index 0000000..73de8c3
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/center_ptr.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/context-menu.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/context-menu.hlc
new file mode 100644
index 0000000..923a6db
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/context-menu.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/copy.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/copy.hlc
new file mode 100644
index 0000000..5731bc4
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/copy.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/cross.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/cross.hlc
new file mode 100644
index 0000000..5cc34ec
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/cross.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crossed_circle.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crossed_circle.hlc
new file mode 100644
index 0000000..f1738f8
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crossed_circle.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crosshair.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crosshair.hlc
new file mode 100644
index 0000000..10cadf4
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crosshair.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dnd_no_drop.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dnd_no_drop.hlc
new file mode 100644
index 0000000..64ccb52
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dnd_no_drop.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dotbox.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dotbox.hlc
new file mode 100644
index 0000000..851f973
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dotbox.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand1.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand1.hlc
new file mode 100644
index 0000000..3e91144
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand1.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand2.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand2.hlc
new file mode 100644
index 0000000..0fdad7e
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand2.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr.hlc
new file mode 100644
index 0000000..40df20e
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr_watch.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr_watch.hlc
new file mode 100644
index 0000000..5c8e84c
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr_watch.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_side.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_side.hlc
new file mode 100644
index 0000000..ae6b90f
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_side.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_tee.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_tee.hlc
new file mode 100644
index 0000000..71183d9
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_tee.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/link.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/link.hlc
new file mode 100644
index 0000000..f437d62
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/link.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ll_angle.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ll_angle.hlc
new file mode 100644
index 0000000..b474add
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ll_angle.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/lr_angle.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/lr_angle.hlc
new file mode 100644
index 0000000..b46dc37
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/lr_angle.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/move.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/move.hlc
new file mode 100644
index 0000000..1d3b079
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/move.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pencil.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pencil.hlc
new file mode 100644
index 0000000..0de9d7e
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pencil.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/person.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/person.hlc
new file mode 100644
index 0000000..549bcc0
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/person.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pin.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pin.hlc
new file mode 100644
index 0000000..c8c5d4e
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pin.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/plus.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/plus.hlc
new file mode 100644
index 0000000..53a07d0
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/plus.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/question_arrow.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/question_arrow.hlc
new file mode 100644
index 0000000..bce15b2
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/question_arrow.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_ptr.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_ptr.hlc
new file mode 100644
index 0000000..9612e51
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_ptr.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_tee.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_tee.hlc
new file mode 100644
index 0000000..d755d23
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_tee.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_down_arrow.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_down_arrow.hlc
new file mode 100644
index 0000000..3bd3211
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_down_arrow.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_h_double_arrow.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_h_double_arrow.hlc
new file mode 100644
index 0000000..7c71315
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_h_double_arrow.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_left_arrow.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_left_arrow.hlc
new file mode 100644
index 0000000..f45d1fe
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_left_arrow.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_right_arrow.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_right_arrow.hlc
new file mode 100644
index 0000000..00c2e68
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_right_arrow.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_up_arrow.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_up_arrow.hlc
new file mode 100644
index 0000000..2887b18
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_up_arrow.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_v_double_arrow.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_v_double_arrow.hlc
new file mode 100644
index 0000000..8996c7f
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_v_double_arrow.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_side.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_side.hlc
new file mode 100644
index 0000000..d28736b
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_side.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_tee.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_tee.hlc
new file mode 100644
index 0000000..33b3550
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_tee.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ul_angle.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ul_angle.hlc
new file mode 100644
index 0000000..ae3671c
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ul_angle.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ur_angle.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ur_angle.hlc
new file mode 100644
index 0000000..cd2d482
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ur_angle.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/vertical-text.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/vertical-text.hlc
new file mode 100644
index 0000000..0112d4d
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/vertical-text.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wait.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wait.hlc
new file mode 100644
index 0000000..9755835
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wait.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wayland-cursor.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wayland-cursor.hlc
new file mode 100644
index 0000000..ffaf760
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wayland-cursor.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/xterm.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/xterm.hlc
new file mode 100644
index 0000000..b622531
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/xterm.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-in.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-in.hlc
new file mode 100644
index 0000000..9f21bea
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-in.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-out.hlc b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-out.hlc
new file mode 100644
index 0000000..e46df2c
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-out.hlc differ
diff --git a/home-config/icons/XCursor-Pro-Dark-Hyprcursor/manifest.hl b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/manifest.hl
new file mode 100644
index 0000000..c93e285
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/manifest.hl
@@ -0,0 +1,4 @@
+name = XCursor-Pro-Dark-Hyprcursor
+description = XCursor-Pro-Dark Hyprcursor version
+version = 1.0
+cursors_directory = hyprcursors
diff --git a/home-config/icons/XCursor-Pro-Dark/cursor.theme b/home-config/icons/XCursor-Pro-Dark/cursor.theme
new file mode 100644
index 0000000..58f1232
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursor.theme
@@ -0,0 +1,3 @@
+[Icon Theme]
+Name=XCursor-Pro-Dark
+Inherits="XCursor-Pro-Dark"
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/00000000000000020006000e7e9ffc3f b/home-config/icons/XCursor-Pro-Dark/cursors/00000000000000020006000e7e9ffc3f
new file mode 120000
index 0000000..b0e6589
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/00000000000000020006000e7e9ffc3f
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/00008160000006810000408080010102 b/home-config/icons/XCursor-Pro-Dark/cursors/00008160000006810000408080010102
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/00008160000006810000408080010102
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/028006030e0e7ebffc7f7070c0600140 b/home-config/icons/XCursor-Pro-Dark/cursors/028006030e0e7ebffc7f7070c0600140
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/028006030e0e7ebffc7f7070c0600140
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/03b6e0fcb3499374a867c041f52298f0 b/home-config/icons/XCursor-Pro-Dark/cursors/03b6e0fcb3499374a867c041f52298f0
new file mode 120000
index 0000000..01c907d
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/03b6e0fcb3499374a867c041f52298f0
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/08e8e1c95fe2fc01f976f1e063a24ccd b/home-config/icons/XCursor-Pro-Dark/cursors/08e8e1c95fe2fc01f976f1e063a24ccd
new file mode 120000
index 0000000..b0e6589
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/08e8e1c95fe2fc01f976f1e063a24ccd
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/1081e37283d90000800003c07f3ef6bf b/home-config/icons/XCursor-Pro-Dark/cursors/1081e37283d90000800003c07f3ef6bf
new file mode 120000
index 0000000..88740b2
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/1081e37283d90000800003c07f3ef6bf
@@ -0,0 +1 @@
+copy
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/14fef782d02440884392942c1120523 b/home-config/icons/XCursor-Pro-Dark/cursors/14fef782d02440884392942c1120523
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/14fef782d02440884392942c1120523
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/2870a09082c103050810ffdffffe0204 b/home-config/icons/XCursor-Pro-Dark/cursors/2870a09082c103050810ffdffffe0204
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/2870a09082c103050810ffdffffe0204
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/3085a0e285430894940527032f8b26df b/home-config/icons/XCursor-Pro-Dark/cursors/3085a0e285430894940527032f8b26df
new file mode 120000
index 0000000..c150ede
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/3085a0e285430894940527032f8b26df
@@ -0,0 +1 @@
+link
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/3ecb610c1bf2410f44200f48c40d3599 b/home-config/icons/XCursor-Pro-Dark/cursors/3ecb610c1bf2410f44200f48c40d3599
new file mode 120000
index 0000000..b0e6589
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/3ecb610c1bf2410f44200f48c40d3599
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/4498f0e0c1937ffe01fd06f973665830 b/home-config/icons/XCursor-Pro-Dark/cursors/4498f0e0c1937ffe01fd06f973665830
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/4498f0e0c1937ffe01fd06f973665830
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/5c6cd98b3f3ebcb1f9c7f1c204630408 b/home-config/icons/XCursor-Pro-Dark/cursors/5c6cd98b3f3ebcb1f9c7f1c204630408
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/5c6cd98b3f3ebcb1f9c7f1c204630408
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/6407b0e94181790501fd1e167b474872 b/home-config/icons/XCursor-Pro-Dark/cursors/6407b0e94181790501fd1e167b474872
new file mode 120000
index 0000000..88740b2
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/6407b0e94181790501fd1e167b474872
@@ -0,0 +1 @@
+copy
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/640fb0e74195791501fd1ed57b41487f b/home-config/icons/XCursor-Pro-Dark/cursors/640fb0e74195791501fd1ed57b41487f
new file mode 120000
index 0000000..c150ede
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/640fb0e74195791501fd1ed57b41487f
@@ -0,0 +1 @@
+link
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/9081237383d90e509aa00f00170e968f b/home-config/icons/XCursor-Pro-Dark/cursors/9081237383d90e509aa00f00170e968f
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/9081237383d90e509aa00f00170e968f
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/9d800788f1b08800ae810202380a0822 b/home-config/icons/XCursor-Pro-Dark/cursors/9d800788f1b08800ae810202380a0822
new file mode 120000
index 0000000..0b08654
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/9d800788f1b08800ae810202380a0822
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/X_cursor b/home-config/icons/XCursor-Pro-Dark/cursors/X_cursor
new file mode 100644
index 0000000..d03da67
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/X_cursor differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/a2a266d0498c3104214a47bd64ab0fc8 b/home-config/icons/XCursor-Pro-Dark/cursors/a2a266d0498c3104214a47bd64ab0fc8
new file mode 120000
index 0000000..c150ede
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/a2a266d0498c3104214a47bd64ab0fc8
@@ -0,0 +1 @@
+link
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/alias b/home-config/icons/XCursor-Pro-Dark/cursors/alias
new file mode 120000
index 0000000..c150ede
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/alias
@@ -0,0 +1 @@
+link
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/all-scroll b/home-config/icons/XCursor-Pro-Dark/cursors/all-scroll
new file mode 100644
index 0000000..06ca407
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/all-scroll differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/arrow b/home-config/icons/XCursor-Pro-Dark/cursors/arrow
new file mode 120000
index 0000000..0de4e80
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/arrow
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/b66166c04f8c3109214a4fbd64a50fc8 b/home-config/icons/XCursor-Pro-Dark/cursors/b66166c04f8c3109214a4fbd64a50fc8
new file mode 120000
index 0000000..88740b2
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/b66166c04f8c3109214a4fbd64a50fc8
@@ -0,0 +1 @@
+copy
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/bd_double_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/bd_double_arrow
new file mode 120000
index 0000000..9a02514
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/bd_double_arrow
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/bottom_left_corner b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_left_corner
new file mode 100644
index 0000000..4648a97
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_left_corner differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/bottom_right_corner b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_right_corner
new file mode 100644
index 0000000..e9943df
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_right_corner differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/bottom_side b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_side
new file mode 120000
index 0000000..83cc946
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_side
@@ -0,0 +1 @@
+top_side
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/bottom_tee b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_tee
new file mode 100644
index 0000000..7961422
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_tee differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/c7088f0f3e6c8088236ef8e1e3e70000 b/home-config/icons/XCursor-Pro-Dark/cursors/c7088f0f3e6c8088236ef8e1e3e70000
new file mode 120000
index 0000000..9a02514
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/c7088f0f3e6c8088236ef8e1e3e70000
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/cell b/home-config/icons/XCursor-Pro-Dark/cursors/cell
new file mode 120000
index 0000000..b070a6a
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/cell
@@ -0,0 +1 @@
+plus
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/center_ptr b/home-config/icons/XCursor-Pro-Dark/cursors/center_ptr
new file mode 100644
index 0000000..508fd98
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/center_ptr differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/circle b/home-config/icons/XCursor-Pro-Dark/cursors/circle
new file mode 120000
index 0000000..01c907d
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/circle
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/closedhand b/home-config/icons/XCursor-Pro-Dark/cursors/closedhand
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/closedhand
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/col-resize b/home-config/icons/XCursor-Pro-Dark/cursors/col-resize
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/col-resize
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/color-picker b/home-config/icons/XCursor-Pro-Dark/cursors/color-picker
new file mode 120000
index 0000000..982ae30
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/color-picker
@@ -0,0 +1 @@
+cross
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/context-menu b/home-config/icons/XCursor-Pro-Dark/cursors/context-menu
new file mode 100644
index 0000000..6847f6a
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/context-menu differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/copy b/home-config/icons/XCursor-Pro-Dark/cursors/copy
new file mode 100644
index 0000000..bb96b92
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/copy differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/cross b/home-config/icons/XCursor-Pro-Dark/cursors/cross
new file mode 100644
index 0000000..480957b
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/cross differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/cross_reverse b/home-config/icons/XCursor-Pro-Dark/cursors/cross_reverse
new file mode 120000
index 0000000..982ae30
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/cross_reverse
@@ -0,0 +1 @@
+cross
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/crossed_circle b/home-config/icons/XCursor-Pro-Dark/cursors/crossed_circle
new file mode 100644
index 0000000..672c57d
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/crossed_circle differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/crosshair b/home-config/icons/XCursor-Pro-Dark/cursors/crosshair
new file mode 100644
index 0000000..1047ae2
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/crosshair differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/d9ce0ab605698f320427677b458ad60b b/home-config/icons/XCursor-Pro-Dark/cursors/d9ce0ab605698f320427677b458ad60b
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/d9ce0ab605698f320427677b458ad60b
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/default b/home-config/icons/XCursor-Pro-Dark/cursors/default
new file mode 120000
index 0000000..0de4e80
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/default
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/diamond_cross b/home-config/icons/XCursor-Pro-Dark/cursors/diamond_cross
new file mode 120000
index 0000000..982ae30
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/diamond_cross
@@ -0,0 +1 @@
+cross
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/dnd-ask b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-ask
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-ask
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/dnd-copy b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-copy
new file mode 120000
index 0000000..88740b2
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-copy
@@ -0,0 +1 @@
+copy
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/dnd-link b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-link
new file mode 120000
index 0000000..c150ede
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-link
@@ -0,0 +1 @@
+link
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/dnd-move b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-move
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-move
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/dnd-none b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-none
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/dnd-none
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/dnd_no_drop b/home-config/icons/XCursor-Pro-Dark/cursors/dnd_no_drop
new file mode 100644
index 0000000..89c250e
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/dnd_no_drop differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/dot_box_mask b/home-config/icons/XCursor-Pro-Dark/cursors/dot_box_mask
new file mode 120000
index 0000000..def8590
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/dot_box_mask
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/dotbox b/home-config/icons/XCursor-Pro-Dark/cursors/dotbox
new file mode 100644
index 0000000..c319ed7
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/dotbox differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/double_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/double_arrow
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/double_arrow
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/down-arrow b/home-config/icons/XCursor-Pro-Dark/cursors/down-arrow
new file mode 120000
index 0000000..022a111
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/down-arrow
@@ -0,0 +1 @@
+sb_down_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/draft b/home-config/icons/XCursor-Pro-Dark/cursors/draft
new file mode 120000
index 0000000..644fb7b
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/draft
@@ -0,0 +1 @@
+pencil
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/draft_large b/home-config/icons/XCursor-Pro-Dark/cursors/draft_large
new file mode 120000
index 0000000..cb9c1b4
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/draft_large
@@ -0,0 +1 @@
+right_ptr
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/draft_small b/home-config/icons/XCursor-Pro-Dark/cursors/draft_small
new file mode 120000
index 0000000..cb9c1b4
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/draft_small
@@ -0,0 +1 @@
+right_ptr
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/draped_box b/home-config/icons/XCursor-Pro-Dark/cursors/draped_box
new file mode 120000
index 0000000..def8590
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/draped_box
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/e-resize b/home-config/icons/XCursor-Pro-Dark/cursors/e-resize
new file mode 120000
index 0000000..1d46245
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/e-resize
@@ -0,0 +1 @@
+left_side
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/e29285e634086352946a0e7090d73106 b/home-config/icons/XCursor-Pro-Dark/cursors/e29285e634086352946a0e7090d73106
new file mode 120000
index 0000000..0b08654
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/e29285e634086352946a0e7090d73106
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/ew-resize b/home-config/icons/XCursor-Pro-Dark/cursors/ew-resize
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/ew-resize
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/fcf1c3c7cd4491d801f1e1c78f100000 b/home-config/icons/XCursor-Pro-Dark/cursors/fcf1c3c7cd4491d801f1e1c78f100000
new file mode 120000
index 0000000..aab13ad
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/fcf1c3c7cd4491d801f1e1c78f100000
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/fcf21c00b30f7e3f83fe0dfd12e71cff b/home-config/icons/XCursor-Pro-Dark/cursors/fcf21c00b30f7e3f83fe0dfd12e71cff
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/fcf21c00b30f7e3f83fe0dfd12e71cff
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/fd_double_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/fd_double_arrow
new file mode 120000
index 0000000..aab13ad
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/fd_double_arrow
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/fleur b/home-config/icons/XCursor-Pro-Dark/cursors/fleur
new file mode 120000
index 0000000..1bb4610
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/fleur
@@ -0,0 +1 @@
+all-scroll
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/forbidden b/home-config/icons/XCursor-Pro-Dark/cursors/forbidden
new file mode 120000
index 0000000..01c907d
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/forbidden
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/grab b/home-config/icons/XCursor-Pro-Dark/cursors/grab
new file mode 120000
index 0000000..1a38f92
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/grab
@@ -0,0 +1 @@
+hand1
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/grabbing b/home-config/icons/XCursor-Pro-Dark/cursors/grabbing
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/grabbing
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/h_double_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/h_double_arrow
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/h_double_arrow
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/hand1 b/home-config/icons/XCursor-Pro-Dark/cursors/hand1
new file mode 100644
index 0000000..66ce6bb
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/hand1 differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/hand2 b/home-config/icons/XCursor-Pro-Dark/cursors/hand2
new file mode 100644
index 0000000..35b1098
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/hand2 differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/help b/home-config/icons/XCursor-Pro-Dark/cursors/help
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/help
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/ibeam b/home-config/icons/XCursor-Pro-Dark/cursors/ibeam
new file mode 120000
index 0000000..18632c4
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/ibeam
@@ -0,0 +1 @@
+xterm
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/icon b/home-config/icons/XCursor-Pro-Dark/cursors/icon
new file mode 120000
index 0000000..def8590
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/icon
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/left-arrow b/home-config/icons/XCursor-Pro-Dark/cursors/left-arrow
new file mode 120000
index 0000000..f473dff
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/left-arrow
@@ -0,0 +1 @@
+sb_left_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr b/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr
new file mode 100644
index 0000000..b5ab7e4
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_help b/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_help
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_help
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_watch b/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_watch
new file mode 100644
index 0000000..cf6c2c4
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_watch differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/left_side b/home-config/icons/XCursor-Pro-Dark/cursors/left_side
new file mode 100644
index 0000000..dd4c7c8
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/left_side differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/left_tee b/home-config/icons/XCursor-Pro-Dark/cursors/left_tee
new file mode 100644
index 0000000..e0dc39d
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/left_tee differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/link b/home-config/icons/XCursor-Pro-Dark/cursors/link
new file mode 100644
index 0000000..eb46ba6
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/link differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/ll_angle b/home-config/icons/XCursor-Pro-Dark/cursors/ll_angle
new file mode 100644
index 0000000..5519737
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/ll_angle differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/lr_angle b/home-config/icons/XCursor-Pro-Dark/cursors/lr_angle
new file mode 100644
index 0000000..9aaf612
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/lr_angle differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/move b/home-config/icons/XCursor-Pro-Dark/cursors/move
new file mode 100644
index 0000000..1b61c72
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/move differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/n-resize b/home-config/icons/XCursor-Pro-Dark/cursors/n-resize
new file mode 120000
index 0000000..83cc946
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/n-resize
@@ -0,0 +1 @@
+top_side
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/ne-resize b/home-config/icons/XCursor-Pro-Dark/cursors/ne-resize
new file mode 120000
index 0000000..aab13ad
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/ne-resize
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/nesw-resize b/home-config/icons/XCursor-Pro-Dark/cursors/nesw-resize
new file mode 120000
index 0000000..aab13ad
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/nesw-resize
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/no-drop b/home-config/icons/XCursor-Pro-Dark/cursors/no-drop
new file mode 120000
index 0000000..1f6c0fd
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/no-drop
@@ -0,0 +1 @@
+dnd_no_drop
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/not-allowed b/home-config/icons/XCursor-Pro-Dark/cursors/not-allowed
new file mode 120000
index 0000000..01c907d
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/not-allowed
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/ns-resize b/home-config/icons/XCursor-Pro-Dark/cursors/ns-resize
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/ns-resize
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/nw-resize b/home-config/icons/XCursor-Pro-Dark/cursors/nw-resize
new file mode 120000
index 0000000..9a02514
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/nw-resize
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/nwse-resize b/home-config/icons/XCursor-Pro-Dark/cursors/nwse-resize
new file mode 120000
index 0000000..9a02514
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/nwse-resize
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/openhand b/home-config/icons/XCursor-Pro-Dark/cursors/openhand
new file mode 120000
index 0000000..1a38f92
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/openhand
@@ -0,0 +1 @@
+hand1
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/pencil b/home-config/icons/XCursor-Pro-Dark/cursors/pencil
new file mode 100644
index 0000000..156bf9b
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/pencil differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/pirate b/home-config/icons/XCursor-Pro-Dark/cursors/pirate
new file mode 120000
index 0000000..7b84daf
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/pirate
@@ -0,0 +1 @@
+X_cursor
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/plus b/home-config/icons/XCursor-Pro-Dark/cursors/plus
new file mode 100644
index 0000000..37e10dd
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/plus differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/pointer b/home-config/icons/XCursor-Pro-Dark/cursors/pointer
new file mode 120000
index 0000000..0b08654
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/pointer
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/pointer_move b/home-config/icons/XCursor-Pro-Dark/cursors/pointer_move
new file mode 120000
index 0000000..d6a0af6
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/pointer_move
@@ -0,0 +1 @@
+move
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/pointing_hand b/home-config/icons/XCursor-Pro-Dark/cursors/pointing_hand
new file mode 120000
index 0000000..0b08654
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/pointing_hand
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/progress b/home-config/icons/XCursor-Pro-Dark/cursors/progress
new file mode 120000
index 0000000..b0e6589
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/progress
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/question_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/question_arrow
new file mode 100644
index 0000000..90b8695
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/question_arrow differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/right-arrow b/home-config/icons/XCursor-Pro-Dark/cursors/right-arrow
new file mode 120000
index 0000000..feb3132
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/right-arrow
@@ -0,0 +1 @@
+sb_right_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/right_ptr b/home-config/icons/XCursor-Pro-Dark/cursors/right_ptr
new file mode 100644
index 0000000..5472b2a
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/right_ptr differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/right_side b/home-config/icons/XCursor-Pro-Dark/cursors/right_side
new file mode 120000
index 0000000..1d46245
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/right_side
@@ -0,0 +1 @@
+left_side
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/right_tee b/home-config/icons/XCursor-Pro-Dark/cursors/right_tee
new file mode 100644
index 0000000..44210e8
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/right_tee differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/row-resize b/home-config/icons/XCursor-Pro-Dark/cursors/row-resize
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/row-resize
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/s-resize b/home-config/icons/XCursor-Pro-Dark/cursors/s-resize
new file mode 120000
index 0000000..83cc946
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/s-resize
@@ -0,0 +1 @@
+top_side
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/sb_down_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/sb_down_arrow
new file mode 100644
index 0000000..e6c0d70
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_down_arrow differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/sb_h_double_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/sb_h_double_arrow
new file mode 100644
index 0000000..a6b4c9b
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_h_double_arrow differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/sb_left_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/sb_left_arrow
new file mode 100644
index 0000000..9797dee
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_left_arrow differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/sb_right_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/sb_right_arrow
new file mode 100644
index 0000000..b7e1db3
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_right_arrow differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/sb_up_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/sb_up_arrow
new file mode 100644
index 0000000..6df8cfb
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_up_arrow differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/sb_v_double_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/sb_v_double_arrow
new file mode 100644
index 0000000..79f4d63
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_v_double_arrow differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/se-resize b/home-config/icons/XCursor-Pro-Dark/cursors/se-resize
new file mode 120000
index 0000000..9a02514
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/se-resize
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/size-hor b/home-config/icons/XCursor-Pro-Dark/cursors/size-hor
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/size-hor
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/size-ver b/home-config/icons/XCursor-Pro-Dark/cursors/size-ver
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/size-ver
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/size_all b/home-config/icons/XCursor-Pro-Dark/cursors/size_all
new file mode 120000
index 0000000..1bb4610
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/size_all
@@ -0,0 +1 @@
+all-scroll
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/size_bdiag b/home-config/icons/XCursor-Pro-Dark/cursors/size_bdiag
new file mode 120000
index 0000000..aab13ad
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/size_bdiag
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/size_fdiag b/home-config/icons/XCursor-Pro-Dark/cursors/size_fdiag
new file mode 120000
index 0000000..9a02514
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/size_fdiag
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/size_hor b/home-config/icons/XCursor-Pro-Dark/cursors/size_hor
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/size_hor
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/size_ver b/home-config/icons/XCursor-Pro-Dark/cursors/size_ver
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/size_ver
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/split_h b/home-config/icons/XCursor-Pro-Dark/cursors/split_h
new file mode 120000
index 0000000..baba492
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/split_h
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/split_v b/home-config/icons/XCursor-Pro-Dark/cursors/split_v
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/split_v
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/sw-resize b/home-config/icons/XCursor-Pro-Dark/cursors/sw-resize
new file mode 120000
index 0000000..aab13ad
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/sw-resize
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/target b/home-config/icons/XCursor-Pro-Dark/cursors/target
new file mode 120000
index 0000000..def8590
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/target
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/tcross b/home-config/icons/XCursor-Pro-Dark/cursors/tcross
new file mode 120000
index 0000000..982ae30
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/tcross
@@ -0,0 +1 @@
+cross
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/text b/home-config/icons/XCursor-Pro-Dark/cursors/text
new file mode 120000
index 0000000..18632c4
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/text
@@ -0,0 +1 @@
+xterm
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/top_left_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/top_left_arrow
new file mode 120000
index 0000000..0de4e80
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/top_left_arrow
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/top_left_corner b/home-config/icons/XCursor-Pro-Dark/cursors/top_left_corner
new file mode 120000
index 0000000..9a02514
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/top_left_corner
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/top_right_corner b/home-config/icons/XCursor-Pro-Dark/cursors/top_right_corner
new file mode 120000
index 0000000..aab13ad
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/top_right_corner
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/top_side b/home-config/icons/XCursor-Pro-Dark/cursors/top_side
new file mode 100644
index 0000000..982714a
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/top_side differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/top_tee b/home-config/icons/XCursor-Pro-Dark/cursors/top_tee
new file mode 100644
index 0000000..0d7994d
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/top_tee differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/ul_angle b/home-config/icons/XCursor-Pro-Dark/cursors/ul_angle
new file mode 100644
index 0000000..966f84d
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/ul_angle differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/up-arrow b/home-config/icons/XCursor-Pro-Dark/cursors/up-arrow
new file mode 120000
index 0000000..258ca58
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/up-arrow
@@ -0,0 +1 @@
+sb_up_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/ur_angle b/home-config/icons/XCursor-Pro-Dark/cursors/ur_angle
new file mode 100644
index 0000000..e91e3be
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/ur_angle differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/v_double_arrow b/home-config/icons/XCursor-Pro-Dark/cursors/v_double_arrow
new file mode 120000
index 0000000..a3693c3
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/v_double_arrow
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/vertical-text b/home-config/icons/XCursor-Pro-Dark/cursors/vertical-text
new file mode 100644
index 0000000..f1f7e29
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/vertical-text differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/w-resize b/home-config/icons/XCursor-Pro-Dark/cursors/w-resize
new file mode 120000
index 0000000..1d46245
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/w-resize
@@ -0,0 +1 @@
+left_side
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/wait b/home-config/icons/XCursor-Pro-Dark/cursors/wait
new file mode 100644
index 0000000..906d0db
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/wait differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/watch b/home-config/icons/XCursor-Pro-Dark/cursors/watch
new file mode 120000
index 0000000..fd80437
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/watch
@@ -0,0 +1 @@
+wait
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/wayland-cursor b/home-config/icons/XCursor-Pro-Dark/cursors/wayland-cursor
new file mode 100644
index 0000000..1bfca2b
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/wayland-cursor differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/whats_this b/home-config/icons/XCursor-Pro-Dark/cursors/whats_this
new file mode 120000
index 0000000..cc9a7ed
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/whats_this
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/x-cursor b/home-config/icons/XCursor-Pro-Dark/cursors/x-cursor
new file mode 120000
index 0000000..7b84daf
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/cursors/x-cursor
@@ -0,0 +1 @@
+X_cursor
\ No newline at end of file
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/xterm b/home-config/icons/XCursor-Pro-Dark/cursors/xterm
new file mode 100644
index 0000000..3dae5ad
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/xterm differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/zoom-in b/home-config/icons/XCursor-Pro-Dark/cursors/zoom-in
new file mode 100644
index 0000000..4d8fe5c
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/zoom-in differ
diff --git a/home-config/icons/XCursor-Pro-Dark/cursors/zoom-out b/home-config/icons/XCursor-Pro-Dark/cursors/zoom-out
new file mode 100644
index 0000000..bd41a87
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/zoom-out differ
diff --git a/home-config/icons/XCursor-Pro-Dark/index.theme b/home-config/icons/XCursor-Pro-Dark/index.theme
new file mode 100644
index 0000000..1313c19
--- /dev/null
+++ b/home-config/icons/XCursor-Pro-Dark/index.theme
@@ -0,0 +1,4 @@
+[Icon Theme]
+Name=XCursor-Pro-Dark
+Comment=Modern, Proffesional Dark (v2.0.2) XCursors
+Inherits="hicolor"
\ No newline at end of file
diff --git a/home-config/mpv/scripts/easycrop.lua b/home-config/mpv/scripts/easycrop.lua
deleted file mode 100644
index 415fce5..0000000
--- a/home-config/mpv/scripts/easycrop.lua
+++ /dev/null
@@ -1,254 +0,0 @@
-local msg = require('mp.msg')
-local assdraw = require('mp.assdraw')
-
-local script_name = "easycrop"
-
--- Number of crop points currently chosen (0 to 2)
-local points = {}
--- True if in cropping selection mode
-local cropping = false
--- Original value of osc property
-local osc_prop = false
-
--- Helper that converts two points to top-left and bottom-right
-local swizzle_points = function (p1, p2)
- if p1.x > p2.x then p1.x, p2.x = p2.x, p1.x end
- if p1.y > p2.y then p1.y, p2.y = p2.y, p1.y end
-end
-
-local clamp = function (val, min, max)
- assert(min <= max)
- if val < min then return min end
- if val > max then return max end
- return val
-end
-
-local video_space_from_screen_space = function (ssp)
- -- Video native dimensions and screen size
- local vid_w = mp.get_property("width")
- local vid_h = mp.get_property("height")
- local osd_w = mp.get_property("osd-width")
- local osd_h = mp.get_property("osd-height")
-
- -- Factor by which the video is scaled to fit the screen
- local scale = math.min(osd_w/vid_w, osd_h/vid_h)
-
- -- Size video takes up in screen
- local vid_sw, vid_sh = scale*vid_w, scale*vid_h
-
- -- Video offset within screen
- local off_x = math.floor((osd_w - vid_sw)/2)
- local off_y = math.floor((osd_h - vid_sh)/2)
-
- local vsp = {}
-
- -- Move the point to within the video
- vsp.x = clamp(ssp.x, off_x, off_x + vid_sw)
- vsp.y = clamp(ssp.y, off_y, off_y + vid_sh)
-
- -- Convert screen-space to video-space
- vsp.x = math.floor((vsp.x - off_x) / scale)
- vsp.y = math.floor((vsp.y - off_y) / scale)
-
- return vsp
-end
-
-local screen_space_from_video_space = function (vsp)
- -- Video native dimensions and screen size
- local vid_w = mp.get_property("width")
- local vid_h = mp.get_property("height")
- local osd_w = mp.get_property("osd-width")
- local osd_h = mp.get_property("osd-height")
-
- -- Factor by which the video is scaled to fit the screen
- local scale = math.min(osd_w/vid_w, osd_h/vid_h)
-
- -- Size video takes up in screen
- local vid_sw, vid_sh = scale*vid_w, scale*vid_h
-
- -- Video offset within screen
- local off_x = math.floor((osd_w - vid_sw)/2)
- local off_y = math.floor((osd_h - vid_sh)/2)
-
- local ssp = {}
- ssp.x = vsp.x * scale + off_x
- ssp.y = vsp.y * scale + off_y
- return ssp
-end
-
--- Wrapper that converts RRGGBB / RRGGBBAA to ASS format
-local ass_set_color = function (idx, color)
- assert(color:len() == 8 or color:len() == 6)
- local ass = ""
-
- -- Set alpha value (if present)
- if color:len() == 8 then
- local alpha = 0xff - tonumber(color:sub(7, 8), 16)
- ass = ass .. string.format("\\%da&H%X&", idx, alpha)
- end
-
- -- Swizzle RGB to BGR and build ASS string
- color = color:sub(5, 6) .. color:sub(3, 4) .. color:sub(1, 2)
- return "{" .. ass .. string.format("\\%dc&H%s&", idx, color) .. "}"
-end
-
-local draw_rect = function (p1, p2)
- local osd_w, osd_h = mp.get_property("osd-width"), mp.get_property("osd-height")
-
- ass = assdraw.ass_new()
-
- -- Draw overlay over surrounding unselected region
-
- ass:draw_start()
- ass:pos(0, 0)
-
- ass:append(ass_set_color(1, "000000aa"))
- ass:append(ass_set_color(3, "00000000"))
-
- local l = math.min(p1.x, p2.x)
- local r = math.max(p1.x, p2.x)
- local u = math.min(p1.y, p2.y)
- local d = math.max(p1.y, p2.y)
-
- ass:rect_cw(0, 0, l, osd_h)
- ass:rect_cw(r, 0, osd_w, osd_h)
- ass:rect_cw(l, 0, r, u)
- ass:rect_cw(l, d, r, osd_h)
-
- ass:draw_stop()
-
- -- Draw border around selected region
-
- ass:new_event()
- ass:draw_start()
- ass:pos(0, 0)
-
- ass:append(ass_set_color(1, "00000000"))
- ass:append(ass_set_color(3, "000000ff"))
- ass:append("{\\bord2}")
-
- ass:rect_cw(p1.x, p1.y, p2.x, p2.y)
-
- ass:draw_stop()
-
- mp.set_osd_ass(osd_w, osd_h, ass.text)
-end
-
-local draw_fill = function ()
- local osd_w, osd_h = mp.get_property("osd-width"), mp.get_property("osd-height")
-
- ass = assdraw.ass_new()
- ass:draw_start()
- ass:pos(0, 0)
-
- ass:append(ass_set_color(1, "000000aa"))
- ass:append(ass_set_color(3, "00000000"))
- ass:rect_cw(0, 0, osd_w, osd_h)
-
- ass:draw_stop()
- mp.set_osd_ass(osd_w, osd_h, ass.text)
-end
-
-local draw_clear = function ()
- local osd_w, osd_h = mp.get_property("osd-width"), mp.get_property("osd-height")
- mp.set_osd_ass(osd_w, osd_h, "")
-end
-
-local draw_cropper = function ()
- if #points == 1 then
- local p1 = screen_space_from_video_space(points[1])
- local p2 = {}
- p2.x, p2.y = mp.get_mouse_pos()
- draw_rect(p1, p2)
- end
-end
-
-local uncrop = function ()
- mp.command("no-osd vf del @" .. script_name .. ":crop")
-end
-
-local crop = function(p1, p2)
- swizzle_points(p1, p2)
-
- local w = p2.x - p1.x
- local h = p2.y - p1.y
- local ok, err = mp.command(string.format(
- "no-osd vf add @%s:crop=%s:%s:%s:%s", script_name, w, h, p1.x, p1.y))
-
- if not ok then
- mp.osd_message("Cropping failed")
- points = {}
- end
-end
-
-local easycrop_stop = function ()
- mp.set_property("osc", osc_prop)
- cropping = false
- mp.remove_key_binding("easycrop_mouse_btn0")
- draw_clear()
-end
-
-local mouse_btn0_cb = function ()
- if not cropping then
- return
- end
-
- local mx, my = mp.get_mouse_pos()
- table.insert(points, video_space_from_screen_space({ x = mx, y = my }))
-
- if #points == 2 then
- crop(points[1], points[2])
- easycrop_stop()
- end
-end
-
-local easycrop_start = function ()
- -- Cropping requires swdec or hwdec with copy-back
- local hwdec = mp.get_property("hwdec-current")
- if hwdec == nil then
- return mp.msg.error("Cannot determine current hardware decoder mode")
- end
- -- Check whitelist of ok values
- local valid_hwdec = {
- ["no"] = true, -- software decoding
- -- Taken from mpv manual
- ["videotoolbox-co"] = true,
- ["vaapi-copy"] = true,
- ["dxva2-copy"] = true,
- ["d3d11va-copy"] = true,
- ["mediacodec"] = true
- }
- if not valid_hwdec[hwdec] then
- return mp.osd_message("Cropping requires swdec or hwdec with copy-back (see mpv manual)")
- end
-
- -- Just clear the current crop and return, if there is one
- if #points ~= 0 then
- uncrop()
- points = {}
- return
- end
-
- -- Hide OSC
- osc_prop = mp.get_property("osc")
- mp.set_property("osc", "no")
-
- cropping = true
- mp.add_forced_key_binding("mouse_btn0", "easycrop_mouse_btn0", mouse_btn0_cb)
- draw_fill()
-end
-
-local easycrop_activate = function ()
- if cropping then
- easycrop_stop()
- else
- easycrop_start()
- end
-end
-
-mp.add_key_binding("mouse_move", draw_cropper)
-mp.observe_property("osd-width", "native", draw_cropper)
-mp.observe_property("osd-height", "native", draw_cropper)
-
-mp.add_key_binding("c", "easy_crop", easycrop_activate)
-
diff --git a/home-config/nix-channels b/home-config/nix-channels
deleted file mode 100644
index 0df3852..0000000
--- a/home-config/nix-channels
+++ /dev/null
@@ -1,2 +0,0 @@
-https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
-https://nixos.org/channels/nixpkgs-unstable nixpkgs
diff --git a/home-config/nix-config/nix.conf b/home-config/nix-config/nix.conf
deleted file mode 100644
index c7d7291..0000000
--- a/home-config/nix-config/nix.conf
+++ /dev/null
@@ -1 +0,0 @@
-experimental-features = nix-command flakes
diff --git a/home-config/nix-files b/home-config/nix-files
new file mode 160000
index 0000000..2e30121
--- /dev/null
+++ b/home-config/nix-files
@@ -0,0 +1 @@
+Subproject commit 2e30121671a730a2b4bc2f82d2e30ed5c9ff70e5
diff --git a/home-config/nix-home-manager/flake.lock b/home-config/nix-home-manager/flake.lock
deleted file mode 100644
index 0356e26..0000000
--- a/home-config/nix-home-manager/flake.lock
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "nodes": {
- "home-manager": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1708031129,
- "narHash": "sha256-EH20hJfNnc1/ODdDVat9B7aKm0B95L3YtkIRwKLvQG8=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "3d6791b3897b526c82920a2ab5f61d71985b3cf8",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "home-manager",
- "type": "github"
- }
- },
- "hyprpicker-git": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1703987863,
- "narHash": "sha256-MHhAk74uk0qHVwSkLCcXLXMe4478M2oZEFPXwjSoo2E=",
- "owner": "hyprwm",
- "repo": "hyprpicker",
- "rev": "2ef703474fb96e97e03e66e8820f213359f29382",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprpicker",
- "type": "github"
- }
- },
- "nixpkgs": {
- "locked": {
- "lastModified": 1707956935,
- "narHash": "sha256-ZL2TrjVsiFNKOYwYQozpbvQSwvtV/3Me7Zwhmdsfyu4=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "a4d4fe8c5002202493e87ec8dbc91335ff55552c",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "root": {
- "inputs": {
- "home-manager": "home-manager",
- "hyprpicker-git": "hyprpicker-git",
- "nixpkgs": "nixpkgs"
- }
- }
- },
- "root": "root",
- "version": 7
-}
diff --git a/home-config/nix-home-manager/flake.nix b/home-config/nix-home-manager/flake.nix
deleted file mode 100644
index 0048eb2..0000000
--- a/home-config/nix-home-manager/flake.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- description = "Home Manager configuration of ryan";
-
- inputs = {
- # Specify the source of Home Manager and Nixpkgs.
- nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
- home-manager = {
- url = "github:nix-community/home-manager";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- hyprpicker-git = {
- url = "github:hyprwm/hyprpicker";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- };
-
- outputs = { nixpkgs, home-manager, hyprpicker-git, ... }@inputs:
- let
- system = "x86_64-linux";
- pkgs = nixpkgs.legacyPackages.${system};
- overlays = [
- hyprpicker-git.overlays.default
- ];
- in {
- homeConfigurations."ryan" = home-manager.lib.homeManagerConfiguration {
- inherit pkgs;
-
- # Specify your home configuration modules here, for example,
- # the path to your home.nix.
- modules = [
- ./home.nix
- {nixpkgs.overlays = overlays;}
- ];
-
- # Optionally use extraSpecialArgs
- # to pass through arguments to home.nix
- #extraSpecialArgs = { inherit inputs; };
- };
- };
-}
diff --git a/home-config/nix-home-manager/home.nix b/home-config/nix-home-manager/home.nix
deleted file mode 100644
index 9d712dc..0000000
--- a/home-config/nix-home-manager/home.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- # Home Manager needs a bit of information about you and the paths it should
- # manage.
- home.username = "ryan";
- home.homeDirectory = "/home/ryan";
-
- # This value determines the Home Manager release that your configuration is
- # compatible with. This helps avoid breakage when a new Home Manager release
- # introduces backwards incompatible changes.
- #
- # You should not change this value, even if you update Home Manager. If you do
- # want to update the value, then make sure to first check the Home Manager
- # release notes.
- home.stateVersion = "23.11"; # Please read the comment before changing.
-
- # This value will set some environment variables to allow home-manager to
- # function better outside of NixOS
- nixpkgs.config.allowUnfree = true;
- #targets.genericLinux.enable = true;
- fonts.fontconfig.enable = true;
-
- # The home.packages option allows you to install Nix packages into your
- # environment.
- home.packages = with pkgs; [
- # # Adds the 'hello' command to your environment. It prints a friendly
- # # "Hello, world!" when run.
- # pkgs.hello
- yt-dlp
- #pass
- rustup
- zoxide
- nodePackages.pnpm
- gcc
- aerc
- pkg-config
- wttrbar
- swww
- wl-clip-persist
- gifski
- waypaper
- gdu
- spotify-player
- hyprpicker
-
- # # It is sometimes useful to fine-tune packages, for example, by applying
- # # overrides. You can do that directly here, just don't forget the
- # # parentheses. Maybe you want to install Nerd Fonts with a limited number of
- # # fonts?
- # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
-
- # # You can also create simple shell scripts directly inside your
- # # configuration. For example, this adds a command 'my-hello' to your
- # # environment:
- # (pkgs.writeShellScriptBin "my-hello" ''
- # echo "Hello, ${config.home.username}!"
- # '')
- ];
-
- # Home Manager is pretty good at managing dotfiles. The primary way to manage
- # plain files is through 'home.file'.
- home.file = {
- # # Building this configuration will create a copy of 'dotfiles/screenrc' in
- # # the Nix store. Activating the configuration will then make '~/.screenrc' a
- # # symlink to the Nix store copy.
- # ".screenrc".source = dotfiles/screenrc;
-
- # # You can also set the file content immediately.
- # ".gradle/gradle.properties".text = ''
- # org.gradle.console=verbose
- # org.gradle.daemon.idletimeout=3600000
- # '';
- };
-
- # You can also manage environment variables but you will have to manually
- # source
- #
- # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
- #
- # or
- #
- # /etc/profiles/per-user/ryan/etc/profile.d/hm-session-vars.sh
- #
- # if you don't want to manage your shell through Home Manager.
- home.sessionVariables = {
- # EDITOR = "emacs";
- };
-
- # Let Home Manager install and manage itself.
- programs.home-manager.enable = true;
-}
diff --git a/home-config/nvim/config/after/ftplugin/mail/custom.vim b/home-config/nvim/config/after/ftplugin/mail/custom.vim
deleted file mode 100644
index 75078e5..0000000
--- a/home-config/nvim/config/after/ftplugin/mail/custom.vim
+++ /dev/null
@@ -1,2 +0,0 @@
-setlocal tw=0 wm=0
-setlocal wrap linebreak
diff --git a/home-config/nvim/config/after/ftplugin/markdown/custom.vim b/home-config/nvim/config/after/ftplugin/markdown/custom.vim
deleted file mode 100644
index 96aac6e..0000000
--- a/home-config/nvim/config/after/ftplugin/markdown/custom.vim
+++ /dev/null
@@ -1,2 +0,0 @@
-"Used to overwrite table behavior in markdown files
-let b:table_mode_corner='+'
diff --git a/home-config/nvim/config/init.vim b/home-config/nvim/config/init.vim
deleted file mode 100644
index 6735d81..0000000
--- a/home-config/nvim/config/init.vim
+++ /dev/null
@@ -1,91 +0,0 @@
-set nu rnu
-imap kj <Esc>
-set ts=4
-set sw=4
-set sts=4
-set et
-set mouse=
-set cursorline
-set cc=79
-
-call plug#begin(stdpath('data') . '/plugged')
-"Plug 'prabirshrestha/vim-lsp'
-"Plug 'mattn/vim-lsp-settings'
-"Plug 'prabirshrestha/asyncomplete.vim'
-"Plug 'prabirshrestha/asyncomplete-lsp.vim'
-"Plug 'Yggdroot/indentLine'
-Plug 'nvim-treesitter/nvim-treesitter', {'do':':TSUpdate'}
-Plug 'vim-pandoc/vim-pandoc'
-Plug 'vim-pandoc/vim-pandoc-syntax'
-Plug 'dhruvasagar/vim-table-mode'
-Plug 'skywind3000/asyncrun.vim'
-Plug 'folke/tokyonight.nvim', {'branch':'main'}
-Plug 'nvim-lualine/lualine.nvim'
-Plug 'nvim-tree/nvim-web-devicons'
-Plug 'ms-jpq/coq_nvim', {'branch':'coq'}
-Plug 'ms-jpq/coq.artifacts', {'branch':'artifacts'}
-Plug 'williamboman/mason.nvim'
-Plug 'williamboman/mason-lspconfig.nvim'
-Plug 'neovim/nvim-lspconfig'
-"Plug 'nvim-orgmode/orgmode'
-Plug 'ggandor/leap.nvim'
-Plug 'xiyaowong/transparent.nvim'
-call plug#end()
-
-"Load Theme
-colorscheme tokyonight-night
-
-"Load COQ Autocomplete
-let g:coq_settings = {'auto_start':'shut-up'}
-
-"Load LuaLine, COQ, and nvim-orgmode
-lua << END
-require('lualine').setup()
-require('coq')
-require("transparent")
-require("mason").setup()
-require("mason-lspconfig").setup {
- ensure_installed = { "pyright" },
-}
-
-require('leap').add_default_mappings()
-
-require("mason-lspconfig").setup_handlers {
- function (server_name)
- require("lspconfig")[server_name].setup {}
- end,
-}
-
-require('nvim-treesitter.configs').setup {
- highlight = {
- enable = true,
- additional_vim_regex_highlighting = {'org'},
- },
- ensure_installed = {'vim', 'python'},
-}
-
-vim.opt.conceallevel = 2
-vim.opt.concealcursor = nc
-
---local lspconfig = require('lspconfig')
-END
-
-"asynccomplete Auto Complete Config
-"inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
-"inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
-"inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>"
-
-"vim-pandoc config
-let g:pandoc#modules#disabled = ['spell', 'folding']
-
-"vim-table-mode config
-let g:table_mode_corner_corner='+'
-let g:table_mode_header_fillchar='='
-
-"pandoc render and open preview
-command Pv AsyncRun zathura '%:r.pdf'
-command Rd silent exec "!pandoc -t pdf -o %:r.pdf --from=markdown+escaped_line_breaks -V geometry:margin=1in %"
-command Rr exec "!pandoc -t pdf -o %:r.pdf --from=markdown+escaped_line_breaks -V geometry:margin=1in %"
-
-"Auto-rerender markdown files to pdf
-autocmd BufWritePost *.mkd :Rd
diff --git a/home-config/nvim/plugin-manager/plug.vim b/home-config/nvim/plugin-manager/plug.vim
deleted file mode 100644
index 9c3011f..0000000
--- a/home-config/nvim/plugin-manager/plug.vim
+++ /dev/null
@@ -1,2812 +0,0 @@
-" vim-plug: Vim plugin manager
-" ============================
-"
-" Download plug.vim and put it in ~/.vim/autoload
-"
-" curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
-" https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
-"
-" Edit your .vimrc
-"
-" call plug#begin('~/.vim/plugged')
-"
-" " Make sure you use single quotes
-"
-" " Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
-" Plug 'junegunn/vim-easy-align'
-"
-" " Any valid git URL is allowed
-" Plug 'https://github.com/junegunn/vim-github-dashboard.git'
-"
-" " Multiple Plug commands can be written in a single line using | separators
-" Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
-"
-" " On-demand loading
-" Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' }
-" Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
-"
-" " Using a non-default branch
-" Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
-"
-" " Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
-" Plug 'fatih/vim-go', { 'tag': '*' }
-"
-" " Plugin options
-" Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
-"
-" " Plugin outside ~/.vim/plugged with post-update hook
-" Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
-"
-" " Unmanaged plugin (manually installed and updated)
-" Plug '~/my-prototype-plugin'
-"
-" " Initialize plugin system
-" call plug#end()
-"
-" Then reload .vimrc and :PlugInstall to install plugins.
-"
-" Plug options:
-"
-"| Option | Description |
-"| ----------------------- | ------------------------------------------------ |
-"| `branch`/`tag`/`commit` | Branch/tag/commit of the repository to use |
-"| `rtp` | Subdirectory that contains Vim plugin |
-"| `dir` | Custom directory for the plugin |
-"| `as` | Use different name for the plugin |
-"| `do` | Post-update hook (string or funcref) |
-"| `on` | On-demand loading: Commands or `<Plug>`-mappings |
-"| `for` | On-demand loading: File types |
-"| `frozen` | Do not update unless explicitly specified |
-"
-" More information: https://github.com/junegunn/vim-plug
-"
-"
-" Copyright (c) 2017 Junegunn Choi
-"
-" MIT License
-"
-" Permission is hereby granted, free of charge, to any person obtaining
-" a copy of this software and associated documentation files (the
-" "Software"), to deal in the Software without restriction, including
-" without limitation the rights to use, copy, modify, merge, publish,
-" distribute, sublicense, and/or sell copies of the Software, and to
-" permit persons to whom the Software is furnished to do so, subject to
-" the following conditions:
-"
-" The above copyright notice and this permission notice shall be
-" included in all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-if exists('g:loaded_plug')
- finish
-endif
-let g:loaded_plug = 1
-
-let s:cpo_save = &cpo
-set cpo&vim
-
-let s:plug_src = 'https://github.com/junegunn/vim-plug.git'
-let s:plug_tab = get(s:, 'plug_tab', -1)
-let s:plug_buf = get(s:, 'plug_buf', -1)
-let s:mac_gui = has('gui_macvim') && has('gui_running')
-let s:is_win = has('win32')
-let s:nvim = has('nvim-0.2') || (has('nvim') && exists('*jobwait') && !s:is_win)
-let s:vim8 = has('patch-8.0.0039') && exists('*job_start')
-if s:is_win && &shellslash
- set noshellslash
- let s:me = resolve(expand('<sfile>:p'))
- set shellslash
-else
- let s:me = resolve(expand('<sfile>:p'))
-endif
-let s:base_spec = { 'branch': '', 'frozen': 0 }
-let s:TYPE = {
-\ 'string': type(''),
-\ 'list': type([]),
-\ 'dict': type({}),
-\ 'funcref': type(function('call'))
-\ }
-let s:loaded = get(s:, 'loaded', {})
-let s:triggers = get(s:, 'triggers', {})
-
-function! s:is_powershell(shell)
- return a:shell =~# 'powershell\(\.exe\)\?$' || a:shell =~# 'pwsh\(\.exe\)\?$'
-endfunction
-
-function! s:isabsolute(dir) abort
- return a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)')
-endfunction
-
-function! s:git_dir(dir) abort
- let gitdir = s:trim(a:dir) . '/.git'
- if isdirectory(gitdir)
- return gitdir
- endif
- if !filereadable(gitdir)
- return ''
- endif
- let gitdir = matchstr(get(readfile(gitdir), 0, ''), '^gitdir: \zs.*')
- if len(gitdir) && !s:isabsolute(gitdir)
- let gitdir = a:dir . '/' . gitdir
- endif
- return isdirectory(gitdir) ? gitdir : ''
-endfunction
-
-function! s:git_origin_url(dir) abort
- let gitdir = s:git_dir(a:dir)
- let config = gitdir . '/config'
- if empty(gitdir) || !filereadable(config)
- return ''
- endif
- return matchstr(join(readfile(config)), '\[remote "origin"\].\{-}url\s*=\s*\zs\S*\ze')
-endfunction
-
-function! s:git_revision(dir) abort
- let gitdir = s:git_dir(a:dir)
- let head = gitdir . '/HEAD'
- if empty(gitdir) || !filereadable(head)
- return ''
- endif
-
- let line = get(readfile(head), 0, '')
- let ref = matchstr(line, '^ref: \zs.*')
- if empty(ref)
- return line
- endif
-
- if filereadable(gitdir . '/' . ref)
- return get(readfile(gitdir . '/' . ref), 0, '')
- endif
-
- if filereadable(gitdir . '/packed-refs')
- for line in readfile(gitdir . '/packed-refs')
- if line =~# ' ' . ref
- return matchstr(line, '^[0-9a-f]*')
- endif
- endfor
- endif
-
- return ''
-endfunction
-
-function! s:git_local_branch(dir) abort
- let gitdir = s:git_dir(a:dir)
- let head = gitdir . '/HEAD'
- if empty(gitdir) || !filereadable(head)
- return ''
- endif
- let branch = matchstr(get(readfile(head), 0, ''), '^ref: refs/heads/\zs.*')
- return len(branch) ? branch : 'HEAD'
-endfunction
-
-function! s:git_origin_branch(spec)
- if len(a:spec.branch)
- return a:spec.branch
- endif
-
- " The file may not be present if this is a local repository
- let gitdir = s:git_dir(a:spec.dir)
- let origin_head = gitdir.'/refs/remotes/origin/HEAD'
- if len(gitdir) && filereadable(origin_head)
- return matchstr(get(readfile(origin_head), 0, ''),
- \ '^ref: refs/remotes/origin/\zs.*')
- endif
-
- " The command may not return the name of a branch in detached HEAD state
- let result = s:lines(s:system('git symbolic-ref --short HEAD', a:spec.dir))
- return v:shell_error ? '' : result[-1]
-endfunction
-
-if s:is_win
- function! s:plug_call(fn, ...)
- let shellslash = &shellslash
- try
- set noshellslash
- return call(a:fn, a:000)
- finally
- let &shellslash = shellslash
- endtry
- endfunction
-else
- function! s:plug_call(fn, ...)
- return call(a:fn, a:000)
- endfunction
-endif
-
-function! s:plug_getcwd()
- return s:plug_call('getcwd')
-endfunction
-
-function! s:plug_fnamemodify(fname, mods)
- return s:plug_call('fnamemodify', a:fname, a:mods)
-endfunction
-
-function! s:plug_expand(fmt)
- return s:plug_call('expand', a:fmt, 1)
-endfunction
-
-function! s:plug_tempname()
- return s:plug_call('tempname')
-endfunction
-
-function! plug#begin(...)
- if a:0 > 0
- let s:plug_home_org = a:1
- let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p'))
- elseif exists('g:plug_home')
- let home = s:path(g:plug_home)
- elseif has('nvim')
- let home = stdpath('data') . '/plugged'
- elseif !empty(&rtp)
- let home = s:path(split(&rtp, ',')[0]) . '/plugged'
- else
- return s:err('Unable to determine plug home. Try calling plug#begin() with a path argument.')
- endif
- if s:plug_fnamemodify(home, ':t') ==# 'plugin' && s:plug_fnamemodify(home, ':h') ==# s:first_rtp
- return s:err('Invalid plug home. '.home.' is a standard Vim runtime path and is not allowed.')
- endif
-
- let g:plug_home = home
- let g:plugs = {}
- let g:plugs_order = []
- let s:triggers = {}
-
- call s:define_commands()
- return 1
-endfunction
-
-function! s:define_commands()
- command! -nargs=+ -bar Plug call plug#(<args>)
- if !executable('git')
- return s:err('`git` executable not found. Most commands will not be available. To suppress this message, prepend `silent!` to `call plug#begin(...)`.')
- endif
- if has('win32')
- \ && &shellslash
- \ && (&shell =~# 'cmd\(\.exe\)\?$' || s:is_powershell(&shell))
- return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.')
- endif
- if !has('nvim')
- \ && (has('win32') || has('win32unix'))
- \ && !has('multi_byte')
- return s:err('Vim needs +multi_byte feature on Windows to run shell commands. Enable +iconv for best results.')
- endif
- command! -nargs=* -bar -bang -complete=customlist,s:names PlugInstall call s:install(<bang>0, [<f-args>])
- command! -nargs=* -bar -bang -complete=customlist,s:names PlugUpdate call s:update(<bang>0, [<f-args>])
- command! -nargs=0 -bar -bang PlugClean call s:clean(<bang>0)
- command! -nargs=0 -bar PlugUpgrade if s:upgrade() | execute 'source' s:esc(s:me) | endif
- command! -nargs=0 -bar PlugStatus call s:status()
- command! -nargs=0 -bar PlugDiff call s:diff()
- command! -nargs=? -bar -bang -complete=file PlugSnapshot call s:snapshot(<bang>0, <f-args>)
-endfunction
-
-function! s:to_a(v)
- return type(a:v) == s:TYPE.list ? a:v : [a:v]
-endfunction
-
-function! s:to_s(v)
- return type(a:v) == s:TYPE.string ? a:v : join(a:v, "\n") . "\n"
-endfunction
-
-function! s:glob(from, pattern)
- return s:lines(globpath(a:from, a:pattern))
-endfunction
-
-function! s:source(from, ...)
- let found = 0
- for pattern in a:000
- for vim in s:glob(a:from, pattern)
- execute 'source' s:esc(vim)
- let found = 1
- endfor
- endfor
- return found
-endfunction
-
-function! s:assoc(dict, key, val)
- let a:dict[a:key] = add(get(a:dict, a:key, []), a:val)
-endfunction
-
-function! s:ask(message, ...)
- call inputsave()
- echohl WarningMsg
- let answer = input(a:message.(a:0 ? ' (y/N/a) ' : ' (y/N) '))
- echohl None
- call inputrestore()
- echo "\r"
- return (a:0 && answer =~? '^a') ? 2 : (answer =~? '^y') ? 1 : 0
-endfunction
-
-function! s:ask_no_interrupt(...)
- try
- return call('s:ask', a:000)
- catch
- return 0
- endtry
-endfunction
-
-function! s:lazy(plug, opt)
- return has_key(a:plug, a:opt) &&
- \ (empty(s:to_a(a:plug[a:opt])) ||
- \ !isdirectory(a:plug.dir) ||
- \ len(s:glob(s:rtp(a:plug), 'plugin')) ||
- \ len(s:glob(s:rtp(a:plug), 'after/plugin')))
-endfunction
-
-function! plug#end()
- if !exists('g:plugs')
- return s:err('plug#end() called without calling plug#begin() first')
- endif
-
- if exists('#PlugLOD')
- augroup PlugLOD
- autocmd!
- augroup END
- augroup! PlugLOD
- endif
- let lod = { 'ft': {}, 'map': {}, 'cmd': {} }
-
- if get(g:, 'did_load_filetypes', 0)
- filetype off
- endif
- for name in g:plugs_order
- if !has_key(g:plugs, name)
- continue
- endif
- let plug = g:plugs[name]
- if get(s:loaded, name, 0) || !s:lazy(plug, 'on') && !s:lazy(plug, 'for')
- let s:loaded[name] = 1
- continue
- endif
-
- if has_key(plug, 'on')
- let s:triggers[name] = { 'map': [], 'cmd': [] }
- for cmd in s:to_a(plug.on)
- if cmd =~? '^<Plug>.\+'
- if empty(mapcheck(cmd)) && empty(mapcheck(cmd, 'i'))
- call s:assoc(lod.map, cmd, name)
- endif
- call add(s:triggers[name].map, cmd)
- elseif cmd =~# '^[A-Z]'
- let cmd = substitute(cmd, '!*$', '', '')
- if exists(':'.cmd) != 2
- call s:assoc(lod.cmd, cmd, name)
- endif
- call add(s:triggers[name].cmd, cmd)
- else
- call s:err('Invalid `on` option: '.cmd.
- \ '. Should start with an uppercase letter or `<Plug>`.')
- endif
- endfor
- endif
-
- if has_key(plug, 'for')
- let types = s:to_a(plug.for)
- if !empty(types)
- augroup filetypedetect
- call s:source(s:rtp(plug), 'ftdetect/**/*.vim', 'after/ftdetect/**/*.vim')
- augroup END
- endif
- for type in types
- call s:assoc(lod.ft, type, name)
- endfor
- endif
- endfor
-
- for [cmd, names] in items(lod.cmd)
- execute printf(
- \ 'command! -nargs=* -range -bang -complete=file %s call s:lod_cmd(%s, "<bang>", <line1>, <line2>, <q-args>, %s)',
- \ cmd, string(cmd), string(names))
- endfor
-
- for [map, names] in items(lod.map)
- for [mode, map_prefix, key_prefix] in
- \ [['i', '<C-\><C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']]
- execute printf(
- \ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, %s, "%s")<CR>',
- \ mode, map, map_prefix, string(map), string(names), mode != 'i', key_prefix)
- endfor
- endfor
-
- for [ft, names] in items(lod.ft)
- augroup PlugLOD
- execute printf('autocmd FileType %s call <SID>lod_ft(%s, %s)',
- \ ft, string(ft), string(names))
- augroup END
- endfor
-
- call s:reorg_rtp()
- filetype plugin indent on
- if has('vim_starting')
- if has('syntax') && !exists('g:syntax_on')
- syntax enable
- end
- else
- call s:reload_plugins()
- endif
-endfunction
-
-function! s:loaded_names()
- return filter(copy(g:plugs_order), 'get(s:loaded, v:val, 0)')
-endfunction
-
-function! s:load_plugin(spec)
- call s:source(s:rtp(a:spec), 'plugin/**/*.vim', 'after/plugin/**/*.vim')
-endfunction
-
-function! s:reload_plugins()
- for name in s:loaded_names()
- call s:load_plugin(g:plugs[name])
- endfor
-endfunction
-
-function! s:trim(str)
- return substitute(a:str, '[\/]\+$', '', '')
-endfunction
-
-function! s:version_requirement(val, min)
- for idx in range(0, len(a:min) - 1)
- let v = get(a:val, idx, 0)
- if v < a:min[idx] | return 0
- elseif v > a:min[idx] | return 1
- endif
- endfor
- return 1
-endfunction
-
-function! s:git_version_requirement(...)
- if !exists('s:git_version')
- let s:git_version = map(split(split(s:system(['git', '--version']))[2], '\.'), 'str2nr(v:val)')
- endif
- return s:version_requirement(s:git_version, a:000)
-endfunction
-
-function! s:progress_opt(base)
- return a:base && !s:is_win &&
- \ s:git_version_requirement(1, 7, 1) ? '--progress' : ''
-endfunction
-
-function! s:rtp(spec)
- return s:path(a:spec.dir . get(a:spec, 'rtp', ''))
-endfunction
-
-if s:is_win
- function! s:path(path)
- return s:trim(substitute(a:path, '/', '\', 'g'))
- endfunction
-
- function! s:dirpath(path)
- return s:path(a:path) . '\'
- endfunction
-
- function! s:is_local_plug(repo)
- return a:repo =~? '^[a-z]:\|^[%~]'
- endfunction
-
- " Copied from fzf
- function! s:wrap_cmds(cmds)
- let cmds = [
- \ '@echo off',
- \ 'setlocal enabledelayedexpansion']
- \ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds])
- \ + ['endlocal']
- if has('iconv')
- if !exists('s:codepage')
- let s:codepage = libcallnr('kernel32.dll', 'GetACP', 0)
- endif
- return map(cmds, printf('iconv(v:val."\r", "%s", "cp%d")', &encoding, s:codepage))
- endif
- return map(cmds, 'v:val."\r"')
- endfunction
-
- function! s:batchfile(cmd)
- let batchfile = s:plug_tempname().'.bat'
- call writefile(s:wrap_cmds(a:cmd), batchfile)
- let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0})
- if s:is_powershell(&shell)
- let cmd = '& ' . cmd
- endif
- return [batchfile, cmd]
- endfunction
-else
- function! s:path(path)
- return s:trim(a:path)
- endfunction
-
- function! s:dirpath(path)
- return substitute(a:path, '[/\\]*$', '/', '')
- endfunction
-
- function! s:is_local_plug(repo)
- return a:repo[0] =~ '[/$~]'
- endfunction
-endif
-
-function! s:err(msg)
- echohl ErrorMsg
- echom '[vim-plug] '.a:msg
- echohl None
-endfunction
-
-function! s:warn(cmd, msg)
- echohl WarningMsg
- execute a:cmd 'a:msg'
- echohl None
-endfunction
-
-function! s:esc(path)
- return escape(a:path, ' ')
-endfunction
-
-function! s:escrtp(path)
- return escape(a:path, ' ,')
-endfunction
-
-function! s:remove_rtp()
- for name in s:loaded_names()
- let rtp = s:rtp(g:plugs[name])
- execute 'set rtp-='.s:escrtp(rtp)
- let after = globpath(rtp, 'after')
- if isdirectory(after)
- execute 'set rtp-='.s:escrtp(after)
- endif
- endfor
-endfunction
-
-function! s:reorg_rtp()
- if !empty(s:first_rtp)
- execute 'set rtp-='.s:first_rtp
- execute 'set rtp-='.s:last_rtp
- endif
-
- " &rtp is modified from outside
- if exists('s:prtp') && s:prtp !=# &rtp
- call s:remove_rtp()
- unlet! s:middle
- endif
-
- let s:middle = get(s:, 'middle', &rtp)
- let rtps = map(s:loaded_names(), 's:rtp(g:plugs[v:val])')
- let afters = filter(map(copy(rtps), 'globpath(v:val, "after")'), '!empty(v:val)')
- let rtp = join(map(rtps, 'escape(v:val, ",")'), ',')
- \ . ','.s:middle.','
- \ . join(map(afters, 'escape(v:val, ",")'), ',')
- let &rtp = substitute(substitute(rtp, ',,*', ',', 'g'), '^,\|,$', '', 'g')
- let s:prtp = &rtp
-
- if !empty(s:first_rtp)
- execute 'set rtp^='.s:first_rtp
- execute 'set rtp+='.s:last_rtp
- endif
-endfunction
-
-function! s:doautocmd(...)
- if exists('#'.join(a:000, '#'))
- execute 'doautocmd' ((v:version > 703 || has('patch442')) ? '<nomodeline>' : '') join(a:000)
- endif
-endfunction
-
-function! s:dobufread(names)
- for name in a:names
- let path = s:rtp(g:plugs[name])
- for dir in ['ftdetect', 'ftplugin', 'after/ftdetect', 'after/ftplugin']
- if len(finddir(dir, path))
- if exists('#BufRead')
- doautocmd BufRead
- endif
- return
- endif
- endfor
- endfor
-endfunction
-
-function! plug#load(...)
- if a:0 == 0
- return s:err('Argument missing: plugin name(s) required')
- endif
- if !exists('g:plugs')
- return s:err('plug#begin was not called')
- endif
- let names = a:0 == 1 && type(a:1) == s:TYPE.list ? a:1 : a:000
- let unknowns = filter(copy(names), '!has_key(g:plugs, v:val)')
- if !empty(unknowns)
- let s = len(unknowns) > 1 ? 's' : ''
- return s:err(printf('Unknown plugin%s: %s', s, join(unknowns, ', ')))
- end
- let unloaded = filter(copy(names), '!get(s:loaded, v:val, 0)')
- if !empty(unloaded)
- for name in unloaded
- call s:lod([name], ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin'])
- endfor
- call s:dobufread(unloaded)
- return 1
- end
- return 0
-endfunction
-
-function! s:remove_triggers(name)
- if !has_key(s:triggers, a:name)
- return
- endif
- for cmd in s:triggers[a:name].cmd
- execute 'silent! delc' cmd
- endfor
- for map in s:triggers[a:name].map
- execute 'silent! unmap' map
- execute 'silent! iunmap' map
- endfor
- call remove(s:triggers, a:name)
-endfunction
-
-function! s:lod(names, types, ...)
- for name in a:names
- call s:remove_triggers(name)
- let s:loaded[name] = 1
- endfor
- call s:reorg_rtp()
-
- for name in a:names
- let rtp = s:rtp(g:plugs[name])
- for dir in a:types
- call s:source(rtp, dir.'/**/*.vim')
- endfor
- if a:0
- if !s:source(rtp, a:1) && !empty(s:glob(rtp, a:2))
- execute 'runtime' a:1
- endif
- call s:source(rtp, a:2)
- endif
- call s:doautocmd('User', name)
- endfor
-endfunction
-
-function! s:lod_ft(pat, names)
- let syn = 'syntax/'.a:pat.'.vim'
- call s:lod(a:names, ['plugin', 'after/plugin'], syn, 'after/'.syn)
- execute 'autocmd! PlugLOD FileType' a:pat
- call s:doautocmd('filetypeplugin', 'FileType')
- call s:doautocmd('filetypeindent', 'FileType')
-endfunction
-
-function! s:lod_cmd(cmd, bang, l1, l2, args, names)
- call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin'])
- call s:dobufread(a:names)
- execute printf('%s%s%s %s', (a:l1 == a:l2 ? '' : (a:l1.','.a:l2)), a:cmd, a:bang, a:args)
-endfunction
-
-function! s:lod_map(map, names, with_prefix, prefix)
- call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin'])
- call s:dobufread(a:names)
- let extra = ''
- while 1
- let c = getchar(0)
- if c == 0
- break
- endif
- let extra .= nr2char(c)
- endwhile
-
- if a:with_prefix
- let prefix = v:count ? v:count : ''
- let prefix .= '"'.v:register.a:prefix
- if mode(1) == 'no'
- if v:operator == 'c'
- let prefix = "\<esc>" . prefix
- endif
- let prefix .= v:operator
- endif
- call feedkeys(prefix, 'n')
- endif
- call feedkeys(substitute(a:map, '^<Plug>', "\<Plug>", '') . extra)
-endfunction
-
-function! plug#(repo, ...)
- if a:0 > 1
- return s:err('Invalid number of arguments (1..2)')
- endif
-
- try
- let repo = s:trim(a:repo)
- let opts = a:0 == 1 ? s:parse_options(a:1) : s:base_spec
- let name = get(opts, 'as', s:plug_fnamemodify(repo, ':t:s?\.git$??'))
- let spec = extend(s:infer_properties(name, repo), opts)
- if !has_key(g:plugs, name)
- call add(g:plugs_order, name)
- endif
- let g:plugs[name] = spec
- let s:loaded[name] = get(s:loaded, name, 0)
- catch
- return s:err(repo . ' ' . v:exception)
- endtry
-endfunction
-
-function! s:parse_options(arg)
- let opts = copy(s:base_spec)
- let type = type(a:arg)
- let opt_errfmt = 'Invalid argument for "%s" option of :Plug (expected: %s)'
- if type == s:TYPE.string
- if empty(a:arg)
- throw printf(opt_errfmt, 'tag', 'string')
- endif
- let opts.tag = a:arg
- elseif type == s:TYPE.dict
- for opt in ['branch', 'tag', 'commit', 'rtp', 'dir', 'as']
- if has_key(a:arg, opt)
- \ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt]))
- throw printf(opt_errfmt, opt, 'string')
- endif
- endfor
- for opt in ['on', 'for']
- if has_key(a:arg, opt)
- \ && type(a:arg[opt]) != s:TYPE.list
- \ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt]))
- throw printf(opt_errfmt, opt, 'string or list')
- endif
- endfor
- if has_key(a:arg, 'do')
- \ && type(a:arg.do) != s:TYPE.funcref
- \ && (type(a:arg.do) != s:TYPE.string || empty(a:arg.do))
- throw printf(opt_errfmt, 'do', 'string or funcref')
- endif
- call extend(opts, a:arg)
- if has_key(opts, 'dir')
- let opts.dir = s:dirpath(s:plug_expand(opts.dir))
- endif
- else
- throw 'Invalid argument type (expected: string or dictionary)'
- endif
- return opts
-endfunction
-
-function! s:infer_properties(name, repo)
- let repo = a:repo
- if s:is_local_plug(repo)
- return { 'dir': s:dirpath(s:plug_expand(repo)) }
- else
- if repo =~ ':'
- let uri = repo
- else
- if repo !~ '/'
- throw printf('Invalid argument: %s (implicit `vim-scripts'' expansion is deprecated)', repo)
- endif
- let fmt = get(g:, 'plug_url_format', 'https://git::@github.com/%s.git')
- let uri = printf(fmt, repo)
- endif
- return { 'dir': s:dirpath(g:plug_home.'/'.a:name), 'uri': uri }
- endif
-endfunction
-
-function! s:install(force, names)
- call s:update_impl(0, a:force, a:names)
-endfunction
-
-function! s:update(force, names)
- call s:update_impl(1, a:force, a:names)
-endfunction
-
-function! plug#helptags()
- if !exists('g:plugs')
- return s:err('plug#begin was not called')
- endif
- for spec in values(g:plugs)
- let docd = join([s:rtp(spec), 'doc'], '/')
- if isdirectory(docd)
- silent! execute 'helptags' s:esc(docd)
- endif
- endfor
- return 1
-endfunction
-
-function! s:syntax()
- syntax clear
- syntax region plug1 start=/\%1l/ end=/\%2l/ contains=plugNumber
- syntax region plug2 start=/\%2l/ end=/\%3l/ contains=plugBracket,plugX
- syn match plugNumber /[0-9]\+[0-9.]*/ contained
- syn match plugBracket /[[\]]/ contained
- syn match plugX /x/ contained
- syn match plugDash /^-\{1}\ /
- syn match plugPlus /^+/
- syn match plugStar /^*/
- syn match plugMessage /\(^- \)\@<=.*/
- syn match plugName /\(^- \)\@<=[^ ]*:/
- syn match plugSha /\%(: \)\@<=[0-9a-f]\{4,}$/
- syn match plugTag /(tag: [^)]\+)/
- syn match plugInstall /\(^+ \)\@<=[^:]*/
- syn match plugUpdate /\(^* \)\@<=[^:]*/
- syn match plugCommit /^ \X*[0-9a-f]\{7,9} .*/ contains=plugRelDate,plugEdge,plugTag
- syn match plugEdge /^ \X\+$/
- syn match plugEdge /^ \X*/ contained nextgroup=plugSha
- syn match plugSha /[0-9a-f]\{7,9}/ contained
- syn match plugRelDate /([^)]*)$/ contained
- syn match plugNotLoaded /(not loaded)$/
- syn match plugError /^x.*/
- syn region plugDeleted start=/^\~ .*/ end=/^\ze\S/
- syn match plugH2 /^.*:\n-\+$/
- syn match plugH2 /^-\{2,}/
- syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean
- hi def link plug1 Title
- hi def link plug2 Repeat
- hi def link plugH2 Type
- hi def link plugX Exception
- hi def link plugBracket Structure
- hi def link plugNumber Number
-
- hi def link plugDash Special
- hi def link plugPlus Constant
- hi def link plugStar Boolean
-
- hi def link plugMessage Function
- hi def link plugName Label
- hi def link plugInstall Function
- hi def link plugUpdate Type
-
- hi def link plugError Error
- hi def link plugDeleted Ignore
- hi def link plugRelDate Comment
- hi def link plugEdge PreProc
- hi def link plugSha Identifier
- hi def link plugTag Constant
-
- hi def link plugNotLoaded Comment
-endfunction
-
-function! s:lpad(str, len)
- return a:str . repeat(' ', a:len - len(a:str))
-endfunction
-
-function! s:lines(msg)
- return split(a:msg, "[\r\n]")
-endfunction
-
-function! s:lastline(msg)
- return get(s:lines(a:msg), -1, '')
-endfunction
-
-function! s:new_window()
- execute get(g:, 'plug_window', 'vertical topleft new')
-endfunction
-
-function! s:plug_window_exists()
- let buflist = tabpagebuflist(s:plug_tab)
- return !empty(buflist) && index(buflist, s:plug_buf) >= 0
-endfunction
-
-function! s:switch_in()
- if !s:plug_window_exists()
- return 0
- endif
-
- if winbufnr(0) != s:plug_buf
- let s:pos = [tabpagenr(), winnr(), winsaveview()]
- execute 'normal!' s:plug_tab.'gt'
- let winnr = bufwinnr(s:plug_buf)
- execute winnr.'wincmd w'
- call add(s:pos, winsaveview())
- else
- let s:pos = [winsaveview()]
- endif
-
- setlocal modifiable
- return 1
-endfunction
-
-function! s:switch_out(...)
- call winrestview(s:pos[-1])
- setlocal nomodifiable
- if a:0 > 0
- execute a:1
- endif
-
- if len(s:pos) > 1
- execute 'normal!' s:pos[0].'gt'
- execute s:pos[1] 'wincmd w'
- call winrestview(s:pos[2])
- endif
-endfunction
-
-function! s:finish_bindings()
- nnoremap <silent> <buffer> R :call <SID>retry()<cr>
- nnoremap <silent> <buffer> D :PlugDiff<cr>
- nnoremap <silent> <buffer> S :PlugStatus<cr>
- nnoremap <silent> <buffer> U :call <SID>status_update()<cr>
- xnoremap <silent> <buffer> U :call <SID>status_update()<cr>
- nnoremap <silent> <buffer> ]] :silent! call <SID>section('')<cr>
- nnoremap <silent> <buffer> [[ :silent! call <SID>section('b')<cr>
-endfunction
-
-function! s:prepare(...)
- if empty(s:plug_getcwd())
- throw 'Invalid current working directory. Cannot proceed.'
- endif
-
- for evar in ['$GIT_DIR', '$GIT_WORK_TREE']
- if exists(evar)
- throw evar.' detected. Cannot proceed.'
- endif
- endfor
-
- call s:job_abort()
- if s:switch_in()
- if b:plug_preview == 1
- pc
- endif
- enew
- else
- call s:new_window()
- endif
-
- nnoremap <silent> <buffer> q :call <SID>close_pane()<cr>
- if a:0 == 0
- call s:finish_bindings()
- endif
- let b:plug_preview = -1
- let s:plug_tab = tabpagenr()
- let s:plug_buf = winbufnr(0)
- call s:assign_name()
-
- for k in ['<cr>', 'L', 'o', 'X', 'd', 'dd']
- execute 'silent! unmap <buffer>' k
- endfor
- setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline modifiable nospell
- if exists('+colorcolumn')
- setlocal colorcolumn=
- endif
- setf vim-plug
- if exists('g:syntax_on')
- call s:syntax()
- endif
-endfunction
-
-function! s:close_pane()
- if b:plug_preview == 1
- pc
- let b:plug_preview = -1
- else
- bd
- endif
-endfunction
-
-function! s:assign_name()
- " Assign buffer name
- let prefix = '[Plugins]'
- let name = prefix
- let idx = 2
- while bufexists(name)
- let name = printf('%s (%s)', prefix, idx)
- let idx = idx + 1
- endwhile
- silent! execute 'f' fnameescape(name)
-endfunction
-
-function! s:chsh(swap)
- let prev = [&shell, &shellcmdflag, &shellredir]
- if !s:is_win
- set shell=sh
- endif
- if a:swap
- if s:is_powershell(&shell)
- let &shellredir = '2>&1 | Out-File -Encoding UTF8 %s'
- elseif &shell =~# 'sh' || &shell =~# 'cmd\(\.exe\)\?$'
- set shellredir=>%s\ 2>&1
- endif
- endif
- return prev
-endfunction
-
-function! s:bang(cmd, ...)
- let batchfile = ''
- try
- let [sh, shellcmdflag, shrd] = s:chsh(a:0)
- " FIXME: Escaping is incomplete. We could use shellescape with eval,
- " but it won't work on Windows.
- let cmd = a:0 ? s:with_cd(a:cmd, a:1) : a:cmd
- if s:is_win
- let [batchfile, cmd] = s:batchfile(cmd)
- endif
- let g:_plug_bang = (s:is_win && has('gui_running') ? 'silent ' : '').'!'.escape(cmd, '#!%')
- execute "normal! :execute g:_plug_bang\<cr>\<cr>"
- finally
- unlet g:_plug_bang
- let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
- if s:is_win && filereadable(batchfile)
- call delete(batchfile)
- endif
- endtry
- return v:shell_error ? 'Exit status: ' . v:shell_error : ''
-endfunction
-
-function! s:regress_bar()
- let bar = substitute(getline(2)[1:-2], '.*\zs=', 'x', '')
- call s:progress_bar(2, bar, len(bar))
-endfunction
-
-function! s:is_updated(dir)
- return !empty(s:system_chomp(['git', 'log', '--pretty=format:%h', 'HEAD...HEAD@{1}'], a:dir))
-endfunction
-
-function! s:do(pull, force, todo)
- for [name, spec] in items(a:todo)
- if !isdirectory(spec.dir)
- continue
- endif
- let installed = has_key(s:update.new, name)
- let updated = installed ? 0 :
- \ (a:pull && index(s:update.errors, name) < 0 && s:is_updated(spec.dir))
- if a:force || installed || updated
- execute 'cd' s:esc(spec.dir)
- call append(3, '- Post-update hook for '. name .' ... ')
- let error = ''
- let type = type(spec.do)
- if type == s:TYPE.string
- if spec.do[0] == ':'
- if !get(s:loaded, name, 0)
- let s:loaded[name] = 1
- call s:reorg_rtp()
- endif
- call s:load_plugin(spec)
- try
- execute spec.do[1:]
- catch
- let error = v:exception
- endtry
- if !s:plug_window_exists()
- cd -
- throw 'Warning: vim-plug was terminated by the post-update hook of '.name
- endif
- else
- let error = s:bang(spec.do)
- endif
- elseif type == s:TYPE.funcref
- try
- call s:load_plugin(spec)
- let status = installed ? 'installed' : (updated ? 'updated' : 'unchanged')
- call spec.do({ 'name': name, 'status': status, 'force': a:force })
- catch
- let error = v:exception
- endtry
- else
- let error = 'Invalid hook type'
- endif
- call s:switch_in()
- call setline(4, empty(error) ? (getline(4) . 'OK')
- \ : ('x' . getline(4)[1:] . error))
- if !empty(error)
- call add(s:update.errors, name)
- call s:regress_bar()
- endif
- cd -
- endif
- endfor
-endfunction
-
-function! s:hash_match(a, b)
- return stridx(a:a, a:b) == 0 || stridx(a:b, a:a) == 0
-endfunction
-
-function! s:checkout(spec)
- let sha = a:spec.commit
- let output = s:git_revision(a:spec.dir)
- if !empty(output) && !s:hash_match(sha, s:lines(output)[0])
- let credential_helper = s:git_version_requirement(2) ? '-c credential.helper= ' : ''
- let output = s:system(
- \ 'git '.credential_helper.'fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir)
- endif
- return output
-endfunction
-
-function! s:finish(pull)
- let new_frozen = len(filter(keys(s:update.new), 'g:plugs[v:val].frozen'))
- if new_frozen
- let s = new_frozen > 1 ? 's' : ''
- call append(3, printf('- Installed %d frozen plugin%s', new_frozen, s))
- endif
- call append(3, '- Finishing ... ') | 4
- redraw
- call plug#helptags()
- call plug#end()
- call setline(4, getline(4) . 'Done!')
- redraw
- let msgs = []
- if !empty(s:update.errors)
- call add(msgs, "Press 'R' to retry.")
- endif
- if a:pull && len(s:update.new) < len(filter(getline(5, '$'),
- \ "v:val =~ '^- ' && v:val !~# 'Already up.to.date'"))
- call add(msgs, "Press 'D' to see the updated changes.")
- endif
- echo join(msgs, ' ')
- call s:finish_bindings()
-endfunction
-
-function! s:retry()
- if empty(s:update.errors)
- return
- endif
- echo
- call s:update_impl(s:update.pull, s:update.force,
- \ extend(copy(s:update.errors), [s:update.threads]))
-endfunction
-
-function! s:is_managed(name)
- return has_key(g:plugs[a:name], 'uri')
-endfunction
-
-function! s:names(...)
- return sort(filter(keys(g:plugs), 'stridx(v:val, a:1) == 0 && s:is_managed(v:val)'))
-endfunction
-
-function! s:check_ruby()
- silent! ruby require 'thread'; VIM::command("let g:plug_ruby = '#{RUBY_VERSION}'")
- if !exists('g:plug_ruby')
- redraw!
- return s:warn('echom', 'Warning: Ruby interface is broken')
- endif
- let ruby_version = split(g:plug_ruby, '\.')
- unlet g:plug_ruby
- return s:version_requirement(ruby_version, [1, 8, 7])
-endfunction
-
-function! s:update_impl(pull, force, args) abort
- let sync = index(a:args, '--sync') >= 0 || has('vim_starting')
- let args = filter(copy(a:args), 'v:val != "--sync"')
- let threads = (len(args) > 0 && args[-1] =~ '^[1-9][0-9]*$') ?
- \ remove(args, -1) : get(g:, 'plug_threads', 16)
-
- let managed = filter(copy(g:plugs), 's:is_managed(v:key)')
- let todo = empty(args) ? filter(managed, '!v:val.frozen || !isdirectory(v:val.dir)') :
- \ filter(managed, 'index(args, v:key) >= 0')
-
- if empty(todo)
- return s:warn('echo', 'No plugin to '. (a:pull ? 'update' : 'install'))
- endif
-
- if !s:is_win && s:git_version_requirement(2, 3)
- let s:git_terminal_prompt = exists('$GIT_TERMINAL_PROMPT') ? $GIT_TERMINAL_PROMPT : ''
- let $GIT_TERMINAL_PROMPT = 0
- for plug in values(todo)
- let plug.uri = substitute(plug.uri,
- \ '^https://git::@github\.com', 'https://github.com', '')
- endfor
- endif
-
- if !isdirectory(g:plug_home)
- try
- call mkdir(g:plug_home, 'p')
- catch
- return s:err(printf('Invalid plug directory: %s. '.
- \ 'Try to call plug#begin with a valid directory', g:plug_home))
- endtry
- endif
-
- if has('nvim') && !exists('*jobwait') && threads > 1
- call s:warn('echom', '[vim-plug] Update Neovim for parallel installer')
- endif
-
- let use_job = s:nvim || s:vim8
- let python = (has('python') || has('python3')) && !use_job
- let ruby = has('ruby') && !use_job && (v:version >= 703 || v:version == 702 && has('patch374')) && !(s:is_win && has('gui_running')) && threads > 1 && s:check_ruby()
-
- let s:update = {
- \ 'start': reltime(),
- \ 'all': todo,
- \ 'todo': copy(todo),
- \ 'errors': [],
- \ 'pull': a:pull,
- \ 'force': a:force,
- \ 'new': {},
- \ 'threads': (python || ruby || use_job) ? min([len(todo), threads]) : 1,
- \ 'bar': '',
- \ 'fin': 0
- \ }
-
- call s:prepare(1)
- call append(0, ['', ''])
- normal! 2G
- silent! redraw
-
- " Set remote name, overriding a possible user git config's clone.defaultRemoteName
- let s:clone_opt = ['--origin', 'origin']
- if get(g:, 'plug_shallow', 1)
- call extend(s:clone_opt, ['--depth', '1'])
- if s:git_version_requirement(1, 7, 10)
- call add(s:clone_opt, '--no-single-branch')
- endif
- endif
-
- if has('win32unix') || has('wsl')
- call extend(s:clone_opt, ['-c', 'core.eol=lf', '-c', 'core.autocrlf=input'])
- endif
-
- let s:submodule_opt = s:git_version_requirement(2, 8) ? ' --jobs='.threads : ''
-
- " Python version requirement (>= 2.7)
- if python && !has('python3') && !ruby && !use_job && s:update.threads > 1
- redir => pyv
- silent python import platform; print platform.python_version()
- redir END
- let python = s:version_requirement(
- \ map(split(split(pyv)[0], '\.'), 'str2nr(v:val)'), [2, 6])
- endif
-
- if (python || ruby) && s:update.threads > 1
- try
- let imd = &imd
- if s:mac_gui
- set noimd
- endif
- if ruby
- call s:update_ruby()
- else
- call s:update_python()
- endif
- catch
- let lines = getline(4, '$')
- let printed = {}
- silent! 4,$d _
- for line in lines
- let name = s:extract_name(line, '.', '')
- if empty(name) || !has_key(printed, name)
- call append('$', line)
- if !empty(name)
- let printed[name] = 1
- if line[0] == 'x' && index(s:update.errors, name) < 0
- call add(s:update.errors, name)
- end
- endif
- endif
- endfor
- finally
- let &imd = imd
- call s:update_finish()
- endtry
- else
- call s:update_vim()
- while use_job && sync
- sleep 100m
- if s:update.fin
- break
- endif
- endwhile
- endif
-endfunction
-
-function! s:log4(name, msg)
- call setline(4, printf('- %s (%s)', a:msg, a:name))
- redraw
-endfunction
-
-function! s:update_finish()
- if exists('s:git_terminal_prompt')
- let $GIT_TERMINAL_PROMPT = s:git_terminal_prompt
- endif
- if s:switch_in()
- call append(3, '- Updating ...') | 4
- for [name, spec] in items(filter(copy(s:update.all), 'index(s:update.errors, v:key) < 0 && (s:update.force || s:update.pull || has_key(s:update.new, v:key))'))
- let [pos, _] = s:logpos(name)
- if !pos
- continue
- endif
- if has_key(spec, 'commit')
- call s:log4(name, 'Checking out '.spec.commit)
- let out = s:checkout(spec)
- elseif has_key(spec, 'tag')
- let tag = spec.tag
- if tag =~ '\*'
- let tags = s:lines(s:system('git tag --list '.plug#shellescape(tag).' --sort -version:refname 2>&1', spec.dir))
- if !v:shell_error && !empty(tags)
- let tag = tags[0]
- call s:log4(name, printf('Latest tag for %s -> %s', spec.tag, tag))
- call append(3, '')
- endif
- endif
- call s:log4(name, 'Checking out '.tag)
- let out = s:system('git checkout -q '.plug#shellescape(tag).' -- 2>&1', spec.dir)
- else
- let branch = s:git_origin_branch(spec)
- call s:log4(name, 'Merging origin/'.s:esc(branch))
- let out = s:system('git checkout -q '.plug#shellescape(branch).' -- 2>&1'
- \. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only '.plug#shellescape('origin/'.branch).' 2>&1')), spec.dir)
- endif
- if !v:shell_error && filereadable(spec.dir.'/.gitmodules') &&
- \ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir))
- call s:log4(name, 'Updating submodules. This may take a while.')
- let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir)
- endif
- let msg = s:format_message(v:shell_error ? 'x': '-', name, out)
- if v:shell_error
- call add(s:update.errors, name)
- call s:regress_bar()
- silent execute pos 'd _'
- call append(4, msg) | 4
- elseif !empty(out)
- call setline(pos, msg[0])
- endif
- redraw
- endfor
- silent 4 d _
- try
- call s:do(s:update.pull, s:update.force, filter(copy(s:update.all), 'index(s:update.errors, v:key) < 0 && has_key(v:val, "do")'))
- catch
- call s:warn('echom', v:exception)
- call s:warn('echo', '')
- return
- endtry
- call s:finish(s:update.pull)
- call setline(1, 'Updated. Elapsed time: ' . split(reltimestr(reltime(s:update.start)))[0] . ' sec.')
- call s:switch_out('normal! gg')
- endif
-endfunction
-
-function! s:job_abort()
- if (!s:nvim && !s:vim8) || !exists('s:jobs')
- return
- endif
-
- for [name, j] in items(s:jobs)
- if s:nvim
- silent! call jobstop(j.jobid)
- elseif s:vim8
- silent! call job_stop(j.jobid)
- endif
- if j.new
- call s:rm_rf(g:plugs[name].dir)
- endif
- endfor
- let s:jobs = {}
-endfunction
-
-function! s:last_non_empty_line(lines)
- let len = len(a:lines)
- for idx in range(len)
- let line = a:lines[len-idx-1]
- if !empty(line)
- return line
- endif
- endfor
- return ''
-endfunction
-
-function! s:job_out_cb(self, data) abort
- let self = a:self
- let data = remove(self.lines, -1) . a:data
- let lines = map(split(data, "\n", 1), 'split(v:val, "\r", 1)[-1]')
- call extend(self.lines, lines)
- " To reduce the number of buffer updates
- let self.tick = get(self, 'tick', -1) + 1
- if !self.running || self.tick % len(s:jobs) == 0
- let bullet = self.running ? (self.new ? '+' : '*') : (self.error ? 'x' : '-')
- let result = self.error ? join(self.lines, "\n") : s:last_non_empty_line(self.lines)
- call s:log(bullet, self.name, result)
- endif
-endfunction
-
-function! s:job_exit_cb(self, data) abort
- let a:self.running = 0
- let a:self.error = a:data != 0
- call s:reap(a:self.name)
- call s:tick()
-endfunction
-
-function! s:job_cb(fn, job, ch, data)
- if !s:plug_window_exists() " plug window closed
- return s:job_abort()
- endif
- call call(a:fn, [a:job, a:data])
-endfunction
-
-function! s:nvim_cb(job_id, data, event) dict abort
- return (a:event == 'stdout' || a:event == 'stderr') ?
- \ s:job_cb('s:job_out_cb', self, 0, join(a:data, "\n")) :
- \ s:job_cb('s:job_exit_cb', self, 0, a:data)
-endfunction
-
-function! s:spawn(name, cmd, opts)
- let job = { 'name': a:name, 'running': 1, 'error': 0, 'lines': [''],
- \ 'new': get(a:opts, 'new', 0) }
- let s:jobs[a:name] = job
-
- if s:nvim
- if has_key(a:opts, 'dir')
- let job.cwd = a:opts.dir
- endif
- let argv = a:cmd
- call extend(job, {
- \ 'on_stdout': function('s:nvim_cb'),
- \ 'on_stderr': function('s:nvim_cb'),
- \ 'on_exit': function('s:nvim_cb'),
- \ })
- let jid = s:plug_call('jobstart', argv, job)
- if jid > 0
- let job.jobid = jid
- else
- let job.running = 0
- let job.error = 1
- let job.lines = [jid < 0 ? argv[0].' is not executable' :
- \ 'Invalid arguments (or job table is full)']
- endif
- elseif s:vim8
- let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"script": 0})'))
- if has_key(a:opts, 'dir')
- let cmd = s:with_cd(cmd, a:opts.dir, 0)
- endif
- let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd]
- let jid = job_start(s:is_win ? join(argv, ' ') : argv, {
- \ 'out_cb': function('s:job_cb', ['s:job_out_cb', job]),
- \ 'err_cb': function('s:job_cb', ['s:job_out_cb', job]),
- \ 'exit_cb': function('s:job_cb', ['s:job_exit_cb', job]),
- \ 'err_mode': 'raw',
- \ 'out_mode': 'raw'
- \})
- if job_status(jid) == 'run'
- let job.jobid = jid
- else
- let job.running = 0
- let job.error = 1
- let job.lines = ['Failed to start job']
- endif
- else
- let job.lines = s:lines(call('s:system', has_key(a:opts, 'dir') ? [a:cmd, a:opts.dir] : [a:cmd]))
- let job.error = v:shell_error != 0
- let job.running = 0
- endif
-endfunction
-
-function! s:reap(name)
- let job = s:jobs[a:name]
- if job.error
- call add(s:update.errors, a:name)
- elseif get(job, 'new', 0)
- let s:update.new[a:name] = 1
- endif
- let s:update.bar .= job.error ? 'x' : '='
-
- let bullet = job.error ? 'x' : '-'
- let result = job.error ? join(job.lines, "\n") : s:last_non_empty_line(job.lines)
- call s:log(bullet, a:name, empty(result) ? 'OK' : result)
- call s:bar()
-
- call remove(s:jobs, a:name)
-endfunction
-
-function! s:bar()
- if s:switch_in()
- let total = len(s:update.all)
- call setline(1, (s:update.pull ? 'Updating' : 'Installing').
- \ ' plugins ('.len(s:update.bar).'/'.total.')')
- call s:progress_bar(2, s:update.bar, total)
- call s:switch_out()
- endif
-endfunction
-
-function! s:logpos(name)
- let max = line('$')
- for i in range(4, max > 4 ? max : 4)
- if getline(i) =~# '^[-+x*] '.a:name.':'
- for j in range(i + 1, max > 5 ? max : 5)
- if getline(j) !~ '^ '
- return [i, j - 1]
- endif
- endfor
- return [i, i]
- endif
- endfor
- return [0, 0]
-endfunction
-
-function! s:log(bullet, name, lines)
- if s:switch_in()
- let [b, e] = s:logpos(a:name)
- if b > 0
- silent execute printf('%d,%d d _', b, e)
- if b > winheight('.')
- let b = 4
- endif
- else
- let b = 4
- endif
- " FIXME For some reason, nomodifiable is set after :d in vim8
- setlocal modifiable
- call append(b - 1, s:format_message(a:bullet, a:name, a:lines))
- call s:switch_out()
- endif
-endfunction
-
-function! s:update_vim()
- let s:jobs = {}
-
- call s:bar()
- call s:tick()
-endfunction
-
-function! s:tick()
- let pull = s:update.pull
- let prog = s:progress_opt(s:nvim || s:vim8)
-while 1 " Without TCO, Vim stack is bound to explode
- if empty(s:update.todo)
- if empty(s:jobs) && !s:update.fin
- call s:update_finish()
- let s:update.fin = 1
- endif
- return
- endif
-
- let name = keys(s:update.todo)[0]
- let spec = remove(s:update.todo, name)
- let new = empty(globpath(spec.dir, '.git', 1))
-
- call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...')
- redraw
-
- let has_tag = has_key(spec, 'tag')
- if !new
- let [error, _] = s:git_validate(spec, 0)
- if empty(error)
- if pull
- let cmd = s:git_version_requirement(2) ? ['git', '-c', 'credential.helper=', 'fetch'] : ['git', 'fetch']
- if has_tag && !empty(globpath(spec.dir, '.git/shallow'))
- call extend(cmd, ['--depth', '99999999'])
- endif
- if !empty(prog)
- call add(cmd, prog)
- endif
- call s:spawn(name, cmd, { 'dir': spec.dir })
- else
- let s:jobs[name] = { 'running': 0, 'lines': ['Already installed'], 'error': 0 }
- endif
- else
- let s:jobs[name] = { 'running': 0, 'lines': s:lines(error), 'error': 1 }
- endif
- else
- let cmd = ['git', 'clone']
- if !has_tag
- call extend(cmd, s:clone_opt)
- endif
- if !empty(prog)
- call add(cmd, prog)
- endif
- call s:spawn(name, extend(cmd, [spec.uri, s:trim(spec.dir)]), { 'new': 1 })
- endif
-
- if !s:jobs[name].running
- call s:reap(name)
- endif
- if len(s:jobs) >= s:update.threads
- break
- endif
-endwhile
-endfunction
-
-function! s:update_python()
-let py_exe = has('python') ? 'python' : 'python3'
-execute py_exe "<< EOF"
-import datetime
-import functools
-import os
-try:
- import queue
-except ImportError:
- import Queue as queue
-import random
-import re
-import shutil
-import signal
-import subprocess
-import tempfile
-import threading as thr
-import time
-import traceback
-import vim
-
-G_NVIM = vim.eval("has('nvim')") == '1'
-G_PULL = vim.eval('s:update.pull') == '1'
-G_RETRIES = int(vim.eval('get(g:, "plug_retries", 2)')) + 1
-G_TIMEOUT = int(vim.eval('get(g:, "plug_timeout", 60)'))
-G_CLONE_OPT = ' '.join(vim.eval('s:clone_opt'))
-G_PROGRESS = vim.eval('s:progress_opt(1)')
-G_LOG_PROB = 1.0 / int(vim.eval('s:update.threads'))
-G_STOP = thr.Event()
-G_IS_WIN = vim.eval('s:is_win') == '1'
-
-class PlugError(Exception):
- def __init__(self, msg):
- self.msg = msg
-class CmdTimedOut(PlugError):
- pass
-class CmdFailed(PlugError):
- pass
-class InvalidURI(PlugError):
- pass
-class Action(object):
- INSTALL, UPDATE, ERROR, DONE = ['+', '*', 'x', '-']
-
-class Buffer(object):
- def __init__(self, lock, num_plugs, is_pull):
- self.bar = ''
- self.event = 'Updating' if is_pull else 'Installing'
- self.lock = lock
- self.maxy = int(vim.eval('winheight(".")'))
- self.num_plugs = num_plugs
-
- def __where(self, name):
- """ Find first line with name in current buffer. Return line num. """
- found, lnum = False, 0
- matcher = re.compile('^[-+x*] {0}:'.format(name))
- for line in vim.current.buffer:
- if matcher.search(line) is not None:
- found = True
- break
- lnum += 1
-
- if not found:
- lnum = -1
- return lnum
-
- def header(self):
- curbuf = vim.current.buffer
- curbuf[0] = self.event + ' plugins ({0}/{1})'.format(len(self.bar), self.num_plugs)
-
- num_spaces = self.num_plugs - len(self.bar)
- curbuf[1] = '[{0}{1}]'.format(self.bar, num_spaces * ' ')
-
- with self.lock:
- vim.command('normal! 2G')
- vim.command('redraw')
-
- def write(self, action, name, lines):
- first, rest = lines[0], lines[1:]
- msg = ['{0} {1}{2}{3}'.format(action, name, ': ' if first else '', first)]
- msg.extend([' ' + line for line in rest])
-
- try:
- if action == Action.ERROR:
- self.bar += 'x'
- vim.command("call add(s:update.errors, '{0}')".format(name))
- elif action == Action.DONE:
- self.bar += '='
-
- curbuf = vim.current.buffer
- lnum = self.__where(name)
- if lnum != -1: # Found matching line num
- del curbuf[lnum]
- if lnum > self.maxy and action in set([Action.INSTALL, Action.UPDATE]):
- lnum = 3
- else:
- lnum = 3
- curbuf.append(msg, lnum)
-
- self.header()
- except vim.error:
- pass
-
-class Command(object):
- CD = 'cd /d' if G_IS_WIN else 'cd'
-
- def __init__(self, cmd, cmd_dir=None, timeout=60, cb=None, clean=None):
- self.cmd = cmd
- if cmd_dir:
- self.cmd = '{0} {1} && {2}'.format(Command.CD, cmd_dir, self.cmd)
- self.timeout = timeout
- self.callback = cb if cb else (lambda msg: None)
- self.clean = clean if clean else (lambda: None)
- self.proc = None
-
- @property
- def alive(self):
- """ Returns true only if command still running. """
- return self.proc and self.proc.poll() is None
-
- def execute(self, ntries=3):
- """ Execute the command with ntries if CmdTimedOut.
- Returns the output of the command if no Exception.
- """
- attempt, finished, limit = 0, False, self.timeout
-
- while not finished:
- try:
- attempt += 1
- result = self.try_command()
- finished = True
- return result
- except CmdTimedOut:
- if attempt != ntries:
- self.notify_retry()
- self.timeout += limit
- else:
- raise
-
- def notify_retry(self):
- """ Retry required for command, notify user. """
- for count in range(3, 0, -1):
- if G_STOP.is_set():
- raise KeyboardInterrupt
- msg = 'Timeout. Will retry in {0} second{1} ...'.format(
- count, 's' if count != 1 else '')
- self.callback([msg])
- time.sleep(1)
- self.callback(['Retrying ...'])
-
- def try_command(self):
- """ Execute a cmd & poll for callback. Returns list of output.
- Raises CmdFailed -> return code for Popen isn't 0
- Raises CmdTimedOut -> command exceeded timeout without new output
- """
- first_line = True
-
- try:
- tfile = tempfile.NamedTemporaryFile(mode='w+b')
- preexec_fn = not G_IS_WIN and os.setsid or None
- self.proc = subprocess.Popen(self.cmd, stdout=tfile,
- stderr=subprocess.STDOUT,
- stdin=subprocess.PIPE, shell=True,
- preexec_fn=preexec_fn)
- thrd = thr.Thread(target=(lambda proc: proc.wait()), args=(self.proc,))
- thrd.start()
-
- thread_not_started = True
- while thread_not_started:
- try:
- thrd.join(0.1)
- thread_not_started = False
- except RuntimeError:
- pass
-
- while self.alive:
- if G_STOP.is_set():
- raise KeyboardInterrupt
-
- if first_line or random.random() < G_LOG_PROB:
- first_line = False
- line = '' if G_IS_WIN else nonblock_read(tfile.name)
- if line:
- self.callback([line])
-
- time_diff = time.time() - os.path.getmtime(tfile.name)
- if time_diff > self.timeout:
- raise CmdTimedOut(['Timeout!'])
-
- thrd.join(0.5)
-
- tfile.seek(0)
- result = [line.decode('utf-8', 'replace').rstrip() for line in tfile]
-
- if self.proc.returncode != 0:
- raise CmdFailed([''] + result)
-
- return result
- except:
- self.terminate()
- raise
-
- def terminate(self):
- """ Terminate process and cleanup. """
- if self.alive:
- if G_IS_WIN:
- os.kill(self.proc.pid, signal.SIGINT)
- else:
- os.killpg(self.proc.pid, signal.SIGTERM)
- self.clean()
-
-class Plugin(object):
- def __init__(self, name, args, buf_q, lock):
- self.name = name
- self.args = args
- self.buf_q = buf_q
- self.lock = lock
- self.tag = args.get('tag', 0)
-
- def manage(self):
- try:
- if os.path.exists(self.args['dir']):
- self.update()
- else:
- self.install()
- with self.lock:
- thread_vim_command("let s:update.new['{0}'] = 1".format(self.name))
- except PlugError as exc:
- self.write(Action.ERROR, self.name, exc.msg)
- except KeyboardInterrupt:
- G_STOP.set()
- self.write(Action.ERROR, self.name, ['Interrupted!'])
- except:
- # Any exception except those above print stack trace
- msg = 'Trace:\n{0}'.format(traceback.format_exc().rstrip())
- self.write(Action.ERROR, self.name, msg.split('\n'))
- raise
-
- def install(self):
- target = self.args['dir']
- if target[-1] == '\\':
- target = target[0:-1]
-
- def clean(target):
- def _clean():
- try:
- shutil.rmtree(target)
- except OSError:
- pass
- return _clean
-
- self.write(Action.INSTALL, self.name, ['Installing ...'])
- callback = functools.partial(self.write, Action.INSTALL, self.name)
- cmd = 'git clone {0} {1} {2} {3} 2>&1'.format(
- '' if self.tag else G_CLONE_OPT, G_PROGRESS, self.args['uri'],
- esc(target))
- com = Command(cmd, None, G_TIMEOUT, callback, clean(target))
- result = com.execute(G_RETRIES)
- self.write(Action.DONE, self.name, result[-1:])
-
- def repo_uri(self):
- cmd = 'git rev-parse --abbrev-ref HEAD 2>&1 && git config -f .git/config remote.origin.url'
- command = Command(cmd, self.args['dir'], G_TIMEOUT,)
- result = command.execute(G_RETRIES)
- return result[-1]
-
- def update(self):
- actual_uri = self.repo_uri()
- expect_uri = self.args['uri']
- regex = re.compile(r'^(?:\w+://)?(?:[^@/]*@)?([^:/]*(?::[0-9]*)?)[:/](.*?)(?:\.git)?/?$')
- ma = regex.match(actual_uri)
- mb = regex.match(expect_uri)
- if ma is None or mb is None or ma.groups() != mb.groups():
- msg = ['',
- 'Invalid URI: {0}'.format(actual_uri),
- 'Expected {0}'.format(expect_uri),
- 'PlugClean required.']
- raise InvalidURI(msg)
-
- if G_PULL:
- self.write(Action.UPDATE, self.name, ['Updating ...'])
- callback = functools.partial(self.write, Action.UPDATE, self.name)
- fetch_opt = '--depth 99999999' if self.tag and os.path.isfile(os.path.join(self.args['dir'], '.git/shallow')) else ''
- cmd = 'git fetch {0} {1} 2>&1'.format(fetch_opt, G_PROGRESS)
- com = Command(cmd, self.args['dir'], G_TIMEOUT, callback)
- result = com.execute(G_RETRIES)
- self.write(Action.DONE, self.name, result[-1:])
- else:
- self.write(Action.DONE, self.name, ['Already installed'])
-
- def write(self, action, name, msg):
- self.buf_q.put((action, name, msg))
-
-class PlugThread(thr.Thread):
- def __init__(self, tname, args):
- super(PlugThread, self).__init__()
- self.tname = tname
- self.args = args
-
- def run(self):
- thr.current_thread().name = self.tname
- buf_q, work_q, lock = self.args
-
- try:
- while not G_STOP.is_set():
- name, args = work_q.get_nowait()
- plug = Plugin(name, args, buf_q, lock)
- plug.manage()
- work_q.task_done()
- except queue.Empty:
- pass
-
-class RefreshThread(thr.Thread):
- def __init__(self, lock):
- super(RefreshThread, self).__init__()
- self.lock = lock
- self.running = True
-
- def run(self):
- while self.running:
- with self.lock:
- thread_vim_command('noautocmd normal! a')
- time.sleep(0.33)
-
- def stop(self):
- self.running = False
-
-if G_NVIM:
- def thread_vim_command(cmd):
- vim.session.threadsafe_call(lambda: vim.command(cmd))
-else:
- def thread_vim_command(cmd):
- vim.command(cmd)
-
-def esc(name):
- return '"' + name.replace('"', '\"') + '"'
-
-def nonblock_read(fname):
- """ Read a file with nonblock flag. Return the last line. """
- fread = os.open(fname, os.O_RDONLY | os.O_NONBLOCK)
- buf = os.read(fread, 100000).decode('utf-8', 'replace')
- os.close(fread)
-
- line = buf.rstrip('\r\n')
- left = max(line.rfind('\r'), line.rfind('\n'))
- if left != -1:
- left += 1
- line = line[left:]
-
- return line
-
-def main():
- thr.current_thread().name = 'main'
- nthreads = int(vim.eval('s:update.threads'))
- plugs = vim.eval('s:update.todo')
- mac_gui = vim.eval('s:mac_gui') == '1'
-
- lock = thr.Lock()
- buf = Buffer(lock, len(plugs), G_PULL)
- buf_q, work_q = queue.Queue(), queue.Queue()
- for work in plugs.items():
- work_q.put(work)
-
- start_cnt = thr.active_count()
- for num in range(nthreads):
- tname = 'PlugT-{0:02}'.format(num)
- thread = PlugThread(tname, (buf_q, work_q, lock))
- thread.start()
- if mac_gui:
- rthread = RefreshThread(lock)
- rthread.start()
-
- while not buf_q.empty() or thr.active_count() != start_cnt:
- try:
- action, name, msg = buf_q.get(True, 0.25)
- buf.write(action, name, ['OK'] if not msg else msg)
- buf_q.task_done()
- except queue.Empty:
- pass
- except KeyboardInterrupt:
- G_STOP.set()
-
- if mac_gui:
- rthread.stop()
- rthread.join()
-
-main()
-EOF
-endfunction
-
-function! s:update_ruby()
- ruby << EOF
- module PlugStream
- SEP = ["\r", "\n", nil]
- def get_line
- buffer = ''
- loop do
- char = readchar rescue return
- if SEP.include? char.chr
- buffer << $/
- break
- else
- buffer << char
- end
- end
- buffer
- end
- end unless defined?(PlugStream)
-
- def esc arg
- %["#{arg.gsub('"', '\"')}"]
- end
-
- def killall pid
- pids = [pid]
- if /mswin|mingw|bccwin/ =~ RUBY_PLATFORM
- pids.each { |pid| Process.kill 'INT', pid.to_i rescue nil }
- else
- unless `which pgrep 2> /dev/null`.empty?
- children = pids
- until children.empty?
- children = children.map { |pid|
- `pgrep -P #{pid}`.lines.map { |l| l.chomp }
- }.flatten
- pids += children
- end
- end
- pids.each { |pid| Process.kill 'TERM', pid.to_i rescue nil }
- end
- end
-
- def compare_git_uri a, b
- regex = %r{^(?:\w+://)?(?:[^@/]*@)?([^:/]*(?::[0-9]*)?)[:/](.*?)(?:\.git)?/?$}
- regex.match(a).to_a.drop(1) == regex.match(b).to_a.drop(1)
- end
-
- require 'thread'
- require 'fileutils'
- require 'timeout'
- running = true
- iswin = VIM::evaluate('s:is_win').to_i == 1
- pull = VIM::evaluate('s:update.pull').to_i == 1
- base = VIM::evaluate('g:plug_home')
- all = VIM::evaluate('s:update.todo')
- limit = VIM::evaluate('get(g:, "plug_timeout", 60)')
- tries = VIM::evaluate('get(g:, "plug_retries", 2)') + 1
- nthr = VIM::evaluate('s:update.threads').to_i
- maxy = VIM::evaluate('winheight(".")').to_i
- vim7 = VIM::evaluate('v:version').to_i <= 703 && RUBY_PLATFORM =~ /darwin/
- cd = iswin ? 'cd /d' : 'cd'
- tot = VIM::evaluate('len(s:update.todo)') || 0
- bar = ''
- skip = 'Already installed'
- mtx = Mutex.new
- take1 = proc { mtx.synchronize { running && all.shift } }
- logh = proc {
- cnt = bar.length
- $curbuf[1] = "#{pull ? 'Updating' : 'Installing'} plugins (#{cnt}/#{tot})"
- $curbuf[2] = '[' + bar.ljust(tot) + ']'
- VIM::command('normal! 2G')
- VIM::command('redraw')
- }
- where = proc { |name| (1..($curbuf.length)).find { |l| $curbuf[l] =~ /^[-+x*] #{name}:/ } }
- log = proc { |name, result, type|
- mtx.synchronize do
- ing = ![true, false].include?(type)
- bar += type ? '=' : 'x' unless ing
- b = case type
- when :install then '+' when :update then '*'
- when true, nil then '-' else
- VIM::command("call add(s:update.errors, '#{name}')")
- 'x'
- end
- result =
- if type || type.nil?
- ["#{b} #{name}: #{result.lines.to_a.last || 'OK'}"]
- elsif result =~ /^Interrupted|^Timeout/
- ["#{b} #{name}: #{result}"]
- else
- ["#{b} #{name}"] + result.lines.map { |l| " " << l }
- end
- if lnum = where.call(name)
- $curbuf.delete lnum
- lnum = 4 if ing && lnum > maxy
- end
- result.each_with_index do |line, offset|
- $curbuf.append((lnum || 4) - 1 + offset, line.gsub(/\e\[./, '').chomp)
- end
- logh.call
- end
- }
- bt = proc { |cmd, name, type, cleanup|
- tried = timeout = 0
- begin
- tried += 1
- timeout += limit
- fd = nil
- data = ''
- if iswin
- Timeout::timeout(timeout) do
- tmp = VIM::evaluate('tempname()')
- system("(#{cmd}) > #{tmp}")
- data = File.read(tmp).chomp
- File.unlink tmp rescue nil
- end
- else
- fd = IO.popen(cmd).extend(PlugStream)
- first_line = true
- log_prob = 1.0 / nthr
- while line = Timeout::timeout(timeout) { fd.get_line }
- data << line
- log.call name, line.chomp, type if name && (first_line || rand < log_prob)
- first_line = false
- end
- fd.close
- end
- [$? == 0, data.chomp]
- rescue Timeout::Error, Interrupt => e
- if fd && !fd.closed?
- killall fd.pid
- fd.close
- end
- cleanup.call if cleanup
- if e.is_a?(Timeout::Error) && tried < tries
- 3.downto(1) do |countdown|
- s = countdown > 1 ? 's' : ''
- log.call name, "Timeout. Will retry in #{countdown} second#{s} ...", type
- sleep 1
- end
- log.call name, 'Retrying ...', type
- retry
- end
- [false, e.is_a?(Interrupt) ? "Interrupted!" : "Timeout!"]
- end
- }
- main = Thread.current
- threads = []
- watcher = Thread.new {
- if vim7
- while VIM::evaluate('getchar(1)')
- sleep 0.1
- end
- else
- require 'io/console' # >= Ruby 1.9
- nil until IO.console.getch == 3.chr
- end
- mtx.synchronize do
- running = false
- threads.each { |t| t.raise Interrupt } unless vim7
- end
- threads.each { |t| t.join rescue nil }
- main.kill
- }
- refresh = Thread.new {
- while true
- mtx.synchronize do
- break unless running
- VIM::command('noautocmd normal! a')
- end
- sleep 0.2
- end
- } if VIM::evaluate('s:mac_gui') == 1
-
- clone_opt = VIM::evaluate('s:clone_opt').join(' ')
- progress = VIM::evaluate('s:progress_opt(1)')
- nthr.times do
- mtx.synchronize do
- threads << Thread.new {
- while pair = take1.call
- name = pair.first
- dir, uri, tag = pair.last.values_at *%w[dir uri tag]
- exists = File.directory? dir
- ok, result =
- if exists
- chdir = "#{cd} #{iswin ? dir : esc(dir)}"
- ret, data = bt.call "#{chdir} && git rev-parse --abbrev-ref HEAD 2>&1 && git config -f .git/config remote.origin.url", nil, nil, nil
- current_uri = data.lines.to_a.last
- if !ret
- if data =~ /^Interrupted|^Timeout/
- [false, data]
- else
- [false, [data.chomp, "PlugClean required."].join($/)]
- end
- elsif !compare_git_uri(current_uri, uri)
- [false, ["Invalid URI: #{current_uri}",
- "Expected: #{uri}",
- "PlugClean required."].join($/)]
- else
- if pull
- log.call name, 'Updating ...', :update
- fetch_opt = (tag && File.exist?(File.join(dir, '.git/shallow'))) ? '--depth 99999999' : ''
- bt.call "#{chdir} && git fetch #{fetch_opt} #{progress} 2>&1", name, :update, nil
- else
- [true, skip]
- end
- end
- else
- d = esc dir.sub(%r{[\\/]+$}, '')
- log.call name, 'Installing ...', :install
- bt.call "git clone #{clone_opt unless tag} #{progress} #{uri} #{d} 2>&1", name, :install, proc {
- FileUtils.rm_rf dir
- }
- end
- mtx.synchronize { VIM::command("let s:update.new['#{name}'] = 1") } if !exists && ok
- log.call name, result, ok
- end
- } if running
- end
- end
- threads.each { |t| t.join rescue nil }
- logh.call
- refresh.kill if refresh
- watcher.kill
-EOF
-endfunction
-
-function! s:shellesc_cmd(arg, script)
- let escaped = substitute('"'.a:arg.'"', '[&|<>()@^!"]', '^&', 'g')
- return substitute(escaped, '%', (a:script ? '%' : '^') . '&', 'g')
-endfunction
-
-function! s:shellesc_ps1(arg)
- return "'".substitute(escape(a:arg, '\"'), "'", "''", 'g')."'"
-endfunction
-
-function! s:shellesc_sh(arg)
- return "'".substitute(a:arg, "'", "'\\\\''", 'g')."'"
-endfunction
-
-" Escape the shell argument based on the shell.
-" Vim and Neovim's shellescape() are insufficient.
-" 1. shellslash determines whether to use single/double quotes.
-" Double-quote escaping is fragile for cmd.exe.
-" 2. It does not work for powershell.
-" 3. It does not work for *sh shells if the command is executed
-" via cmd.exe (ie. cmd.exe /c sh -c command command_args)
-" 4. It does not support batchfile syntax.
-"
-" Accepts an optional dictionary with the following keys:
-" - shell: same as Vim/Neovim 'shell' option.
-" If unset, fallback to 'cmd.exe' on Windows or 'sh'.
-" - script: If truthy and shell is cmd.exe, escape for batchfile syntax.
-function! plug#shellescape(arg, ...)
- if a:arg =~# '^[A-Za-z0-9_/:.-]\+$'
- return a:arg
- endif
- let opts = a:0 > 0 && type(a:1) == s:TYPE.dict ? a:1 : {}
- let shell = get(opts, 'shell', s:is_win ? 'cmd.exe' : 'sh')
- let script = get(opts, 'script', 1)
- if shell =~# 'cmd\(\.exe\)\?$'
- return s:shellesc_cmd(a:arg, script)
- elseif s:is_powershell(shell)
- return s:shellesc_ps1(a:arg)
- endif
- return s:shellesc_sh(a:arg)
-endfunction
-
-function! s:glob_dir(path)
- return map(filter(s:glob(a:path, '**'), 'isdirectory(v:val)'), 's:dirpath(v:val)')
-endfunction
-
-function! s:progress_bar(line, bar, total)
- call setline(a:line, '[' . s:lpad(a:bar, a:total) . ']')
-endfunction
-
-function! s:compare_git_uri(a, b)
- " See `git help clone'
- " https:// [user@] github.com[:port] / junegunn/vim-plug [.git]
- " [git@] github.com[:port] : junegunn/vim-plug [.git]
- " file:// / junegunn/vim-plug [/]
- " / junegunn/vim-plug [/]
- let pat = '^\%(\w\+://\)\='.'\%([^@/]*@\)\='.'\([^:/]*\%(:[0-9]*\)\=\)'.'[:/]'.'\(.\{-}\)'.'\%(\.git\)\=/\?$'
- let ma = matchlist(a:a, pat)
- let mb = matchlist(a:b, pat)
- return ma[1:2] ==# mb[1:2]
-endfunction
-
-function! s:format_message(bullet, name, message)
- if a:bullet != 'x'
- return [printf('%s %s: %s', a:bullet, a:name, s:lastline(a:message))]
- else
- let lines = map(s:lines(a:message), '" ".v:val')
- return extend([printf('x %s:', a:name)], lines)
- endif
-endfunction
-
-function! s:with_cd(cmd, dir, ...)
- let script = a:0 > 0 ? a:1 : 1
- return printf('cd%s %s && %s', s:is_win ? ' /d' : '', plug#shellescape(a:dir, {'script': script}), a:cmd)
-endfunction
-
-function! s:system(cmd, ...)
- let batchfile = ''
- try
- let [sh, shellcmdflag, shrd] = s:chsh(1)
- if type(a:cmd) == s:TYPE.list
- " Neovim's system() supports list argument to bypass the shell
- " but it cannot set the working directory for the command.
- " Assume that the command does not rely on the shell.
- if has('nvim') && a:0 == 0
- return system(a:cmd)
- endif
- let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"shell": &shell, "script": 0})'))
- if s:is_powershell(&shell)
- let cmd = '& ' . cmd
- endif
- else
- let cmd = a:cmd
- endif
- if a:0 > 0
- let cmd = s:with_cd(cmd, a:1, type(a:cmd) != s:TYPE.list)
- endif
- if s:is_win && type(a:cmd) != s:TYPE.list
- let [batchfile, cmd] = s:batchfile(cmd)
- endif
- return system(cmd)
- finally
- let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
- if s:is_win && filereadable(batchfile)
- call delete(batchfile)
- endif
- endtry
-endfunction
-
-function! s:system_chomp(...)
- let ret = call('s:system', a:000)
- return v:shell_error ? '' : substitute(ret, '\n$', '', '')
-endfunction
-
-function! s:git_validate(spec, check_branch)
- let err = ''
- if isdirectory(a:spec.dir)
- let result = [s:git_local_branch(a:spec.dir), s:git_origin_url(a:spec.dir)]
- let remote = result[-1]
- if empty(remote)
- let err = join([remote, 'PlugClean required.'], "\n")
- elseif !s:compare_git_uri(remote, a:spec.uri)
- let err = join(['Invalid URI: '.remote,
- \ 'Expected: '.a:spec.uri,
- \ 'PlugClean required.'], "\n")
- elseif a:check_branch && has_key(a:spec, 'commit')
- let sha = s:git_revision(a:spec.dir)
- if empty(sha)
- let err = join(add(result, 'PlugClean required.'), "\n")
- elseif !s:hash_match(sha, a:spec.commit)
- let err = join([printf('Invalid HEAD (expected: %s, actual: %s)',
- \ a:spec.commit[:6], sha[:6]),
- \ 'PlugUpdate required.'], "\n")
- endif
- elseif a:check_branch
- let current_branch = result[0]
- " Check tag
- let origin_branch = s:git_origin_branch(a:spec)
- if has_key(a:spec, 'tag')
- let tag = s:system_chomp('git describe --exact-match --tags HEAD 2>&1', a:spec.dir)
- if a:spec.tag !=# tag && a:spec.tag !~ '\*'
- let err = printf('Invalid tag: %s (expected: %s). Try PlugUpdate.',
- \ (empty(tag) ? 'N/A' : tag), a:spec.tag)
- endif
- " Check branch
- elseif origin_branch !=# current_branch
- let err = printf('Invalid branch: %s (expected: %s). Try PlugUpdate.',
- \ current_branch, origin_branch)
- endif
- if empty(err)
- let [ahead, behind] = split(s:lastline(s:system([
- \ 'git', 'rev-list', '--count', '--left-right',
- \ printf('HEAD...origin/%s', origin_branch)
- \ ], a:spec.dir)), '\t')
- if !v:shell_error && ahead
- if behind
- " Only mention PlugClean if diverged, otherwise it's likely to be
- " pushable (and probably not that messed up).
- let err = printf(
- \ "Diverged from origin/%s (%d commit(s) ahead and %d commit(s) behind!\n"
- \ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', origin_branch, ahead, behind)
- else
- let err = printf("Ahead of origin/%s by %d commit(s).\n"
- \ .'Cannot update until local changes are pushed.',
- \ origin_branch, ahead)
- endif
- endif
- endif
- endif
- else
- let err = 'Not found'
- endif
- return [err, err =~# 'PlugClean']
-endfunction
-
-function! s:rm_rf(dir)
- if isdirectory(a:dir)
- return s:system(s:is_win
- \ ? 'rmdir /S /Q '.plug#shellescape(a:dir)
- \ : ['rm', '-rf', a:dir])
- endif
-endfunction
-
-function! s:clean(force)
- call s:prepare()
- call append(0, 'Searching for invalid plugins in '.g:plug_home)
- call append(1, '')
-
- " List of valid directories
- let dirs = []
- let errs = {}
- let [cnt, total] = [0, len(g:plugs)]
- for [name, spec] in items(g:plugs)
- if !s:is_managed(name)
- call add(dirs, spec.dir)
- else
- let [err, clean] = s:git_validate(spec, 1)
- if clean
- let errs[spec.dir] = s:lines(err)[0]
- else
- call add(dirs, spec.dir)
- endif
- endif
- let cnt += 1
- call s:progress_bar(2, repeat('=', cnt), total)
- normal! 2G
- redraw
- endfor
-
- let allowed = {}
- for dir in dirs
- let allowed[s:dirpath(s:plug_fnamemodify(dir, ':h:h'))] = 1
- let allowed[dir] = 1
- for child in s:glob_dir(dir)
- let allowed[child] = 1
- endfor
- endfor
-
- let todo = []
- let found = sort(s:glob_dir(g:plug_home))
- while !empty(found)
- let f = remove(found, 0)
- if !has_key(allowed, f) && isdirectory(f)
- call add(todo, f)
- call append(line('$'), '- ' . f)
- if has_key(errs, f)
- call append(line('$'), ' ' . errs[f])
- endif
- let found = filter(found, 'stridx(v:val, f) != 0')
- end
- endwhile
-
- 4
- redraw
- if empty(todo)
- call append(line('$'), 'Already clean.')
- else
- let s:clean_count = 0
- call append(3, ['Directories to delete:', ''])
- redraw!
- if a:force || s:ask_no_interrupt('Delete all directories?')
- call s:delete([6, line('$')], 1)
- else
- call setline(4, 'Cancelled.')
- nnoremap <silent> <buffer> d :set opfunc=<sid>delete_op<cr>g@
- nmap <silent> <buffer> dd d_
- xnoremap <silent> <buffer> d :<c-u>call <sid>delete_op(visualmode(), 1)<cr>
- echo 'Delete the lines (d{motion}) to delete the corresponding directories'
- endif
- endif
- 4
- setlocal nomodifiable
-endfunction
-
-function! s:delete_op(type, ...)
- call s:delete(a:0 ? [line("'<"), line("'>")] : [line("'["), line("']")], 0)
-endfunction
-
-function! s:delete(range, force)
- let [l1, l2] = a:range
- let force = a:force
- let err_count = 0
- while l1 <= l2
- let line = getline(l1)
- if line =~ '^- ' && isdirectory(line[2:])
- execute l1
- redraw!
- let answer = force ? 1 : s:ask('Delete '.line[2:].'?', 1)
- let force = force || answer > 1
- if answer
- let err = s:rm_rf(line[2:])
- setlocal modifiable
- if empty(err)
- call setline(l1, '~'.line[1:])
- let s:clean_count += 1
- else
- delete _
- call append(l1 - 1, s:format_message('x', line[1:], err))
- let l2 += len(s:lines(err))
- let err_count += 1
- endif
- let msg = printf('Removed %d directories.', s:clean_count)
- if err_count > 0
- let msg .= printf(' Failed to remove %d directories.', err_count)
- endif
- call setline(4, msg)
- setlocal nomodifiable
- endif
- endif
- let l1 += 1
- endwhile
-endfunction
-
-function! s:upgrade()
- echo 'Downloading the latest version of vim-plug'
- redraw
- let tmp = s:plug_tempname()
- let new = tmp . '/plug.vim'
-
- try
- let out = s:system(['git', 'clone', '--depth', '1', s:plug_src, tmp])
- if v:shell_error
- return s:err('Error upgrading vim-plug: '. out)
- endif
-
- if readfile(s:me) ==# readfile(new)
- echo 'vim-plug is already up-to-date'
- return 0
- else
- call rename(s:me, s:me . '.old')
- call rename(new, s:me)
- unlet g:loaded_plug
- echo 'vim-plug has been upgraded'
- return 1
- endif
- finally
- silent! call s:rm_rf(tmp)
- endtry
-endfunction
-
-function! s:upgrade_specs()
- for spec in values(g:plugs)
- let spec.frozen = get(spec, 'frozen', 0)
- endfor
-endfunction
-
-function! s:status()
- call s:prepare()
- call append(0, 'Checking plugins')
- call append(1, '')
-
- let ecnt = 0
- let unloaded = 0
- let [cnt, total] = [0, len(g:plugs)]
- for [name, spec] in items(g:plugs)
- let is_dir = isdirectory(spec.dir)
- if has_key(spec, 'uri')
- if is_dir
- let [err, _] = s:git_validate(spec, 1)
- let [valid, msg] = [empty(err), empty(err) ? 'OK' : err]
- else
- let [valid, msg] = [0, 'Not found. Try PlugInstall.']
- endif
- else
- if is_dir
- let [valid, msg] = [1, 'OK']
- else
- let [valid, msg] = [0, 'Not found.']
- endif
- endif
- let cnt += 1
- let ecnt += !valid
- " `s:loaded` entry can be missing if PlugUpgraded
- if is_dir && get(s:loaded, name, -1) == 0
- let unloaded = 1
- let msg .= ' (not loaded)'
- endif
- call s:progress_bar(2, repeat('=', cnt), total)
- call append(3, s:format_message(valid ? '-' : 'x', name, msg))
- normal! 2G
- redraw
- endfor
- call setline(1, 'Finished. '.ecnt.' error(s).')
- normal! gg
- setlocal nomodifiable
- if unloaded
- echo "Press 'L' on each line to load plugin, or 'U' to update"
- nnoremap <silent> <buffer> L :call <SID>status_load(line('.'))<cr>
- xnoremap <silent> <buffer> L :call <SID>status_load(line('.'))<cr>
- end
-endfunction
-
-function! s:extract_name(str, prefix, suffix)
- return matchstr(a:str, '^'.a:prefix.' \zs[^:]\+\ze:.*'.a:suffix.'$')
-endfunction
-
-function! s:status_load(lnum)
- let line = getline(a:lnum)
- let name = s:extract_name(line, '-', '(not loaded)')
- if !empty(name)
- call plug#load(name)
- setlocal modifiable
- call setline(a:lnum, substitute(line, ' (not loaded)$', '', ''))
- setlocal nomodifiable
- endif
-endfunction
-
-function! s:status_update() range
- let lines = getline(a:firstline, a:lastline)
- let names = filter(map(lines, 's:extract_name(v:val, "[x-]", "")'), '!empty(v:val)')
- if !empty(names)
- echo
- execute 'PlugUpdate' join(names)
- endif
-endfunction
-
-function! s:is_preview_window_open()
- silent! wincmd P
- if &previewwindow
- wincmd p
- return 1
- endif
-endfunction
-
-function! s:find_name(lnum)
- for lnum in reverse(range(1, a:lnum))
- let line = getline(lnum)
- if empty(line)
- return ''
- endif
- let name = s:extract_name(line, '-', '')
- if !empty(name)
- return name
- endif
- endfor
- return ''
-endfunction
-
-function! s:preview_commit()
- if b:plug_preview < 0
- let b:plug_preview = !s:is_preview_window_open()
- endif
-
- let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-f]\{7,9}')
- if empty(sha)
- let name = matchstr(getline('.'), '^- \zs[^:]*\ze:$')
- if empty(name)
- return
- endif
- let title = 'HEAD@{1}..'
- let command = 'git diff --no-color HEAD@{1}'
- else
- let title = sha
- let command = 'git show --no-color --pretty=medium '.sha
- let name = s:find_name(line('.'))
- endif
-
- if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir)
- return
- endif
-
- if exists('g:plug_pwindow') && !s:is_preview_window_open()
- execute g:plug_pwindow
- execute 'e' title
- else
- execute 'pedit' title
- wincmd P
- endif
- setlocal previewwindow filetype=git buftype=nofile bufhidden=wipe nobuflisted modifiable
- let batchfile = ''
- try
- let [sh, shellcmdflag, shrd] = s:chsh(1)
- let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && '.command
- if s:is_win
- let [batchfile, cmd] = s:batchfile(cmd)
- endif
- execute 'silent %!' cmd
- finally
- let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
- if s:is_win && filereadable(batchfile)
- call delete(batchfile)
- endif
- endtry
- setlocal nomodifiable
- nnoremap <silent> <buffer> q :q<cr>
- wincmd p
-endfunction
-
-function! s:section(flags)
- call search('\(^[x-] \)\@<=[^:]\+:', a:flags)
-endfunction
-
-function! s:format_git_log(line)
- let indent = ' '
- let tokens = split(a:line, nr2char(1))
- if len(tokens) != 5
- return indent.substitute(a:line, '\s*$', '', '')
- endif
- let [graph, sha, refs, subject, date] = tokens
- let tag = matchstr(refs, 'tag: [^,)]\+')
- let tag = empty(tag) ? ' ' : ' ('.tag.') '
- return printf('%s%s%s%s%s (%s)', indent, graph, sha, tag, subject, date)
-endfunction
-
-function! s:append_ul(lnum, text)
- call append(a:lnum, ['', a:text, repeat('-', len(a:text))])
-endfunction
-
-function! s:diff()
- call s:prepare()
- call append(0, ['Collecting changes ...', ''])
- let cnts = [0, 0]
- let bar = ''
- let total = filter(copy(g:plugs), 's:is_managed(v:key) && isdirectory(v:val.dir)')
- call s:progress_bar(2, bar, len(total))
- for origin in [1, 0]
- let plugs = reverse(sort(items(filter(copy(total), (origin ? '' : '!').'(has_key(v:val, "commit") || has_key(v:val, "tag"))'))))
- if empty(plugs)
- continue
- endif
- call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:')
- for [k, v] in plugs
- let branch = s:git_origin_branch(v)
- if len(branch)
- let range = origin ? '..origin/'.branch : 'HEAD@{1}..'
- let cmd = ['git', 'log', '--graph', '--color=never']
- if s:git_version_requirement(2, 10, 0)
- call add(cmd, '--no-show-signature')
- endif
- call extend(cmd, ['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range])
- if has_key(v, 'rtp')
- call extend(cmd, ['--', v.rtp])
- endif
- let diff = s:system_chomp(cmd, v.dir)
- if !empty(diff)
- let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : ''
- call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)')))
- let cnts[origin] += 1
- endif
- endif
- let bar .= '='
- call s:progress_bar(2, bar, len(total))
- normal! 2G
- redraw
- endfor
- if !cnts[origin]
- call append(5, ['', 'N/A'])
- endif
- endfor
- call setline(1, printf('%d plugin(s) updated.', cnts[0])
- \ . (cnts[1] ? printf(' %d plugin(s) have pending updates.', cnts[1]) : ''))
-
- if cnts[0] || cnts[1]
- nnoremap <silent> <buffer> <plug>(plug-preview) :silent! call <SID>preview_commit()<cr>
- if empty(maparg("\<cr>", 'n'))
- nmap <buffer> <cr> <plug>(plug-preview)
- endif
- if empty(maparg('o', 'n'))
- nmap <buffer> o <plug>(plug-preview)
- endif
- endif
- if cnts[0]
- nnoremap <silent> <buffer> X :call <SID>revert()<cr>
- echo "Press 'X' on each block to revert the update"
- endif
- normal! gg
- setlocal nomodifiable
-endfunction
-
-function! s:revert()
- if search('^Pending updates', 'bnW')
- return
- endif
-
- let name = s:find_name(line('.'))
- if empty(name) || !has_key(g:plugs, name) ||
- \ input(printf('Revert the update of %s? (y/N) ', name)) !~? '^y'
- return
- endif
-
- call s:system('git reset --hard HEAD@{1} && git checkout '.plug#shellescape(g:plugs[name].branch).' --', g:plugs[name].dir)
- setlocal modifiable
- normal! "_dap
- setlocal nomodifiable
- echo 'Reverted'
-endfunction
-
-function! s:snapshot(force, ...) abort
- call s:prepare()
- setf vim
- call append(0, ['" Generated by vim-plug',
- \ '" '.strftime("%c"),
- \ '" :source this file in vim to restore the snapshot',
- \ '" or execute: vim -S snapshot.vim',
- \ '', '', 'PlugUpdate!'])
- 1
- let anchor = line('$') - 3
- let names = sort(keys(filter(copy(g:plugs),
- \'has_key(v:val, "uri") && isdirectory(v:val.dir)')))
- for name in reverse(names)
- let sha = has_key(g:plugs[name], 'commit') ? g:plugs[name].commit : s:git_revision(g:plugs[name].dir)
- if !empty(sha)
- call append(anchor, printf("silent! let g:plugs['%s'].commit = '%s'", name, sha))
- redraw
- endif
- endfor
-
- if a:0 > 0
- let fn = s:plug_expand(a:1)
- if filereadable(fn) && !(a:force || s:ask(a:1.' already exists. Overwrite?'))
- return
- endif
- call writefile(getline(1, '$'), fn)
- echo 'Saved as '.a:1
- silent execute 'e' s:esc(fn)
- setf vim
- endif
-endfunction
-
-function! s:split_rtp()
- return split(&rtp, '\\\@<!,')
-endfunction
-
-let s:first_rtp = s:escrtp(get(s:split_rtp(), 0, ''))
-let s:last_rtp = s:escrtp(get(s:split_rtp(), -1, ''))
-
-if exists('g:plugs')
- let g:plugs_order = get(g:, 'plugs_order', keys(g:plugs))
- call s:upgrade_specs()
- call s:define_commands()
-endif
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/home-config/spotify-player/app.toml b/home-config/spotify-player/app.toml
deleted file mode 100644
index 4eac5e4..0000000
--- a/home-config/spotify-player/app.toml
+++ /dev/null
@@ -1,34 +0,0 @@
-theme = "dracula"
-client_id = "4b1219bdc29945bc8ca914f80a8a6a47"
-client_port = 8888
-playback_format = """
-{track} • {artists}
-{album}
-{metadata}"""
-tracks_playback_limit = 50
-app_refresh_duration_in_ms = 32
-playback_refresh_duration_in_ms = 0
-cover_image_refresh_duration_in_ms = 2000
-page_size_in_rows = 20
-play_icon = "▶"
-pause_icon = "▌▌"
-liked_icon = "♥"
-border_type = "Plain"
-progress_bar_type = "Rectangle"
-playback_window_position = "Top"
-cover_img_length = 9
-cover_img_width = 5
-cover_img_scale = 1.0
-playback_window_width = 6
-enable_media_control = true
-enable_streaming = "DaemonOnly"
-enable_cover_image_cache = true
-default_device = "RyanThinkpad"
-
-[copy_command]
-command = "wlcopy"
-args = []
-
-[notify_format]
-summary = "{track} • {artists}"
-body = "{album}"
diff --git a/home-config/ssh/config b/home-config/ssh/config
deleted file mode 100644
index 45132d7..0000000
--- a/home-config/ssh/config
+++ /dev/null
@@ -1,20 +0,0 @@
-Match host * exec "gpg-connect-agent UPDATESTARTUPTTY /bye"
-
-Host rocApex
- HostName 129.158.232.104
- User root
-
-Host linode
- HostName 97.107.142.58
- User root
-
-Host hetzner
- HostName 5.161.207.21
- User root
-
-Host rncorepub
- Hostname 5.161.89.186
- User root
-
-Host *
- KexAlgorithms -sntrup761x25519-sha512@openssh.com
diff --git a/home-config/waybar/config b/home-config/waybar/config
deleted file mode 100644
index 375835e..0000000
--- a/home-config/waybar/config
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "layer": "top",
- "position": "top",
- "height": 30,
-
- "modules-left": ["hyprland/workspaces", "hyprland/submap"],
- "modules-center": ["hyprland/window"],
- "modules-right": ["tray", "custom/spotify", "privacy", "custom/weather", "custom/mail", "custom/storage", "backlight", "bluetooth", "pulseaudio", "network", "idle_inhibitor", "battery", "clock"],
- "hyprland/submap": {
- "format": " {}"
- },
- "hyprland/workspaces": {
- "format": "{id}",
- "all-outputs": false,
- "disable-scroll": true
- },
- "hyprland/window": {
- "max-length": 80,
- "tooltip": false,
- "separate-outputs": true
- },
- "clock": {
- "format": "{:%a %d %b %H:%M}",
- "tooltip": false
- },
- "battery": {
- "format": "{capacity}% {icon}",
- "format-alt": "{time} {icon}",
- "format-icons": ["", "", "", "", ""],
- "format-charging": "{capacity}% ",
- "interval": 30,
- "states": {
- "warning": 25,
- "critical": 10
- },
- "tooltip": false,
- "bat":"BAT1"
- },
- "bluetooth": {
- "format": "󰂯",
- "format-disabled": "󰂲",
- "format-connected": "󰂯",
- "format-connected-battery": "󰂱 {device_battery_percentage}%",
- "on-click": "blueman-manager",
- "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
- "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
- "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
- "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%"
- },
- "network": {
- "format-alt": "{ipaddr}/{cidr} {icon} {bandwidthTotalBytes}󰹹",
- "format": "{ipaddr}/{cidr} {icon}",
- "format-alt-click": "click-right",
- "format-icons": {
- "wifi": ["󰤟", "󰤢" ,"󰤥", "󰤨"],
- "ethernet": [""],
- "disconnected": ["󰤭"]
- },
- "on-click": "foot -t alacritty doas nmtui",
- "tooltip": false
- },
- "privacy": {
- "icon-spacing":4,
- "icon-size":18,
- "transition-duration":250,
- "modules": [
- {
- "type":"screenshare",
- "tooltip":true,
- "tooltip-icon-size":24
- },
- {
- "type":"audio-in",
- "tooltip":true,
- "tooltip-icon-size":24
- }
- ]
- },
- "pulseaudio": {
- "format-alt": "{icon}",
- "format": "{volume} {icon}",
- "format-alt-click": "click-right",
- "format-muted": "",
- "format-icons": {
- "phone": [" ", " ", " ", " "],
- "default": ["", "", "", ""]
- },
- "scroll-step": 1,
- "on-click": "pavucontrol",
- "tooltip": false
- },
- "custom/spotify": {
- "interval": 2,
- "return-type": "json",
- "exec": "~/.config/waybar/modules/spotify.sh",
- "exec-if": "~/.config/waybar/modules/check-for-music.sh",
- "escape": true,
- "on-click": "playerctl play-pause"
- },
- "custom/storage": {
- "format-alt": "{} ",
- "format": "{percentage}% ",
- "format-alt-click": "click-right",
- "return-type": "json",
- "interval": 60,
- "exec": "~/.config/waybar/modules/storage.sh"
- },
- "backlight": {
- "format-alt": "{icon}",
- "format": "{percent}% {icon}",
- "format-alt-click": "click-right",
- "format-icons": ["", ""],
- "on-scroll-up": "light -A 1",
- "on-scroll-down": "light -U 1"
- },
- "custom/weather_OLD": {
- "format-alt": "{}",
- "format": "{alt}: {}",
- "format-alt-click": "click-right",
- "interval": 1800,
- "return-type": "json",
- "on-click": "foot -a ala-wttr -H curl https://v2.wttr.in",
- "exec": "~/.config/waybar/modules/weather.sh",
- "exec-if": "ping wttr.in -c1"
- },
- "custom/weather": {
- "format": "{} °F",
- "tooltip": true,
- "interval": 3600,
- "exec": "exit=101; while [ $exit = 101 ]; do wttrbar --main-indicator temp_F --fahrenheit; exit=$(echo $?); sleep 1; done",
- "on-click": "foot -a ala-wttr -H curl https://v2.wttr.in",
- "return-type": "json"
- },
- "idle_inhibitor": {
- "format": "{icon}",
- "format-icons": {
- "activated": "",
- "deactivated": ""
- },
- "tooltip": false
- },
- "custom/mail": {
- "format": "",
- "format-alt": "{alt} ",
- "format-alt-click": "click-right",
- "interval": 60,
- "return-type": "json",
- "exec": "~/.config/waybar/modules/mail.py",
- "tooltip": false
- },
- "tray": {
- "icon-size": 18
- }
-}
diff --git a/home-config/waybar/modules/check-for-music.sh b/home-config/waybar/modules/check-for-music.sh
deleted file mode 100755
index 3b735a2..0000000
--- a/home-config/waybar/modules/check-for-music.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-if [[ $(playerctl metadata --format '{{lc(status)}}' | grep playing) -eq 0 ]]; then
- exit 0
-else
- exit 1
-fi
diff --git a/home-config/waybar/modules/spotify.sh b/home-config/waybar/modules/spotify.sh
deleted file mode 100755
index fc732a1..0000000
--- a/home-config/waybar/modules/spotify.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-class=$(playerctl metadata --format '{{lc(status)}}')
-icon="󰎆"
-
-if [[ $class == "playing" ]]; then
- info=$(playerctl metadata --format '{{artist}} - {{title}}')
- if [[ ${#info} > 40 ]]; then
- info=$(playerctl metadata --format '{{title}}' | cut -c1-40)"..."
- fi
- text=$info" "$icon
-elif [[ $class == "paused" ]]; then
- text=$icon
-elif [[ $class == "stopped" ]]; then
- text=""
-fi
-
-echo -e "{\"text\":\""$text"\", \"class\":\""$class"\"}"
-
diff --git a/home-config/waybar/modules/storage.sh b/home-config/waybar/modules/storage.sh
deleted file mode 100755
index 90cc3dc..0000000
--- a/home-config/waybar/modules/storage.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-mount="/"
-warning=20
-critical=10
-
-df -h -P -l "$mount" | awk -v warning=$warning -v critical=$critical '
-/\/.*/ {
- text=$4
- tooltip="Filesystem: "$1"\rSize: "$2"\rUsed: "$3"\rAvail: "$4"\rUse%: "$5"\rMounted on: "$6
- use=$5
- exit 0
-}
-END {
- class=""
- gsub(/%$/,"",use)
- if ((100 - use) < critical) {
- class="critical"
- } else if ((100 - use) < warning) {
- class="warning"
- }
- print "{\"text\":\""text"\", \"percentage\":"use",\"tooltip\":\""tooltip"\", \"class\":\""class"\"}"
-}
-'
-
diff --git a/home-config/waybar/modules/weather.sh b/home-config/waybar/modules/weather.sh
deleted file mode 100755
index 01faffc..0000000
--- a/home-config/waybar/modules/weather.sh
+++ /dev/null
@@ -1,77 +0,0 @@
-cachedir=~/.cache/rbn
-cachefile=${0##*/}-$1
-
-if [ ! -d $cachedir ]; then
- mkdir -p $cachedir
-fi
-
-if [ ! -f $cachedir/$cachefile ]; then
- touch $cachedir/$cachefile
-fi
-
-# Save current IFS
-SAVEIFS=$IFS
-# Change IFS to new line.
-IFS=$'\n'
-
-cacheage=$(($(date +%s) - $(stat -c '%Y' "$cachedir/$cachefile")))
-if [ $cacheage -gt 1740 ] || [ ! -s $cachedir/$cachefile ]; then
- data=($(curl -s https://en.wttr.in/$1\?0qnT 2>&1))
- echo ${data[0]} | cut -f1 -d, > $cachedir/$cachefile
- echo ${data[1]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile
- echo ${data[2]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile
-fi
-
-weather=($(cat $cachedir/$cachefile))
-
-# Restore IFSClear
-IFS=$SAVEIFS
-
-temperature=$(echo ${weather[2]} | sed -E 's/([[:digit:]]+)\.\./\1 to /g')
-
-#echo ${weather[1]##*,}
-
-# https://fontawesome.com/icons?s=solid&c=weather
-case $(echo ${weather[1]##*,} | tr '[:upper:]' '[:lower:]') in
-"clear" | "sunny")
- condition=""
- ;;
-"partly cloudy")
- condition=""
- ;;
-"cloudy")
- condition=""
- ;;
-"overcast")
- condition=""
- ;;
-"mist" | "fog" | "freezing fog")
- condition="敖"
- ;;
-"patchy rain possible" | "patchy light drizzle" | "light drizzle" | "patchy light rain" | "light rain" | "light rain shower" | "rain")
- condition="殺"
- ;;
-"moderate rain at times" | "moderate rain" | "heavy rain at times" | "heavy rain" | "moderate or heavy rain shower" | "torrential rain shower" | "rain shower")
- condition=""
- ;;
-"patchy snow possible" | "patchy sleet possible" | "patchy freezing drizzle possible" | "freezing drizzle" | "heavy freezing drizzle" | "light freezing rain" | "moderate or heavy freezing rain" | "light sleet" | "ice pellets" | "light sleet showers" | "moderate or heavy sleet showers")
- condition="流"
- ;;
-"blowing snow" | "moderate or heavy sleet" | "patchy light snow" | "light snow" | "light snow showers")
- condition="ﰕ"
- ;;
-"blizzard" | "patchy moderate snow" | "moderate snow" | "patchy heavy snow" | "heavy snow" | "moderate or heavy snow with thunder" | "moderate or heavy snow showers")
- condition=""
- ;;
-"thundery outbreaks possible" | "patchy light rain with thunder" | "moderate or heavy rain with thunder" | "patchy light snow with thunder")
- condition=""
- ;;
-*)
- condition=""
- echo -e "{\"text\":\""$condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}"
- ;;
-esac
-
-#echo $temp $condition
-
-echo -e "{\"text\":\""$temperature $condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}"
diff --git a/home-config/waybar/style.css b/home-config/waybar/style.css
deleted file mode 100644
index 548056f..0000000
--- a/home-config/waybar/style.css
+++ /dev/null
@@ -1,77 +0,0 @@
-* {
- border: none;
- border-radius: 0;
- font-family: AnonymicePro Nerd Font;
- font-size: 15px;
- box-shadow: none;
- text-shadow: none;
- transition-duration: 0s;
- color: white;
-}
-
-#waybar {
- background-color:rgba(0,0,0,0.25);
- color: white;
-}
-
-window {
- color: rgba(217, 216, 216, 1);
- background: rgba(35, 31, 32, 0.00);
-}
-
-window#waybar.solo {
- color: rgba(217, 216, 216, 1);
- background: rgba(35, 31, 32, 0.85);
-}
-
-#workspaces {
- margin: 0 5px;
-}
-
-#workspaces button {
- padding: 0 5px;
- color: rgba(217, 216, 216, 0.4);
-}
-
-#workspaces button.visible {
- color: rgba(217, 216, 216, 1);
-}
-
-#workspaces button.active {
- border-top: 3px solid rgba(217, 216, 216, 1);
- border-bottom: 3px solid rgba(217, 216, 216, 0);
-}
-
-#workspaces button.urgent {
- color: rgba(238, 46, 36, 1);
-}
-
-#mode, #battery, #cpu, #memory, #network, #bluetooth, #pulseaudio, #idle_inhibitor, #backlight, #custom-storage, #custom-spotify, #custom-weather, #custom-mail {
- margin: 0px 6px 0px 10px;
- min-width: 25px;
-}
-
-#clock {
- margin: 0px 16px 0px 10px;
- min-width: 140px;
-}
-
-#battery.warning {
- color: rgba(255, 210, 4, 1);
-}
-
-#battery.critical {
- color: rgba(238, 46, 36, 1);
-}
-
-#battery.charging {
- color: rgba(217, 216, 216, 1);
-}
-
-#custom-storage.warning {
- color: rgba(255, 210, 4, 1);
-}
-
-#custom-storage.critical {
- color: rgba(238, 46, 36, 1);
-}
diff --git a/modules/ryan-bootloader/uki.scm b/modules/ryan-bootloader/uki.scm
new file mode 100644
index 0000000..dce3917
--- /dev/null
+++ b/modules/ryan-bootloader/uki.scm
@@ -0,0 +1,115 @@
+(define-module (ryan-bootloader uki)
+ #:use-module (gnu bootloader)
+ #:use-module (ryan-packages bootloaders)
+ #:use-module (gnu packages bootloaders)
+ #:use-module (gnu packages efi)
+ #:use-module (gnu packages linux)
+ #:use-module (guix gexp)
+ #:use-module (guix modules)
+ #:use-module (srfi srfi-1)
+ #:export (uefi-uki-bootloader uefi-uki-signed-bootloader))
+
+;; config generator makes script creating uki images
+;; install runs script
+;; install device is path to uefi dir
+(define vendor "Guix")
+(define script-loc "/boot/install-uki.scm")
+
+(define* (uefi-uki-configuration-file #:optional cert privkey)
+ (lambda* (config entries #:key (old-entries '()) #:allow-other-keys)
+
+ (define (menu-entry->args e)
+ (let* ((boot (bootloader-configuration-bootloader config))
+ (stub (bootloader-package boot)))
+ #~(list "--os-release" #$(menu-entry-label e)
+ "--linux" #$(menu-entry-linux e) "--initrd" #$(menu-entry-initrd e)
+ "--cmdline" (string-join (list #$@(menu-entry-linux-arguments e)))
+ "--stub" #$(file-append stub "/libexec/" (systemd-stub-name))
+ #$@(if cert #~("--secureboot-certificate" #$cert) #~())
+ #$@(if privkey #~("--secureboot-private-key" #$privkey) #~()))))
+
+ (define (enum-filenames . args) ; same args as iota
+ (map (lambda (n) (string-append (number->string n) ".efi"))
+ (apply iota (map length args))))
+
+ (program-file "install-uki"
+ (with-imported-modules (source-module-closure '((guix build syscalls)
+ (guix build utils)))
+ #~(let* ((target (cadr (command-line)))
+ (vendir (string-append target "/EFI/" #$vendor))
+ (schema (string-append vendir "/boot.mgr"))
+ (findmnt #$(file-append util-linux "/bin/findmnt"))
+ (efibootmgr #$(file-append efibootmgr "/sbin/efibootmgr")))
+ (use-modules (guix build syscalls) (guix build utils)
+ (ice-9 popen) (ice-9 textual-ports))
+
+ (define (out name) (string-append vendir "/" name))
+ (define disk
+ (call-with-port
+ (open-pipe* OPEN_READ findmnt "-fnro" "SOURCE" "-T" target)
+ (lambda (port) (get-line port)))) ; only 1 line: the device
+ (define part
+ (substring disk (- (string-length disk) 1)))
+
+ ;; delete all boot entries and files we control
+ (when (file-exists? schema)
+ (call-with-input-file schema
+ (lambda (port)
+ (for-each (lambda (l)
+ (unless (string-null? l)
+ (system* efibootmgr "-B" "-L" l "-q")))
+ (string-split (get-string-all port) #\lf)))))
+ (when (directory-exists? vendir) (delete-file-recursively vendir))
+ (mkdir-p vendir)
+
+ (define (install port boot? oos)
+ (lambda (args label name)
+ (let ((minbytes (* 2 (stat:size (stat #$script-loc)))))
+ (put-string port label)
+ (put-char port #\lf)
+ (force-output port) ; make sure space is alloc'd
+ (apply invoke #$(file-append ukify "/bin/ukify")
+ "build" "-o" (out name) args)
+ ;; make sure we have enough space for next install-uki.scm
+ (when (and oos (< (free-disk-space vendir) minbytes)) (oos))
+ (invoke efibootmgr (if boot? "-c" "-C") "-L" label "--disk" disk "--part" part
+ "--loader" (string-append "\\EFI\\" #$vendor "\\" name) "-q"))))
+
+ (call-with-output-file schema
+ (lambda (port) ; prioritize latest UKIs in limited ESP space
+ (for-each (install port #t #f)
+ (list #$@(map-in-order menu-entry->args entries))
+ (list #$@(map-in-order menu-entry-label entries))
+ (list #$@(enum-filenames entries)))
+ (for-each ; old-entries can fail (out of space) we don't care
+ (lambda (args label name)
+ (define (cleanup . _) ; do exit early if out of space tho
+ (when (file-exists? (out name)) (delete-file (out name)))
+ (exit))
+ (with-exception-handler cleanup
+ (lambda _ ((install port #f cleanup) args label name))))
+ (list #$@(map-in-order menu-entry->args old-entries))
+ (list #$@(map-in-order menu-entry-label old-entries))
+ (list #$@(enum-filenames old-entries entries))))))))))
+
+(define install-uefi-uki
+ #~(lambda (bootloader target mount-point)
+ (invoke (string-append mount-point #$script-loc)
+ (string-append mount-point target))))
+
+(define* (make-uefi-uki-bootloader #:optional cert privkey)
+ (bootloader
+ (name 'uefi-uki)
+ (package systemd-stub)
+ (installer install-uefi-uki)
+ (disk-image-installer #f)
+ (configuration-file script-loc)
+ (configuration-file-generator (uefi-uki-configuration-file cert privkey))))
+
+;; IMPORTANT NOTE: if bootloader install fails, do not turn off your computer! until
+;; install succeeds, your system is unbootable.
+(define uefi-uki-bootloader (make-uefi-uki-bootloader))
+;; use ukify genkey to generate cert and privkey. DO NOT include in store.
+(define (uefi-uki-signed-bootloader cert privkey)
+ (make-uefi-uki-bootloader cert privkey))
+
diff --git a/modules/ryan-config/base-system.scm b/modules/ryan-config/base-system.scm
index ac1ac79..d84744b 100644
--- a/modules/ryan-config/base-system.scm
+++ b/modules/ryan-config/base-system.scm
@@ -4,6 +4,8 @@
#:use-module (gnu system setuid)
#:use-module (gnu packages admin)
#:use-module (gnu packages avahi)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages wm)
#:use-module (guix packages)
#:use-module (gnu packages shells)
#:use-module (guix build-system trivial)
@@ -12,11 +14,13 @@
#:use-module (gnu packages spice)
#:use-module (srfi srfi-1)
#:use-module (ryan-packages freedesktop)
+ ;#:use-module (ryan-packages hyprland)
#:use-module (ryan-packages wm)
#:use-module (ryan-packages virtualization)
#:use-module (ryan-packages linux)
+ #:use-module (ryan-packages login)
#:use-module (ryan-packages networking)
- #:use-module (rosenthal packages wm)
+ #:use-module (ryan-packages package-management)
#:use-module (rosenthal services networking)
#:use-module (gnu packages security-token)
#:use-module (gnu services security-token)
@@ -25,7 +29,8 @@
#:use-module (gnu services networking)
#:use-module (gnu services xorg)
#:use-module (gnu services ssh)
- #:use-module (gnu services nix)
+ #:use-module (ryan-services nix)
+ #:use-module (ryan-services networking)
#:use-module (gnu services sound)
#:use-module (gnu services docker)
#:use-module (gnu services avahi)
@@ -113,7 +118,7 @@
(name "ryan")
(comment "Ryan")
(group "users")
- (shell (file-append fish "/bin/fish"))
+ (shell (file-append zsh "/bin/zsh"))
(home-directory "/home/ryan")
(supplementary-groups '("wheel" "netdev" "audio" "video" "lp" "plugdev" "docker" "libvirt" "kvm" "dialout")))
%base-user-accounts))
@@ -121,46 +126,50 @@
;; Packages installed system-wide. Users can also install packages
;; under their own account: use 'guix search KEYWORD' to search
;; for packages and 'guix install PACKAGE' to install a package.
- (packages (append (map specification->package (list "sway"
- "hyprland"
- "swaybg"
- ;"swayidle"
- ;"swaylock-effects"
- "fuzzel"
- "foot"
- "pinentry-qt"
- "adwaita-icon-theme"
- "hicolor-icon-theme"
- "git"
- ;"waybar"
- "gnupg"
- "light"
- "avahi"
- "mako"
- "grim"
- "grimblast"
- "slurp"
- "wl-clipboard"
- ;"bluez"
- ;"blueman"
- "ldacbt"
- "libfreeaptx"
- "libfdk"
- "opendoas"
- ;"xdg-desktop-portal-wlr"
- "xdg-desktop-portal"
- "xdg-desktop-portal-gtk"
- "v4l2loopback-linux-module"
- "pipewire"
- "docker"
- ;"libvirt" ;New version inherited from service
- ;"virt-manager"
- "dconf"
- "wireplumber"
- "wireshark"
- "zsh"))
- (list my-ca-certs swaylock-effects-new xdg-desktop-portal-hyprland-ryan virt-manager-ovmf bluez-ryan blueman-ryan swayidle-new waybar-new hyprlock)
- %my-base-packages ))
+ (packages (append (map specification->package (list ;"sway"
+ ;"hyprland"
+ ;"swaybg"
+ ;"swayidle"
+ ;"swaylock-effects"
+ ;"fuzzel"
+ ;"foot"
+ "linux-pam" ; installed directly to get libs in profile directly
+ ;"pinentry-qt"
+ "adwaita-icon-theme"
+ "hicolor-icon-theme"
+ ;"git"
+ ;"waybar-experimental"
+ ;"gnupg"
+ "light"
+ "avahi"
+ ;"mako"
+ ;"grim"
+ ;"grimblast"
+ ;"slurp"
+ ;"wl-clipboard"
+ ;"bluez"
+ ;"blueman"
+ "ldacbt"
+ "libfreeaptx"
+ "libfdk"
+ "opendoas"
+ ;"xdg-desktop-portal-wlr"
+ ;"xdg-desktop-portal"
+ ;"xdg-desktop-portal-gtk"
+ "v4l2loopback-linux-module"
+ "pipewire"
+ "docker"
+ ;"libvirt" ;New version inherited from service
+ ;"virt-manager"
+ "dconf"
+ "wireplumber"
+ "wireshark"
+ ;"openconnect"
+ ;"openconnect-sso"
+ ;"webkitgtk-with-libsoup2" ; Needed for Go wails development
+ "zsh"))
+ (list my-ca-certs virt-manager-ovmf bluez-ryan netbird-bin) ;neovim-ryan)
+ %my-base-packages ))
;; Below is the list of system services. To search for available
;; services, run 'guix system search KEYWORD' in a terminal.
@@ -181,15 +190,65 @@
(publish-workstation? #f))) ;; do not advertise, I want this to be as silent as possible
(service docker-service-type)
; Tailscale daemon from rosenthal
- (service tailscale-service-type) ; TODO: Add BIRD socket
- (service nix-service-type)
+ ; (service tailscale-service-type
+ ; (tailscale-configuration
+ ; (socket "/var/run/tailscale/tailscaled.sock")))
+ (service netbird-service-type)
+ (service containerd-service-type)
+ (service nix-service-type
+ (nix-configuration
+ (package nix-ryan)))
+ (simple-service 'hyprlock-pam pam-root-service-type
+ (list
+ (pam-service
+ (name "hyprlock")
+ (auth
+ (list
+ (pam-entry (control "include")
+ (module "login")))))))
+ ; (simple-service 'ly-pam pam-root-service-type
+ ; (list
+ ; (pam-service
+ ; (name "ly")
+ ; (account
+ ; (list
+ ; (pam-entry (control "required")
+ ; (module "pam_unix.so"))))
+ ; (auth
+ ; (list
+ ; (pam-entry (control "required")
+ ; (module "pam_unix.so"))))
+ ; (password
+ ; (list
+ ; (pam-entry (control "required")
+ ; (module "pam_unix.so")
+ ; (arguments (list "sha512" "shadow")))))
+ ; (session
+ ; (list
+ ; (pam-entry (control "required")
+ ; (module "/gnu/store/4lhhf88iz9pdr624z5hnq2avlk1ny4ga-elogind-255.17/lib/security/pam_elogind.so")
+ ; (arguments (list "debug=yes")))
+ ; (pam-entry (control "required")
+ ; (module "pam_env.so"))
+ ; (pam-entry (control "required")
+ ; (module "pam_unix.so")))))))
+ (service kmscon-service-type
+ (kmscon-configuration
+ (virtual-terminal "tty7")
+ (login-program #~(string-append #$ly "/bin/ly"))))
(service libvirt-service-type
(libvirt-configuration
(libvirt libvirt-ovmf)
(unix-sock-group "libvirt")))
(service virtlog-service-type)
+ ;(service screen-locker-service-type
+ ; (screen-locker-configuration
+ ; (name "hyprlock")
+ ; (program (file-append swaylock "/bin/swaylock"))
+ ; (using-pam? #t)))
(simple-service 'spice-polkit polkit-service-type (list spice-gtk))
(simple-service 'hwdb-creation etc-service-type (list `("udev-here-oneoneone" ,(plain-file "issue" "test\n"))))
+ (simple-service 'ly-config etc-service-type (list `("ly/config.ini" , (local-file "./lyconfig.ini"))))
(service bluetooth-service-type
(bluetooth-configuration
(bluez bluez-ryan)
@@ -225,8 +284,16 @@
(inherit config)
(handle-power-key `ignore)
(handle-suspend-key `ignore)
+ (handle-hibernate-key 'ignore)
(handle-lid-switch `ignore)
+ (handle-lid-switch-docked 'ignore)
+ (handle-lid-switch-external-power 'ignore)
(kill-user-processes? #t)))
+ (network-manager-service-type config =>
+ (network-manager-configuration
+ (inherit config)
+ (vpn-plugins
+ (list network-manager-openconnect))))
(delete pulseaudio-service-type)
(delete gdm-service-type)
(delete avahi-service-type)
@@ -234,11 +301,11 @@
(delete alsa-service-type) )))
(name-service-switch %mdns-host-lookup-nss) ;; Enable .local lookup
(setuid-programs
- (append (list (file-like->setuid-program
- (file-append
+ (append (list ;(file-like->setuid-program
+ ;(file-append
;(specification->package "swaylock-effects")
- swaylock-effects-new
- "/bin/swaylock"))
+ ; swaylock-effects-new
+ ; "/bin/swaylock"))
(file-like->setuid-program
(file-append
(specification->package "wireshark")
diff --git a/modules/ryan-config/lyconfig.ini b/modules/ryan-config/lyconfig.ini
new file mode 100755
index 0000000..684a973
--- /dev/null
+++ b/modules/ryan-config/lyconfig.ini
@@ -0,0 +1,10 @@
+animation = colormix
+colormix_col1 = 0x00631E61
+colormix_col2 = 0x0060631E
+colormix_col3 = 0x001E6063
+bigclock = en
+bigclock_12hr = false
+clock = %c
+waylandsessions=/run/current-system/profile/share/wayland-sessions
+custom_sessions=/home/ryan/sessions
+setup_cmd=/home/ryan/rysway-launch
diff --git a/modules/ryan-packages/binaries.scm b/modules/ryan-packages/binaries.bak
similarity index 82%
rename from modules/ryan-packages/binaries.scm
rename to modules/ryan-packages/binaries.bak
index f05636d..fcda5de 100644
--- a/modules/ryan-packages/binaries.scm
+++ b/modules/ryan-packages/binaries.bak
@@ -52,4 +52,17 @@
"Terminal file-manager written in Go that is modern and extensible.")
(license license:expat)))
-superfile-bin
+(define-public brave-bin
+ (package
+ (name "brave-bin")
+ (version "nightly_1.72.12")
+ (source (origin
+ (method url-fetch)
+ (url (string-append "https://github.com/brave/brave-browser/releases/download/v1.72.12/brave-browser-" version "_amd64.deb"))
+ (sha256
+ (base32
+ "1ry62ck61gn4bxnkih3775pdlndp2ldxwifbjkxbj3wfd4f67xiv"))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan
+ #~'(("bin" "bin" #:include ("wrap
diff --git a/modules/ryan-packages/bootloaders.scm b/modules/ryan-packages/bootloaders.scm
new file mode 100644
index 0000000..dad3743
--- /dev/null
+++ b/modules/ryan-packages/bootloaders.scm
@@ -0,0 +1,148 @@
+(define-module (ryan-packages bootloaders)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages efi)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages gperf)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages python-crypto)
+ #:use-module (gnu packages pkg-config)
+ ;below for cryptsetup
+ #:use-module (gnu packages password-utils)
+ #:use-module (gnu packages cryptsetup)
+ #:use-module (gnu packages security-token)
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages tls)
+ #:use-module (guix gexp)
+ #:use-module (guix utils)
+ #:use-module (guix modules)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
+ #:use-module (guix build-system python))
+
+(define systemd-version "258")
+(define systemd-source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/systemd/systemd")
+ (commit (string-append "v" systemd-version))))
+ (file-name (git-file-name "systemd" systemd-version))
+ (sha256
+ (base32
+ "18gnp45gl1154jra6qv95k8y7ny6phdm87yqi5jdq13cadlrklf6"))))
+
+(define-public (systemd-stub-name)
+ (let ((arch (cond ((target-x86-32?) "ia32")
+ ((target-x86-64?) "x64")
+ ((target-arm32?) "arm")
+ ((target-aarch64?) "aa64")
+ ((target-riscv64?) "riscv64"))))
+ (string-append "linux" arch ".efi.stub")))
+
+(define-public systemd-stub
+ (package
+ (name "systemd-stub")
+ (version systemd-version)
+ (source systemd-source)
+ (build-system meson-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ `(list "-Defi=true" "-Dsbat-distro=guix"
+ "-Dsbat-distro-generation=1" ; package revision!
+ "-Dsbat-distro-summary=Guix System"
+ "-Dsbat-distro-url=https://guix.gnu.org"
+ ,(string-append "-Dsbat-distro-pkgname=" name)
+ ,(string-append "-Dsbat-distro-version=" version))
+ #:phases
+ #~(let ((stub #$(string-append "src/boot/" (systemd-stub-name))))
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key parallel-build? #:allow-other-keys)
+ (invoke "ninja" stub
+ "-j" (if parallel-build?
+ (number->string (parallel-job-count)) "1"))))
+ (replace 'install
+ (lambda _
+ (install-file stub (string-append #$output "/libexec"))))
+ (delete 'check)))))
+ (inputs (list libcap python-pyelftools `(,util-linux "lib")))
+ (native-inputs (list libxcrypt gperf pkg-config python-3 python-jinja2))
+ (home-page "https://systemd.io")
+ (synopsis "Unified kernel image UEFI stub")
+ (description "Simple UEFi boot stub that loads a conjoined kernel image and
+supporting data to their proper locations, before chainloading to the kernel.
+Supports measured and/or verified boot environments.")
+ (license license:lgpl2.1+)))
+
+(define-public ukify
+ (package
+ (name "ukify")
+ (version systemd-version)
+ (source systemd-source)
+ (build-system python-build-system)
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (replace 'build
+ (lambda _
+ (substitute* "src/ukify/ukify.py" ; added in python 3.11
+ (("datetime\\.UTC") "datetime.timezone.utc"))))
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((bin (string-append #$output "/bin"))
+ (file (string-append bin "/ukify"))
+ (binutils (assoc-ref inputs "binutils"))
+ (sbsign (assoc-ref inputs "sbsigntools")))
+ (mkdir-p bin)
+ (copy-file "src/ukify/ukify.py" file)
+ (wrap-program file
+ `("PATH" ":" prefix
+ (,(string-append binutils "/bin")
+ ,(string-append sbsign "/bin"))))))))))
+ (inputs (list binutils python-cryptography python-pefile sbsigntools))
+ (home-page "https://systemd.io")
+ (synopsis "Unified kernel image UEFI tool")
+ (description "@command{ukify} joins together a UKI stub, linux kernel, initrd,
+kernel arguments, and optional secure boot signatures into a single, UEFI-bootable
+image.")
+ (license license:lgpl2.1+)))
+
+(define-public systemd-cryptsetup
+ (package
+ (name "systemd-cryptsetup")
+ (version systemd-version)
+ (source systemd-source)
+ (build-system meson-build-system)
+ (arguments
+ (list
+ #:build-type "release"
+ #:configure-flags
+ `(list "-Dlibcryptsetup=true" "-Dlibfido2=true"
+ "-Dopenssl=true")
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key parallel-build? #:allow-other-keys)
+ (invoke "ninja" "systemd-cryptsetup"
+ "-j" (if parallel-build?
+ (number->string (parallel-job-count)) "1"))))
+ (replace 'install
+ (lambda _
+ (install-file "systemd-cryptsetup" (string-append #$output "/libexec"))
+ (install-file "src/shared/libsystemd-shared-258.so" (string-append #$output "/lib"))))
+ (delete 'check))))
+ (native-inputs (list `(,util-linux "lib") eudev lvm2 cryptsetup libfido2 libxcrypt gperf pkg-config python-3 python-jinja2 libcap argon2 json-c libgcrypt openssl))
+ (home-page "test")
+ (synopsis "test")
+ (description "test")
+ (license license:lgpl2.1+)))
+
+systemd-cryptsetup
diff --git a/modules/ryan-packages/calcurse.scm b/modules/ryan-packages/calcurse.scm
index fa7fe63..241bb53 100644
--- a/modules/ryan-packages/calcurse.scm
+++ b/modules/ryan-packages/calcurse.scm
@@ -1,10 +1,16 @@
(define-module (ryan-packages calcurse)
#:use-module (guix download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cmake)
#:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu packages calcurse)
#:use-module (gnu packages python-web)
+ #:use-module (gnu packages rust)
+ #:use-module (gnu packages rust-apps)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages linux)
#:use-module (guix git-download)
#:use-module (guix utils))
@@ -21,4 +27,3 @@
(base32 "02l3spj2ai97b87winz3kvsxvf66g74lm46b7kcbhsgx2iqb6syq"))))
(propagated-inputs (list python-httplib2))))
-calcurse-fixed
diff --git a/modules/ryan-packages/freedesktop.scm b/modules/ryan-packages/freedesktop.scm
index 56b5633..49da397 100644
--- a/modules/ryan-packages/freedesktop.scm
+++ b/modules/ryan-packages/freedesktop.scm
@@ -22,7 +22,7 @@
#:use-module (gnu packages xorg)
#:use-module (gnu packages glib)
#:use-module (gnu packages man)
- #:use-module (rosenthal packages wm)
+ ;#:use-module (rosenthal packages wm)
#:use-module (gnu packages wm))
(define-public xdg-desktop-portal-wlr-new
diff --git a/modules/ryan-packages/hyprland.-ryan.bak b/modules/ryan-packages/hyprland.-ryan.bak
new file mode 100644
index 0000000..aec8286
--- /dev/null
+++ b/modules/ryan-packages/hyprland.-ryan.bak
@@ -0,0 +1,46 @@
+(define-module (ryan-packages hyprland)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system meson)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix download))
+
+(define aquamarine
+ (package
+ (name "aquamarine")
+ (version "0.4.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/aquamarine")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "114fspibmrwvzdmzv4xdy000vg7mn9r5vas3pr1ndb9xyl15ja1s"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:tests? #f))
+ (native-inputs
+ (list
+ gcc-14
+ pkg-config
+ mesa-headers
+ hyprwayland-scanner
+ hwdata))
+ (inputs
+ (list
+ libglvnd
+ mesa-libglvnd
+ libseat
+ libinput
+ libxkbcommon
+ libdisplay-info
+ libxcb
+ libxinerama
+ libxcursor
+ wayland
+ wayland-protocols
diff --git a/modules/ryan-packages/hyprland.bak b/modules/ryan-packages/hyprland.bak
new file mode 100644
index 0000000..b96aa4e
--- /dev/null
+++ b/modules/ryan-packages/hyprland.bak
@@ -0,0 +1,495 @@
+(define-module (ryan-packages hyprland)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages pciutils)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages wm)
+ #:use-module (gnu packages gl)
+ #:use-module (ryan-packages gl)
+ #:use-module (guix utils))
+
+; hyprland deps
+(define-public libseat-0.8.0
+ (package
+ (inherit libseat)
+ (name "libseat")
+ (version "0.8.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.sr.ht/~kennylevinsen/seatd")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "02wzrgp8di6hqmicnm2fim6jnvbn62wy248ikvdvrhiywrb7i931"))))))
+
+(define-public libinput-minimal-1.26.1
+ (package
+ (inherit libinput-minimal)
+ (name "libinput-minimal")
+ (version "1.26.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.freedesktop.org/libinput/libinput.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "094k23i10jjmgdzhv5lj7xpc3fgkwi9afcihf0l2fjj71ym8l9fy"))))
+ (native-inputs
+ (modify-inputs (package-native-inputs libinput)
+ (append python-minimal-wrapper python-pytest)))))
+
+(define-public cmake-minimal-3.27.0
+ (package
+ (inherit cmake-minimal)
+ (name "cmake-minimal")
+ (version "3.27.0")
+ (source (origin
+ (inherit (package-source cmake-minimal))
+ (method url-fetch)
+ (uri (string-append "https://cmake.org/files/v"
+ (version-major+minor version)
+ "/cmake-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1f1w9mb868q38nzy145b6q9mc5waf8yi521cwfkd14xr51mxpvda"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments cmake-minimal)
+ ((#:configure-flags flags ''())
+ #~(append (list "-DCMake_ENABLE_DEBUGGER=false") #$flags))
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (delete 'delete-help-documentation)
+ (delete 'check)))))))
+
+; hypr suite
+
+(define hyprutils
+ (package
+ (name "hyprutils")
+ (version "0.2.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprutils")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0nxx5yb5k9726x95n8gi27xyxyzwb0ma0nj3czpb51sda1k0hz0g"))))
+ (build-system cmake-build-system)
+ ;(arguments (list #:tests? #f))
+ (native-inputs (list pkg-config gcc-13))
+ (inputs (list pixman))
+ (home-page "https://hyprland.org/")
+ (synopsis "Small C++ library for utilities used across the Hypr* ecosystem")
+ (description "C++ library for utilities in the Hypr ecosystem")
+ (license license:bsd-3)))
+
+(define-public libliftoff
+ (package
+ (name "libliftoff")
+ (version "0.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/emersion/libliftoff"
+ "/archive/refs/tags/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "17ssbjbv8njgvfha8zsx4nixpi5xxl1rwvk0lcacgqk0nmjyb23s"))))
+ (build-system meson-build-system)
+ (native-inputs (list gcc-13
+ pkg-config
+ cmake-minimal
+ libdrm))
+ (home-page "https://github.com/emersion/libliftoff")
+ (synopsis "Lightweight KMS plane library")
+ (description "")
+ (license license:expat)))
+
+(define udis86
+ (let ((revision "186")
+ (commit "5336633af70f3917760a6d441ff02d93477b0c86"))
+ (package
+ (name "udis86")
+ (version (git-version "1.7.2" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/canihavesomecoffee/udis86")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0y5z1169wff578jylpafsww4px4y6gickhcs885a9c660d8xs9qy"))))
+ (build-system gnu-build-system)
+ (native-inputs (list autoconf automake libtool python-minimal-wrapper))
+ (home-page "https://github.com/canihavesomecoffee/udis86")
+ (synopsis "Disassembler Library for x86 and x86-64")
+ (description
+ "Udis86 is a disassembler for the x86 and x86-64 class of instruction
+set architectures. It consists of a C library called @code{libudis86} and a
+command line tool called @code{udcli} that incorporates the library.")
+ (license license:bsd-2))))
+
+(define hyprlang
+ (package
+ (name "hyprlang")
+ (version "0.5.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprlang")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "17i0372yv0fcwnyki36crz7afw8c5f3j985m083p7rjbh4fn3br6"))))
+ (build-system cmake-build-system)
+ (native-inputs (list gcc-13))
+ (home-page "https://hyprland.org/hyprlang/")
+ (synopsis "Official implementation library for hypr config language")
+ (description
+ "This package provides the official implementation for hypr configuration
+language used in @code{hyprland}.")
+ (license license:gpl3+)))
+
+(define-public hyprcursor
+ (package
+ (name "hyprcursor")
+ (version "0.1.9")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprcursor")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0z3ar580n630145nq80qw0p8v0kai6knvhi6nr9z0y1jrb07b0ql"))))
+ (build-system cmake-build-system)
+ (arguments (list #:tests? #f)) ;FIXME
+ (inputs (list cairo hyprlang librsvg libzip tomlplusplus))
+ (native-inputs (list gcc-13 pkg-config))
+ (home-page "https://hyprland.org/")
+ (synopsis "Hyprland cursor format, library and utilities")
+ (description
+ "This package provides Hyprland cursor format, library and utilities.")
+ (license license:bsd-3)))
+
+(define-public hyprland-protocols
+ (package
+ (name "hyprland-protocols")
+ (version "0.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprland-protocols")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1drjznj7fn6m5m6skhzh0p031cb5x0bb4i56jxnxwpwaa71g1z20"))))
+ (build-system meson-build-system)
+ (home-page "https://hyprland.org")
+ (synopsis "Wayland protocol extensions for Hyprland")
+ (description
+ "This package provides Wayland protocol extensions for Hyprland and it
+exists in an effort to bridge the gap between Hyprland and KDE/Gnome's
+functionality. Since @code{wlr-protocols} is closed for new submissions, and
+@code{wayland-protocols} is very slow with changes, this package will hold
+protocols used by Hyprland to bridge the aforementioned gap.")
+ (license license:bsd-3)))
+
+(define-public hyprwayland-scanner
+ (package
+ (name "hyprwayland-scanner")
+ (version "0.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprwayland-scanner")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1xc2xcxpq61lg964ihk0wbfzqqvibw20iz09g0p33ym51gwlpxr4"))))
+ (build-system cmake-build-system)
+ (arguments (list #:tests? #f)) ;No tests.
+ (inputs (list pugixml))
+ (native-inputs (list gcc-13 pkg-config))
+ (home-page "https://github.com/hyprwm/hyprwayland-scanner")
+ (synopsis "Hyprland implementation of wayland-scanner, in and for C++")
+ (description
+ "This package provides a Hyprland implementation of wayland-scanner, in and
+for C++.")
+ (license license:bsd-3)))
+
+(define hwdata-for-hyprland
+ (package
+ (inherit hwdata)
+ (arguments
+ (substitute-keyword-arguments (package-arguments hwdata)
+ ((#:phases _) #~%standard-phases)))
+ (outputs '("out"))))
+
+(define-public wayland-protocols-1.36
+ (package
+ (inherit wayland-protocols)
+ (name "wayland-protocols")
+ (version "1.36")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://gitlab.freedesktop.org/wayland/wayland-protocols"
+ "/-/releases/" version "/downloads/"
+ "wayland-protocols-" version ".tar.xz"))
+ (sha256
+ (base32
+ "14kyxywpfkgpjpkrybs28q1s2prnz30k1b4zap5a3ybrbvh4vzbi"))))))
+
+
+(define-public aquamarine
+ (package
+ (name "aquamarine")
+ (version "0.3.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/aquamarine")
+ (commit (string-append "v" version))))
+ (patches (list
+ (local-file "patches/aquamarine-fix-cmake.patch")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "114fspibmrwvzdmzv4xdy000vg7mn9r5vas3pr1ndb9xyl15ja1s"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:tests? #f))
+ (native-inputs
+ (list gcc-13
+ pkg-config
+ mesa-headers
+ hyprwayland-scanner
+ hwdata-for-hyprland))
+ (propagated-inputs
+ (list mesa-libglvnd
+ libglvnd
+ libseat-0.8.0
+ libinput-minimal-1.26.1
+ libxkbcommon
+ libdisplay-info
+ libxcb
+ libxinerama
+ libxcursor
+ xcb-util
+ xcb-util-errors
+ xcb-util-keysyms
+ xcb-util-wm
+ wayland
+ wayland-protocols-1.36))
+ (inputs
+ (list hyprutils pixman))
+ (home-page "https://hyprland.org")
+ (synopsis "Aquamarine is a very light linux rendering backend library ")
+ (description "") ;; TODO: this
+ (license license:bsd-3)))
+
+
+(define xorg-server-xwayland-for-hyprland
+ (package
+ (inherit xorg-server-xwayland)
+ (arguments
+ (substitute-keyword-arguments (package-arguments xorg-server-xwayland)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (add-after 'install 'install-headers
+ (lambda _
+ (let ((fmw (string-append #$output "/include")))
+ (mkdir-p fmw)
+ (copy-recursively "include" fmw))
+ ))
+ ))))))
+
+
+(define-public hyprland-ryan
+ (package
+ (name "hyprland")
+ (version "0.42.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/Hyprland")
+ (commit (string-append "v" version))))
+ (patches (list
+ (local-file "patches/hyprland-fix-cmake.patch")))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (for-each delete-file-recursively
+ '("hyprpm"
+ "subprojects"))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hp2xafvlymikxsi6pr8iik35g46683bg376n9hkjxgh9y6njzqv"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:tests? #f
+ #:build-type "release"
+ #:cmake cmake-minimal-3.27.0
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (find-files "src" "\\.cpp$")
+ (("/usr/local(/bin/Hyprland)" _ path)
+ (string-append #$output path))
+ (("/usr") #$output)
+ (("(execAndGet\\(\")\\<(cat|fc-list|lspci)\\>"
+ _ pre cmd)
+ (string-append
+ pre (search-input-file
+ inputs (string-append "bin/" cmd))))
+ (("\\<cc\\>") (search-input-file inputs "bin/gcc"))
+ ;; NOTE: Add binutils to inputs will override ld-wrapper.
+ (("(execAndGet\\(\\(\")\\<nm\\>" _ pre)
+ (string-append pre #$binutils "/bin/nm"))
+ (("\\<(addr2line|objcopy)\\>" _ cmd)
+ (string-append #$binutils "/bin/" cmd)))
+ (substitute* "CMakeLists.txt"
+ (("libudis86") "udis86"))
+ ))
+ (add-after 'fix-path 'fix-protocols
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((protocols (string-append
+ (getcwd)
+ "/subprojects/hyprland-protocols/protocols")))
+ (mkdir-p protocols)
+ (copy-recursively
+ (search-input-directory inputs "share/hyprland-protocols/protocols")
+ protocols))))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (mesa (assoc-ref inputs "mesa")))
+ (wrap-program (string-append out "/bin/Hyprland")
+ `("__EGL_VENDOR_LIBRARY_DIRS" prefix ,(list (string-append mesa "/share/glvnd/egl_vendor.d")))))))
+ )))
+ (native-inputs
+ (list gcc-13
+ jq
+ pkg-config
+ hyprwayland-scanner
+ hwdata-for-hyprland))
+ (inputs
+ (list gcc-13
+
+ cairo
+ pango
+ pciutils
+ libliftoff
+ udis86
+
+ aquamarine
+ hyprcursor
+ hyprland-protocols
+ hyprlang
+ hyprutils
+
+ xorg-server-xwayland-for-hyprland))
+ (home-page "https://hyprland.org")
+ (synopsis "Dynamic tiling Wayland compositor based on wlroots")
+ (description
+ "Hyprland is a dynamic tiling Wayland compositor based on @code{wlroots}
+that doesn't sacrifice on its looks. It supports multiple layouts, fancy
+effects, has a very flexible IPC model allowing for a lot of customization, and
+more.")
+ (license license:bsd-3)))
+
+
+(define-public hyprpaper
+ (package
+ (name "hyprpaper")
+ (version "0.7.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/hyprwm/hyprpaper"
+ "/archive/refs/tags/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "1d23nsj5hzyxwvhkg9a7x1b8jgyqwzad91zb1894jnxr2d844h28"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f))
+ (native-inputs
+ (list gcc-13
+ pkg-config))
+ (inputs
+ (list hyprlang
+ wayland-protocols-1.36
+ wayland
+ cairo
+ libjpeg-turbo
+ libwebp
+ mesa
+ pango
+ libglvnd))
+ (home-page "https://github.com/hyprwm/hyprpaper")
+ (license license:bsd-3)
+ (synopsis "Hyprpaper is a blazing fast wayland wallpaper utility with IPC controls.")
+ (description "Hyprpaper is a blazing fast wayland wallpaper utility with IPC controls.")))
+
+
+(define-public hypridle
+ (package
+ (name "hypridle")
+ (version "0.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/hyprwm/hypridle"
+ "/archive/refs/tags/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ybwip7yq9q569naz5bnrvcdz99648c4pln2zi30z21y333hpas0"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f))
+ (native-inputs
+ (list gcc-13
+ pkg-config))
+ (inputs
+ (list hyprlang
+ wayland-protocols-1.36
+ wayland
+ sdbus-c++))
+ (home-page "https://github.com/hyprwm/hypridle")
+ (license license:bsd-3)
+ (synopsis "Hyprland's idle daemon ")
+ (description "Hyprland's idle daemon ")))
diff --git a/modules/ryan-packages/linux.scm b/modules/ryan-packages/linux.scm
index 600117c..272280c 100644
--- a/modules/ryan-packages/linux.scm
+++ b/modules/ryan-packages/linux.scm
@@ -2,8 +2,14 @@
#:use-module (guix download)
#:use-module (guix packages)
#:use-module (guix gexp)
+ #:use-module (guix build utils)
#:use-module (gnu packages)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages vim)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages textutils)
+ #:use-module (gnu packages tree-sitter)
+ #:use-module (gnu packages julia)
#:use-module (gnu packages python-xyz)
#:use-module (guix git-download)
#:use-module (guix utils))
@@ -11,7 +17,7 @@
(define-public bluez-ryan
(package
(inherit bluez)
- (version "5.72")
+ (version "5.79")
(source
(origin
(method url-fetch)
@@ -20,16 +26,51 @@
version ".tar.xz"))
(sha256
(base32
- "0vjk4ihywzv8k07bxq7clqgi2afrw54nfp0gcnxw35m98nipz7a9"))))
- (arguments (list
- #:configure-flags
- #~(list "--sysconfdir=/etc"
- "--localstatedir=/var"
- "--enable-library"
- "--disable-manpages"
- "--disable-systemd"
- "--enable-hid2hci"
- (string-append "--with-dbusconfdir=" #$output "/etc")
- (string-append "--with-udevdir=" #$output "/lib/udev"))))))
+ "12pal1m4xlr8k7kxb6isv5lbaca2wc5zcgy0907wfwcz78qaar21"))))
+ (arguments (substitute-keyword-arguments (package-arguments bluez)
+ ((#:configure-flags ''())
+ #~(append (list "--disable-manpages") #$flags))
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (add-after 'configure 'fix-make
+ (lambda _
+ (substitute* "Makefile"
+ (("install-confDATA:") "install-IGNORED:")
+ (("install-confDATA") "")
+ (("bluetoothd-fix-permissions:") "install-IGNORED2:")
+ (("bluetoothd-fix-permissions") ""))))))))))
-bluez-ryan
+(define-public neovim-ryan
+ (package
+ (inherit neovim)
+ (version "0.11.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/neovim/neovim")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "neovim" version))
+ (sha256
+ (base32
+ "0arypdiycmss5g9wav21hfdc384v1ly82jnsc32zincl2y3f628q"))))
+ (native-inputs (modify-inputs (package-native-inputs neovim) (prepend gcc-14)))
+ (inputs (modify-inputs (package-inputs neovim) (append utf8proc) (replace "tree-sitter" treesitter-ryan)))))
+
+(define-public treesitter-ryan
+ (package
+ (inherit tree-sitter)
+ (version "0.25.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tree-sitter/tree-sitter")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "tree-sitter" version))
+ (sha256
+ (base32
+ "0d4ca0ikpmkqg9xlbx45c7mafr5yz0g99y3s3jy5xk86f0nkz8ga"))
+ (modules '((guix build utils)))
+ (snippet #~(begin
+ (delete-file-recursively "lib/src/unicode")))))))
+
+neovim-ryan
diff --git a/modules/ryan-packages/login.scm b/modules/ryan-packages/login.scm
new file mode 100644
index 0000000..6efae9b
--- /dev/null
+++ b/modules/ryan-packages/login.scm
@@ -0,0 +1,102 @@
+(define-module (ryan-packages login)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system zig)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages nss)
+ #:use-module (gnu packages version-control)
+ #:use-module (gnu packages zig)
+ #:use-module (gnu packages zig-xyz)
+ #:use-module (guix utils))
+
+(define ly-source
+ (let ((commit "cdba55657976ad289da090b7d4fd1e5e16c156f9")
+ (revision "11")
+ (name "ly")
+ (version "ly-rev11"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ryan77627/ly-fork")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1czv95pwmsv8zi92pjrra3swr7m82l3spks8mdkryxk9k62yd2k6")))))
+
+(define ly-zig-cache
+ (computed-file
+ "ly-zig-cache"
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((cert-dir (string-append #$nss-certs "/etc/ssl/certs"))
+ (certs "/tmp/ca-certificates.crt")
+ (zig-bin (string-append #$zig-0.15 "/bin"))
+ (git-bin (string-append #$git-minimal "/bin"))
+ (curl-bin (string-append #$curl "/bin"))
+ (proot-bin (string-append #$proot "/bin"))
+ (coreutils-bin (string-append #$(@ (gnu packages base) coreutils) "/bin")))
+ (call-with-output-file certs
+ (lambda (out)
+ (for-each (lambda (file)
+ (call-with-input-file file
+ (lambda (p)
+ (dump-port p out)
+ (display "\n" out))))
+ (find-files cert-dir "\\.pem$"))))
+ (setenv "HOME" "/tmp")
+ (setenv "PATH" (string-append zig-bin ":" curl-bin ":" proot-bin ":" git-bin ":" coreutils-bin))
+ (setenv "ZIG_GLOBAL_CACHE_DIR" "/tmp/zcache")
+ (setenv "SSL_CERT_FILE" certs)
+ (setenv "GIT_SSL_CAINFO" certs)
+ (setenv "CURL_CA_BUNDLE" certs)
+ (mkdir-p "/tmp/zcache")
+ (mkdir-p "/tmp/src")
+ (copy-recursively #$ly-source "/tmp/src")
+ (chmod "/tmp/src" #o755)
+ (with-directory-excursion "/tmp/src"
+ (invoke "proot" "-b" (string-append certs ":/etc/ssl/certs/ca-certificates.crt")
+ "zig" "build" "--fetch=all"))
+ (copy-recursively "/tmp/zcache/p" #$output))))
+ #:options (list
+ #:hash-algo 'sha256
+ #:hash (base32 "1qmj0ysynvyfvwc68apy3lxqccrv3rxak5a21ij6y0c2dw3yzl64")
+ #:recursive? #t)))
+
+(define-public ly
+ (package
+ (name "ly")
+ (version "1.3.2")
+ (source ly-source)
+ (build-system zig-build-system)
+ (arguments
+ (list
+ #:zig-release-type "small"
+ #:zig-build-flags #~(list "-Denable_x11_support=false"
+ "--search-prefix"
+ #$(this-package-input "linux-pam"))
+ #:zig zig-0.15
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'seed-zig-cache
+ (lambda _
+ (let ((cache-dir "/tmp/zig-cache"))
+ (mkdir-p cache-dir)
+ (symlink #$ly-zig-cache (string-append cache-dir "/p"))
+ (setenv "ZIG_GLOBAL_CACHE_DIR" cache-dir)))))))
+ (native-inputs (list
+ ly-zig-cache))
+ (inputs (list linux-pam))
+ (home-page "https://codeberg.org/fairyglade/ly")
+ (synopsis "TTY-based login manager written in Zig.")
+ (description "Zig-based login manager that can launch X Server and Wayland based compositors.")
+ (license license:expat)))
+
+ly
diff --git a/modules/ryan-packages/networking.scm b/modules/ryan-packages/networking.scm
index 6d660a3..98ef31f 100644
--- a/modules/ryan-packages/networking.scm
+++ b/modules/ryan-packages/networking.scm
@@ -1,6 +1,9 @@
(define-module (ryan-packages networking)
#:use-module (guix gexp)
#:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system copy)
+ #:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages networking)
#:use-module (ryan-packages linux)
@@ -11,4 +14,24 @@
(inherit blueman)
(inputs (modify-inputs (package-inputs blueman) (delete "bluez") (prepend bluez-ryan)))))
-blueman-ryan
+(define-public netbird-bin
+ (package
+ (name "netbird")
+ (version "0.68.1")
+ (source (origin
+ (method url-fetch/tarbomb)
+ (uri (string-append "https://github.com/netbirdio/netbird/releases/download/v" version "/netbird_" version "_linux_amd64.tar.gz"))
+ (sha256
+ (base32
+ "08xn4mnr0h4hyqx6447g3p2jaq6yknvllq18k21ac3936dxz4d9a"))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan
+ #~'(("." "bin/" #:include("netbird")))))
+ (supported-systems '("x86_64-linux"))
+ (home-page "https://netbird.io")
+ (synopsis "Private Wireguard-based networks")
+ (description "This package provides @command{netbird}, which is an alternative to Tailscale.")
+ (license license:bsd-3)))
+
+netbird-bin
diff --git a/modules/ryan-packages/package-management.scm b/modules/ryan-packages/package-management.scm
new file mode 100644
index 0000000..18c7be4
--- /dev/null
+++ b/modules/ryan-packages/package-management.scm
@@ -0,0 +1,237 @@
+(define-module (ryan-packages package-management)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system meson)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix gexp)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages backup)
+ #:use-module (gnu packages bdw-gc)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages boost)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages cpp)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages databases)
+ #:use-module (gnu packages flex)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages libedit)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages llvm)
+ #:use-module (gnu packages markup)
+ #:use-module (gnu packages package-management)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages sqlite)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages version-control)
+ #:use-module (gnu packages web)
+ #:use-module (guix utils))
+
+(define-public nix-ryan
+ (package
+ (name "nix")
+ (version "2.29.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/NixOS/nix")
+ (commit version)))
+ (file-name (git-file-name "nix" version))
+ (sha256
+ (base32 "19cd94xpjzwmclscpw9x3gfic0vf160llfnh9diz2l4823fw8iky"))))
+ (build-system meson-build-system)
+ (arguments
+ (list
+ #:configure-flags #~(list "--sysconfdir=/etc")
+ #:tests? #f))
+ (native-inputs
+ (list autoconf
+ autoconf-archive
+ automake
+ bison
+ gcc-14
+ cmake
+ flex
+ perl
+ perl-dbi
+ perl-dbd-sqlite
+ googletest
+ jq
+ libtool
+ pkg-config
+ rapidcheck))
+ (inputs
+ (list boost-ryan
+ brotli
+ bzip2
+ curl
+ editline
+ libarchive
+ libgc-ryan
+ libseccomp-ryan
+ libsodium
+ libbl3
+ libgit2-1.9
+ lowdown
+ nlohmann-json
+ openssl
+ sqlite
+ toml11
+ xz
+ zlib))
+ (home-page "https://nixos.org/")
+ (synopsis "The Nix package manager")
+ (description "todo")
+ (license license:lgpl2.1+)))
+
+(define libbl3
+ (package
+ (name "blake3")
+ (version "1.8.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/BLAKE3-team/BLAKE3")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1pm7285insrmpfwwal8rnp3yhvc6s2ki8b6ccmbh2qfnnl95a010"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags #~(list "-DCMAKE_POSITION_INDEPENDENT_CODE=on")
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'enter-build-directory
+ (lambda _ (chdir "c") #t))
+ (add-before 'build 'set-env
+ (lambda _
+ (setenv "CFLAGS" "-fPIC")
+ (setenv "CXXFLAGS" "-fPIC")
+ #t)))))
+ (home-page "https://github.com/BLAKE3-team/BLAKE3")
+ (synopsis "Official C implementation of BLAKE3")
+ (description "todo")
+ (license license:expat)))
+
+(define toml11
+ (package
+ (name "toml11")
+ (version "v4.4.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ToruNiina/toml11")
+ (commit version)))
+ (sha256
+ (base32 "0d15b50cf9jgvh3w99xh6crh03bn2dmv9bdyvzq6knsk2diql1dj"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:tests? #f))
+ (home-page "https://github.com/ToruNiina/toml11")
+ (synopsis "TODO")
+ (description "TODO")
+ (license license:expat)))
+
+(define libgit2-1.9
+ (package
+ (inherit libgit2-1.8)
+ (version "1.9.0")
+ (source (origin
+ (inherit (package-source libgit2-1.8))
+ (uri (git-reference
+ (url "https://github.com/libgit2/libgit2")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "libgit2" version))
+ (sha256
+ (base32
+ "06ajn5i5l1209z7x7jxcpw68ph0a6g3q67bmx0jm381rr8cb4zdz"))
+ (snippet
+ #~(begin
+ (for-each delete-file-recursively
+ '("deps/llhttp"
+ "deps/ntlmclient"
+ "deps/pcre"
+ "deps/winhttp"
+ "deps/zlib"))))))))
+
+(define libgc-ryan
+ (package
+ (inherit libgc)
+ (version "8.2.8")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ivmai/bdwgc")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "libgc" version))
+ (sha256
+ (base32 "1xzvr5wb36flkbjqjyk5ilhda1a3yk61rgprxfjzdf1rzlmqn12i"))))
+ (native-inputs (modify-inputs (package-native-inputs libgc) (prepend autoconf autoconf-archive automake libtool)))))
+
+(define boost-ryan
+ (package
+ (inherit boost)
+ (version "1.87.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/boostorg/boost")
+ (commit (string-append "boost-" version))
+ (recursive? #t)))
+ (file-name (git-file-name "boost" version))
+ (sha256
+ (base32 "1xirczrh2rgk2x70crw33w6566d2by9q675wlyv0zj69f49z8prn"))))
+ (native-inputs (modify-inputs (package-native-inputs boost) (prepend clang-18)))
+ (arguments
+ (append
+ (substitute-keyword-arguments (package-arguments boost))
+ (list
+ #:tests? #f
+ #:configure-flags
+ #~(let ((icu (dirname (dirname (search-input-file
+ %build-inputs "bin/uconv")))))
+ (list
+ ;; Auto-detection looks for ICU only in traditional
+ ;; install locations.
+ (string-append "--with-icu=" icu)
+ ;; Ditto for Python.
+ #$@(if (%current-target-system)
+ #~()
+ #~((let ((python (dirname (dirname (search-input-file
+ %build-inputs
+ "bin/python")))))
+ (string-append "--with-python-root=" python)
+ (string-append "--with-python=" python
+ "/bin/python")
+ (string-append "--with-python-version="
+ (python-version python)))))
+ "--with-toolset=clang")))))))
+
+(define libseccomp-ryan
+ (package
+ (inherit libseccomp)
+ (version "2.6.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/seccomp/libseccomp")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "libseccomp" version))
+ (sha256
+ (base32 "189yh66aj3z3jvns739qbj504f3mcl3w44pxxizw877pbj3kal11"))))
+ (native-inputs (modify-inputs (package-native-inputs libseccomp) (prepend autoconf autoconf-archive automake libtool)))))
+
+
+nix-ryan
diff --git a/modules/ryan-packages/patches/aquamarine-fix-cmake.patch b/modules/ryan-packages/patches/aquamarine-fix-cmake.patch
new file mode 100644
index 0000000..bd29649
--- /dev/null
+++ b/modules/ryan-packages/patches/aquamarine-fix-cmake.patch
@@ -0,0 +1,25 @@
+From 7b6f11ed0708d8775f42107e19d9099835e2498e Mon Sep 17 00:00:00 2001
+From: Freya Murphy <freya@freyacat.org>
+Date: Mon, 5 Aug 2024 17:52:48 -0400
+Subject: [PATCH] fix cmake
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bb7a4d6..7f7e7ff 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -19,7 +19,7 @@ set(INCLUDE ${CMAKE_INSTALL_FULL_INCLUDEDIR})
+ set(LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR})
+
+ find_package(PkgConfig REQUIRED)
+-find_package(OpenGL REQUIRED COMPONENTS "GLES2")
++find_package(OpenGL REQUIRED)
+ find_package(hyprwayland-scanner 0.4.0 REQUIRED)
+ pkg_check_modules(
+ deps
+--
+2.45.1
+
diff --git a/modules/ryan-packages/patches/hyprland-fix-cmake.patch b/modules/ryan-packages/patches/hyprland-fix-cmake.patch
new file mode 100644
index 0000000..d294905
--- /dev/null
+++ b/modules/ryan-packages/patches/hyprland-fix-cmake.patch
@@ -0,0 +1,41 @@
+From 33fac66982422104cc1c2664f9a841fc96295c13 Mon Sep 17 00:00:00 2001
+From: Freya Murphy <freya@freyacat.org>
+Date: Mon, 5 Aug 2024 20:35:50 -0400
+Subject: [PATCH] fix cmake
+
+---
+ CMakeLists.txt | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fa58b63d..51ea6cfa 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -26,7 +26,6 @@ execute_process(COMMAND ./scripts/generateVersion.sh
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+
+ # udis
+-add_subdirectory("subprojects/udis86")
+
+ if(CMAKE_BUILD_TYPE)
+ string(TOLOWER ${CMAKE_BUILD_TYPE} BUILDTYPE_LOWER)
+@@ -85,7 +84,7 @@ if(LEGACY_RENDERER)
+ else()
+ set(GLES_VERSION "GLES3")
+ endif()
+-find_package(OpenGL REQUIRED COMPONENTS ${GLES_VERSION})
++find_package(OpenGL REQUIRED)
+
+ pkg_check_modules(
+ deps
+@@ -314,7 +313,6 @@ protocolwayland()
+
+ # tools
+ add_subdirectory(hyprctl)
+-add_subdirectory(hyprpm)
+
+ # binary and symlink
+ install(TARGETS Hyprland)
+--
+2.45.1
+
diff --git a/modules/ryan-packages/wm.scm b/modules/ryan-packages/wm.scm
index 016bdf8..edb1b32 100644
--- a/modules/ryan-packages/wm.scm
+++ b/modules/ryan-packages/wm.scm
@@ -22,8 +22,8 @@
#:use-module (gnu packages check)
#:use-module (guix git-download)
#:use-module (guix utils)
- #:use-module (rosenthal packages wm)
- #:use-module (ryan-packages gtk)
+ ;#:use-module (rosenthal packages wm)
+ ;#:use-module (ryan-packages gtk)
#:use-module (ryan-packages gl)
#:use-module (gnu packages wm))
@@ -96,11 +96,11 @@
(outputs '("out"))))
(define-public hyprlock
- (let ((commit "d9a6229434fba475ea42b634ee2f03919236798d")
+ (let ((commit "dba9d8b5175a6f23463035aafc6b0c741f9b73a5")
(revision "1"))
(package
(name "hyprlock")
- (version (git-version "0.3.0" revision commit))
+ (version (git-version "0.4.1" revision commit))
(source
(origin
(method git-fetch)
@@ -109,7 +109,7 @@
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "19cg8vj4sgz5pxib9m08af1lilay9bckjhlr6h333s014l7y09sw"))))
+ (base32 "1zzv7w7hn8k71w75a9mz548cbl4f8zcsd8i92abgnrx5x9i35q63"))))
(build-system cmake-build-system)
(arguments
(list
@@ -142,4 +142,3 @@
(synopsis "Screen locker for Hyprland")
(description "Screen locker for hyprland."))))
-hyprlock
diff --git a/modules/ryan-services/file-manager.scm b/modules/ryan-services/file-manager.scm
index 9f0bdc4..780ac57 100644
--- a/modules/ryan-services/file-manager.scm
+++ b/modules/ryan-services/file-manager.scm
@@ -3,10 +3,21 @@
#:use-module (gnu packages base)
#:use-module (gnu services)
#:use-module (gnu services configuration)
+ #:use-module (gnu services shepherd)
#:use-module (gnu home services)
#:use-module (gnu home services shepherd)
#:use-module (srfi srfi-1)
- #:use-module (guix gexp))
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:export (downloads-garbage-collector-service-type
+ downloads-garbage-collector-configuration
+ downloads-garbage-collector-configuration?))
+
+(define-configuration downloads-garbage-collector-configuration
+ (user
+ (string "")
+ "User to run under")
+ (no-serialization))
(define-public (home-symlinks files)
;; Simple service to symlink two paths. Treats all paths with HOME prepended
@@ -23,3 +34,33 @@
#f)
(symlink full-path1 full-path2)))))
files))
+
+(define downloads-garbage-collector-service
+ (match-record-lambda <downloads-garbage-collector-configuration>
+ (user)
+ (let ((cleanup-command #~(list "find" (string-append "/home/" #$user "/Downloads") "-mtime" "+7" "-delete")))
+ (shepherd-service
+ (documentation "Garbage collect downloaded files more than 1 week old for USER.")
+ (provision '(downloads-garbage-collector))
+ ;(requirement '(root))
+ (modules '((shepherd service timer)))
+ (start #~(make-timer-constructor
+ (calendar-event #:hours '(08) #:minutes '(30)
+ #:days-of-week '(tuesday))
+ (command #$cleanup-command)))
+ (stop #~(make-timer-destructor))
+ (actions (list (shepherd-action
+ (name 'trigger)
+ (documentation "Trigger GC in Downloads folder for USER")
+ (procedure #~(lambda _
+ (apply system* #$cleanup-command))))))))))
+
+(define-public downloads-garbage-collector-service-type
+ (service-type
+ (name 'downloads-garbage-collector)
+ (description "Given a USER, clear files older than 1 week from Downloads folder")
+ (extensions
+ (list
+ (service-extension home-shepherd-service-type
+ (compose list downloads-garbage-collector-service))))
+ (default-value (downloads-garbage-collector-configuration))))
diff --git a/modules/ryan-services/networking.scm b/modules/ryan-services/networking.scm
new file mode 100644
index 0000000..9fd15bd
--- /dev/null
+++ b/modules/ryan-services/networking.scm
@@ -0,0 +1,84 @@
+(define-module (ryan-services networking)
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:use-module (ryan-packages networking)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages dns)
+ #:use-module (gnu packages base)
+ #:use-module (gnu services)
+ #:use-module (gnu services admin)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu services shepherd)
+ #:export (netbird-configuration
+ netbird-service-type))
+
+(define-configuration netbird-configuration
+ (netbird
+ (file-like netbird-bin)
+ "The netbird package to use")
+
+ (iptables
+ (file-like iptables-nft)
+ "The iptables implementation to use")
+
+ (dns-manager
+ (file-like openresolv)
+ "Resolv.conf manager")
+
+ (log-file
+ (string "/var/log/netbird.log")
+ "Path to logs")
+
+ (socket
+ (string "/var/run/netbird.sock")
+ "Path of UNIX socket")
+
+ (verbosity
+ (string "warning")
+ "Log verbosity. Default is 'warning'")
+
+ (extra-options
+ (list-of-strings '())
+ "List of extra options")
+ (no-serialization))
+
+(define netbird-shepherd-service
+ (match-record-lambda <netbird-configuration>
+ (netbird iptables dns-manager log-file socket verbosity extra-options)
+ (let ((environment
+ #~(list (string-append "PATH="
+ (string-join
+ '(#$(file-append iptables "/sbin")
+ #$(file-append iproute "/sbin")
+ #$(file-append dns-manager "/sbin")
+ #$(file-append coreutils "/bin"))
+ ":")))))
+ (list (shepherd-service
+ (documentation "Run netbird")
+ (provision '(netbird))
+ (requirement '(user-processes))
+ (start
+ #~(make-forkexec-constructor
+ (list
+ #$(file-append netbird "/bin/netbird")
+ "service" "run"
+ "--log-level" #$verbosity
+ "--daemon-addr" (string-append "unix://" #$socket)
+ "--log-file" "console"
+ #$@extra-options)
+ #:environment-variables #$environment
+ #:log-file #$log-file))
+ (stop #~(make-kill-destructor)))))))
+
+(define netbird-service-type
+ (service-type
+ (name 'netbird)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ netbird-shepherd-service)
+ (service-extension profile-service-type
+ (compose list netbird-configuration-netbird))
+ (service-extension log-rotation-service-type
+ (compose list netbird-configuration-log-file))))
+ (default-value (netbird-configuration))
+ (description "Run netbird.")))
diff --git a/modules/ryan-services/nix.scm b/modules/ryan-services/nix.scm
new file mode 100644
index 0000000..75c9082
--- /dev/null
+++ b/modules/ryan-services/nix.scm
@@ -0,0 +1,182 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019, 2020, 2021, 2024 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2020 Peng Mei Yu <i@pengmeiyu.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (ryan-services nix)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages package-management)
+ #:use-module (gnu services base)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu services web)
+ #:use-module (gnu services)
+ #:use-module (gnu system file-systems)
+ #:use-module (gnu system shadow)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix records)
+ #:use-module (guix store)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 format)
+ #:use-module (guix modules)
+ #:export (nix-service-type
+
+ nix-configuration
+ nix-configuration?))
+
+;;; Commentary:
+;;;
+;;; This module provides a service definition for the Nix daemon.
+;;;
+;;; Code:
+
+(define-record-type* <nix-configuration>
+ nix-configuration make-nix-configuration
+ nix-configuration?
+ (package nix-configuration-package ;file-like
+ (default nix))
+ (sandbox nix-configuration-sandbox ;boolean
+ (default #t))
+ (build-directory nix-configuration-build-directory ;string
+ (default "/tmp"))
+ (build-sandbox-items nix-configuration-build-sandbox-items ;list of strings
+ (default '()))
+ (extra-config nix-configuration-extra-config ;list of strings
+ (default '()))
+ (extra-options nix-configuration-extra-options ;list of strings
+ (default '())))
+
+;; Copied from gnu/services/base.scm
+(define* (nix-build-accounts count #:key
+ (group "nixbld")
+ (shadow shadow))
+ "Return a list of COUNT user accounts for Nix build users with the given
+GID."
+ (unfold (cut > <> count)
+ (lambda (n)
+ (user-account
+ (name (format #f "nixbld~2,'0d" n))
+ (system? #t)
+ (group group)
+ (supplementary-groups (list group "kvm"))
+ (comment (format #f "Nix Build User ~2d" n))
+ (home-directory "/var/empty")
+ (shell (file-append shadow "/sbin/nologin"))))
+ 1+
+ 1))
+(define (nix-accounts _)
+ "Return the user accounts and user groups."
+ (cons (user-group
+ (name "nixbld")
+ (system? #t)
+
+ ;; Use a fixed GID so that we can create the store with the right
+ ;; owner.
+ (id 40000))
+ (nix-build-accounts 10 #:group "nixbld")))
+
+(define (nix-activation _)
+ ;; Return the activation gexp.
+ #~(begin
+ (use-modules (guix build utils)
+ (srfi srfi-26))
+ (for-each (cut mkdir-p <>) '("/nix/var/log"
+ "/nix/var/nix/gcroots/per-user"
+ "/nix/var/nix/profiles/per-user"))
+ (unless (file-exists? #$%nix-store-directory)
+ (mkdir-p #$%nix-store-directory)
+ (chown #$%nix-store-directory
+ (passwd:uid (getpw "root")) (group:gid (getpw "nixbld01")))
+ (chmod #$%nix-store-directory #o775))
+ (for-each (cut chmod <> #o777) '("/nix/var/nix/profiles"
+ "/nix/var/nix/profiles/per-user"))))
+
+(define nix-service-etc
+ (match-lambda
+ (($ <nix-configuration> package sandbox build-directory build-sandbox-items extra-config)
+ (let ((ref-file (references-file package)))
+ `(("nix/nix.conf"
+ ,(computed-file
+ "nix.conf"
+ #~(begin
+ (use-modules (srfi srfi-26)
+ (ice-9 format))
+ (with-output-to-file #$output
+ (lambda _
+ (define internal-sandbox-paths
+ (call-with-input-file #$ref-file read))
+
+ (format #t "sandbox = ~a~%" (if #$sandbox "true" "false"))
+ ;; config.nix captures store file names.
+ (format #t "sandbox-paths = ~{~a ~}~%"
+ (append (list (string-append "/bin/sh=" #$bash-minimal "/bin/bash"))
+ internal-sandbox-paths
+ '#$build-sandbox-items))
+ (for-each (cut display <>) '#$extra-config)))))))))))
+
+(define %nix-store-directory
+ "/nix/store")
+
+(define %immutable-nix-store
+ ;; Read-only store to avoid users or daemons accidentally modifying it.
+ ;; 'nix-daemon' has provisions to remount it read-write in its own name
+ ;; space.
+ (list (file-system
+ (device %nix-store-directory)
+ (mount-point %nix-store-directory)
+ (type "none")
+ (check? #f)
+ (flags '(read-only bind-mount)))))
+
+(define nix-shepherd-service
+ ;; Return a <shepherd-service> for Nix.
+ (match-lambda
+ (($ <nix-configuration> package _ build-directory _ _ extra-options)
+ (list
+ (shepherd-service
+ (provision '(nix-daemon))
+ (documentation "Run nix-daemon.")
+ (requirement '(user-processes file-system-/nix/store))
+ (start #~(make-forkexec-constructor
+ (list (string-append #$package "/bin/nix-daemon")
+ #$@extra-options)
+ #:environment-variables
+ (list (string-append "TMPDIR=" #$build-directory)
+ "PATH=/run/current-system/profile/bin")))
+ (respawn? #f)
+ (stop #~(make-kill-destructor)))))))
+
+(define nix-service-type
+ (service-type
+ (name 'nix)
+ (extensions
+ (list (service-extension shepherd-root-service-type nix-shepherd-service)
+ (service-extension account-service-type nix-accounts)
+ (service-extension activation-service-type nix-activation)
+ (service-extension etc-service-type nix-service-etc)
+ (service-extension profile-service-type
+ (compose list nix-configuration-package))
+ (service-extension file-system-service-type
+ (const %immutable-nix-store))))
+ (description "Run the Nix daemon.")
+ (default-value (nix-configuration))))
+
+;;; nix.scm ends here