Compare

f34e77efa50eadbb93ec43093ff5ea7063ff1aa0main · 70 commits

merge base f34e77efa50e…

Changed files

FileChanges
.gitmodules +3 −0 raw
README.md +21 −1 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/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 −7 raw
home-config/gnupg/gpg-agent.conf +0 −3 raw
home-config/gnupg/sshcontrol +0 −10 raw
home-config/home-configuration.scm +165 −159 raw
home-config/hypr/Wallpapers/static/1685362396481634.jpg binary raw
home-config/hypr/Wallpapers/static/1693169418078790.jpg binary raw
home-config/hypr/Wallpapers/static/1694792956043641.jpg binary raw
home-config/hypr/Wallpapers/static/1708470532817406.jpg binary raw
home-config/hypr/Wallpapers/static/1720750738377603.jpg binary raw
home-config/hypr/Wallpapers/static/1720751011150282.png binary raw
home-config/hypr/Wallpapers/static/1723625710776950.jpg binary raw
home-config/hypr/Wallpapers/static/1723626275390685.jpg binary raw
home-config/hypr/Wallpapers/static/1728661127589872.jpg binary raw
home-config/hypr/Wallpapers/static/4yglzy4rkh4d1.jpeg binary raw
home-config/hypr/Wallpapers/static/7xosa7um3ohd1.jpg binary raw
home-config/hypr/Wallpapers/static/83juiltm3ohd1.jpg binary raw
home-config/hypr/Wallpapers/static/CN62QXJ.jpg binary raw
home-config/hypr/Wallpapers/static/above-clouds.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-bluehour-1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-budapest.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-close-to-the-sun-1920.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-cold-1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-dreamy-1k.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-lights-1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-lines1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-mountains1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-new-year1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-portal-1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-reflect1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-serenity-1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-sky1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-solar-1k.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-wait.jpg binary raw
home-config/hypr/Wallpapers/static/alena-aenami-wings-hd.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/sah1k8tm3ohd1.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/Wallpapers/static/vfcfyfyehhi31.png binary raw
home-config/hypr/Wallpapers/static/w7ufw5eb3cuz.jpg binary raw
home-config/hypr/family_guy.mp4 binary raw
home-config/hypr/hypridle.conf +0 −16 raw
home-config/hypr/hyprland.conf +0 −318 raw
home-config/hypr/hyprlock.conf +0 −57 raw
home-config/hypr/kanshi.conf +0 −22 raw
home-config/hypr/monitors.conf +0 −2 raw
home-config/hypr/scripts/autostart.sh +0 −38 raw
home-config/hypr/scripts/perf_mode.sh +0 −14 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/mailvelope/gpgmejson.json +0 −7 raw
home-config/mailvelope/start.sh +0 −4 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/firefox-nightly/default.nix +0 −199 raw
home-config/nix-home-manager/firefox-nightly/default.nixold +0 −206 raw
home-config/nix-home-manager/firefox-nightly/policies.nix +0 −130 raw
home-config/nix-home-manager/flake.lock +0 −1009 raw
home-config/nix-home-manager/flake.nix +0 −87 raw
home-config/nix-home-manager/home.nix +0 −192 raw
home-config/nix-home-manager/zenPolicies.nix +0 −126 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 −24 raw
home-config/tridactyl/native_main binary raw
home-config/tridactyl/tridactyl.json +0 −7 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
home-config/wpaperd/config.toml +0 −4 raw
modules/ryan-config/base-system.scm +90 −50 raw
modules/ryan-config/lyconfig.ini +10 −0 raw
modules/ryan-packages/bootloaders.scm +41 −3 raw
modules/ryan-packages/linux.scm +39 −1 raw
modules/ryan-packages/login.scm +102 −0 raw
modules/ryan-packages/networking.scm +24 −1 raw
modules/ryan-packages/package-management.scm +8 −4 raw
modules/ryan-packages/wm.scm +1 −1 raw
modules/ryan-services/networking.scm +84 −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
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/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 29a860d..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
- "f9b9116aef228a4455a1112f5d935f5de792370f")
+ "85a7d902c039d82a646f771f661d6935f0a6a1cf")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
@@ -14,7 +14,7 @@
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(commit
- "8c41304decb916892fa07ca86893e4cf926ee884")
+ "a3f4e7bff779da4593a2922516064a8edaafa3e6")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
@@ -25,7 +25,7 @@
(url "https://codeberg.org/hako/rosenthal.git")
(branch "trunk")
(commit
- "3da3fa1eee9bce8d00f85cae86d8f412f6259f7c")
+ "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/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 36b82c8..0000000
--- a/home-config/foot/foot.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-font=Lilex Nerd Font Mono:size=14,FiraCode Nerd Font Mono:size=14
-
-[desktop-notifications]
-command=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
-
-[colors]
-alpha=0.75
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 82d92cc..47cd45c 100644
--- a/home-config/home-configuration.scm
+++ b/home-config/home-configuration.scm
@@ -27,121 +27,123 @@
(rosenthal packages binaries)
(ryan-packages mozilla))
-(define my-neovim
- (package
- (inherit neovim)
- (native-inputs
- (modify-inputs (package-native-inputs neovim)
- (prepend gcc-13)))))
+; (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"
+ ;(packages (append (specifications->packages (list ;"bat"
+ ;"fd"
;"fish"
- "xdg-utils"
- "abook"
- "libnotify"
- "fzf"
- "waypipe"
- "foot"
- "pulseaudio" ;only for pactl
- "qpwgraph"
- "gnunet"
+ ;"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"
- "font-google-noto-emoji"
- "syncthing"
+ ;"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"
- "zathura"
- "zathura-pdf-mupdf"
- "go"
- "fzf"
- "weechat"
- "gimp"
- "python"
- "python:tk"
- "file"
- "python-lsp-server"
- "kdenlive"
- "sqlite"
+ ;"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"
+ ;"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 calcurse-fixed )))
+ ;"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.
@@ -150,69 +152,72 @@
(home-bash-configuration
(aliases '(("grep" . "grep --color=auto") ("ll" . "ls -l")
("ls" . "ls -p --color=auto")
- ("spt" . "spotify_player")
- ("python" . "python3")))
+ ;("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))
+ ;(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/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
- `((".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))
+ ;("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"))
- (".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"))))
+ ;(".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")))))
+ ; (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
@@ -221,8 +226,9 @@
;(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/1685362396481634.jpg b/home-config/hypr/Wallpapers/static/1685362396481634.jpg
deleted file mode 100644
index fd49cae..0000000
Binary files a/home-config/hypr/Wallpapers/static/1685362396481634.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/1693169418078790.jpg b/home-config/hypr/Wallpapers/static/1693169418078790.jpg
deleted file mode 100644
index 8156108..0000000
Binary files a/home-config/hypr/Wallpapers/static/1693169418078790.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/1694792956043641.jpg b/home-config/hypr/Wallpapers/static/1694792956043641.jpg
deleted file mode 100644
index 431e96b..0000000
Binary files a/home-config/hypr/Wallpapers/static/1694792956043641.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/1708470532817406.jpg b/home-config/hypr/Wallpapers/static/1708470532817406.jpg
deleted file mode 100644
index 4a4f2f0..0000000
Binary files a/home-config/hypr/Wallpapers/static/1708470532817406.jpg and /dev/null differ
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/1720751011150282.png b/home-config/hypr/Wallpapers/static/1720751011150282.png
deleted file mode 100644
index dbd3e38..0000000
Binary files a/home-config/hypr/Wallpapers/static/1720751011150282.png and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/1723625710776950.jpg b/home-config/hypr/Wallpapers/static/1723625710776950.jpg
deleted file mode 100644
index 71608ff..0000000
Binary files a/home-config/hypr/Wallpapers/static/1723625710776950.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/1723626275390685.jpg b/home-config/hypr/Wallpapers/static/1723626275390685.jpg
deleted file mode 100644
index aa8c8c2..0000000
Binary files a/home-config/hypr/Wallpapers/static/1723626275390685.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/1728661127589872.jpg b/home-config/hypr/Wallpapers/static/1728661127589872.jpg
deleted file mode 100644
index b5dcbeb..0000000
Binary files a/home-config/hypr/Wallpapers/static/1728661127589872.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/4yglzy4rkh4d1.jpeg b/home-config/hypr/Wallpapers/static/4yglzy4rkh4d1.jpeg
deleted file mode 100644
index 0ef50ad..0000000
Binary files a/home-config/hypr/Wallpapers/static/4yglzy4rkh4d1.jpeg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/7xosa7um3ohd1.jpg b/home-config/hypr/Wallpapers/static/7xosa7um3ohd1.jpg
deleted file mode 100644
index 3bb615e..0000000
Binary files a/home-config/hypr/Wallpapers/static/7xosa7um3ohd1.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/83juiltm3ohd1.jpg b/home-config/hypr/Wallpapers/static/83juiltm3ohd1.jpg
deleted file mode 100644
index 15aff05..0000000
Binary files a/home-config/hypr/Wallpapers/static/83juiltm3ohd1.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/CN62QXJ.jpg b/home-config/hypr/Wallpapers/static/CN62QXJ.jpg
deleted file mode 100644
index c49c449..0000000
Binary files a/home-config/hypr/Wallpapers/static/CN62QXJ.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-bluehour-1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-bluehour-1k.jpg
deleted file mode 100644
index ade3472..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-bluehour-1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-budapest.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-budapest.jpg
deleted file mode 100644
index a01b60b..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-budapest.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-close-to-the-sun-1920.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-close-to-the-sun-1920.jpg
deleted file mode 100644
index 853ff56..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-close-to-the-sun-1920.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-cold-1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-cold-1k.jpg
deleted file mode 100644
index 5152b02..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-cold-1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-dreamy-1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-dreamy-1k.jpg
deleted file mode 100644
index 3931833..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-dreamy-1k.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-lights-1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-lights-1k.jpg
deleted file mode 100644
index 31b7120..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-lights-1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-lines1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-lines1k.jpg
deleted file mode 100644
index 73688eb..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-lines1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-mountains1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-mountains1k.jpg
deleted file mode 100644
index 7448ab1..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-mountains1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-new-year1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-new-year1k.jpg
deleted file mode 100644
index 816a884..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-new-year1k.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-reflect1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-reflect1k.jpg
deleted file mode 100644
index 49ab145..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-reflect1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-serenity-1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-serenity-1k.jpg
deleted file mode 100644
index 7164548..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-serenity-1k.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-sky1k.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-sky1k.jpg
deleted file mode 100644
index 84b9739..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-sky1k.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/alena-aenami-wait.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-wait.jpg
deleted file mode 100644
index 2dc72ac..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-wait.jpg and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/alena-aenami-wings-hd.jpg b/home-config/hypr/Wallpapers/static/alena-aenami-wings-hd.jpg
deleted file mode 100644
index 89b1378..0000000
Binary files a/home-config/hypr/Wallpapers/static/alena-aenami-wings-hd.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/sah1k8tm3ohd1.jpg b/home-config/hypr/Wallpapers/static/sah1k8tm3ohd1.jpg
deleted file mode 100644
index a21261b..0000000
Binary files a/home-config/hypr/Wallpapers/static/sah1k8tm3ohd1.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/Wallpapers/static/vfcfyfyehhi31.png b/home-config/hypr/Wallpapers/static/vfcfyfyehhi31.png
deleted file mode 100644
index adb7f37..0000000
Binary files a/home-config/hypr/Wallpapers/static/vfcfyfyehhi31.png and /dev/null differ
diff --git a/home-config/hypr/Wallpapers/static/w7ufw5eb3cuz.jpg b/home-config/hypr/Wallpapers/static/w7ufw5eb3cuz.jpg
deleted file mode 100644
index e59d184..0000000
Binary files a/home-config/hypr/Wallpapers/static/w7ufw5eb3cuz.jpg and /dev/null differ
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/hypridle.conf b/home-config/hypr/hypridle.conf
deleted file mode 100644
index 72688da..0000000
--- a/home-config/hypr/hypridle.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-general {
- lock_cmd = pidof hyprlock || hyprlock
- before_sleep_cmd = loginctl lock-session
- after_sleep_cmd = hyprctl dispatch dpms on
-}
-
-listener {
- timeout = 300
- on-timeout = loginctl lock-session
-}
-
-listener {
- timeout = 600
- on-timeout = hyprctl dispatch dpms off
- on-resume = hyprctl dispatch dpms on
-}
diff --git a/home-config/hypr/hyprland.conf b/home-config/hypr/hyprland.conf
deleted file mode 100644
index d909142..0000000
--- a/home-config/hypr/hyprland.conf
+++ /dev/null
@@ -1,318 +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
-
-# Set cursor theme
-env = HYPRCURSOR_THEME,Bibata-Modern-Classic-Hyprland
-env = HYPRCURSOR_SIZE,24
-env = XCURSOR_THEME,Bibata-Modern-daed9-v1.0.2-x11
-env = XCURSOR_SIZE,24
-
-env = AQ_NO_MODIFIERS,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
-
-debug {
- disable_logs = false
- enable_stdout_logs = true
-}
-
-# 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
- middle_button_emulation = true
- clickfinger_behavior = true
- }
-
- 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
- }
-
- shadow {
- enabled = true
- range = 4
- render_power = 3
- color = 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, hyprlock
-bind = $mainMod SHIFT, L, exec, loginctl suspend
-
-# Keybind to toggle "performance mode" (toggles GPU intensive things)
-bind = $mainMod, F1, exec, ~/.config/hypr/scripts/perf_mode.sh
-
-# Keybind for screenshot (old)
-bind = $mainMod SHIFT, S, exec, grimblast copy area
-bind = $mainMod SHIFT, Print, exec, grimblast edit area
-bind = $mainMod, S, exec, imv <(grimblast save area -)
-
-# Keybind for screenshot (flameshot)
-#bind = $mainMod SHIFT, S, exec, flameshot gui --raw | wl-copy
-#bind = $mainMod SHIFT CTRL, S, exec, flameshot gui --raw -d $(( 1000 * $(fuzzel -l0 --dmenu -p"Delay> ") )) | wl-copy
-#bind = $mainMod, S, exec, flameshot gui
-
-# 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 822 1026, 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/scripts/autostart.sh
-
-misc {
- disable_hyprland_logo = true
- force_default_wallpaper = 0
-}
-
-# Cursors!
-plugin:dynamic-cursors {
- enabled = true
- mode = tilt
- threshold = 2
- tilt {
- limit = 5000
- function = negative_quadratic
- }
-
- shake {
- enabled = true
- nearest = true
- threshold = 6.0
- base = 4.0
- speed = 4.0
- influence = 0.0
-
- limit = 0.0
-
- timeout = 2000
-
- effects = true
-
- ipc = false
- }
-
- hyprcursor {
- nearest = true
- enabled = true
- resolution = -1
- fallback = clientside
- }
-}
diff --git a/home-config/hypr/hyprlock.conf b/home-config/hypr/hyprlock.conf
deleted file mode 100644
index 5c63fad..0000000
--- a/home-config/hypr/hyprlock.conf
+++ /dev/null
@@ -1,57 +0,0 @@
-background {
- monitor =
- #path = /home/ryan/.config/hypr/Wallpapers/static/autumn1.png
- path = screenshot
-
- # 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
- font_family = Lilex Nerd Font
-}
diff --git a/home-config/hypr/kanshi.conf b/home-config/hypr/kanshi.conf
deleted file mode 100644
index 52c3c0f..0000000
--- a/home-config/hypr/kanshi.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-profile {
- output "AU Optronics 0x103D Unknown" 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
-}
-
-profile homedesk {
- output "AU Optronics 0x103D Unknown" disable
- output "Samsung Electric Company C27F390 H1AK500000" position 0,0 mode 1920x1080
- output "Samsung Electric Company S22R35x H4TNA01683" position 1920,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/scripts/autostart.sh b/home-config/hypr/scripts/autostart.sh
deleted file mode 100755
index e505aa0..0000000
--- a/home-config/hypr/scripts/autostart.sh
+++ /dev/null
@@ -1,38 +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 &
-wpaperd -d &
-
-#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' &
-
-hypridle &
-
-syncthing serve --no-browser &
-
-# Kill any orphans of this
-killall wl-clip-persist
-wl-clip-persist -c regular --reconnect-tries 5 &
-
-kanshi -c ~/.config/hypr/kanshi.conf &
-
-# Start the portals
-
-sleep 0.5
-killall -e xdg-desktop-portal-hyprland
-killall xdg-desktop-portal-gtk
-killall xdk-desktop-portal
-
-~/.nix-profile/libexec/xdg-desktop-portal-hyprland &
-~/.nix-profile/libexec/xdg-desktop-portal-gtk &
-sleep 2
-XDG_DESKTOP_PORTAL_DIR="/home/ryan/.nix-profile/share/xdg-desktop-portal/portals" ~/.nix-profile/libexec/xdg-desktop-portal &
-
-#flameshot &
diff --git a/home-config/hypr/scripts/perf_mode.sh b/home-config/hypr/scripts/perf_mode.sh
deleted file mode 100755
index c195688..0000000
--- a/home-config/hypr/scripts/perf_mode.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
-if [ "$HYPRGAMEMODE" = 1 ] ; then
- hyprctl --batch "\
- keyword animations:enabled 0;\
- keyword decoration:drop_shadow 0;\
- keyword decoration:blur:enabled 0;\
- keyword general:gaps_in 0;\
- keyword general:gaps_out 0;\
- keyword general:border_size 1;\
- keyword decoration:rounding 0"
- exit
-fi
-hyprctl reload
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/mailvelope/gpgmejson.json b/home-config/mailvelope/gpgmejson.json
deleted file mode 100644
index 7ad8586..0000000
--- a/home-config/mailvelope/gpgmejson.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "gpgmejson",
- "description": "JavaScript binding for GnuPG",
- "path": "/home/ryan/.local/share/mailvelope/start.sh",
- "type": "stdio",
- "allowed_extensions": ["jid1-AQqSMBYb0a8ADg@jetpack"]
-}
diff --git a/home-config/mailvelope/start.sh b/home-config/mailvelope/start.sh
deleted file mode 100755
index 01b3ee2..0000000
--- a/home-config/mailvelope/start.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-
-# Wrap for gpgme-json so firefox can use it
-exec gpgme-json $@
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/firefox-nightly/default.nix b/home-config/nix-home-manager/firefox-nightly/default.nix
deleted file mode 100644
index b86da78..0000000
--- a/home-config/nix-home-manager/firefox-nightly/default.nix
+++ /dev/null
@@ -1,199 +0,0 @@
-{ config, pkgs, zen-browser, ...}:
-
-let
-
-#wrapped-ff-nightly = zen-browser.packages.${pkgs.system}.default
-
-in
-
-{
- programs.firefox = {
- enable = true;
- policies = import ./policies.nix;
- #package = zen-browser.packages.${pkgs.system}.default.unwrapped;
-
- profiles.${config.home.username} = {
- name = "${config.home.username}";
- isDefault = true;
- containersForce = true;
- containers = {
- rit = {
- name = "RIT";
- color = "orange";
- icon = "dollar";
- id = 1;
- };
- ritwork = {
- name = "RIT Work";
- color = "green";
- icon = "briefcase";
- id = 2;
- };
- other = {
- name = "Other";
- color = "blue";
- icon = "fingerprint";
- id = 3;
- };
- };
- search = {
- force = true;
- default = "DuckDuckGo";
- order = ["DuckDuckGo" "Google"];
- engines = {
- "Nix Packages" = {
- urls = [
- {
- template = "https://search.nixos.org/packages";
- params = [
- {
- name = "type";
- value = "packages";
- }
- {
- name = "channel";
- value = "unstable";
- }
- {
- name = "query";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
- definedAliases = ["@np"];
- };
- };
- };
- userChrome = "
-#main-window .toolbar-items {
-overflow: hidden;
-transition: height 0.3s 0.3s !important;
-}
-/* Default state: Set initial height to enable animation */
-#main-window .toolbar-items { height: 3em !important; }
-#main-window .titlebar-button { height: 3em !important; }
-#main-window[uidensity=\"touch\"] .toolbar-items { height: 3.35em !important; }
-#main-window[uidensity=\"compact\"] .toolbar-items { height: 2.7em !important; }
-/* Hidden state: Hide native tabs strip */
-#main-window[titlepreface*=\"\"] .toolbar-items { height: 0 !important; }
-#main-window[titlepreface*=\"\"] .titlebar-button { height: 0 !important; }
-/* Hidden state: Fix z-index of active pinned tabs */
-#main-window[titlepreface*=\"\"] #tabbrowser-tabs { z-index: 0 !important; }
-
-/* Sidebery expand on mouse-over and hide otherwise */
-
-/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
-See the above repository for updates as well as full license text. */
-
-/* Show sidebar only when the cursor is over it */
-/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
-
-#sidebar-box{
---uc-sidebar-width: 60px;
---uc-sidebar-hover-width: 230px;
---uc-autohide-sidebar-delay: 200ms; /* Wait 0.2s before hiding sidebar */
---uc-autohide-transition-duration: 115ms;
---uc-autohide-transition-type: linear;
---browser-area-z-index-sidebar: 3;
-position: relative;
- min-width: var(--uc-sidebar-width) !important;
-width: var(--uc-sidebar-width) !important;
- max-width: var(--uc-sidebar-width) !important;
- z-index: var(--browser-area-z-index-sidebar,3);
-}
-#sidebar-box[positionend]{ direction: rtl }
-#sidebar-box[positionend] > *{ direction: ltr }
-
-#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
-#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
-
-#main-window[sizemode=\"fullscreen\"] #sidebar-box{ --uc-sidebar-width: 1px; }
-
-#sidebar-splitter{ display: none }
-
-#sidebar-header{
-overflow: hidden;
-color: var(--chrome-color, inherit) !important;
- padding-inline: 0 !important;
-}
-
-#sidebar-header::before,
-#sidebar-header::after{
-content: \"\";
-display: flex;
- padding-left: 8px;
-}
-
-#sidebar-header,
-#sidebar{
-transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
- min-width: var(--uc-sidebar-width) !important;
- will-change: min-width;
-}
-#sidebar-box:hover > #sidebar-header,
-#sidebar-box:hover > #sidebar{
-min-width: var(--uc-sidebar-hover-width) !important;
-transition-delay: 0ms !important;
-}
-
-.sidebar-panel{
-background-color: transparent !important;
-color: var(--newtab-text-primary-color) !important;
-}
-
-.sidebar-panel #search-box{
--moz-appearance: none !important;
-background-color: rgba(249,249,250,0.1) !important;
-color: inherit !important;
-}
-
-/* Add sidebar divider and give it background */
-
-#sidebar,
-#sidebar-header{
-background-color: inherit !important;
-border-inline: 1px solid rgb(80,80,80);
-border-inline-width: 0px 1px;
-}
-
-#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
-#sidebar-box[positionend] > *{
-border-inline-width: 1px 0px;
-}
-
-/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
-
-#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{
-inset-inline: auto 0px !important;
-}
-#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{
-margin-inline: 0px !important;
-border-left-style: solid !important;
-}
-
-/* Remove the tabs label and move the Sidebary icon to the center of the box */
-#sidebar-box:hover [id=\"sidebar-icon\"] {
-transform: translateX(0px) !important;
- transition-delay: 0ms !important;
-}
-
-#sidebar-box [id=\"sidebar-icon\"] {
-transform: translateX(9px);
-transition: transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
-}
-
-#sidebar-box [id=\"sidebar-title\"] {
-visibility: hidden !important;
-transition: visibility var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
-}
-
-#sidebar-box:hover [id=\"sidebar-title\"] {
-visibility: visible !important;
- transition-delay: 0ms !important;
-}
-";
-};
-};
-}
diff --git a/home-config/nix-home-manager/firefox-nightly/default.nixold b/home-config/nix-home-manager/firefox-nightly/default.nixold
deleted file mode 100644
index 543d57c..0000000
--- a/home-config/nix-home-manager/firefox-nightly/default.nixold
+++ /dev/null
@@ -1,206 +0,0 @@
-{ config, pkgs, ...}:
-
-let
-
-wrapped-ff-nightly = pkgs.latest.firefox-nightly-bin.firefox-bin-unwrapped.overrideAttrs (oldAttrs: rec {
- policies = import ./policies.nix;
- policiesJson = pkgs.writeText "firefox-policies.json" (builtins.toJSON { inherit policies; });
- postFixup = ''
- # See: https://github.com/mozilla/policy-templates/blob/master/README.md
- mkdir -p "$out/lib/firefox/distribution"
- ln -s ${policiesJson} "$out/lib/firefox-nightly-bin-${oldAttrs.version}/distribution/policies.json"
- '';
-});
-
-in
-
-{
- programs.firefox = {
- enable = true;
- package = wrapped-ff-nightly;
-
- profiles.${config.home.username} = {
- name = "${config.home.username}";
- isDefault = true;
- containersForce = true;
- containers = {
- rit = {
- name = "RIT";
- color = "orange";
- icon = "dollar";
- id = 1;
- };
- ritwork = {
- name = "RIT Work";
- color = "green";
- icon = "briefcase";
- id = 2;
- };
- other = {
- name = "Other";
- color = "blue";
- icon = "fingerprint";
- id = 3;
- };
- };
- search = {
- force = true;
- default = "DuckDuckGo";
- order = ["DuckDuckGo" "Google"];
- engines = {
- "Nix Packages" = {
- urls = [
- {
- template = "https://search.nixos.org/packages";
- params = [
- {
- name = "type";
- value = "packages";
- }
- {
- name = "channel";
- value = "unstable";
- }
- {
- name = "query";
- value = "{searchTerms}";
- }
- ];
- }
- ];
- icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
- definedAliases = ["@np"];
- };
- };
- };
- userChrome = "
-#main-window .toolbar-items {
-overflow: hidden;
-transition: height 0.3s 0.3s !important;
-}
-/* Default state: Set initial height to enable animation */
-#main-window .toolbar-items { height: 3em !important; }
-#main-window .titlebar-button { height: 3em !important; }
-#main-window[uidensity=\"touch\"] .toolbar-items { height: 3.35em !important; }
-#main-window[uidensity=\"compact\"] .toolbar-items { height: 2.7em !important; }
-/* Hidden state: Hide native tabs strip */
-#main-window[titlepreface*=\"\"] .toolbar-items { height: 0 !important; }
-#main-window[titlepreface*=\"\"] .titlebar-button { height: 0 !important; }
-/* Hidden state: Fix z-index of active pinned tabs */
-#main-window[titlepreface*=\"\"] #tabbrowser-tabs { z-index: 0 !important; }
-
-/* Sidebery expand on mouse-over and hide otherwise */
-
-/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
-See the above repository for updates as well as full license text. */
-
-/* Show sidebar only when the cursor is over it */
-/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
-
-#sidebar-box{
---uc-sidebar-width: 60px;
---uc-sidebar-hover-width: 230px;
---uc-autohide-sidebar-delay: 200ms; /* Wait 0.2s before hiding sidebar */
---uc-autohide-transition-duration: 115ms;
---uc-autohide-transition-type: linear;
---browser-area-z-index-sidebar: 3;
-position: relative;
- min-width: var(--uc-sidebar-width) !important;
-width: var(--uc-sidebar-width) !important;
- max-width: var(--uc-sidebar-width) !important;
- z-index: var(--browser-area-z-index-sidebar,3);
-}
-#sidebar-box[positionend]{ direction: rtl }
-#sidebar-box[positionend] > *{ direction: ltr }
-
-#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
-#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
-
-#main-window[sizemode=\"fullscreen\"] #sidebar-box{ --uc-sidebar-width: 1px; }
-
-#sidebar-splitter{ display: none }
-
-#sidebar-header{
-overflow: hidden;
-color: var(--chrome-color, inherit) !important;
- padding-inline: 0 !important;
-}
-
-#sidebar-header::before,
-#sidebar-header::after{
-content: \"\";
-display: flex;
- padding-left: 8px;
-}
-
-#sidebar-header,
-#sidebar{
-transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
- min-width: var(--uc-sidebar-width) !important;
- will-change: min-width;
-}
-#sidebar-box:hover > #sidebar-header,
-#sidebar-box:hover > #sidebar{
-min-width: var(--uc-sidebar-hover-width) !important;
-transition-delay: 0ms !important;
-}
-
-.sidebar-panel{
-background-color: transparent !important;
-color: var(--newtab-text-primary-color) !important;
-}
-
-.sidebar-panel #search-box{
--moz-appearance: none !important;
-background-color: rgba(249,249,250,0.1) !important;
-color: inherit !important;
-}
-
-/* Add sidebar divider and give it background */
-
-#sidebar,
-#sidebar-header{
-background-color: inherit !important;
-border-inline: 1px solid rgb(80,80,80);
-border-inline-width: 0px 1px;
-}
-
-#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
-#sidebar-box[positionend] > *{
-border-inline-width: 1px 0px;
-}
-
-/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
-
-#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{
-inset-inline: auto 0px !important;
-}
-#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{
-margin-inline: 0px !important;
-border-left-style: solid !important;
-}
-
-/* Remove the tabs label and move the Sidebary icon to the center of the box */
-#sidebar-box:hover [id=\"sidebar-icon\"] {
-transform: translateX(0px) !important;
- transition-delay: 0ms !important;
-}
-
-#sidebar-box [id=\"sidebar-icon\"] {
-transform: translateX(9px);
-transition: transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
-}
-
-#sidebar-box [id=\"sidebar-title\"] {
-visibility: hidden !important;
-transition: visibility var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
-}
-
-#sidebar-box:hover [id=\"sidebar-title\"] {
-visibility: visible !important;
- transition-delay: 0ms !important;
-}
-";
-};
-};
-}
diff --git a/home-config/nix-home-manager/firefox-nightly/policies.nix b/home-config/nix-home-manager/firefox-nightly/policies.nix
deleted file mode 100644
index 136b8b9..0000000
--- a/home-config/nix-home-manager/firefox-nightly/policies.nix
+++ /dev/null
@@ -1,130 +0,0 @@
-let
- lock-false = {
- Value = false;
- Status = "locked";
- };
- lock-true = {
- Value = true;
- Status = "locked";
- };
-in
-{
-
-EnableTrackingProtection = {
- Value = true;
- Locked = true;
- Cryptomining = true;
- Fingerprinting = true;
- EmailTracking = true;
-};
-UserMessaging = {
- WhatsNew = false;
- ExtensionRecommendations = false;
- FeatureRecommendations = false;
- UrlbarInterventions = false;
- SkipOnboarding = true;
- MoreFromMozilla = false;
- Labs = false;
- Locked = true;
-};
-DisableAppUpdate = true;
-DisableAccounts = true;
-DisableFirefoxAccounts = true;
-DisableFirefoxStudies = true;
-DisablePocket = true;
-DisableTelemetry = true;
-AutofillAddressEnabled = false;
-AutofillCreditCardEnabled = false;
-DisableMasterPasswordCreation = true;
-PasswordManagerEnabled = false;
-PrimaryPassword = false;
-OfferToSaveLogins = false;
-NoDefaultBookmarks = true;
-OverrideFirstRunPage = "";
-OverridePostUpdatePage = "";
-FirefoxHome = {
- Search = true;
- TopSites = true;
- SponsoredTopSites = false;
- Highlights = false;
- Pocket = false;
- SponsoredPocket = false;
- Snippets = false;
- Locked = true;
-};
-SearchSuggestEnabled = true;
-FirefoxSuggest = {
- WebSuggestions = true;
- SponsoredSuggestions = false;
- ImproveSuggest = false;
- Locked = true;
-};
-PictureInPicture = lock-true;
-HardwareAcceleration = true;
-Certificates = {
- ImportEnterpriseRoots = true;
-};
-ExtensionSettings = {
-#"*".installation_mode = "blocked";
-# uBlock Origin
- "uBlock0@raymondhill.net" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
- installation_mode = "force_installed";
- };
-# Bitwarden
- "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
- installation_mode = "normal_installed";
- };
-# SponsorBlock
- "sponsorBlocker@ajay.app" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
- installation_mode = "force_installed";
- };
-# DeArrow
- "deArrow@ajay.app" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow/latest.xpi";
- installation_mode = "force_installed";
- };
-# Return Youtube Dislike
- "{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislikes/latest.xpi";
- installation_mode = "force_installed";
- };
-# Youtube Nonstop
- "{0d7cafdd-501c-49ca-8ebb-e3341caaa55e}" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-nonstop/latest.xpi";
- installation_mode = "force_installed";
- };
-# Sidebery
- "{3c078156-979c-498b-8990-85f7987dd929}" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/sidebery/latest.xpi";
- installation_mode = "normal_installed";
- };
-# TamperMonkey
- "firefox@tampermonkey.net" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi";
- installation_mode = "force_installed";
- };
-# Floccus
- "floccus@handmadeideas.org" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/floccus/latest.xpi";
- installation_mode = "force_installed";
- };
-};
-Preferences = {
- "browser.startup.homepage" = "https://d.in.rschanz.org";
- "extensions.activeThemeID" = {
- Value = "firefox-compact-dark@mozilla.org";
- Status = "locked";
- };
- "toolkit.legacyUserProfileCustomizations.stylesheets" = lock-true;
- "xpinstall.whitelist.required" = lock-true;
- "dom.webgpu.enabled" = lock-true;
- "media.eme.enabled" = lock-true;
- "general.autoScroll" = lock-true;
- "general.smoothScroll" = lock-true;
- "browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false;
- "browser.aboutConfig.showWarning" = lock-false;
-};
-}
diff --git a/home-config/nix-home-manager/flake.lock b/home-config/nix-home-manager/flake.lock
deleted file mode 100644
index 0eebe5d..0000000
--- a/home-config/nix-home-manager/flake.lock
+++ /dev/null
@@ -1,1009 +0,0 @@
-{
- "nodes": {
- "aquamarine": {
- "inputs": {
- "hyprutils": [
- "hyprland",
- "hyprutils"
- ],
- "hyprwayland-scanner": [
- "hyprland",
- "hyprwayland-scanner"
- ],
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1738107926,
- "narHash": "sha256-ldWD4ci3LcBIfUN41qlBO/oR5chcsRLejMbSW8eH628=",
- "owner": "hyprwm",
- "repo": "aquamarine",
- "rev": "6934e7dc53a3189fa05572c42e0038c9632ee7a5",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "aquamarine",
- "type": "github"
- }
- },
- "cachix": {
- "locked": {
- "lastModified": 1635350005,
- "narHash": "sha256-tAMJnUwfaDEB2aa31jGcu7R7bzGELM9noc91L2PbVjg=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "1c1f5649bb9c1b0d98637c8c365228f57126f361",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "nixos-20.09",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "clipboard-sync": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1731355357,
- "narHash": "sha256-kTXsO+hskCfX36+Ez1fHu9SO54uUY2lofkrbMKE3Vrk=",
- "owner": "dnut",
- "repo": "clipboard-sync",
- "rev": "943e49e0a9a16b54bbab3704e99b6cf6ad4ea19f",
- "type": "github"
- },
- "original": {
- "owner": "dnut",
- "repo": "clipboard-sync",
- "rev": "943e49e0a9a16b54bbab3704e99b6cf6ad4ea19f",
- "type": "github"
- }
- },
- "flake-compat": {
- "flake": false,
- "locked": {
- "lastModified": 1696426674,
- "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
- "owner": "edolstra",
- "repo": "flake-compat",
- "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
- "type": "github"
- },
- "original": {
- "owner": "edolstra",
- "repo": "flake-compat",
- "type": "github"
- }
- },
- "flake-compat_2": {
- "locked": {
- "lastModified": 1717312683,
- "narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
- "owner": "nix-community",
- "repo": "flake-compat",
- "rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "flake-compat",
- "type": "github"
- }
- },
- "flake-utils": {
- "inputs": {
- "systems": "systems_4"
- },
- "locked": {
- "lastModified": 1731533236,
- "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "flake-utils_2": {
- "locked": {
- "lastModified": 1659877975,
- "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "gitignore": {
- "inputs": {
- "nixpkgs": [
- "hyprland",
- "pre-commit-hooks",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1709087332,
- "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
- "owner": "hercules-ci",
- "repo": "gitignore.nix",
- "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
- "type": "github"
- },
- "original": {
- "owner": "hercules-ci",
- "repo": "gitignore.nix",
- "type": "github"
- }
- },
- "home-manager": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1740579671,
- "narHash": "sha256-Dwt/3KknOQ4bgFG5YjqDT7oWRy27rPpDjAi2P0ok1zw=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "53c587d263f94aaf6a281745923c76bbec62bcf3",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "53c587d263f94aaf6a281745923c76bbec62bcf3",
- "type": "github"
- }
- },
- "hypr-dynamic-cursors": {
- "inputs": {
- "hyprland": [
- "hyprland"
- ],
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1738522286,
- "narHash": "sha256-Fg4+6Yko8V9b19/62jfKH0IWTiiRDMso1P1TnjAcs/8=",
- "owner": "VirtCode",
- "repo": "hypr-dynamic-cursors",
- "rev": "fd6214629937949ecd8a39f4b5ebbce2afac0dd5",
- "type": "github"
- },
- "original": {
- "owner": "VirtCode",
- "repo": "hypr-dynamic-cursors",
- "rev": "fd6214629937949ecd8a39f4b5ebbce2afac0dd5",
- "type": "github"
- }
- },
- "hyprcursor": {
- "inputs": {
- "hyprlang": [
- "hyprland",
- "hyprlang"
- ],
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1734906540,
- "narHash": "sha256-vQ/L9hZFezC0LquLo4TWXkyniWtYBlFHAKIsDc7PYJE=",
- "owner": "hyprwm",
- "repo": "hyprcursor",
- "rev": "69270ba8f057d55b0e6c2dca0e165d652856e613",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprcursor",
- "type": "github"
- }
- },
- "hyprgraphics": {
- "inputs": {
- "hyprutils": [
- "hyprland",
- "hyprutils"
- ],
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1736115290,
- "narHash": "sha256-Jcn6yAzfUMcxy3tN/iZRbi/QgrYm7XLyVRl9g/nbUl4=",
- "owner": "hyprwm",
- "repo": "hyprgraphics",
- "rev": "52202272d89da32a9f866c0d10305a5e3d954c50",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprgraphics",
- "type": "github"
- }
- },
- "hyprgraphics_2": {
- "inputs": {
- "hyprutils": [
- "hyprlock",
- "hyprutils"
- ],
- "nixpkgs": [
- "hyprlock",
- "nixpkgs"
- ],
- "systems": [
- "hyprlock",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1734906236,
- "narHash": "sha256-vH/ysV2ONGQgYZPtcJKwc8jJivzyVxru2aaOxC20ZOE=",
- "owner": "hyprwm",
- "repo": "hyprgraphics",
- "rev": "6dea3fba08fd704dd624b6d4b261638fb4003c9c",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprgraphics",
- "type": "github"
- }
- },
- "hyprland": {
- "inputs": {
- "aquamarine": "aquamarine",
- "hyprcursor": "hyprcursor",
- "hyprgraphics": "hyprgraphics",
- "hyprland-protocols": "hyprland-protocols",
- "hyprland-qtutils": "hyprland-qtutils",
- "hyprlang": "hyprlang",
- "hyprutils": "hyprutils_2",
- "hyprwayland-scanner": "hyprwayland-scanner",
- "nixpkgs": "nixpkgs",
- "pre-commit-hooks": "pre-commit-hooks",
- "systems": "systems",
- "xdph": "xdph"
- },
- "locked": {
- "lastModified": 1742741773,
- "narHash": "sha256-SLEd12Y9KzlQd4CfH2+gz3oQvkPKmwvwi74O+veNdbs=",
- "owner": "hyprwm",
- "repo": "hyprland",
- "rev": "5ee35f914f921e5696030698e74fb5566a804768",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "ref": "v0.48.0",
- "repo": "hyprland",
- "type": "github"
- }
- },
- "hyprland-protocols": {
- "inputs": {
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1737556638,
- "narHash": "sha256-laKgI3mr2qz6tas/q3tuGPxMdsGhBi/w+HO+hO2f1AY=",
- "owner": "hyprwm",
- "repo": "hyprland-protocols",
- "rev": "4c75dd5c015c8a0e5a34c6d02a018a650f57feb5",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprland-protocols",
- "type": "github"
- }
- },
- "hyprland-qtutils": {
- "inputs": {
- "hyprutils": "hyprutils",
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1736114838,
- "narHash": "sha256-FxbuGQExtN37ToWYnGmO6weOYN6WPHN/RAqbr7gNPek=",
- "owner": "hyprwm",
- "repo": "hyprland-qtutils",
- "rev": "6997fe382dcf396704227d2b98ffdd5066da6959",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprland-qtutils",
- "type": "github"
- }
- },
- "hyprlang": {
- "inputs": {
- "hyprutils": [
- "hyprland",
- "hyprutils"
- ],
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1735393019,
- "narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=",
- "owner": "hyprwm",
- "repo": "hyprlang",
- "rev": "55608efdaa387af7bfdc0eddb404c409958efa43",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprlang",
- "type": "github"
- }
- },
- "hyprlang_2": {
- "inputs": {
- "hyprutils": [
- "hyprlock",
- "hyprutils"
- ],
- "nixpkgs": [
- "hyprlock",
- "nixpkgs"
- ],
- "systems": [
- "hyprlock",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1735393019,
- "narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=",
- "owner": "hyprwm",
- "repo": "hyprlang",
- "rev": "55608efdaa387af7bfdc0eddb404c409958efa43",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprlang",
- "type": "github"
- }
- },
- "hyprlock": {
- "inputs": {
- "hyprgraphics": "hyprgraphics_2",
- "hyprlang": "hyprlang_2",
- "hyprutils": "hyprutils_3",
- "hyprwayland-scanner": "hyprwayland-scanner_2",
- "nixpkgs": [
- "nixpkgs"
- ],
- "systems": "systems_2"
- },
- "locked": {
- "lastModified": 1737652318,
- "narHash": "sha256-PotjNmR69yAEZP/Dn4lB0p7sHBjAPclNDbc5WkBZx4s=",
- "owner": "hyprwm",
- "repo": "hyprlock",
- "rev": "9cb5cd9e8227a6bfd456853f965b838f9d0b1786",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "ref": "v0.6.2",
- "repo": "hyprlock",
- "type": "github"
- }
- },
- "hyprpicker-git": {
- "inputs": {
- "hyprutils": "hyprutils_4",
- "hyprwayland-scanner": "hyprwayland-scanner_3",
- "nixpkgs": [
- "nixpkgs"
- ],
- "systems": "systems_3"
- },
- "locked": {
- "lastModified": 1737635601,
- "narHash": "sha256-/Jb/9HqC5Ou5JtsLHY2MJtj/c0aDG3kaeh4RLvc2X2U=",
- "owner": "hyprwm",
- "repo": "hyprpicker",
- "rev": "c3777320b358bb28a0f2112441377fe452d77ea8",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprpicker",
- "rev": "c3777320b358bb28a0f2112441377fe452d77ea8",
- "type": "github"
- }
- },
- "hyprutils": {
- "inputs": {
- "nixpkgs": [
- "hyprland",
- "hyprland-qtutils",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "hyprland-qtutils",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1742984269,
- "narHash": "sha256-uz9FaCIbga/gQ5ZG1Hb4HVVjTWT1qjjCAFlCXiaefxg=",
- "owner": "hyprwm",
- "repo": "hyprutils",
- "rev": "7248194a2ce0106ae647b70d0526a96dc9d6ad60",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprutils",
- "type": "github"
- }
- },
- "hyprutils_2": {
- "inputs": {
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1737978343,
- "narHash": "sha256-TfFS0HCEJh63Kahrkp1h9hVDMdLU8a37Zz+IFucxyfA=",
- "owner": "hyprwm",
- "repo": "hyprutils",
- "rev": "6a8bc9d2a4451df12f5179dc0b1d2d46518a90ab",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprutils",
- "type": "github"
- }
- },
- "hyprutils_3": {
- "inputs": {
- "nixpkgs": [
- "hyprlock",
- "nixpkgs"
- ],
- "systems": [
- "hyprlock",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1735316583,
- "narHash": "sha256-AiiUwHWHfEdpFzXy7l1x3zInCUa1xcRMrbZ1XRSkzwU=",
- "owner": "hyprwm",
- "repo": "hyprutils",
- "rev": "8f15d45b120b33712f6db477fe5ffb18034d0ea8",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprutils",
- "type": "github"
- }
- },
- "hyprutils_4": {
- "inputs": {
- "nixpkgs": [
- "hyprpicker-git",
- "nixpkgs"
- ],
- "systems": [
- "hyprpicker-git",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1737632363,
- "narHash": "sha256-X9I8POSlHxBVjD0fiX1O2j7U9Zi1+4rIkrsyHP0uHXY=",
- "owner": "hyprwm",
- "repo": "hyprutils",
- "rev": "006620eb29d54ea9086538891404c78563d1bae1",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprutils",
- "type": "github"
- }
- },
- "hyprwayland-scanner": {
- "inputs": {
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1735493474,
- "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=",
- "owner": "hyprwm",
- "repo": "hyprwayland-scanner",
- "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprwayland-scanner",
- "type": "github"
- }
- },
- "hyprwayland-scanner_2": {
- "inputs": {
- "nixpkgs": [
- "hyprlock",
- "nixpkgs"
- ],
- "systems": [
- "hyprlock",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1735493474,
- "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=",
- "owner": "hyprwm",
- "repo": "hyprwayland-scanner",
- "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprwayland-scanner",
- "type": "github"
- }
- },
- "hyprwayland-scanner_3": {
- "inputs": {
- "nixpkgs": [
- "hyprpicker-git",
- "nixpkgs"
- ],
- "systems": [
- "hyprpicker-git",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1735493474,
- "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=",
- "owner": "hyprwm",
- "repo": "hyprwayland-scanner",
- "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprwayland-scanner",
- "type": "github"
- }
- },
- "lib-aggregate": {
- "inputs": {
- "flake-utils": "flake-utils",
- "nixpkgs-lib": "nixpkgs-lib"
- },
- "locked": {
- "lastModified": 1740312740,
- "narHash": "sha256-z3M+zR18jGF1IIJ7Fp9LVOkEIUBhtY+65TSNq/DbgzQ=",
- "owner": "nix-community",
- "repo": "lib-aggregate",
- "rev": "1229db6582e2ee6337d6fbc4c3c59f2ef0b6d481",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "lib-aggregate",
- "type": "github"
- }
- },
- "mozff": {
- "inputs": {
- "cachix": "cachix",
- "flake-compat": "flake-compat_2",
- "lib-aggregate": "lib-aggregate",
- "mozilla": "mozilla",
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1740573223,
- "narHash": "sha256-OVysWIAwSvjCabd5F3QAyNXjU7bcNQ/zNve6YS5mZh4=",
- "owner": "nix-community",
- "repo": "flake-firefox-nightly",
- "rev": "3391372604cd3def19e6df88a51f1882aabcd59f",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "flake-firefox-nightly",
- "rev": "3391372604cd3def19e6df88a51f1882aabcd59f",
- "type": "github"
- }
- },
- "mozilla": {
- "flake": false,
- "locked": {
- "lastModified": 1736765918,
- "narHash": "sha256-oh7GSCjBGHpxaU8/gejT55mlvI3qoKObXgqyn1XR7SA=",
- "owner": "mozilla",
- "repo": "nixpkgs-mozilla",
- "rev": "534ee26d3dbcbb9da3766c556638b9bcc3627871",
- "type": "github"
- },
- "original": {
- "owner": "mozilla",
- "repo": "nixpkgs-mozilla",
- "type": "github"
- }
- },
- "nixgl": {
- "inputs": {
- "flake-utils": "flake-utils_2",
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1736159088,
- "narHash": "sha256-WDBc35XdHCdmgVYbPOtd2IeUtUHCYwNyEpIr5vLZMng=",
- "owner": "ryan77627",
- "repo": "nixGL",
- "rev": "3865170cbc23b32ec7cc8df1ec811fd44b6c2a58",
- "type": "github"
- },
- "original": {
- "owner": "ryan77627",
- "repo": "nixGL",
- "rev": "3865170cbc23b32ec7cc8df1ec811fd44b6c2a58",
- "type": "github"
- }
- },
- "nixpkgs": {
- "locked": {
- "lastModified": 1742889210,
- "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "698214a32beb4f4c8e3942372c694f40848b360d",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs-lib": {
- "locked": {
- "lastModified": 1740272720,
- "narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=",
- "owner": "nix-community",
- "repo": "nixpkgs.lib",
- "rev": "3d8ac19b63cf9d8305eed7301e4e83ff4ce9f495",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "nixpkgs.lib",
- "type": "github"
- }
- },
- "nixpkgs_2": {
- "locked": {
- "lastModified": 1739736696,
- "narHash": "sha256-zON2GNBkzsIyALlOCFiEBcIjI4w38GYOb+P+R4S8Jsw=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "d74a2335ac9c133d6bbec9fc98d91a77f1604c1f",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "d74a2335ac9c133d6bbec9fc98d91a77f1604c1f",
- "type": "github"
- }
- },
- "pre-commit-hooks": {
- "inputs": {
- "flake-compat": "flake-compat",
- "gitignore": "gitignore",
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1735882644,
- "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
- "owner": "cachix",
- "repo": "git-hooks.nix",
- "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
- "type": "github"
- },
- "original": {
- "owner": "cachix",
- "repo": "git-hooks.nix",
- "type": "github"
- }
- },
- "root": {
- "inputs": {
- "clipboard-sync": "clipboard-sync",
- "home-manager": "home-manager",
- "hypr-dynamic-cursors": "hypr-dynamic-cursors",
- "hyprland": "hyprland",
- "hyprlock": "hyprlock",
- "hyprpicker-git": "hyprpicker-git",
- "mozff": "mozff",
- "nixgl": "nixgl",
- "nixpkgs": "nixpkgs_2",
- "wpaperd": "wpaperd",
- "zen-browser": "zen-browser"
- }
- },
- "rust-overlay": {
- "inputs": {
- "nixpkgs": [
- "wpaperd",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1729391507,
- "narHash": "sha256-as0I9xieJUHf7kiK2a9znDsVZQTFWhM1pLivII43Gi0=",
- "owner": "oxalica",
- "repo": "rust-overlay",
- "rev": "784981a9feeba406de38c1c9a3decf966d853cca",
- "type": "github"
- },
- "original": {
- "owner": "oxalica",
- "repo": "rust-overlay",
- "type": "github"
- }
- },
- "systems": {
- "locked": {
- "lastModified": 1689347949,
- "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
- "owner": "nix-systems",
- "repo": "default-linux",
- "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default-linux",
- "type": "github"
- }
- },
- "systems_2": {
- "locked": {
- "lastModified": 1689347949,
- "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
- "owner": "nix-systems",
- "repo": "default-linux",
- "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default-linux",
- "type": "github"
- }
- },
- "systems_3": {
- "locked": {
- "lastModified": 1689347949,
- "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
- "owner": "nix-systems",
- "repo": "default-linux",
- "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default-linux",
- "type": "github"
- }
- },
- "systems_4": {
- "locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
- "owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default",
- "type": "github"
- }
- },
- "systems_5": {
- "locked": {
- "lastModified": 1689347949,
- "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
- "owner": "nix-systems",
- "repo": "default-linux",
- "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default-linux",
- "type": "github"
- }
- },
- "wpaperd": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ],
- "rust-overlay": "rust-overlay",
- "systems": "systems_5"
- },
- "locked": {
- "lastModified": 1734445299,
- "narHash": "sha256-/E7Y2UaYTXIyvRguvqD/FHC3I2mAT7w9berqv7/gUI4=",
- "owner": "danyspin97",
- "repo": "wpaperd",
- "rev": "b0b7e66fd32dca36c431a174784a2e87af7edb77",
- "type": "github"
- },
- "original": {
- "owner": "danyspin97",
- "repo": "wpaperd",
- "rev": "b0b7e66fd32dca36c431a174784a2e87af7edb77",
- "type": "github"
- }
- },
- "xdph": {
- "inputs": {
- "hyprland-protocols": [
- "hyprland",
- "hyprland-protocols"
- ],
- "hyprlang": [
- "hyprland",
- "hyprlang"
- ],
- "hyprutils": [
- "hyprland",
- "hyprutils"
- ],
- "hyprwayland-scanner": [
- "hyprland",
- "hyprwayland-scanner"
- ],
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1734907020,
- "narHash": "sha256-p6HxwpRKVl1KIiY5xrJdjcEeK3pbmc///UOyV6QER+w=",
- "owner": "hyprwm",
- "repo": "xdg-desktop-portal-hyprland",
- "rev": "d7f18dda5e511749fa1511185db3536208fb1a63",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "xdg-desktop-portal-hyprland",
- "type": "github"
- }
- },
- "zen-browser": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1742871532,
- "narHash": "sha256-ciC3zul202dnIwpAplSaCJTeXOUce7Pl1d+SMFwPQls=",
- "owner": "0xc000022070",
- "repo": "zen-browser-flake",
- "rev": "bef72020b20475847f24cd27134dca06724d4ba7",
- "type": "github"
- },
- "original": {
- "owner": "0xc000022070",
- "repo": "zen-browser-flake",
- "rev": "bef72020b20475847f24cd27134dca06724d4ba7",
- "type": "github"
- }
- }
- },
- "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 38b0708..0000000
--- a/home-config/nix-home-manager/flake.nix
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- description = "Home Manager configuration of ryan";
-
- inputs = {
- # Specify the source of Home Manager and Nixpkgs.
- nixpkgs.url = "github:nixos/nixpkgs/a84ebe20c6bc2ecbcfb000a50776219f48d134cc";
- home-manager = {
- url = "github:nix-community/home-manager/693840c01b9bef9e54100239cef937e53d4661bf";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- hyprlock = {
- url = "github:hyprwm/hyprlock/v0.6.2";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- hyprpicker-git = {
- url = "github:hyprwm/hyprpicker/c3777320b358bb28a0f2112441377fe452d77ea8";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- hyprland = {
- url = "github:hyprwm/hyprland/v0.48.0";
- inputs.nixpkgs.follows = "nixpkgs";
- #inputs.hyprutils.url = "github:/hyprwm/hyprutils/6a8bc9d2a4451df12f5179dc0b1d2d46518a90ab";
- };
- nixgl = {
- url = "github:ryan77627/nixGL/3865170cbc23b32ec7cc8df1ec811fd44b6c2a58";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- wpaperd = {
- url = "github:danyspin97/wpaperd/b0b7e66fd32dca36c431a174784a2e87af7edb77";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- mozff = {
- url = "github:nix-community/flake-firefox-nightly/3391372604cd3def19e6df88a51f1882aabcd59f";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- clipboard-sync = {
- url = "github:dnut/clipboard-sync/943e49e0a9a16b54bbab3704e99b6cf6ad4ea19f";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- hypr-dynamic-cursors = {
- url = "github:VirtCode/hypr-dynamic-cursors/fd6214629937949ecd8a39f4b5ebbce2afac0dd5";
- inputs.hyprland.follows = "hyprland";
- inputs.nixpkgs.follows = "hyprland/nixpkgs";
- };
- zen-browser = {
- url = "github:0xc000022070/zen-browser-flake/bef72020b20475847f24cd27134dca06724d4ba7";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- };
-
- outputs = { nixpkgs, home-manager, hyprland, nixgl, wpaperd, hyprpicker-git, hyprlock, mozff, clipboard-sync, hypr-dynamic-cursors, zen-browser, ... }@inputs:
- let
- system = "x86_64-linux";
- pkgs = nixpkgs.legacyPackages.${system};
- overlays = [
- #nixgl.overlay
- ];
- in {
- homeConfigurations."ryan" = home-manager.lib.homeManagerConfiguration {
- inherit pkgs;
-
- # Specify your home configuration modules here, for example,
- # the path to your home.nix.
- modules = [
- {nixpkgs.overlays = overlays;}
- ./home.nix
- {
- _module.args = {
- inherit hyprland;
- inherit nixgl;
- inherit wpaperd;
- inherit hyprlock;
- inherit hyprpicker-git;
- inherit mozff;
- inherit clipboard-sync;
- inherit hypr-dynamic-cursors;
- inherit zen-browser;
- };
- }
- ];
-
- # Optionally use extraSpecialArgs
- # to pass through arguments to home.nix
- # extraSpecialArgs = { inherit overlays; };
- };
- };
-}
diff --git a/home-config/nix-home-manager/home.nix b/home-config/nix-home-manager/home.nix
deleted file mode 100644
index f5d386c..0000000
--- a/home-config/nix-home-manager/home.nix
+++ /dev/null
@@ -1,192 +0,0 @@
-{ config, pkgs, hyprland, nixgl, wpaperd, hyprpicker-git, hyprlock, mozff, clipboard-sync, hypr-dynamic-cursors, zen-browser, ... }:
-let
- # THIS IS NOT PERFECT AT ALL YET!!! Gets the basics done (my important
- # policies regarding accounts and extensions. Does not set up profile
- # stuff, like search. Most importantly, it DOES NOT add system CAs.
- # To do that, run:
- # `certutil -A -n "name" -t "CT,c" -i ./path/to/cert -d ~/.zen/profile-folder`
- # I do this for my root and intermediate. BEWARE WHEN INSTALLING NEW
- # SYSTEMS!!!!
- ffPolicies = import ./zenPolicies.nix;
- customZen = zen-browser.packages.${pkgs.system}.default.overrideAttrs (old: {
- installPhase = old.installPhase + ''
- rm -f $out/lib/zen-${old.version}/distribution/policies.json
- rm -rf $out/lib
- mkdir $out/opt/zen/distribution
- ln -s ${pkgs.writeText "firefox-policies.json" (builtins.toJSON ffPolicies)} \
- "$out/opt/zen/distribution/policies.json"
- '';
- });
-
-in
-
-{
- imports = [
- ./firefox-nightly/default.nix
- ];
- # Home Manager needs a bit of information about you and the paths it should
- # manage.
- home.username = "ryan";
- home.homeDirectory = "/home/ryan";
-
- # Ignore news
- news.display = "silent";
-
- # 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;
- fonts.fontconfig.defaultFonts = {
- monospace = [ "DejaVu Sans Mono" ];
- sansSerif = [ "DejaVu Sans" ];
- serif = [ "DejaVu Serif" ];
- };
-
- wayland.windowManager.hyprland = {
- enable = true;
- package = hyprland.packages.${pkgs.system}.hyprland;
- portalPackage = hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
- extraConfig = ''
- ${builtins.readFile ../hypr/hyprland.conf}
- '';
- plugins = [ hypr-dynamic-cursors.packages.${pkgs.system}.hypr-dynamic-cursors ];
- };
-
- programs.starship = {
- enable = true;
- settings = {
- add_newline = false;
- character = {
- success_symbol = "[➜](bold green)";
- error_symbol = "[➜](bold red)";
- };
- time = {
- disabled = false;
- format = "\[ $time \]($style)";
- time_format = "%T";
- };
- };
- };
-
- # 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
- wl-clip-persist
- gifski
- waypaper
- gdu
- spotify-player
- #hyprpicker
- xwayland
- xdg-desktop-portal
- xdg-desktop-portal-gtk
- mpv
- imv
- libva
- libvdpau
- #wpaperd
- hypridle
- #latest.firefox-nightly-bin
- eza
- wl-mirror
- starship
- taskwarrior3
- delta
- (flameshot.override { enableWlrSupport = true; })
-
- # Here until i can fix firefox's stupid devtools issue
- chromium
-
- # Maybe will work?
- customZen
-
- # Wrapped programs for some env variables
- (pkgs.writeScriptBin "hyprlock" ''
- #! ${pkgs.bash}/bin/bash
- export LD_PRELOAD="/run/current-system/profile/lib/libpam.so.0:/run/current-system/profile/lib/libfontconfig.so:$LD_PRELOAD"
- exec ${hyprlock.packages.${pkgs.system}.hyprlock}/bin/hyprlock "$@"
- '')
-
- # Flakes specific things defined in flake.nix
- #hyprland.packages.${pkgs.system}.default
- #hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland
- nixgl.packages.${pkgs.system}.nixGLIntel
- wpaperd.packages.${pkgs.system}.wpaperd
- hyprpicker-git.packages.${pkgs.system}.hyprpicker
- clipboard-sync.packages.${pkgs.system}.default
-
- # Fonts!
- noto-fonts
- dejavu_fonts
- liberation_ttf
- noto-fonts-cjk-sans
- noto-fonts-emoji
-
- # # 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/nix-home-manager/zenPolicies.nix b/home-config/nix-home-manager/zenPolicies.nix
deleted file mode 100644
index 55b1190..0000000
--- a/home-config/nix-home-manager/zenPolicies.nix
+++ /dev/null
@@ -1,126 +0,0 @@
-let
- lock-false = {
- Value = false;
- Status = "locked";
- };
- lock-true = {
- Value = true;
- Status = "locked";
- };
-in
-{
-
-policies = {
- EnableTrackingProtection = {
- Value = true;
- Locked = true;
- Cryptomining = true;
- Fingerprinting = true;
- EmailTracking = true;
- };
- UserMessaging = {
- WhatsNew = false;
- ExtensionRecommendations = false;
- FeatureRecommendations = false;
- UrlbarInterventions = false;
- SkipOnboarding = true;
- MoreFromMozilla = false;
- Labs = false;
- Locked = true;
- };
- DisableAppUpdate = true;
- DisableAccounts = true;
- DisableFirefoxAccounts = true;
- DisableFirefoxStudies = true;
- DisablePocket = true;
- DisableTelemetry = true;
- AutofillAddressEnabled = false;
- AutofillCreditCardEnabled = false;
- DisableMasterPasswordCreation = true;
- PasswordManagerEnabled = false;
- PrimaryPassword = false;
- OfferToSaveLogins = false;
- NoDefaultBookmarks = true;
- OverrideFirstRunPage = "";
- OverridePostUpdatePage = "";
- FirefoxHome = {
- Search = true;
- TopSites = true;
- SponsoredTopSites = false;
- Highlights = false;
- Pocket = false;
- SponsoredPocket = false;
- Snippets = false;
- Locked = true;
- };
- SearchSuggestEnabled = true;
- FirefoxSuggest = {
- WebSuggestions = true;
- SponsoredSuggestions = false;
- ImproveSuggest = false;
- Locked = true;
- };
- PictureInPicture = lock-true;
- HardwareAcceleration = true;
- Certificates = {
- ImportEnterpriseRoots = true;
- };
- ExtensionSettings = {
- #"*".installation_mode = "blocked";
- # uBlock Origin
- "uBlock0@raymondhill.net" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
- installation_mode = "force_installed";
- };
- # Bitwarden
- "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
- installation_mode = "normal_installed";
- };
- # SponsorBlock
- "sponsorBlocker@ajay.app" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
- installation_mode = "force_installed";
- };
- # DeArrow
- "deArrow@ajay.app" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow/latest.xpi";
- installation_mode = "force_installed";
- };
- # Return Youtube Dislike
- "{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislikes/latest.xpi";
- installation_mode = "force_installed";
- };
- # Youtube Nonstop
- "{0d7cafdd-501c-49ca-8ebb-e3341caaa55e}" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-nonstop/latest.xpi";
- installation_mode = "force_installed";
- };
- # TamperMonkey
- "firefox@tampermonkey.net" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi";
- installation_mode = "force_installed";
- };
- # Floccus
- "floccus@handmadeideas.org" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/floccus/latest.xpi";
- installation_mode = "force_installed";
- };
- # Mailvelope
- "jid1-AQqSMBYb0a8ADg@jetpack" = {
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/mailvelope/latest.xpi";
- installation_mode = "force_installed";
- };
- };
- Preferences = {
- "xpinstall.whitelist.required" = lock-true;
- "dom.webgpu.enabled" = lock-true;
- "media.eme.enabled" = lock-true;
- "general.autoScroll" = lock-true;
- "general.smoothScroll" = lock-true;
- "browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false;
- "browser.aboutConfig.showWarning" = lock-false;
- };
-};
-}
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 90db93a..0000000
--- a/home-config/ssh/config
+++ /dev/null
@@ -1,24 +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 192.168.216.1
- HostkeyAlgorithms +ssh-rsa
- PubkeyAcceptedAlgorithms +ssh-rsa
-
-Host *
- KexAlgorithms -sntrup761x25519-sha512@openssh.com
diff --git a/home-config/tridactyl/native_main b/home-config/tridactyl/native_main
deleted file mode 100755
index b00c53e..0000000
Binary files a/home-config/tridactyl/native_main and /dev/null differ
diff --git a/home-config/tridactyl/tridactyl.json b/home-config/tridactyl/tridactyl.json
deleted file mode 100644
index 0764f98..0000000
--- a/home-config/tridactyl/tridactyl.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "tridactyl",
- "description": "Tridactyl native command handler",
- "path": "/home/ryan/.local/share/tridactyl/native_main",
- "type": "stdio",
- "allowed_extensions": [ "tridactyl.vim@cmcaine.co.uk","tridactyl.vim.betas@cmcaine.co.uk", "tridactyl.vim.betas.nonewtab@cmcaine.co.uk" ]
-}
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/home-config/wpaperd/config.toml b/home-config/wpaperd/config.toml
deleted file mode 100644
index 9947370..0000000
--- a/home-config/wpaperd/config.toml
+++ /dev/null
@@ -1,4 +0,0 @@
-[default]
-duration = "30m"
-path = "~/.config/hypr/Wallpapers/static/"
-transition-time = 2000
diff --git a/modules/ryan-config/base-system.scm b/modules/ryan-config/base-system.scm
index f5bc98c..d84744b 100644
--- a/modules/ryan-config/base-system.scm
+++ b/modules/ryan-config/base-system.scm
@@ -18,7 +18,9 @@
#: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 (ryan-packages package-management)
#:use-module (rosenthal services networking)
#:use-module (gnu packages security-token)
#:use-module (gnu services security-token)
@@ -27,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)
@@ -115,7 +118,7 @@
(name "ryan")
(comment "Ryan")
(group "users")
- ;(shell (file-append zsh "/bin/zsh"))
+ (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))
@@ -123,50 +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"
- "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 blueman-ryan)
- %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.
@@ -187,11 +190,14 @@
(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
- (tailscale-configuration
- (socket "/var/run/tailscale/tailscaled.sock")))
+ ; (service tailscale-service-type
+ ; (tailscale-configuration
+ ; (socket "/var/run/tailscale/tailscaled.sock")))
+ (service netbird-service-type)
(service containerd-service-type)
- (service nix-service-type)
+ (service nix-service-type
+ (nix-configuration
+ (package nix-ryan)))
(simple-service 'hyprlock-pam pam-root-service-type
(list
(pam-service
@@ -200,6 +206,36 @@
(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)
@@ -212,6 +248,7 @@
; (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)
@@ -247,7 +284,10 @@
(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
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/bootloaders.scm b/modules/ryan-packages/bootloaders.scm
index 10f38d1..dad3743 100644
--- a/modules/ryan-packages/bootloaders.scm
+++ b/modules/ryan-packages/bootloaders.scm
@@ -9,6 +9,13 @@
#: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)
@@ -18,7 +25,7 @@
#:use-module (guix build-system meson)
#:use-module (guix build-system python))
-(define systemd-version "255")
+(define systemd-version "258")
(define systemd-source
(origin
(method git-fetch)
@@ -28,7 +35,7 @@
(file-name (git-file-name "systemd" systemd-version))
(sha256
(base32
- "1qdyw9g3jgvsbc1aryr11gpc3075w5pg00mqv4pyf3hwixxkwaq6"))))
+ "18gnp45gl1154jra6qv95k8y7ny6phdm87yqi5jdq13cadlrklf6"))))
(define-public (systemd-stub-name)
(let ((arch (cond ((target-x86-32?) "ia32")
@@ -54,7 +61,7 @@
,(string-append "-Dsbat-distro-pkgname=" name)
,(string-append "-Dsbat-distro-version=" version))
#:phases
- #~(let ((stub #$(string-append "src/boot/efi/" (systemd-stub-name))))
+ #~(let ((stub #$(string-append "src/boot/" (systemd-stub-name))))
(modify-phases %standard-phases
(replace 'build
(lambda* (#:key parallel-build? #:allow-other-keys)
@@ -108,3 +115,34 @@ kernel arguments, and optional secure boot signatures into a single, UEFI-bootab
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/linux.scm b/modules/ryan-packages/linux.scm
index 7ccfc2d..272280c 100644
--- a/modules/ryan-packages/linux.scm
+++ b/modules/ryan-packages/linux.scm
@@ -5,6 +5,11 @@
#: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))
@@ -35,4 +40,37 @@
(("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
index 9629168..18c7be4 100644
--- a/modules/ryan-packages/package-management.scm
+++ b/modules/ryan-packages/package-management.scm
@@ -36,7 +36,7 @@
(define-public nix-ryan
(package
(name "nix")
- (version "2.26.3")
+ (version "2.29.0")
(source
(origin
(method git-fetch)
@@ -45,7 +45,7 @@
(commit version)))
(file-name (git-file-name "nix" version))
(sha256
- (base32 "1rh9k0cdixahqzziylgg7p8j9p58h55m08h3l1kg369wlmi7r5g5"))))
+ (base32 "19cd94xpjzwmclscpw9x3gfic0vf160llfnh9diz2l4823fw8iky"))))
(build-system meson-build-system)
(arguments
(list
@@ -94,7 +94,7 @@
(define libbl3
(package
(name "blake3")
- (version "1.7.0")
+ (version "1.8.2")
(source
(origin
(method git-fetch)
@@ -103,11 +103,12 @@
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1dsx5jmr8csgzdvfxf4byc1086rg6vclqgqkz54la8rpfn3gkh6k"))))
+ (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
@@ -135,6 +136,9 @@
(sha256
(base32 "0d15b50cf9jgvh3w99xh6crh03bn2dmv9bdyvzq6knsk2diql1dj"))))
(build-system cmake-build-system)
+ (arguments
+ (list
+ #:tests? #f))
(home-page "https://github.com/ToruNiina/toml11")
(synopsis "TODO")
(description "TODO")
diff --git a/modules/ryan-packages/wm.scm b/modules/ryan-packages/wm.scm
index cadbb1d..edb1b32 100644
--- a/modules/ryan-packages/wm.scm
+++ b/modules/ryan-packages/wm.scm
@@ -23,7 +23,7 @@
#:use-module (guix git-download)
#:use-module (guix utils)
;#:use-module (rosenthal packages wm)
- #:use-module (ryan-packages gtk)
+ ;#:use-module (ryan-packages gtk)
#:use-module (ryan-packages gl)
#:use-module (gnu packages wm))
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.")))