about summary refs log tree commit diff stats
path: root/pkgs/sources
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/sources')
-rw-r--r--pkgs/sources/comments/.envrc4
-rw-r--r--pkgs/sources/comments/.gitignore3
-rw-r--r--pkgs/sources/comments/Cargo.lock446
-rw-r--r--pkgs/sources/comments/Cargo.toml16
-rw-r--r--pkgs/sources/comments/comments.nix25
-rw-r--r--pkgs/sources/comments/default.nix18
-rw-r--r--pkgs/sources/comments/flake.lock61
-rw-r--r--pkgs/sources/comments/flake.nix31
-rw-r--r--pkgs/sources/comments/src/info_json.rs223
-rw-r--r--pkgs/sources/comments/src/main.rs322
-rwxr-xr-xpkgs/sources/comments/update.sh8
-rw-r--r--pkgs/sources/default.nix27
-rw-r--r--pkgs/sources/generate_moz_extension/.envrc1
-rw-r--r--pkgs/sources/generate_moz_extension/.gitignore3
-rw-r--r--pkgs/sources/generate_moz_extension/Cargo.lock1275
-rw-r--r--pkgs/sources/generate_moz_extension/Cargo.toml14
-rw-r--r--pkgs/sources/generate_moz_extension/default.nix16
-rwxr-xr-xpkgs/sources/generate_moz_extension/examples/generate_extensions.sh17
-rw-r--r--pkgs/sources/generate_moz_extension/flake.lock106
-rw-r--r--pkgs/sources/generate_moz_extension/flake.nix75
-rw-r--r--pkgs/sources/generate_moz_extension/generate_firefox_extensions.nix20
-rw-r--r--pkgs/sources/generate_moz_extension/res/generate_extensions.py44
-rw-r--r--pkgs/sources/generate_moz_extension/res/reference.json30
-rw-r--r--pkgs/sources/generate_moz_extension/res/test.json30
-rw-r--r--pkgs/sources/generate_moz_extension/src/main.rs138
-rw-r--r--pkgs/sources/generate_moz_extension/src/types.rs71
-rwxr-xr-xpkgs/sources/generate_moz_extension/update.sh8
-rw-r--r--pkgs/sources/lf-make-map/.envrc11
-rw-r--r--pkgs/sources/lf-make-map/.gitignore6
-rw-r--r--pkgs/sources/lf-make-map/Cargo.lock505
-rw-r--r--pkgs/sources/lf-make-map/Cargo.toml14
-rw-r--r--pkgs/sources/lf-make-map/README.md12
-rw-r--r--pkgs/sources/lf-make-map/default.nix12
-rw-r--r--pkgs/sources/lf-make-map/flake.lock147
-rw-r--r--pkgs/sources/lf-make-map/flake.nix125
-rw-r--r--pkgs/sources/lf-make-map/lf_make_map.nix10
-rw-r--r--pkgs/sources/lf-make-map/src/cli.rs49
-rw-r--r--pkgs/sources/lf-make-map/src/main.rs229
-rw-r--r--pkgs/sources/lf-make-map/src/mapping/map_tree/display.rs91
-rw-r--r--pkgs/sources/lf-make-map/src/mapping/map_tree/iterator.rs53
-rw-r--r--pkgs/sources/lf-make-map/src/mapping/map_tree/lf_mapping.rs19
-rw-r--r--pkgs/sources/lf-make-map/src/mapping/map_tree/mod.rs402
-rw-r--r--pkgs/sources/lf-make-map/src/mapping/mod.rs156
-rwxr-xr-xpkgs/sources/lf-make-map/update.sh6
-rw-r--r--pkgs/sources/plgs-pkgs/README.md92
-rw-r--r--pkgs/sources/plgs-pkgs/check.nix37
-rw-r--r--pkgs/sources/plgs-pkgs/default.nix15
-rw-r--r--pkgs/sources/plgs-pkgs/overrides.nix34
-rw-r--r--pkgs/sources/plgs-pkgs/plugins/.plugins.json7
-rw-r--r--pkgs/sources/plgs-pkgs/plugins/blacklist.txt1
-rw-r--r--pkgs/sources/plgs-pkgs/plugins/default.nix55
-rw-r--r--pkgs/sources/plgs-pkgs/plugins/manifest.txt3
-rw-r--r--pkgs/sources/plgs-pkgs/plugins/plugins.md7
-rw-r--r--pkgs/sources/plgs-pkgs/plugins/whitelist.txt0
-rwxr-xr-xpkgs/sources/plgs-pkgs/update.sh27
-rw-r--r--pkgs/sources/scripts/default.nix412
-rwxr-xr-xpkgs/sources/scripts/source/apps/aumo.sh28
-rwxr-xr-xpkgs/sources/scripts/source/apps/con2pdf.sh234
-rw-r--r--pkgs/sources/scripts/source/apps/fupdate.1.md70
-rwxr-xr-xpkgs/sources/scripts/source/apps/fupdate.sh197
-rwxr-xr-xpkgs/sources/scripts/source/apps/git-edit-index.sh98
-rwxr-xr-xpkgs/sources/scripts/source/small_functions/brightness.sh80
-rwxr-xr-xpkgs/sources/scripts/source/small_functions/nato.py106
-rwxr-xr-xpkgs/sources/scripts/source/small_functions/screenshot_persistent.sh22
-rwxr-xr-xpkgs/sources/scripts/source/small_functions/screenshot_temporary.sh8
-rwxr-xr-xpkgs/sources/scripts/source/small_functions/update-sys.sh85
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/neorg_id_function.sh16
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/add.sh23
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/context.sh43
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/dmenu.sh14
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/f_start.sh7
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/f_stop.sh7
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/list.sh8
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/project.sh41
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/review.sh12
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/utils.sh40
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/functions/workspace.sh9
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/main.sh164
-rwxr-xr-xpkgs/sources/scripts/source/specific/spodi/sh/download.sh58
-rwxr-xr-xpkgs/sources/scripts/source/specific/spodi/sh/update.sh52
-rwxr-xr-xpkgs/sources/scripts/source/specific/spodi/spodi.sh71
-rwxr-xr-xpkgs/sources/scripts/source/specific/ytcc/description.sh8
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/battery.sh11
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/hibernate.sh15
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/ll.sh14
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/lock.sh18
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/lyrics.sh11
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/mpc-fav.sh16
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/mpc-rm.sh10
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/mpc.sh20
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/show.sh9
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/sort_song.sh34
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/virsh-del.sh10
-rwxr-xr-xpkgs/sources/scripts/source/wrappers/yti.sh33
-rw-r--r--pkgs/sources/snap-sync-forked/default.nix24
-rwxr-xr-xpkgs/sources/snap-sync-forked/snap-sync-forked.sh534
-rw-r--r--pkgs/sources/tree-sitter-yts/.editorconfig21
-rw-r--r--pkgs/sources/tree-sitter-yts/.envrc1
-rw-r--r--pkgs/sources/tree-sitter-yts/.gitignore3
-rw-r--r--pkgs/sources/tree-sitter-yts/Cargo.toml21
-rw-r--r--pkgs/sources/tree-sitter-yts/binding.gyp19
-rw-r--r--pkgs/sources/tree-sitter-yts/bindings/node/binding.cc33
-rw-r--r--pkgs/sources/tree-sitter-yts/bindings/node/index.js19
-rw-r--r--pkgs/sources/tree-sitter-yts/bindings/rust/build.rs40
-rw-r--r--pkgs/sources/tree-sitter-yts/bindings/rust/lib.rs52
-rw-r--r--pkgs/sources/tree-sitter-yts/corpus/comments.txt51
-rw-r--r--pkgs/sources/tree-sitter-yts/corpus/comments_correct.txt27
-rw-r--r--pkgs/sources/tree-sitter-yts/corpus/duration.txt84
-rw-r--r--pkgs/sources/tree-sitter-yts/corpus/url.txt84
-rw-r--r--pkgs/sources/tree-sitter-yts/default.nix11
-rw-r--r--pkgs/sources/tree-sitter-yts/flake.lock97
-rw-r--r--pkgs/sources/tree-sitter-yts/flake.nix82
-rw-r--r--pkgs/sources/tree-sitter-yts/grammar.js26
-rw-r--r--pkgs/sources/tree-sitter-yts/highlight.yts4
-rw-r--r--pkgs/sources/tree-sitter-yts/package.json31
-rw-r--r--pkgs/sources/tree-sitter-yts/package.nix63
-rw-r--r--pkgs/sources/tree-sitter-yts/queries/highlights.scm11
-rw-r--r--pkgs/sources/tree-sitter-yts/src/grammar.json238
-rw-r--r--pkgs/sources/tree-sitter-yts/src/node-types.json200
-rw-r--r--pkgs/sources/tree-sitter-yts/src/parser.c1108
-rw-r--r--pkgs/sources/tree-sitter-yts/src/tree_sitter/parser.h241
-rw-r--r--pkgs/sources/tree-sitter-yts/treefmt.toml35
-rwxr-xr-xpkgs/sources/update_pkgs.sh25
-rw-r--r--pkgs/sources/update_vim_plugins/.envrc1
-rwxr-xr-xpkgs/sources/update_vim_plugins/check-duplicates.sh43
-rw-r--r--pkgs/sources/update_vim_plugins/default.nix17
-rw-r--r--pkgs/sources/update_vim_plugins/flake.lock61
-rw-r--r--pkgs/sources/update_vim_plugins/flake.nix24
-rw-r--r--pkgs/sources/update_vim_plugins/package.nix47
-rw-r--r--pkgs/sources/update_vim_plugins/poetry.lock680
-rw-r--r--pkgs/sources/update_vim_plugins/pyproject.toml45
-rwxr-xr-xpkgs/sources/update_vim_plugins/update.sh5
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/__init__.py0
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/__main__.py15
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/cleanup.py100
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/helpers.py61
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/nix.py121
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/plugin.py182
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/spec.py143
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/tests/__init__.py0
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/tests/fixtures.py44
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_nix.py32
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_plugin.py144
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_spec.py136
-rw-r--r--pkgs/sources/update_vim_plugins/update_vim_plugins/update.py212
-rwxr-xr-xpkgs/sources/yt/.env3
-rw-r--r--pkgs/sources/yt/.envrc1
-rw-r--r--pkgs/sources/yt/.gitignore3
-rw-r--r--pkgs/sources/yt/Cargo.lock640
-rw-r--r--pkgs/sources/yt/Cargo.toml35
-rw-r--r--pkgs/sources/yt/default.nix51
-rw-r--r--pkgs/sources/yt/flake.lock61
-rw-r--r--pkgs/sources/yt/flake.nix30
-rw-r--r--pkgs/sources/yt/src/bin/yt/main.rs91
-rw-r--r--pkgs/sources/yt/src/bin/ytc/args.rs26
-rw-r--r--pkgs/sources/yt/src/bin/ytc/main.rs77
-rw-r--r--pkgs/sources/yt/src/bin/yts/args.rs41
-rw-r--r--pkgs/sources/yt/src/bin/yts/main.rs91
-rw-r--r--pkgs/sources/yt/src/constants.rs51
-rw-r--r--pkgs/sources/yt/src/downloader.rs212
-rw-r--r--pkgs/sources/yt/src/help.str8
-rw-r--r--pkgs/sources/yt/src/lib.rs185
-rw-r--r--pkgs/sources/yt/todo1
-rwxr-xr-xpkgs/sources/yt/update.sh8
-rw-r--r--pkgs/sources/yt/yt.nix29
-rw-r--r--pkgs/sources/yt/ytc.nix29
-rw-r--r--pkgs/sources/yt/yts.nix27
167 files changed, 0 insertions, 14269 deletions
diff --git a/pkgs/sources/comments/.envrc b/pkgs/sources/comments/.envrc
deleted file mode 100644
index 2b5fbb29..00000000
--- a/pkgs/sources/comments/.envrc
+++ /dev/null
@@ -1,4 +0,0 @@
-use flake
-
-PATH_add ./target/debug
-PATH_add ./target/release
diff --git a/pkgs/sources/comments/.gitignore b/pkgs/sources/comments/.gitignore
deleted file mode 100644
index c84fa049..00000000
--- a/pkgs/sources/comments/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# build dirs
-/target
-/result
diff --git a/pkgs/sources/comments/Cargo.lock b/pkgs/sources/comments/Cargo.lock
deleted file mode 100644
index 54f19c46..00000000
--- a/pkgs/sources/comments/Cargo.lock
+++ /dev/null
@@ -1,446 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "aho-corasick"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "android-tzdata"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
-
-[[package]]
-name = "android_system_properties"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "anyhow"
-version = "1.0.83"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3"
-
-[[package]]
-name = "autocfg"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
-
-[[package]]
-name = "bumpalo"
-version = "3.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
-
-[[package]]
-name = "cc"
-version = "1.0.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "chrono"
-version = "0.4.38"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
-dependencies = [
- "android-tzdata",
- "iana-time-zone",
- "js-sys",
- "num-traits",
- "wasm-bindgen",
- "windows-targets",
-]
-
-[[package]]
-name = "chrono-humanize"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b"
-dependencies = [
- "chrono",
-]
-
-[[package]]
-name = "cli-log"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d2ab00dc4c82ec28af25ac085aecc11ffeabf353755715a3113a7aa044ca5cc"
-dependencies = [
- "chrono",
- "file-size",
- "log",
- "proc-status",
-]
-
-[[package]]
-name = "comments"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "chrono",
- "chrono-humanize",
- "cli-log",
- "log",
- "regex",
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
-
-[[package]]
-name = "file-size"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9544f10105d33957765016b8a9baea7e689bf1f0f2f32c2fa2f568770c38d2b3"
-
-[[package]]
-name = "iana-time-zone"
-version = "0.1.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
-dependencies = [
- "android_system_properties",
- "core-foundation-sys",
- "iana-time-zone-haiku",
- "js-sys",
- "wasm-bindgen",
- "windows-core",
-]
-
-[[package]]
-name = "iana-time-zone-haiku"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "itoa"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
-
-[[package]]
-name = "js-sys"
-version = "0.3.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.154"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
-
-[[package]]
-name = "log"
-version = "0.4.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
-
-[[package]]
-name = "memchr"
-version = "2.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
-
-[[package]]
-name = "num-traits"
-version = "0.2.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.82"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "proc-status"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0e0c0ac915e7b76b47850ba4ffc377abde6c6ff9eeace61d0a89623db449712"
-dependencies = [
- "thiserror",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "regex"
-version = "1.10.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
-
-[[package]]
-name = "ryu"
-version = "1.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
-
-[[package]]
-name = "serde"
-version = "1.0.201"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.201"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.117"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "syn"
-version = "2.0.61"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
-dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
-dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
-
-[[package]]
-name = "windows-core"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
diff --git a/pkgs/sources/comments/Cargo.toml b/pkgs/sources/comments/Cargo.toml
deleted file mode 100644
index 3ae3aa4c..00000000
--- a/pkgs/sources/comments/Cargo.toml
+++ /dev/null
@@ -1,16 +0,0 @@
-[package]
-name = "comments"
-version = "0.1.0"
-edition = "2021"
-
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
-[dependencies]
-anyhow = "1.0.82"
-chrono = "0.4.38"
-chrono-humanize = "0.2.3"
-cli-log = "2.0.0"
-log = "0.4.21"
-regex = "1.10.4"
-serde = { version = "1.0.200", features = ["derive"] }
-serde_json = "1.0.116"
diff --git a/pkgs/sources/comments/comments.nix b/pkgs/sources/comments/comments.nix
deleted file mode 100644
index e8a33bff..00000000
--- a/pkgs/sources/comments/comments.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  lib,
-  rustPlatform,
-  makeWrapper,
-  less,
-  coreutils,
-}:
-rustPlatform.buildRustPackage {
-  pname = "comments";
-  version = "0.1.0";
-
-  src = ./.;
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-  };
-
-  nativeBuildInputs = [
-    makeWrapper
-  ];
-
-  postInstall = ''
-    wrapProgram $out/bin/comments \
-      --set PATH ${lib.makeBinPath [less coreutils]}
-  '';
-}
diff --git a/pkgs/sources/comments/default.nix b/pkgs/sources/comments/default.nix
deleted file mode 100644
index 6205dcbe..00000000
--- a/pkgs/sources/comments/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-[
-  (
-    final: prev: {
-      comments = import ./comments.nix {
-        inherit
-          (prev)
-          lib
-          makeWrapper
-          rustPlatform
-          # dependencies
-          
-          less
-          coreutils
-          ;
-      };
-    }
-  )
-]
diff --git a/pkgs/sources/comments/flake.lock b/pkgs/sources/comments/flake.lock
deleted file mode 100644
index 50494465..00000000
--- a/pkgs/sources/comments/flake.lock
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "nodes": {
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1710146030,
-        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "nixpkgs": {
-      "locked": {
-        "lastModified": 1715087517,
-        "narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "b211b392b8486ee79df6cdfb1157ad2133427a29",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "root": {
-      "inputs": {
-        "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs"
-      }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    }
-  },
-  "root": "root",
-  "version": 7
-}
diff --git a/pkgs/sources/comments/flake.nix b/pkgs/sources/comments/flake.nix
deleted file mode 100644
index f5e44a65..00000000
--- a/pkgs/sources/comments/flake.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  description = "comments";
-
-  inputs = {
-    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-
-    flake-utils.url = "github:numtide/flake-utils";
-  };
-
-  outputs = {
-    self,
-    nixpkgs,
-    flake-utils,
-  }: (flake-utils.lib.eachDefaultSystem (system: let
-    pkgs = nixpkgs.legacyPackages."${system}";
-  in {
-    devShells.default = pkgs.mkShell {
-      packages = with pkgs; [
-        # rust stuff
-        cargo
-        clippy
-        rustc
-        rustfmt
-
-        cargo-edit
-        cargo-expand
-        cargo-audit
-      ];
-    };
-  }));
-}
diff --git a/pkgs/sources/comments/src/info_json.rs b/pkgs/sources/comments/src/info_json.rs
deleted file mode 100644
index eca4fae3..00000000
--- a/pkgs/sources/comments/src/info_json.rs
+++ /dev/null
@@ -1,223 +0,0 @@
-use std::collections::HashMap;
-
-use serde::{Deserialize, Deserializer};
-
-#[derive(Debug, Deserialize)]
-pub struct InfoJson {
-    pub id: String,
-    pub title: String,
-    pub formats: Vec<Format>,
-    pub thumbnails: Vec<ThumbNail>,
-    pub thumbnail: String,
-    pub description: String,
-    pub channel_id: String,
-    pub channel_url: String,
-    pub duration: u32,
-    pub view_count: u32,
-    pub age_limit: u32,
-    pub webpage_url: String,
-    pub categories: Vec<String>,
-    pub tags: Vec<String>,
-    pub playable_in_embed: bool,
-    pub live_status: String,
-    _format_sort_fields: Vec<String>,
-    pub automatic_captions: HashMap<String, Vec<Caption>>,
-    pub subtitles: Subtitles,
-    pub comment_count: u32,
-    pub like_count: u32,
-    pub channel: String,
-    pub channel_follower_count: u32,
-    pub channel_is_verified: Option<bool>,
-    pub uploader: String,
-    pub uploader_id: String,
-    pub uploader_url: String,
-    pub upload_date: String,
-    pub availability: String,
-    pub webpage_url_basename: String,
-    pub webpage_url_domain: String,
-    pub extractor: String,
-    pub extractor_key: String,
-    pub display_id: String,
-    pub fulltitle: String,
-    pub duration_string: String,
-    pub is_live: bool,
-    pub was_live: bool,
-    pub epoch: u32,
-    pub comments: Vec<Comment>,
-    pub sponsorblock_chapters: Option<Vec<SponsorblockChapter>>,
-    pub format: String,
-    pub format_id: String,
-    pub ext: String,
-    pub protocol: String,
-    pub language: Option<String>,
-    pub format_note: String,
-    pub filesize_approx: u64,
-    pub tbr: f64,
-    pub width: u32,
-    pub height: u32,
-    pub resolution: String,
-    pub fps: f64,
-    pub dynamic_range: String,
-    pub vcodec: String,
-    pub vbr: f64,
-    pub aspect_ratio: f64,
-    pub acodec: String,
-    pub abr: f64,
-    pub asr: u32,
-    pub audio_channels: u32,
-    _type: String,
-    _version: Version,
-}
-
-#[derive(Debug, Deserialize)]
-pub struct Subtitles {}
-
-#[derive(Debug, Deserialize)]
-pub struct Version {
-    pub version: String,
-    pub release_git_head: String,
-    pub repository: String,
-}
-
-#[derive(Debug, Deserialize)]
-pub struct SponsorblockChapter {}
-
-#[derive(Debug, Deserialize, Clone)]
-#[serde(from = "String")]
-pub enum Parent {
-    Root,
-    Id(String),
-}
-
-impl Parent {
-    pub fn id(&self) -> Option<&str> {
-        if let Self::Id(id) = self {
-            Some(id)
-        } else {
-            None
-        }
-    }
-}
-
-impl From<String> for Parent {
-    fn from(value: String) -> Self {
-        if value == "root" {
-            Self::Root
-        } else {
-            Self::Id(value)
-        }
-    }
-}
-
-#[derive(Debug, Deserialize, Clone)]
-#[serde(from = "String")]
-pub struct Id {
-    pub id: String,
-}
-impl From<String> for Id {
-    fn from(value: String) -> Self {
-        Self {
-            // Take the last element if the string is split with dots, otherwise take the full id
-            id: value.split('.').last().unwrap_or(&value).to_owned(),
-        }
-    }
-}
-
-#[derive(Debug, Deserialize, Clone)]
-pub struct Comment {
-    pub id: Id,
-    pub text: String,
-    #[serde(default = "zero")]
-    pub like_count: u32,
-    pub author_id: String,
-    #[serde(default = "unknown")]
-    pub author: String,
-    pub author_thumbnail: String,
-    pub parent: Parent,
-    #[serde(deserialize_with = "edited_from_time_text", alias = "_time_text")]
-    pub edited: bool,
-    // Can't also be deserialized, as it's already used in 'edited'
-    // _time_text: String,
-    pub timestamp: i64,
-    pub author_url: String,
-    pub author_is_uploader: bool,
-    pub is_favorited: bool,
-}
-fn unknown() -> String {
-    "<Unknown>".to_string()
-}
-fn zero() -> u32 {
-    0
-}
-fn edited_from_time_text<'de, D>(d: D) -> Result<bool, D::Error>
-where
-    D: Deserializer<'de>,
-{
-    let s = String::deserialize(d)?;
-    if s.contains(" (edited)") {
-        Ok(true)
-    } else {
-        Ok(false)
-    }
-}
-
-#[derive(Debug, Deserialize)]
-pub struct Caption {
-    pub ext: String,
-    pub url: String,
-    pub name: Option<String>,
-    pub protocol: Option<String>,
-}
-
-#[derive(Debug, Deserialize)]
-pub struct ThumbNail {
-    pub url: String,
-    pub preference: i32,
-    pub id: String,
-    pub height: Option<u32>,
-    pub width: Option<u32>,
-    pub resolution: Option<String>,
-}
-
-#[derive(Debug, Deserialize)]
-pub struct Format {
-    pub format_id: String,
-    pub format_note: Option<String>,
-    pub ext: String,
-    pub protocol: String,
-    pub acodec: Option<String>,
-    pub vcodec: String,
-    pub url: String,
-    pub width: Option<u32>,
-    pub height: Option<u32>,
-    pub fps: Option<f64>,
-    pub rows: Option<u32>,
-    pub columns: Option<u32>,
-    pub fragments: Option<Vec<Fragment>>,
-    pub resolution: String,
-    pub aspect_ratio: Option<f64>,
-    pub http_headers: HttpHeader,
-    pub audio_ext: String,
-    pub video_ext: String,
-    pub vbr: Option<f64>,
-    pub abr: Option<f64>,
-    pub format: String,
-}
-
-#[derive(Debug, Deserialize)]
-pub struct HttpHeader {
-    #[serde(alias = "User-Agent")]
-    pub user_agent: String,
-    #[serde(alias = "Accept")]
-    pub accept: String,
-    #[serde(alias = "Accept-Language")]
-    pub accept_language: String,
-    #[serde(alias = "Sec-Fetch-Mode")]
-    pub sec_fetch_mode: String,
-}
-
-#[derive(Debug, Deserialize)]
-pub struct Fragment {
-    pub url: String,
-    pub duration: f64,
-}
diff --git a/pkgs/sources/comments/src/main.rs b/pkgs/sources/comments/src/main.rs
deleted file mode 100644
index 6e4f72e9..00000000
--- a/pkgs/sources/comments/src/main.rs
+++ /dev/null
@@ -1,322 +0,0 @@
-use std::{
-    env,
-    fmt::Display,
-    fs::{self, File},
-    io::{BufReader, Write},
-    mem,
-    path::PathBuf,
-    process::{Command, Stdio},
-};
-
-use anyhow::Context;
-use chrono::{Local, TimeZone};
-use chrono_humanize::{Accuracy, HumanTime, Tense};
-use info_json::{Comment, InfoJson, Parent};
-use regex::Regex;
-
-mod info_json;
-
-fn get_runtime_path(component: &'static str) -> anyhow::Result<PathBuf> {
-    let out: PathBuf = format!(
-        "{}/{}",
-        env::var("XDG_RUNTIME_DIR").expect("This should always exist"),
-        component
-    )
-    .into();
-    fs::create_dir_all(out.parent().expect("Parent should exist"))?;
-    Ok(out)
-}
-
-const STATUS_PATH: &str = "ytcc/running";
-pub fn status_path() -> anyhow::Result<PathBuf> {
-    get_runtime_path(STATUS_PATH)
-}
-
-#[derive(Debug, Clone)]
-pub struct CommentExt {
-    pub value: Comment,
-    pub replies: Vec<CommentExt>,
-}
-
-#[derive(Debug, Default)]
-pub struct Comments {
-    vec: Vec<CommentExt>,
-}
-
-impl Comments {
-    pub fn new() -> Self {
-        Self::default()
-    }
-    pub fn push(&mut self, value: CommentExt) {
-        self.vec.push(value);
-    }
-    pub fn get_mut(&mut self, key: &str) -> Option<&mut CommentExt> {
-        self.vec.iter_mut().filter(|c| c.value.id.id == key).last()
-    }
-    pub fn insert(&mut self, key: &str, value: CommentExt) {
-        let parent = self
-            .vec
-            .iter_mut()
-            .filter(|c| c.value.id.id == key)
-            .last()
-            .expect("One of these should exist");
-        parent.push_reply(value);
-    }
-}
-impl CommentExt {
-    pub fn push_reply(&mut self, value: CommentExt) {
-        self.replies.push(value)
-    }
-    pub fn get_mut_reply(&mut self, key: &str) -> Option<&mut CommentExt> {
-        self.replies
-            .iter_mut()
-            .filter(|c| c.value.id.id == key)
-            .last()
-    }
-}
-
-impl From<Comment> for CommentExt {
-    fn from(value: Comment) -> Self {
-        Self {
-            replies: vec![],
-            value,
-        }
-    }
-}
-
-impl Display for Comments {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        macro_rules! c {
-            ($color:expr, $write:ident) => {
-                $write.write_str(concat!("\x1b[", $color, "m"))?
-            };
-        }
-
-        fn format(
-            comment: &CommentExt,
-            f: &mut std::fmt::Formatter<'_>,
-            ident_count: u32,
-        ) -> std::fmt::Result {
-            let ident = &(0..ident_count).map(|_| " ").collect::<String>();
-            let value = &comment.value;
-
-            f.write_str(ident)?;
-
-            if value.author_is_uploader {
-                c!("91;1", f);
-            } else {
-                c!("35", f);
-            }
-
-            f.write_str(&value.author)?;
-            c!("0", f);
-            if value.edited || value.is_favorited {
-                f.write_str("[")?;
-                if value.edited {
-                    f.write_str("")?;
-                }
-                if value.edited && value.is_favorited {
-                    f.write_str(" ")?;
-                }
-                if value.is_favorited {
-                    f.write_str("")?;
-                }
-                f.write_str("]")?;
-            }
-
-            c!("36;1", f);
-            write!(
-                f,
-                " {}",
-                HumanTime::from(
-                    Local
-                        .timestamp_opt(value.timestamp, 0)
-                        .single()
-                        .expect("This should be valid")
-                )
-                .to_text_en(Accuracy::Rough, Tense::Past)
-            )?;
-            c!("0", f);
-
-            // c!("31;1", f);
-            // f.write_fmt(format_args!(" [{}]", comment.value.like_count))?;
-            // c!("0", f);
-
-            f.write_str(":\n")?;
-            f.write_str(ident)?;
-
-            f.write_str(&value.text.replace('\n', &format!("\n{}", ident)))?;
-            f.write_str("\n")?;
-
-            if !comment.replies.is_empty() {
-                let mut children = comment.replies.clone();
-                children.sort_by(|a, b| a.value.timestamp.cmp(&b.value.timestamp));
-
-                for child in children {
-                    format(&child, f, ident_count + 4)?;
-                }
-            } else {
-                f.write_str("\n")?;
-            }
-
-            Ok(())
-        }
-
-        if !&self.vec.is_empty() {
-            let mut children = self.vec.clone();
-            children.sort_by(|a, b| b.value.like_count.cmp(&a.value.like_count));
-
-            for child in children {
-                format(&child, f, 0)?
-            }
-        }
-        Ok(())
-    }
-}
-
-fn main() -> anyhow::Result<()> {
-    cli_log::init_cli_log!();
-    let args: Option<String> = env::args().skip(1).last();
-    let mut info_json: InfoJson = {
-        let status_path = if let Some(arg) = args {
-            PathBuf::from(arg)
-        } else {
-            status_path().context("Failed to get status path")?
-        };
-
-        let reader =
-            BufReader::new(File::open(&status_path).with_context(|| {
-                format!("Failed to open status file at {}", status_path.display())
-            })?);
-
-        serde_json::from_reader(reader)?
-    };
-
-    let base_comments = mem::take(&mut info_json.comments);
-    drop(info_json);
-
-    let mut comments = Comments::new();
-    base_comments.into_iter().for_each(|c| {
-        if let Parent::Id(id) = &c.parent {
-            comments.insert(&(id.clone()), CommentExt::from(c));
-        } else {
-            comments.push(CommentExt::from(c));
-        }
-    });
-
-    comments.vec.iter_mut().for_each(|comment| {
-        let replies = mem::take(&mut comment.replies);
-        let mut output_replies: Vec<CommentExt>  = vec![];
-
-        let re = Regex::new(r"\u{200b}?(@[^\t\s]+)\u{200b}?").unwrap();
-        for reply in replies {
-            if let Some(replyee_match) =  re.captures(&reply.value.text){
-                let full_match = replyee_match.get(0).expect("This always exists");
-                let text = reply.
-                    value.
-                    text[0..full_match.start()]
-                    .to_owned()
-                    +
-                    &reply
-                    .value
-                    .text[full_match.end()..];
-                let text: &str = text.trim().trim_matches('\u{200b}');
-
-                let replyee = replyee_match.get(1).expect("This should exist").as_str();
-
-
-                if let Some(parent) = output_replies
-                    .iter_mut()
-                    // .rev()
-                    .flat_map(|com| &mut com.replies)
-                    .flat_map(|com| &mut com.replies)
-                    .flat_map(|com| &mut com.replies)
-                    .filter(|com| com.value.author == replyee)
-                    .last()
-                {
-                    parent.replies.push(CommentExt::from(Comment {
-                        text: text.to_owned(),
-                        ..reply.value
-                    }))
-                } else if let Some(parent) = output_replies
-                    .iter_mut()
-                    // .rev()
-                    .flat_map(|com| &mut com.replies)
-                    .flat_map(|com| &mut com.replies)
-                    .filter(|com| com.value.author == replyee)
-                    .last()
-                {
-                    parent.replies.push(CommentExt::from(Comment {
-                        text: text.to_owned(),
-                        ..reply.value
-                    }))
-                } else if let Some(parent) = output_replies
-                    .iter_mut()
-                    // .rev()
-                    .flat_map(|com| &mut com.replies)
-                    .filter(|com| com.value.author == replyee)
-                    .last()
-                {
-                    parent.replies.push(CommentExt::from(Comment {
-                        text: text.to_owned(),
-                        ..reply.value
-                    }))
-                } else if let Some(parent) = output_replies.iter_mut()
-                    // .rev()
-                    .filter(|com| com.value.author == replyee)
-                    .last()
-                {
-                    parent.replies.push(CommentExt::from(Comment {
-                        text: text.to_owned(),
-                        ..reply.value
-                    }))
-                } else {
-                    eprintln!(
-                    "Failed to find a parent for ('{}') both directly and via replies! The reply text was:\n'{}'\n",
-                    replyee,
-                    reply.value.text
-                );
-                    output_replies.push(reply);
-                }
-            } else {
-                output_replies.push(reply);
-            }
-        }
-        comment.replies = output_replies;
-    });
-
-    let mut less = Command::new("less")
-        .args(["--raw-control-chars"])
-        .stdin(Stdio::piped())
-        .stderr(Stdio::inherit())
-        .spawn()
-        .context("Failed to run less")?;
-
-    let mut child = Command::new("fmt")
-        .args(["--uniform-spacing", "--split-only", "--width=90"])
-        .stdin(Stdio::piped())
-        .stderr(Stdio::inherit())
-        .stdout(less.stdin.take().expect("Should be open"))
-        .spawn()
-        .context("Failed to run fmt")?;
-
-    let mut stdin = child.stdin.take().context("Failed to open stdin")?;
-    std::thread::spawn(move || {
-        stdin
-            .write_all(comments.to_string().as_bytes())
-            .expect("Should be able to write to stdin of fmt");
-    });
-
-    let _ = less.wait().context("Failed to await less")?;
-
-    Ok(())
-}
-
-#[cfg(test)]
-mod test {
-    #[test]
-    fn test_string_replacement() {
-        let s = "A \n\nB\n\nC".to_owned();
-        assert_eq!("A \n  \n  B\n  \n  C", s.replace('\n', "\n  "))
-    }
-}
diff --git a/pkgs/sources/comments/update.sh b/pkgs/sources/comments/update.sh
deleted file mode 100755
index e500bb23..00000000
--- a/pkgs/sources/comments/update.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env sh
-
-nix flake update
-
-[ "$1" = "upgrade" ] && cargo upgrade
-cargo update
-
-# vim: ft=sh
diff --git a/pkgs/sources/default.nix b/pkgs/sources/default.nix
deleted file mode 100644
index 4668d735..00000000
--- a/pkgs/sources/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  homeConfig,
-  nixosConfig,
-  sysLib,
-}: let
-  comments = import ./comments;
-  generate_firefox_extensions = import ./generate_moz_extension;
-  lf_make_map = import ./lf-make-map;
-  nvim_plugs = import ./plgs-pkgs;
-  scripts = import ./scripts {inherit sysLib homeConfig nixosConfig;};
-  snap-sync-forked = (import ./snap-sync-forked) {inherit sysLib;};
-  update_vim_plugins = import ./update_vim_plugins;
-  yt = import ./yt;
-  yts-grammar = import ./tree-sitter-yts;
-
-  overlays =
-    comments
-    ++ generate_firefox_extensions
-    ++ lf_make_map
-    ++ nvim_plugs
-    ++ scripts
-    ++ snap-sync-forked
-    ++ update_vim_plugins
-    ++ yt
-    ++ yts-grammar;
-in
-  overlays
diff --git a/pkgs/sources/generate_moz_extension/.envrc b/pkgs/sources/generate_moz_extension/.envrc
deleted file mode 100644
index 3550a30f..00000000
--- a/pkgs/sources/generate_moz_extension/.envrc
+++ /dev/null
@@ -1 +0,0 @@
-use flake
diff --git a/pkgs/sources/generate_moz_extension/.gitignore b/pkgs/sources/generate_moz_extension/.gitignore
deleted file mode 100644
index f717ddd7..00000000
--- a/pkgs/sources/generate_moz_extension/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/target
-/result
-.direnv
diff --git a/pkgs/sources/generate_moz_extension/Cargo.lock b/pkgs/sources/generate_moz_extension/Cargo.lock
deleted file mode 100644
index c0a83aa8..00000000
--- a/pkgs/sources/generate_moz_extension/Cargo.lock
+++ /dev/null
@@ -1,1275 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "addr2line"
-version = "0.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "anyhow"
-version = "1.0.83"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3"
-
-[[package]]
-name = "autocfg"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
-
-[[package]]
-name = "backtrace"
-version = "0.3.71"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
-dependencies = [
- "addr2line",
- "cc",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
-]
-
-[[package]]
-name = "base64"
-version = "0.22.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
-[[package]]
-name = "bitflags"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
-
-[[package]]
-name = "bumpalo"
-version = "3.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
-
-[[package]]
-name = "bytes"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
-
-[[package]]
-name = "cc"
-version = "1.0.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "core-foundation"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
-
-[[package]]
-name = "encoding_rs"
-version = "0.8.34"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "equivalent"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
-
-[[package]]
-name = "errno"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
-dependencies = [
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "fastrand"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
-
-[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
-[[package]]
-name = "form_urlencoded"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
-dependencies = [
- "percent-encoding",
-]
-
-[[package]]
-name = "futures"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-executor",
- "futures-io",
- "futures-sink",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-channel"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
-dependencies = [
- "futures-core",
- "futures-sink",
-]
-
-[[package]]
-name = "futures-core"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
-
-[[package]]
-name = "futures-executor"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
-dependencies = [
- "futures-core",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-io"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
-
-[[package]]
-name = "futures-macro"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "futures-sink"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
-
-[[package]]
-name = "futures-task"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
-
-[[package]]
-name = "futures-util"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-macro",
- "futures-sink",
- "futures-task",
- "memchr",
- "pin-project-lite",
- "pin-utils",
- "slab",
-]
-
-[[package]]
-name = "generate_extensions"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "futures",
- "reqwest",
- "serde",
- "serde_json",
- "tokio",
-]
-
-[[package]]
-name = "gimli"
-version = "0.28.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
-
-[[package]]
-name = "h2"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069"
-dependencies = [
- "bytes",
- "fnv",
- "futures-core",
- "futures-sink",
- "futures-util",
- "http",
- "indexmap",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.14.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
-
-[[package]]
-name = "hermit-abi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
-
-[[package]]
-name = "http"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
-dependencies = [
- "bytes",
- "fnv",
- "itoa",
-]
-
-[[package]]
-name = "http-body"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
-dependencies = [
- "bytes",
- "http",
-]
-
-[[package]]
-name = "http-body-util"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
-dependencies = [
- "bytes",
- "futures-core",
- "http",
- "http-body",
- "pin-project-lite",
-]
-
-[[package]]
-name = "httparse"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
-
-[[package]]
-name = "hyper"
-version = "1.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d"
-dependencies = [
- "bytes",
- "futures-channel",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "httparse",
- "itoa",
- "pin-project-lite",
- "smallvec",
- "tokio",
- "want",
-]
-
-[[package]]
-name = "hyper-tls"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
-dependencies = [
- "bytes",
- "http-body-util",
- "hyper",
- "hyper-util",
- "native-tls",
- "tokio",
- "tokio-native-tls",
- "tower-service",
-]
-
-[[package]]
-name = "hyper-util"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa"
-dependencies = [
- "bytes",
- "futures-channel",
- "futures-util",
- "http",
- "http-body",
- "hyper",
- "pin-project-lite",
- "socket2",
- "tokio",
- "tower",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "idna"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
-dependencies = [
- "unicode-bidi",
- "unicode-normalization",
-]
-
-[[package]]
-name = "indexmap"
-version = "2.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
-dependencies = [
- "equivalent",
- "hashbrown",
-]
-
-[[package]]
-name = "ipnet"
-version = "2.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
-
-[[package]]
-name = "itoa"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
-
-[[package]]
-name = "js-sys"
-version = "0.3.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-[[package]]
-name = "libc"
-version = "0.2.154"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
-
-[[package]]
-name = "log"
-version = "0.4.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
-
-[[package]]
-name = "memchr"
-version = "2.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
-
-[[package]]
-name = "mime"
-version = "0.3.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-
-[[package]]
-name = "miniz_oxide"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
-dependencies = [
- "adler",
-]
-
-[[package]]
-name = "mio"
-version = "0.8.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
-dependencies = [
- "libc",
- "wasi",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "native-tls"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
-dependencies = [
- "lazy_static",
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework",
- "security-framework-sys",
- "tempfile",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
-dependencies = [
- "hermit-abi",
- "libc",
-]
-
-[[package]]
-name = "object"
-version = "0.32.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
-
-[[package]]
-name = "openssl"
-version = "0.10.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
-dependencies = [
- "bitflags 2.5.0",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.102"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "percent-encoding"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
-
-[[package]]
-name = "pin-project"
-version = "1.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
-dependencies = [
- "pin-project-internal",
-]
-
-[[package]]
-name = "pin-project-internal"
-version = "1.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
-
-[[package]]
-name = "pin-utils"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-[[package]]
-name = "pkg-config"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.82"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "reqwest"
-version = "0.12.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10"
-dependencies = [
- "base64",
- "bytes",
- "encoding_rs",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "http-body-util",
- "hyper",
- "hyper-tls",
- "hyper-util",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "native-tls",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "rustls-pemfile",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "sync_wrapper",
- "system-configuration",
- "tokio",
- "tokio-native-tls",
- "tower-service",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "winreg",
-]
-
-[[package]]
-name = "rustc-demangle"
-version = "0.1.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
-
-[[package]]
-name = "rustix"
-version = "0.38.34"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
-dependencies = [
- "bitflags 2.5.0",
- "errno",
- "libc",
- "linux-raw-sys",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "rustls-pemfile"
-version = "2.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
-dependencies = [
- "base64",
- "rustls-pki-types",
-]
-
-[[package]]
-name = "rustls-pki-types"
-version = "1.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d"
-
-[[package]]
-name = "ryu"
-version = "1.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
-
-[[package]]
-name = "schannel"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
-dependencies = [
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "security-framework"
-version = "2.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0"
-dependencies = [
- "bitflags 2.5.0",
- "core-foundation",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "serde"
-version = "1.0.201"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.201"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.117"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "serde_urlencoded"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
-dependencies = [
- "form_urlencoded",
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "slab"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "smallvec"
-version = "1.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
-
-[[package]]
-name = "socket2"
-version = "0.5.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
-dependencies = [
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "syn"
-version = "2.0.61"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "sync_wrapper"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
-
-[[package]]
-name = "system-configuration"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
-dependencies = [
- "bitflags 1.3.2",
- "core-foundation",
- "system-configuration-sys",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "tempfile"
-version = "3.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
-dependencies = [
- "cfg-if",
- "fastrand",
- "rustix",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "tinyvec"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
-dependencies = [
- "tinyvec_macros",
-]
-
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-[[package]]
-name = "tokio"
-version = "1.37.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
-dependencies = [
- "backtrace",
- "bytes",
- "libc",
- "mio",
- "num_cpus",
- "pin-project-lite",
- "socket2",
- "tokio-macros",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "tokio-macros"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "tokio-native-tls"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
-dependencies = [
- "native-tls",
- "tokio",
-]
-
-[[package]]
-name = "tokio-util"
-version = "0.7.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1"
-dependencies = [
- "bytes",
- "futures-core",
- "futures-sink",
- "pin-project-lite",
- "tokio",
-]
-
-[[package]]
-name = "tower"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
-dependencies = [
- "futures-core",
- "futures-util",
- "pin-project",
- "pin-project-lite",
- "tokio",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "tower-layer"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
-
-[[package]]
-name = "tower-service"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
-
-[[package]]
-name = "tracing"
-version = "0.1.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
-dependencies = [
- "log",
- "pin-project-lite",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-core"
-version = "0.1.32"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
-dependencies = [
- "once_cell",
-]
-
-[[package]]
-name = "try-lock"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
-
-[[package]]
-name = "unicode-bidi"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "unicode-normalization"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
-dependencies = [
- "tinyvec",
-]
-
-[[package]]
-name = "url"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
-dependencies = [
- "form_urlencoded",
- "idna",
- "percent-encoding",
-]
-
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
-[[package]]
-name = "want"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
-dependencies = [
- "try-lock",
-]
-
-[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
-dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
-dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.42"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
-dependencies = [
- "cfg-if",
- "js-sys",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
-
-[[package]]
-name = "web-sys"
-version = "0.3.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets 0.52.5",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
-dependencies = [
- "windows_aarch64_gnullvm 0.52.5",
- "windows_aarch64_msvc 0.52.5",
- "windows_i686_gnu 0.52.5",
- "windows_i686_gnullvm",
- "windows_i686_msvc 0.52.5",
- "windows_x86_64_gnu 0.52.5",
- "windows_x86_64_gnullvm 0.52.5",
- "windows_x86_64_msvc 0.52.5",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
-
-[[package]]
-name = "winreg"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
-dependencies = [
- "cfg-if",
- "windows-sys 0.48.0",
-]
diff --git a/pkgs/sources/generate_moz_extension/Cargo.toml b/pkgs/sources/generate_moz_extension/Cargo.toml
deleted file mode 100644
index e7d44db4..00000000
--- a/pkgs/sources/generate_moz_extension/Cargo.toml
+++ /dev/null
@@ -1,14 +0,0 @@
-[package]
-name = "generate_extensions"
-version = "0.1.0"
-edition = "2021"
-
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
-[dependencies]
-anyhow = "1.0.83"
-futures = "0.3.30"
-reqwest = "0.12.4"
-serde = { version = "1.0.201", features = ["derive"] }
-serde_json = "1.0.117"
-tokio = { version = "1.37.0", features = ["macros", "rt-multi-thread"] }
diff --git a/pkgs/sources/generate_moz_extension/default.nix b/pkgs/sources/generate_moz_extension/default.nix
deleted file mode 100644
index be734eee..00000000
--- a/pkgs/sources/generate_moz_extension/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-[
-  (
-    final: prev: {
-      generate_firefox_extensions = import ./generate_firefox_extensions.nix {
-        inherit
-          (prev)
-          rustPlatform
-          # Dependencies
-          
-          openssl
-          pkg-config
-          ;
-      };
-    }
-  )
-]
diff --git a/pkgs/sources/generate_moz_extension/examples/generate_extensions.sh b/pkgs/sources/generate_moz_extension/examples/generate_extensions.sh
deleted file mode 100755
index 96802992..00000000
--- a/pkgs/sources/generate_moz_extension/examples/generate_extensions.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-tmp=$(mktemp)
-cat <<EOF | awk '!/^\s*#/' >"$tmp"
-    darkreader:navbar
-    keepassxc-browser:navbar
-    vhack-libredirect:navbar
-    # torproject-snowflake:navbar
-    tridactyl-vim:menupanel
-    ublock-origin:menupanel
-EOF
-
-# The cat execution should be unquoted;
-# shellcheck disable=SC2046
-cargo run -- $(cat "$tmp")
-
-rm "$tmp"
diff --git a/pkgs/sources/generate_moz_extension/flake.lock b/pkgs/sources/generate_moz_extension/flake.lock
deleted file mode 100644
index 741a8ad1..00000000
--- a/pkgs/sources/generate_moz_extension/flake.lock
+++ /dev/null
@@ -1,106 +0,0 @@
-{
-  "nodes": {
-    "crane": {
-      "inputs": {
-        "nixpkgs": [
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1714864355,
-        "narHash": "sha256-uXNW6bapWFfkYIkK1EagydSrFMqycOYEDSq75GmUpjk=",
-        "owner": "ipetkov",
-        "repo": "crane",
-        "rev": "442a7a6152f49b907e73206dc8e1f46a61e8e873",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ipetkov",
-        "repo": "crane",
-        "type": "github"
-      }
-    },
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1710146030,
-        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "nixpkgs": {
-      "locked": {
-        "lastModified": 1715037484,
-        "narHash": "sha256-OUt8xQFmBU96Hmm4T9tOWTu4oCswCzoVl+pxSq/kiFc=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "ad7efee13e0d216bf29992311536fce1d3eefbef",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "root": {
-      "inputs": {
-        "crane": "crane",
-        "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs",
-        "rust-overlay": "rust-overlay"
-      }
-    },
-    "rust-overlay": {
-      "inputs": {
-        "flake-utils": [
-          "flake-utils"
-        ],
-        "nixpkgs": [
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1715221036,
-        "narHash": "sha256-81EKOdlmT/4hZpImRlvMVPgmCcJYZjwlWbJese/XqUw=",
-        "owner": "oxalica",
-        "repo": "rust-overlay",
-        "rev": "5c4bc8a0a70093a31a12509c5653c147f2310bd2",
-        "type": "github"
-      },
-      "original": {
-        "owner": "oxalica",
-        "repo": "rust-overlay",
-        "type": "github"
-      }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    }
-  },
-  "root": "root",
-  "version": 7
-}
diff --git a/pkgs/sources/generate_moz_extension/flake.nix b/pkgs/sources/generate_moz_extension/flake.nix
deleted file mode 100644
index 5575f90b..00000000
--- a/pkgs/sources/generate_moz_extension/flake.nix
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  description = "A simple way to query the mozialla api for extension data";
-
-  inputs = {
-    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
-
-    crane = {
-      url = "github:ipetkov/crane";
-      inputs = {
-        nixpkgs.follows = "nixpkgs";
-      };
-    };
-
-    flake-utils.url = "github:numtide/flake-utils";
-
-    rust-overlay = {
-      url = "github:oxalica/rust-overlay";
-      inputs = {
-        nixpkgs.follows = "nixpkgs";
-        flake-utils.follows = "flake-utils";
-      };
-    };
-  };
-
-  outputs = {
-    self,
-    nixpkgs,
-    crane,
-    flake-utils,
-    rust-overlay,
-    ...
-  }:
-    flake-utils.lib.eachDefaultSystem (system: let
-      pkgs = import nixpkgs {
-        inherit system;
-        overlays = [(import rust-overlay)];
-      };
-
-      rust-stable = pkgs.rust-bin.stable.latest.default;
-      rust-minimal = pkgs.rust-bin.stable.latest.minimal;
-
-      craneLib = (crane.mkLib pkgs).overrideToolchain rust-minimal;
-
-      buildInputs = [
-        pkgs.openssl # needed for openssl
-      ];
-      nativeBuildInputs = [
-        pkgs.pkg-config # needed for openssl
-      ];
-
-      craneBuild = craneLib.buildPackage {
-        src = craneLib.cleanCargoSource ./.;
-        inherit buildInputs nativeBuildInputs;
-
-        doCheck = true;
-      };
-    in {
-      packages.default = craneBuild;
-      app.default = {
-        type = "app";
-        program = "${self.packages.${system}.default}/bin/generate_extensions";
-      };
-      devShells.default = pkgs.mkShell {
-        packages = with pkgs; [
-          cocogitto
-
-          rust-stable
-          cargo-edit
-        ];
-        inherit buildInputs nativeBuildInputs;
-      };
-    });
-}
-# vim: ts=2
-
diff --git a/pkgs/sources/generate_moz_extension/generate_firefox_extensions.nix b/pkgs/sources/generate_moz_extension/generate_firefox_extensions.nix
deleted file mode 100644
index abd95c77..00000000
--- a/pkgs/sources/generate_moz_extension/generate_firefox_extensions.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  rustPlatform,
-  openssl,
-  pkg-config,
-}:
-rustPlatform.buildRustPackage {
-  pname = "generate_firefox_extensions";
-  version = "0.1.0";
-
-  src = ./.;
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-  };
-  buildInputs = [
-    openssl # needed for openssl-sys crate
-  ];
-  nativeBuildInputs = [
-    pkg-config # needed for openssl dependency
-  ];
-}
diff --git a/pkgs/sources/generate_moz_extension/res/generate_extensions.py b/pkgs/sources/generate_moz_extension/res/generate_extensions.py
deleted file mode 100644
index ee8cc966..00000000
--- a/pkgs/sources/generate_moz_extension/res/generate_extensions.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env python
-# source: https://github.com/etu/nixconfig/blob/ba47d577c8bfb4a1c06927c34ece34118f4a0460/modules/graphical/firefox/generate.py
-
-from concurrent.futures import ThreadPoolExecutor
-import json
-import requests
-
-EXTENSIONS = sorted(
-    [
-        "darkreader",
-        "firenvim",
-        "keepassxc-browser",
-        "simple-tab-groups",
-    ]
-)
-
-
-def index_ext(ext: str):
-    # print(f"Indexing {ext}...")
-
-    resp = requests.get(f"https://addons.mozilla.org/api/v5/addons/addon/{ext}/").json()
-    rel = resp["current_version"]
-
-    if not rel["file"]["hash"].startswith("sha256:"):
-        raise ValueError("Unhandled hash type")
-
-    return {
-        "pname": ext,
-        "version": rel["version"],
-        "addonId": resp["guid"],
-        "url": rel["file"]["url"],
-        "sha256": rel["file"]["hash"],
-    }
-
-
-if __name__ == "__main__":
-    # outfile = os.path.dirname(os.path.realpath(__file__)) + "/extensions.json"
-
-    with ThreadPoolExecutor() as e:
-        extensions = {ext: e.submit(index_ext, ext) for ext in EXTENSIONS}
-        extensions = {k: v.result() for k, v in extensions.items()}
-
-    # with open(outfile, "w") as f:
-    print(json.dumps(extensions, indent=2))
diff --git a/pkgs/sources/generate_moz_extension/res/reference.json b/pkgs/sources/generate_moz_extension/res/reference.json
deleted file mode 100644
index f46ea8ec..00000000
--- a/pkgs/sources/generate_moz_extension/res/reference.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "darkreader": {
-    "pname": "darkreader",
-    "version": "4.9.62",
-    "addonId": "addon@darkreader.org",
-    "url": "https://addons.mozilla.org/firefox/downloads/file/4053589/darkreader-4.9.62.xpi",
-    "sha256": "sha256:e537a2cee45ed7c26f79ecd3ed362620e3f00d24c158532a58e163a63a3d60cc"
-  },
-  "firenvim": {
-    "pname": "firenvim",
-    "version": "0.2.14",
-    "addonId": "firenvim@lacamb.re",
-    "url": "https://addons.mozilla.org/firefox/downloads/file/4026386/firenvim-0.2.14.xpi",
-    "sha256": "sha256:a8c495a59e30eaabbb3fcd188db9b5e28b40bffefe41a3f0fa22ecc58c80c2b6"
-  },
-  "keepassxc-browser": {
-    "pname": "keepassxc-browser",
-    "version": "1.8.4",
-    "addonId": "keepassxc-browser@keepassxc.org",
-    "url": "https://addons.mozilla.org/firefox/downloads/file/4045866/keepassxc_browser-1.8.4.xpi",
-    "sha256": "sha256:cc39aa058cb8915cfc88424e2e1cebe3ccfc3f95d7bddb2abd0c4905d2b17719"
-  },
-  "simple-tab-groups": {
-    "pname": "simple-tab-groups",
-    "version": "4.7.2.1",
-    "addonId": "simple-tab-groups@drive4ik",
-    "url": "https://addons.mozilla.org/firefox/downloads/file/3873608/simple_tab_groups-4.7.2.1.xpi",
-    "sha256": "sha256:75077589098ca62c00b86cf9554c6120bf8dc04c5f916fe26f84915f5147b2a4"
-  }
-}
diff --git a/pkgs/sources/generate_moz_extension/res/test.json b/pkgs/sources/generate_moz_extension/res/test.json
deleted file mode 100644
index daa1d19a..00000000
--- a/pkgs/sources/generate_moz_extension/res/test.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "darkreader": {
-    "addon_id": "addon@darkreader.org",
-    "pname": "darkreader",
-    "sha256": "sha256:e537a2cee45ed7c26f79ecd3ed362620e3f00d24c158532a58e163a63a3d60cc",
-    "url": "https://addons.mozilla.org/firefox/downloads/file/4053589/darkreader-4.9.62.xpi",
-    "version": "4.9.62"
-  },
-  "firenvim": {
-    "addon_id": "firenvim@lacamb.re",
-    "pname": "firenvim",
-    "sha256": "sha256:a8c495a59e30eaabbb3fcd188db9b5e28b40bffefe41a3f0fa22ecc58c80c2b6",
-    "url": "https://addons.mozilla.org/firefox/downloads/file/4026386/firenvim-0.2.14.xpi",
-    "version": "0.2.14"
-  },
-  "keepassxc-browser": {
-    "addon_id": "keepassxc-browser@keepassxc.org",
-    "pname": "keepassxc-browser",
-    "sha256": "sha256:cc39aa058cb8915cfc88424e2e1cebe3ccfc3f95d7bddb2abd0c4905d2b17719",
-    "url": "https://addons.mozilla.org/firefox/downloads/file/4045866/keepassxc_browser-1.8.4.xpi",
-    "version": "1.8.4"
-  },
-  "simple-tab-groups": {
-    "addon_id": "simple-tab-groups@drive4ik",
-    "pname": "simple-tab-groups",
-    "sha256": "sha256:75077589098ca62c00b86cf9554c6120bf8dc04c5f916fe26f84915f5147b2a4",
-    "url": "https://addons.mozilla.org/firefox/downloads/file/3873608/simple_tab_groups-4.7.2.1.xpi",
-    "version": "4.7.2.1"
-  }
-}
diff --git a/pkgs/sources/generate_moz_extension/src/main.rs b/pkgs/sources/generate_moz_extension/src/main.rs
deleted file mode 100644
index bde986a3..00000000
--- a/pkgs/sources/generate_moz_extension/src/main.rs
+++ /dev/null
@@ -1,138 +0,0 @@
-use std::env::args;
-
-use anyhow::{bail, Context};
-use futures::StreamExt;
-use reqwest::Client;
-use serde_json::{json, Map, Value};
-
-pub mod types;
-
-macro_rules! get_json_value {
-    ($key:expr, $json_value:ident, $type:ident, $get:ident) => {
-        match $json_value.get($key) {
-            Some(resp) => {
-                let resp = resp.to_owned();
-                if resp.$type() {
-                    resp.$get().expect(
-                        "The should have been checked in the if guard, so unpacking here is fine",
-                    ).to_owned()
-                } else {
-                    bail!(
-                        "Value {} => \n{}\n is not of type: {}",
-                        $key,
-                        resp,
-                        stringify!($type)
-                    );
-                }
-            }
-            None => {
-                bail!(
-                    "There seems to be no '{}' in your json data (json value: '{}')\n Has the api changend?",
-                    $key, serde_json::to_string_pretty(&$json_value).expect("Will always work")
-                );
-            }
-        }
-    };
-}
-
-use futures::stream::futures_unordered::FuturesUnordered;
-use types::{Extension, InputExtension};
-
-#[tokio::main]
-async fn main() -> anyhow::Result<()> {
-    let mut extensions: Vec<InputExtension> = vec![];
-    for input_extension in args()
-        .skip(1)
-        .map(|str| InputExtension::try_from(str))
-        .collect::<Vec<anyhow::Result<InputExtension>>>()
-    {
-        extensions.push(input_extension?);
-    }
-
-    let resulting_extensions = process_extensions(extensions).await?;
-
-    let mut output = Map::new();
-    for extension in resulting_extensions {
-        output.insert(extension.pname.clone(), json!(extension));
-    }
-
-    println!(
-        "{}",
-        serde_json::to_string_pretty(&serde_json::Value::Object(output)).expect(
-            "This is constructed from json, it should also be possible to serialize it again"
-        )
-    );
-    Ok(())
-}
-
-async fn process_extensions(extensions: Vec<InputExtension>) -> anyhow::Result<Vec<Extension>> {
-    let mut output = Vec::with_capacity(extensions.len());
-
-    let client = Client::new();
-    for extension in extensions
-        .iter()
-        .map(|ext| {
-            let local_client = &client;
-            index_extension(ext, local_client)
-        })
-        .collect::<FuturesUnordered<_>>()
-        .collect::<Vec<_>>()
-        .await
-    {
-        output.push(extension?);
-    }
-    Ok(output)
-}
-
-async fn index_extension(extension: &InputExtension, client: &Client) -> anyhow::Result<Extension> {
-    let response = client
-        .get(format!(
-            "https://addons.mozilla.org/api/v5/addons/addon/{}",
-            extension,
-        ))
-        .send()
-        .await
-        .context("Accessing the mozzila extenios api failed with error: {e}")?;
-
-    eprintln!("Indexing {} ({})...", extension, response.status());
-    let response: Value = serde_json::from_str(
-        &response
-            .text()
-            .await
-            .context("Turning the response to text fail with error: {e}")?,
-    )
-    .context("Deserializing the response failed! Error: {e}")?;
-
-    if let Some(detail) = response.get("detail") {
-        if detail == "Not found." {
-            bail!("Your extension ('{}') was not found!", extension);
-        }
-    };
-
-    let release = { get_json_value!("current_version", response, is_object, as_object) };
-
-    #[allow(non_snake_case)]
-    let addonId = { get_json_value!("guid", response, is_string, as_str) };
-
-    let version = { get_json_value!("version", release, is_string, as_str) };
-    let file = { get_json_value!("file", release, is_object, as_object) };
-
-    let url = { get_json_value!("url", file, is_string, as_str) };
-    let sha256 = {
-        let hash = get_json_value!("hash", file, is_string, as_str);
-        if hash.starts_with("sha256:") {
-            hash
-        } else {
-            bail!("This hash type is unhandled: {}", hash);
-        }
-    };
-
-    Ok(Extension {
-        pname: extension.moz_name.clone(),
-        default_area: extension.default_area,
-        version,
-        addonId,
-        url,
-        sha256,
-    })
-}
diff --git a/pkgs/sources/generate_moz_extension/src/types.rs b/pkgs/sources/generate_moz_extension/src/types.rs
deleted file mode 100644
index b830fe0d..00000000
--- a/pkgs/sources/generate_moz_extension/src/types.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-use std::fmt::Display;
-
-use anyhow::anyhow;
-use serde::{Deserialize, Serialize};
-
-#[derive(Debug, Serialize, Deserialize)]
-#[allow(non_snake_case)]
-pub struct Extension {
-    pub pname: String,
-    pub default_area: DefaultArea,
-    pub version: String,
-    pub addonId: String,
-    pub url: String,
-    pub sha256: String,
-}
-
-#[derive(Debug, Clone)]
-pub struct InputExtension {
-    pub moz_name: String,
-    pub default_area: DefaultArea,
-}
-#[derive(Debug, Clone, Copy, Deserialize, Serialize)]
-#[allow(non_camel_case_types)]
-pub enum DefaultArea {
-    navbar,
-    menupanel,
-}
-
-impl Display for DefaultArea {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        match self {
-            DefaultArea::navbar => f.write_str("navbar"),
-            DefaultArea::menupanel => f.write_str("menupanel"),
-        }
-    }
-}
-
-impl TryFrom<&str> for DefaultArea {
-    type Error = anyhow::Error;
-
-    fn try_from(value: &str) -> Result<Self, Self::Error> {
-        match value {
-            "navbar" => Ok(Self::navbar),
-            "menupanel" => Ok(Self::menupanel),
-            _ => Err(anyhow!(
-                "Your <default_area> needs to be one of 'navbar' or 'menupanel', but is: '{}'",
-                value
-            )),
-        }
-    }
-}
-
-impl Display for InputExtension {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        f.write_str(&self.moz_name)
-    }
-}
-impl TryFrom<String> for InputExtension {
-    type Error = anyhow::Error;
-
-    fn try_from(value: String) -> Result<Self, Self::Error> {
-        if let Some((moz_name, default_area)) = value.split_once(':') {
-            Ok(Self {
-                moz_name: moz_name.to_owned(),
-                default_area: default_area.try_into()?,
-            })
-        } else {
-            Err(anyhow!("Can't parse the input string as a InputExtension!\n Needs to be: '<moz_name>:<default_area>'"))
-        }
-    }
-}
diff --git a/pkgs/sources/generate_moz_extension/update.sh b/pkgs/sources/generate_moz_extension/update.sh
deleted file mode 100755
index e500bb23..00000000
--- a/pkgs/sources/generate_moz_extension/update.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env sh
-
-nix flake update
-
-[ "$1" = "upgrade" ] && cargo upgrade
-cargo update
-
-# vim: ft=sh
diff --git a/pkgs/sources/lf-make-map/.envrc b/pkgs/sources/lf-make-map/.envrc
deleted file mode 100644
index c8c56659..00000000
--- a/pkgs/sources/lf-make-map/.envrc
+++ /dev/null
@@ -1,11 +0,0 @@
-use flake || use nix
-watch_file flake.nix
-
-PATH_add ./target/debug
-PATH_add ./target/release
-PATH_add ./scripts
-
-if on_git_branch; then
-  echo && git status --short --branch &&
-  echo && git fetch --verbose
-fi
diff --git a/pkgs/sources/lf-make-map/.gitignore b/pkgs/sources/lf-make-map/.gitignore
deleted file mode 100644
index cb87f36f..00000000
--- a/pkgs/sources/lf-make-map/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-# build
-/target
-/result
-
-# dev env
-.direnv
diff --git a/pkgs/sources/lf-make-map/Cargo.lock b/pkgs/sources/lf-make-map/Cargo.lock
deleted file mode 100644
index 16af6e03..00000000
--- a/pkgs/sources/lf-make-map/Cargo.lock
+++ /dev/null
@@ -1,505 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "android-tzdata"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
-
-[[package]]
-name = "android_system_properties"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "anstream"
-version = "0.6.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
-dependencies = [
- "anstyle",
- "anstyle-parse",
- "anstyle-query",
- "anstyle-wincon",
- "colorchoice",
- "is_terminal_polyfill",
- "utf8parse",
-]
-
-[[package]]
-name = "anstyle"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
-
-[[package]]
-name = "anstyle-parse"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
-dependencies = [
- "utf8parse",
-]
-
-[[package]]
-name = "anstyle-query"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "anstyle-wincon"
-version = "3.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
-dependencies = [
- "anstyle",
- "windows-sys",
-]
-
-[[package]]
-name = "anyhow"
-version = "1.0.83"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3"
-
-[[package]]
-name = "autocfg"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
-
-[[package]]
-name = "bumpalo"
-version = "3.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
-
-[[package]]
-name = "cc"
-version = "1.0.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "chrono"
-version = "0.4.38"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
-dependencies = [
- "android-tzdata",
- "iana-time-zone",
- "js-sys",
- "num-traits",
- "wasm-bindgen",
- "windows-targets",
-]
-
-[[package]]
-name = "clap"
-version = "4.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
-dependencies = [
- "clap_builder",
- "clap_derive",
-]
-
-[[package]]
-name = "clap_builder"
-version = "4.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
-dependencies = [
- "anstream",
- "anstyle",
- "clap_lex",
- "strsim",
-]
-
-[[package]]
-name = "clap_derive"
-version = "4.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "clap_lex"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
-
-[[package]]
-name = "colorchoice"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
-
-[[package]]
-name = "heck"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
-
-[[package]]
-name = "hermit-abi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
-
-[[package]]
-name = "iana-time-zone"
-version = "0.1.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
-dependencies = [
- "android_system_properties",
- "core-foundation-sys",
- "iana-time-zone-haiku",
- "js-sys",
- "wasm-bindgen",
- "windows-core",
-]
-
-[[package]]
-name = "iana-time-zone-haiku"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "is-terminal"
-version = "0.4.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
-dependencies = [
- "hermit-abi",
- "libc",
- "windows-sys",
-]
-
-[[package]]
-name = "is_terminal_polyfill"
-version = "1.70.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
-
-[[package]]
-name = "js-sys"
-version = "0.3.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "lf-make-map"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "clap",
- "log",
- "stderrlog",
- "walkdir",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.154"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
-
-[[package]]
-name = "log"
-version = "0.4.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
-
-[[package]]
-name = "num-traits"
-version = "0.2.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.82"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
-name = "stderrlog"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61c910772f992ab17d32d6760e167d2353f4130ed50e796752689556af07dc6b"
-dependencies = [
- "chrono",
- "is-terminal",
- "log",
- "termcolor",
- "thread_local",
-]
-
-[[package]]
-name = "strsim"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
-
-[[package]]
-name = "syn"
-version = "2.0.61"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "termcolor"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
-name = "thread_local"
-version = "1.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
-dependencies = [
- "cfg-if",
- "once_cell",
-]
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "utf8parse"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
-
-[[package]]
-name = "walkdir"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
-dependencies = [
- "same-file",
- "winapi-util",
-]
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
-dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
-dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
-
-[[package]]
-name = "winapi-util"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "windows-core"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
diff --git a/pkgs/sources/lf-make-map/Cargo.toml b/pkgs/sources/lf-make-map/Cargo.toml
deleted file mode 100644
index da9881fd..00000000
--- a/pkgs/sources/lf-make-map/Cargo.toml
+++ /dev/null
@@ -1,14 +0,0 @@
-[package]
-name = "lf-make-map"
-description = "An automatic lf cd mapping generator"
-version = "0.1.0"
-edition = "2021"
-
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
-[dependencies]
-anyhow = "1.0.83"
-clap = { version = "4.5.4", features = ["derive", "env"] }
-log = "0.4.21"
-stderrlog = "0.6.0"
-walkdir = "2.5.0"
diff --git a/pkgs/sources/lf-make-map/README.md b/pkgs/sources/lf-make-map/README.md
deleted file mode 100644
index 0c57cede..00000000
--- a/pkgs/sources/lf-make-map/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Lf make map
-
-> An automatic lf cd mapping generator
-
-Some text about the project.
-
-## Licence
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
diff --git a/pkgs/sources/lf-make-map/default.nix b/pkgs/sources/lf-make-map/default.nix
deleted file mode 100644
index 8ff4c624..00000000
--- a/pkgs/sources/lf-make-map/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-[
-  (
-    final: prev: {
-      lf-make-map = import ./lf_make_map.nix {
-        inherit
-          (prev)
-          rustPlatform
-          ;
-      };
-    }
-  )
-]
diff --git a/pkgs/sources/lf-make-map/flake.lock b/pkgs/sources/lf-make-map/flake.lock
deleted file mode 100644
index 611392df..00000000
--- a/pkgs/sources/lf-make-map/flake.lock
+++ /dev/null
@@ -1,147 +0,0 @@
-{
-  "nodes": {
-    "crane": {
-      "inputs": {
-        "nixpkgs": [
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1714864355,
-        "narHash": "sha256-uXNW6bapWFfkYIkK1EagydSrFMqycOYEDSq75GmUpjk=",
-        "owner": "ipetkov",
-        "repo": "crane",
-        "rev": "442a7a6152f49b907e73206dc8e1f46a61e8e873",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ipetkov",
-        "repo": "crane",
-        "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-utils": {
-      "inputs": {
-        "systems": [
-          "systems"
-        ]
-      },
-      "locked": {
-        "lastModified": 1710146030,
-        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "nixpkgs": {
-      "locked": {
-        "lastModified": 1715037484,
-        "narHash": "sha256-OUt8xQFmBU96Hmm4T9tOWTu4oCswCzoVl+pxSq/kiFc=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "ad7efee13e0d216bf29992311536fce1d3eefbef",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "root": {
-      "inputs": {
-        "crane": "crane",
-        "flake-compat": "flake-compat",
-        "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs",
-        "rust-overlay": "rust-overlay",
-        "systems": "systems",
-        "treefmt-nix": "treefmt-nix"
-      }
-    },
-    "rust-overlay": {
-      "inputs": {
-        "flake-utils": [
-          "flake-utils"
-        ],
-        "nixpkgs": [
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1715221036,
-        "narHash": "sha256-81EKOdlmT/4hZpImRlvMVPgmCcJYZjwlWbJese/XqUw=",
-        "owner": "oxalica",
-        "repo": "rust-overlay",
-        "rev": "5c4bc8a0a70093a31a12509c5653c147f2310bd2",
-        "type": "github"
-      },
-      "original": {
-        "owner": "oxalica",
-        "repo": "rust-overlay",
-        "type": "github"
-      }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1680978846,
-        "narHash": "sha256-Gtqg8b/v49BFDpDetjclCYXm8mAnTrUzR0JnE2nv5aw=",
-        "owner": "nix-systems",
-        "repo": "x86_64-linux",
-        "rev": "2ecfcac5e15790ba6ce360ceccddb15ad16d08a8",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "x86_64-linux",
-        "type": "github"
-      }
-    },
-    "treefmt-nix": {
-      "inputs": {
-        "nixpkgs": [
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1714058656,
-        "narHash": "sha256-Qv4RBm4LKuO4fNOfx9wl40W2rBbv5u5m+whxRYUMiaA=",
-        "owner": "numtide",
-        "repo": "treefmt-nix",
-        "rev": "c6aaf729f34a36c445618580a9f95a48f5e4e03f",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "treefmt-nix",
-        "type": "github"
-      }
-    }
-  },
-  "root": "root",
-  "version": 7
-}
diff --git a/pkgs/sources/lf-make-map/flake.nix b/pkgs/sources/lf-make-map/flake.nix
deleted file mode 100644
index dc8c24cc..00000000
--- a/pkgs/sources/lf-make-map/flake.nix
+++ /dev/null
@@ -1,125 +0,0 @@
-{
-  description = "An automatic lf cd mapping generator";
-
-  inputs = {
-    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
-
-    treefmt-nix = {
-      url = "github:numtide/treefmt-nix";
-      inputs = {
-        nixpkgs.follows = "nixpkgs";
-      };
-    };
-
-    crane = {
-      url = "github:ipetkov/crane";
-      inputs = {
-        nixpkgs.follows = "nixpkgs";
-      };
-    };
-    rust-overlay = {
-      url = "github:oxalica/rust-overlay";
-      inputs = {
-        nixpkgs.follows = "nixpkgs";
-        flake-utils.follows = "flake-utils";
-      };
-    };
-
-    # inputs for following
-    systems = {
-      url = "github:nix-systems/x86_64-linux"; # only evaluate for this system
-    };
-    flake-compat = {
-      url = "github:edolstra/flake-compat";
-      flake = false;
-    };
-    flake-utils = {
-      url = "github:numtide/flake-utils";
-      inputs = {
-        systems.follows = "systems";
-      };
-    };
-  };
-
-  outputs = {
-    self,
-    nixpkgs,
-    flake-utils,
-    treefmt-nix,
-    crane,
-    rust-overlay,
-    ...
-  }:
-    flake-utils.lib.eachDefaultSystem (system: let
-      pkgs = import nixpkgs {
-        inherit system;
-        overlays = [(import rust-overlay)];
-      };
-
-      nightly = false;
-      rust_minimal =
-        if nightly
-        then pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal)
-        else pkgs.rust-bin.stable.latest.minimal;
-      rust_default =
-        if nightly
-        then pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default)
-        else pkgs.rust-bin.stable.latest.default;
-
-      cargo_toml = craneLib.cleanCargoToml {cargoToml = ./Cargo.toml;};
-      pname = cargo_toml.package.name;
-
-      craneLib = (crane.mkLib pkgs).overrideToolchain rust_minimal;
-      craneBuild = craneLib.buildPackage {
-        src = craneLib.cleanCargoSource ./.;
-
-        doCheck = true;
-      };
-
-      manual = pkgs.stdenv.mkDerivation {
-        name = "${pname}-manual";
-        inherit (cargo_toml.package) version;
-
-        src = ./docs;
-        nativeBuildInputs = with pkgs; [pandoc];
-
-        buildPhase = ''
-          mkdir --parents $out/docs;
-
-          pandoc "./${pname}.1.md" -s -t man > $out/docs/${pname}.1
-        '';
-
-        installPhase = ''
-          install -D $out/docs/${pname}.1  $out/share/man/man1/${pname};
-        '';
-      };
-
-      treefmtEval = import ./treefmt.nix {inherit treefmt-nix pkgs;};
-    in {
-      packages.default = pkgs.symlinkJoin {
-        inherit (cargo_toml.package) name;
-
-        paths = [manual craneBuild];
-      };
-
-      checks = {
-        inherit craneBuild;
-        formatting = treefmtEval.config.build.check self;
-      };
-
-      formatter = treefmtEval.config.build.wrapper;
-
-      devShells.default = pkgs.mkShell {
-        packages = with pkgs; [
-          cocogitto
-
-          rust_default
-          cargo-edit
-
-          licensure
-        ];
-      };
-    });
-}
-# vim: ts=2
-
diff --git a/pkgs/sources/lf-make-map/lf_make_map.nix b/pkgs/sources/lf-make-map/lf_make_map.nix
deleted file mode 100644
index afb067b8..00000000
--- a/pkgs/sources/lf-make-map/lf_make_map.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{rustPlatform}:
-rustPlatform.buildRustPackage {
-  pname = "lf-make-map";
-  version = "0.1.0";
-
-  src = ./.;
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-  };
-}
diff --git a/pkgs/sources/lf-make-map/src/cli.rs b/pkgs/sources/lf-make-map/src/cli.rs
deleted file mode 100644
index a398e451..00000000
--- a/pkgs/sources/lf-make-map/src/cli.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-use std::path::PathBuf;
-
-use clap::{ArgAction, Parser, Subcommand};
-
-/// An automatic lf cd mapping generator
-#[derive(Parser, Debug)]
-#[clap(author, version, about, long_about = None)]
-#[command(next_line_help = true)]
-pub struct Args {
-    /// The directory to treat as home
-    #[arg(long, short = 'n', env = "HOME")]
-    pub home_name: PathBuf,
-
-    /// The number of directories to generate mappings for, starting from each `relevant_directory`
-    #[arg(long, short, default_value = "2")]
-    pub depth: usize,
-
-    /// Increase message verbosity
-    #[arg(long="verbose", short = 'v', action = ArgAction::Count)]
-    pub verbosity: u8,
-
-    /// Silence all output
-    #[arg(long, short = 'q')]
-    pub quiet: bool,
-
-    #[command(subcommand)]
-    pub command: Command,
-}
-
-#[derive(Subcommand, Debug)]
-pub enum Command {
-    /// Visualize the generated mappings in a tree
-    Visualize {
-        #[command(flatten)]
-        options: CommandOptions,
-    },
-
-    /// Output the generated mappings in a format suitable for the lf config file
-    Generate {
-        #[command(flatten)]
-        options: CommandOptions,
-    },
-}
-
-#[derive(Debug, Parser)]
-pub struct CommandOptions {
-    /// The directories to generate mappings for
-    pub relevant_directories: Vec<PathBuf>,
-}
diff --git a/pkgs/sources/lf-make-map/src/main.rs b/pkgs/sources/lf-make-map/src/main.rs
deleted file mode 100644
index aaf79b20..00000000
--- a/pkgs/sources/lf-make-map/src/main.rs
+++ /dev/null
@@ -1,229 +0,0 @@
-use std::path::{Path, PathBuf};
-
-use anyhow::{Context, Result};
-use clap::Parser;
-use cli::{Args, Command};
-use log::trace;
-use mapping::map_tree::MappingTree;
-use walkdir::{DirEntry, WalkDir};
-
-use crate::mapping::MapKey;
-
-mod cli;
-mod mapping;
-
-fn main() -> anyhow::Result<()> {
-    let args = Args::parse();
-
-    stderrlog::new()
-        .module(module_path!())
-        .quiet(args.quiet)
-        .show_module_names(false)
-        .color(stderrlog::ColorChoice::Auto)
-        .verbosity(args.verbosity as usize)
-        .timestamp(stderrlog::Timestamp::Off)
-        .init()?;
-
-    let mut mappings = MappingTree::new();
-
-    let relevant_directories = match &args.command {
-        Command::Visualize { options } => &options.relevant_directories,
-        Command::Generate { options } => &options.relevant_directories,
-    };
-
-    for dir in relevant_directories {
-        trace!("Processing '{}'..", dir.display());
-        let path = strip_path(&dir, &args.home_name)?;
-
-        mappings
-            .include(path_to_str(path)?)
-            .with_context(|| format!("Failed to include path: '{}'", path.display()))?;
-    }
-
-    let home = path_to_str(&args.home_name)?.to_owned();
-
-    let mut current_depth = 1;
-    while current_depth != args.depth {
-        for (key, value) in mappings.iter(false) {
-            trace!(
-                "Adding to child ('{}' -> '{}')",
-                MapKey::display(&key),
-                value
-            );
-
-            let mut local_mappings = MappingTree::new();
-            for dir in WalkDir::new(extend(&home, &value)?)
-                .min_depth(1)
-                .max_depth(1)
-                .into_iter()
-                .filter_entry(|e| is_dir(e) && !is_hidden(e))
-            {
-                let directory = dir
-                    .with_context(|| format!("Failed to read dir ('{}')", home.clone() + &value))?;
-                let path_to_strip = &PathBuf::from(extend(&home, &value)?);
-                let path = strip_path(&directory.path(), &path_to_strip)?;
-                trace!(
-                    "Including: '{}' (after stripping '{}' from '{}' -> '{}' + '/' + '{}')",
-                    path.display(),
-                    directory.path().display(),
-                    path_to_strip.display(),
-                    home,
-                    value
-                );
-
-                let gen_key = MapKey::new_ones_from_path(path_to_str(path)?, 1);
-                local_mappings
-                    .insert(
-                        &gen_key,
-                        path_to_str(strip_path(&directory.path(), &PathBuf::from(&home))?)?,
-                    )
-                    .with_context(|| format!("Failed to include path: '{}'", path.display()))?;
-            }
-
-            trace!("{}", local_mappings);
-
-            trace!(
-                "'{}' -> '{:#?}'",
-                MapKey::display(&key),
-                local_mappings.root_node()
-            );
-            mappings.interleave(&key, local_mappings.root_node().to_owned())?;
-        }
-        current_depth += 1;
-    }
-
-    match args.command {
-        Command::Visualize { .. } => println!("{}", mappings),
-        Command::Generate { .. } => println!("{}", mappings.to_lf_mappings(args.home_name)),
-    }
-
-    Ok(())
-}
-
-fn extend(base: &str, value: &str) -> Result<String> {
-    let base_path = PathBuf::from(base);
-    let value_path = PathBuf::from(value);
-
-    Ok(path_to_str(&base_path.join(&value_path))?.to_owned())
-}
-
-fn is_hidden(entry: &DirEntry) -> bool {
-    entry
-        .file_name()
-        .to_str()
-        .map(|s| s.starts_with("."))
-        .unwrap_or(false)
-}
-
-fn is_dir(entry: &DirEntry) -> bool {
-    entry.file_type().is_dir()
-}
-
-fn strip_path<'a>(path: &'a Path, to_strip: &Path) -> Result<&'a Path> {
-    path.strip_prefix(&to_strip).with_context(|| {
-        format!(
-            "'{}' is not under the specified home path ('{}')!",
-            path.display(),
-            to_strip.display()
-        )
-    })
-}
-
-fn path_to_str(path: &Path) -> Result<&str> {
-    path.to_str().with_context(|| {
-        format!(
-            "\
-Can't derive a keymapping from path: '{}' \
-because it can't be turned to a string
-",
-            path.display()
-        )
-    })
-}
-
-// fn gen_lf_mappings(home_name: PathBuf, char_num: usize, rel_dirs: Vec<PathBuf>) {
-//     let mut mappings_vec = vec![];
-//     let mut index_counter = 0;
-//     rel_dirs.iter().for_each(|rel_dir| {
-//         mappings_vec.push(vec![Mapping::new(
-//             &gen_hot_key(rel_dir, rel_dir, char_num),
-//             rel_dir,
-//             rel_dir,
-//             None,
-//         )]);
-//         get_dir(rel_dir.to_owned()).iter().for_each(|path| {
-//             mappings_vec[index_counter].push(Mapping::new(
-//                 &gen_hot_key(
-//                     path,
-//                     path.parent().expect("All paths here should have parents"),
-//                     char_num,
-//                 ),
-//                 path,
-//                 &path
-//                     .parent()
-//                     .expect("All paths here should have parents")
-//                     .to_owned(),
-//                 None,
-//             ));
-//         });
-//         index_counter += 1;
-//     });
-//     print_mappings(&mappings_vec, home_name);
-//     mappings_vec
-//         .into_iter()
-//         .for_each(|rel_dir_mapping: Vec<Mapping>| {
-//             let mut hash_map = sort_mapping_by_hot_key(rel_dir_mapping.clone());
-//             //dbg!(hash_map);
-//             hash_map.insert("gsi".to_owned(), vec![rel_dir_mapping[0].clone()]);
-//         });
-// }
-//
-// fn sort_mapping_by_hot_key(mut mappings: Vec<Mapping>) -> HashMap<String, Vec<Mapping>> {
-//     mappings.sort_by_key(|mapping| mapping.hot_key.clone());
-//
-//     let mut filtered_mappings: HashMap<String, Vec<Mapping>> = HashMap::new();
-//     mappings.iter().for_each(|mapping| {
-//         filtered_mappings.insert(mapping.hot_key.clone(), vec![]);
-//     });
-//     //dbg!(&mappings);
-//
-//     let mut index_counter = 1;
-//     mappings.iter().for_each(|mapping| {
-//         if mappings.len() > index_counter {
-//             let next_mapping = &mappings[index_counter];
-//             let vec = filtered_mappings
-//                 .get_mut(&mapping.hot_key)
-//                 .expect("This existst as it has been initialized");
-//
-//             if &next_mapping.hot_key == &mapping.hot_key {
-//                 vec.push(mapping.clone());
-//                 vec.push(next_mapping.clone());
-//             } else {
-//                 vec.push(mapping.clone());
-//             }
-//
-//             let new_vec = vec.to_owned();
-//             filtered_mappings.insert(mapping.hot_key.to_owned(), new_vec);
-//         }
-//
-//         index_counter += 1;
-//     });
-//     filtered_mappings
-// }
-//
-// fn print_mappings(mappings: &Vec<Vec<Mapping>>, home_name: PathBuf) {
-//     for mapping in mappings {
-//         mapping.iter().for_each(|map| {
-//             println!(
-//                 "{} = \"cd {}\";",
-//                 map.hot_key,
-//                 map.path
-//                     .display()
-//                     .to_string()
-//                     .replace(home_name.to_str().expect("This should be UTF-8"), "~")
-//             );
-//         });
-//
-//         println!("# -------------");
-//     }
-// }
diff --git a/pkgs/sources/lf-make-map/src/mapping/map_tree/display.rs b/pkgs/sources/lf-make-map/src/mapping/map_tree/display.rs
deleted file mode 100644
index 65302e1e..00000000
--- a/pkgs/sources/lf-make-map/src/mapping/map_tree/display.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-use std::fmt::Display;
-
-use crate::mapping::{
-    map_tree::{Node, NodeValue},
-    MapKey,
-};
-
-use super::MappingTree;
-
-impl Display for MappingTree {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        fn write_node(
-            f: &mut std::fmt::Formatter<'_>,
-            node: &Node,
-            indention: String,
-            location: Vec<MapKey>,
-            is_last: bool,
-            is_root: bool,
-        ) -> std::fmt::Result {
-            let node_value = match &node.value {
-                NodeValue::Parent { children: _ } => "<Parent>".to_owned(),
-                NodeValue::Child { path, extandable } => {
-                    path.to_owned() + if *extandable { " [exten.]" } else { " [stop]" }
-                }
-            };
-
-            let new_idention = indention.clone()
-                + if is_root {
-                    ""
-                } else {
-                    match is_last {
-                        true => "    ",
-                        false => "│   ",
-                    }
-                };
-
-            let bullet = match is_last {
-                true => String::from("└── "),
-                false => String::from("├── "),
-            };
-
-            if is_root {
-                write!(f, ": {}\n", node_value)?;
-            } else {
-                write!(
-                    f,
-                    "{}{}\x1b[1;33m{}\x1b[0m: {}\n",
-                    indention,
-                    bullet,
-                    MapKey::display(&location),
-                    node_value,
-                )?;
-            };
-
-            match &node.value {
-                NodeValue::Parent { children } => {
-                    let mut children_vec: Vec<(&MapKey, &Node)> = children.iter().collect();
-                    children_vec.sort_by(|(a, _), (b, _)| a.key.cmp(&b.key));
-
-                    let mut counter = 1;
-                    for (key, child) in &children_vec {
-                        let mut new_location = location.clone();
-                        new_location.push((*key).to_owned());
-
-                        write_node(
-                            f,
-                            child,
-                            new_idention.clone(),
-                            new_location.clone(),
-                            counter == children_vec.len(),
-                            false,
-                        )?;
-                        counter += 1;
-                    }
-                }
-                NodeValue::Child {
-                    path: _,
-                    extandable: _,
-                } => {
-                    // Do nothing and stop the recursion
-                }
-            }
-
-            Ok(())
-        }
-
-        write_node(f, &self.root, String::new(), vec![], false, true)?;
-
-        Ok(())
-    }
-}
diff --git a/pkgs/sources/lf-make-map/src/mapping/map_tree/iterator.rs b/pkgs/sources/lf-make-map/src/mapping/map_tree/iterator.rs
deleted file mode 100644
index 4364bb2b..00000000
--- a/pkgs/sources/lf-make-map/src/mapping/map_tree/iterator.rs
+++ /dev/null
@@ -1,53 +0,0 @@
-use crate::mapping::MapKey;
-
-use super::{MappingTree, Node, NodeValue};
-
-pub struct MappingTreeIterator {
-    children: Vec<(Vec<MapKey>, String)>,
-}
-
-impl MappingTreeIterator {
-    pub fn new(tree: &MappingTree, ignore_extendable: bool) -> Self {
-        let children = extract_child(vec![], &tree.root, ignore_extendable);
-
-        Self { children }
-    }
-}
-
-fn extract_child(
-    current_key: Vec<MapKey>,
-    node: &Node,
-    ignore_extendable: bool,
-) -> Vec<(Vec<MapKey>, String)> {
-    match &node.value {
-        NodeValue::Parent { children } => children
-            .iter()
-            .map(|(key, value)| {
-                let mut new_key = current_key.clone();
-                new_key.push(key.to_owned());
-
-                extract_child(new_key, value, ignore_extendable)
-            })
-            .flatten()
-            .collect(),
-        NodeValue::Child { path, extandable } => {
-            if ignore_extendable {
-                vec![(current_key, path.to_string())]
-            } else {
-                if *extandable {
-                    vec![(current_key, path.to_string())]
-                } else {
-                    vec![]
-                }
-            }
-        }
-    }
-}
-
-impl Iterator for MappingTreeIterator {
-    type Item = (Vec<MapKey>, String);
-
-    fn next(&mut self) -> Option<Self::Item> {
-        self.children.pop()
-    }
-}
diff --git a/pkgs/sources/lf-make-map/src/mapping/map_tree/lf_mapping.rs b/pkgs/sources/lf-make-map/src/mapping/map_tree/lf_mapping.rs
deleted file mode 100644
index 6d9c7a0d..00000000
--- a/pkgs/sources/lf-make-map/src/mapping/map_tree/lf_mapping.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use std::path::PathBuf;
-
-use crate::mapping::MapKey;
-
-use super::MappingTree;
-
-impl MappingTree {
-    pub fn to_lf_mappings(self, home_path: PathBuf) -> String {
-        self.iter(true)
-            .map(|(key, value)| {
-                format!(
-                    "map g{} cd \"{}\"\n",
-                    MapKey::display(&key),
-                    home_path.join(&value).display()
-                )
-            })
-            .collect()
-    }
-}
diff --git a/pkgs/sources/lf-make-map/src/mapping/map_tree/mod.rs b/pkgs/sources/lf-make-map/src/mapping/map_tree/mod.rs
deleted file mode 100644
index 35e6d91d..00000000
--- a/pkgs/sources/lf-make-map/src/mapping/map_tree/mod.rs
+++ /dev/null
@@ -1,402 +0,0 @@
-use std::{collections::HashMap, mem};
-
-use anyhow::{bail, Result};
-use log::debug;
-
-use self::iterator::MappingTreeIterator;
-
-use super::MapKey;
-
-pub mod display;
-pub mod iterator;
-pub mod lf_mapping;
-
-/// A prefix tree
-#[derive(Debug)]
-pub struct MappingTree {
-    root: Node,
-}
-
-#[derive(Clone, Debug, PartialEq, Eq)]
-pub enum NodeValue {
-    Parent { children: HashMap<MapKey, Node> },
-    Child { path: String, extandable: bool },
-}
-
-#[derive(Clone, Debug, PartialEq, Eq)]
-pub struct Node {
-    value: NodeValue,
-}
-
-impl MappingTree {
-    pub fn new() -> Self {
-        Self {
-            root: Node::new_parent(),
-        }
-    }
-
-    pub fn root_node(&self) -> &Node {
-        &self.root
-    }
-
-    pub fn iter(&self, ignore_extendable: bool) -> MappingTreeIterator {
-        MappingTreeIterator::new(&self, ignore_extendable)
-    }
-
-    /// Returns the node at the key, otherwise None. The node can be changed
-    pub fn get_mut(&mut self, key: &[MapKey]) -> Option<&mut Node> {
-        let mut current_node = &mut self.root;
-        for ch in key.iter() {
-            if let NodeValue::Parent { children } = &mut current_node.value {
-                current_node = children.get_mut(&ch)?
-            } else {
-                return None;
-            }
-        }
-
-        Some(current_node)
-    }
-
-    /// Returns the node at the key, otherwise the last node that matched.
-    pub fn try_get(&self, key: &[MapKey]) -> (&Node, Vec<MapKey>) {
-        let mut current_node = &self.root;
-        let mut current_key = vec![];
-
-        for ch in key.iter() {
-            if let NodeValue::Parent { children } = &current_node.value {
-                current_node = if let Some(node) = children.get(&ch) {
-                    let (key, _value) = children
-                        .get_key_value(&ch)
-                        .expect("This exists, we checked");
-                    current_key.push(key.clone());
-
-                    node
-                } else {
-                    return (current_node, current_key);
-                };
-            } else {
-                return (current_node, current_key);
-            }
-        }
-
-        (current_node, current_key)
-    }
-
-    pub fn include(&mut self, path: &str) -> Result<()> {
-        let associated_key = MapKey::new_ones_from_path(path, 1);
-        self.insert(&associated_key, path)
-    }
-
-    pub fn insert(&mut self, key: &[MapKey], path: &str) -> Result<()> {
-        self.insert_node(key, Node::new_child(path.to_owned()))
-    }
-
-    pub fn interleave(&mut self, key: &[MapKey], node: Node) -> Result<()> {
-        let want_to_be_parent = self.get_mut(&key).expect("This value exists");
-        let (parent_value, _parent_children) = if let NodeValue::Parent { children } = node.value {
-            (
-                NodeValue::Parent {
-                    children: children.clone(),
-                },
-                children,
-            )
-        } else {
-            unreachable!("This value will be a parent")
-        };
-
-        let child_value = mem::replace(&mut want_to_be_parent.value, parent_value);
-        assert!(matches!(
-            child_value,
-            NodeValue::Child {
-                path: _,
-                extandable: _
-            }
-        ));
-
-        let child_value = if let NodeValue::Child {
-            path,
-            extandable: _,
-        } = child_value
-        {
-            NodeValue::Child {
-                path,
-                extandable: false,
-            }
-        } else {
-            unreachable!("This is only a child value")
-        };
-
-        let child = Node { value: child_value };
-
-        let mut new_key = key.to_vec();
-        new_key.push(MapKey {
-            key: '.',
-            part_path: ".".to_owned(),
-            resolution: 1,
-        });
-        self.insert_node(&new_key, child)?;
-        Ok(())
-    }
-
-    pub fn insert_node(&mut self, key: &[MapKey], node: Node) -> Result<()> {
-        let (_node, found_key) = self.try_get(key).clone();
-
-        if found_key != key {
-            let needed_nodes_key = key
-                .strip_prefix(&found_key[..])
-                .expect("The node's location is a prefix");
-
-            let needed_nodes_length = needed_nodes_key.iter().count();
-
-            let mut current_node = self
-                .get_mut(&found_key[..])
-                .expect("This should always exists");
-            let mut current_location = found_key.clone();
-            let mut counter = 1;
-
-            for ch in needed_nodes_key.iter() {
-                current_location.push(ch.to_owned());
-
-                let next_node = if counter == needed_nodes_length {
-                    node.clone()
-                } else {
-                    Node::new_parent()
-                };
-
-                current_node = match &current_node.value {
-                    NodeValue::Parent { children } => {
-                        assert_eq!(children.get(&ch), None);
-
-                        let children =
-                            if let NodeValue::Parent { children } = &mut current_node.value {
-                                children
-                            } else {
-                                unreachable!("This is a parent, we cheched")
-                            };
-
-                        children.insert(ch.to_owned(), next_node);
-                        children.get_mut(&ch).expect("Was just inserted")
-                    }
-                    NodeValue::Child {
-                        path,
-                        extandable: _,
-                    } => {
-                        // A node that should be a parent was classified
-                        // as child before:
-                        //
-                        //  1. Remove the child node and replace it with a parent one.
-                        //  2. Add the child node to the parent node as child, but with a '.' as MapKey.
-                        //  3. Add the original node also as child to the parent node.
-
-                        let mut children = HashMap::new();
-                        let move_child_node = Node::new_child(path.to_owned());
-
-                        children.insert(
-                            MapKey {
-                                key: '.',
-                                part_path: ".".to_owned(),
-                                resolution: 1,
-                            },
-                            move_child_node,
-                        );
-                        children.insert(ch.to_owned(), next_node);
-
-                        current_node.value = NodeValue::Parent { children };
-
-                        let children =
-                            if let NodeValue::Parent { children } = &mut current_node.value {
-                                children
-                            } else {
-                                unreachable!("We just inserted the parent value.")
-                            };
-
-                        children.get_mut(&ch).expect("Was just inserted")
-                    }
-                };
-
-                counter += 1;
-            }
-        } else {
-            fn reduce_string(a: &str) -> Option<char> {
-                let first_char = a.chars().take(1).last().expect("Should contain one char");
-
-                if a.chars().all(|ch| ch == first_char) {
-                    return Some(first_char);
-                } else {
-                    return None;
-                }
-            }
-            fn check_subset(a: &str, b: &str) -> bool {
-                if a.len() > b.len() {
-                    let a_prefix: String = a.chars().take(b.len()).collect();
-                    let a_suffix: String = a.chars().skip(b.len()).collect();
-
-                    if a_prefix == b {
-                        let clean_suffix = reduce_string(&a_suffix);
-                        if let Some(ch) = clean_suffix {
-                            ch == b.chars().last().expect("Will match")
-                        } else {
-                            false
-                        }
-                    } else {
-                        false
-                    }
-                } else if b.len() > a.len() {
-                    let b_prefix: String = b.chars().take(a.len()).collect();
-                    let b_suffix: String = b.chars().skip(a.len()).collect();
-
-                    if b_prefix == a {
-                        let clean_suffix = reduce_string(&b_suffix);
-                        if let Some(ch) = clean_suffix {
-                            ch == a.chars().last().expect("Will match")
-                        } else {
-                            false
-                        }
-                    } else {
-                        false
-                    }
-                } else {
-                    a == b
-                }
-            }
-
-            // Another node was already inserted with the same key!
-            // So we simple increase the resolution of the other node and this node, until their
-            // keys are not the same anymore.
-            // This only includes the last segment of the `MapKey`
-            //
-            // 1. Change both keys, until they are not equal any more
-            // 2. Move the wrongly placed node to the new place.
-            // 3. Insert our node.
-            let mut foreign_key = vec![found_key.last().expect("This will exist").clone()];
-            let mut our_key = vec![key.last().expect("This will exist").clone()];
-
-            debug!(
-                "'{}' ('{}') and '{}' ('{}') are the same, try to find a better combination!",
-                MapKey::display(&our_key),
-                our_key[0].part_path,
-                MapKey::display(&foreign_key),
-                foreign_key[0].part_path,
-            );
-
-            // The 'a' and 'b' stuff is here, to ensure that both returning None will not match
-            // this condition.
-            if reduce_string(&foreign_key[0].part_path).unwrap_or('a')
-                == reduce_string(&our_key[0].part_path).unwrap_or('b')
-            {
-                bail!(
-                    "\
-The foreign_key ('{}', path_part: '{}' -> '{}') and our_key ('{}', path_part: '{}' -> '{}') \
-have an identical path_part (when duplicated chars are removed)!
-I cannot extended them via incrementation.
-Please rename the paths to fix this.
-                        ",
-                    MapKey::display(&foreign_key),
-                    &foreign_key[0].part_path,
-                    reduce_string(&foreign_key[0].part_path).expect("Is some here"),
-                    MapKey::display(&our_key),
-                    &our_key[0].part_path,
-                    reduce_string(&our_key[0].part_path).expect("Is some here"),
-                );
-            }
-
-            if check_subset(&foreign_key[0].part_path, &our_key[0].part_path) {
-                bail!(
-                    "\
-The foreign_key ('{}', path_part: '{}') and our_key ('{}', path_part: '{}') \
-are subsets of one another!
-A discrimination through incrementation will not work!
-Please rename the paths to fix this.
-                        ",
-                    MapKey::display(&foreign_key),
-                    &foreign_key[0].part_path,
-                    MapKey::display(&our_key),
-                    &our_key[0].part_path,
-                );
-            }
-
-            while our_key == foreign_key {
-                our_key = our_key[0].increment(our_key[our_key.len() - 1].resolution + 1);
-                foreign_key =
-                    foreign_key[0].increment(foreign_key[foreign_key.len() - 1].resolution + 1);
-                debug!(
-                    "Now its: '{}' ('{}') and '{}' ('{}')",
-                    MapKey::display(&our_key),
-                    our_key[0].part_path,
-                    MapKey::display(&foreign_key),
-                    foreign_key[0].part_path,
-                );
-            }
-
-            debug!(
-                "Found a better one: '{}' ('{}') and '{}' ('{}')",
-                MapKey::display(&our_key),
-                our_key[0].part_path,
-                MapKey::display(&foreign_key),
-                foreign_key[0].part_path,
-            );
-
-            let parent = self
-                .get_mut(&found_key[..&found_key.len() - 1])
-                .expect("This will exist");
-
-            if let NodeValue::Parent { children } = &mut parent.value {
-                if let NodeValue::Child {
-                    path: _,
-                    extandable: _,
-                } = children
-                    .get(found_key.last().expect("Exists"))
-                    .expect("This node also exists")
-                    .value
-                {
-                    let old = children
-                        .remove(found_key.last().expect("This will exist"))
-                        .expect("This will be there");
-
-                    let full_foreign_key: Vec<_> = found_key
-                        .clone()
-                        .into_iter()
-                        .rev()
-                        .skip(1)
-                        .rev()
-                        .chain(foreign_key.clone().into_iter())
-                        .collect();
-                    self.insert_node(&full_foreign_key, old.clone())?;
-                }
-
-                let full_our_key: Vec<_> = key
-                    .to_vec()
-                    .into_iter()
-                    .rev()
-                    .skip(1)
-                    .rev()
-                    .chain(our_key.clone().into_iter())
-                    .collect();
-
-                self.insert_node(&full_our_key, node.clone())?;
-            } else {
-                unreachable!("This node will be a parent");
-            }
-        }
-
-        Ok(())
-    }
-}
-
-impl Node {
-    pub fn new_child(path: String) -> Self {
-        Self {
-            value: NodeValue::Child {
-                path,
-                extandable: true,
-            },
-        }
-    }
-    pub fn new_parent() -> Self {
-        Self {
-            value: NodeValue::Parent {
-                children: HashMap::new(),
-            },
-        }
-    }
-}
diff --git a/pkgs/sources/lf-make-map/src/mapping/mod.rs b/pkgs/sources/lf-make-map/src/mapping/mod.rs
deleted file mode 100644
index 114fdca0..00000000
--- a/pkgs/sources/lf-make-map/src/mapping/mod.rs
+++ /dev/null
@@ -1,156 +0,0 @@
-use std::{
-    fmt::{Display, Write},
-    hash::Hash,
-};
-
-use log::debug;
-
-pub mod map_tree;
-
-#[derive(Clone, Debug, Eq)]
-pub struct MapKey {
-    pub key: char,
-
-    resolution: usize,
-
-    /// Part of the path, used to derive the key
-    part_path: String,
-}
-
-impl Hash for MapKey {
-    fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
-        self.key.hash(state)
-    }
-}
-
-impl PartialEq for MapKey {
-    fn eq(&self, other: &Self) -> bool {
-        self.key == other.key
-    }
-}
-
-impl MapKey {
-    pub fn new_from_part_path(part_path: &str, resolution: usize) -> Vec<Self> {
-        let key = Self::part_path_to_key(&part_path, resolution);
-
-        key.chars()
-            .map(|ch| Self {
-                key: ch,
-                resolution,
-                part_path: part_path.to_owned(),
-            })
-            .collect()
-    }
-
-    pub fn new_ones_from_path(path: &str, number_of_chars: usize) -> Vec<Self> {
-        let key: Vec<MapKey> = path
-            .split('/')
-            .map(|part| Self::new_from_part_path(part, number_of_chars))
-            .flatten()
-            .collect();
-
-        debug!(
-            "Generated full MapKeys: '{}' -> '{}'",
-            path,
-            MapKey::display(&key)
-        );
-        key
-    }
-
-    pub fn increment(&self, target_resolution: usize) -> Vec<Self> {
-        let new_resolution = target_resolution;
-
-        // debug!("Incrementing: '{}' ('{}')", &self, &self.part_path);
-
-        let added_chars = if new_resolution < self.part_path.len() {
-            MapKey::part_path_to_key(&self.part_path, new_resolution)
-        } else {
-            let mut generated_chars =
-                MapKey::part_path_to_key(&self.part_path, self.part_path.len());
-
-            generated_chars.extend(
-                (0..(new_resolution - self.part_path.len()))
-                    .into_iter()
-                    .map(|_| self.part_path.chars().last().expect("This will exists")),
-            );
-
-            generated_chars
-        };
-
-        let part_path = self.part_path.clone();
-        let output: Vec<Self> = added_chars
-            .chars()
-            .enumerate()
-            .map(|(res, ch)| MapKey {
-                key: ch,
-                resolution: res + 1,
-                part_path: part_path.clone(),
-            })
-            .collect();
-
-        // debug!("Finished increment: '{}' ('{}')", MapKey::display(&output), output[0].part_path);
-        output
-    }
-
-    pub fn display(values: &[Self]) -> String {
-        values.iter().map(|value| value.key.clone()).collect()
-    }
-    fn part_path_to_key(part: &str, number_of_chars: usize) -> String {
-        fn make(pat: char, part: &str, number_of_chars: usize) -> String {
-            let mut acc = String::new();
-
-            if !part.split(pat).all(|part| part.len() > 0) {
-                panic!(
-                    "\
-Can't turn this path '{}' to a mapping.
-This should not happen, please report the bug!",
-                    part
-                )
-            }
-
-            let mut last_working = None;
-            for i in 0..number_of_chars {
-                for str in part.split(pat) {
-                    if acc.len() != number_of_chars {
-                        acc.push(match str.chars().nth(i) {
-                            Some(ch) => ch,
-                            None => {
-                                if let Some(last) = last_working {
-                                    str.chars().nth(last).expect("This should always exist")
-                                } else {
-                                    last_working = Some(i - 1);
-                                    str.chars().nth(i - 1).expect("This should always exist")
-                                }
-                            }
-                        })
-                    }
-                }
-            }
-
-            acc
-        }
-
-        let value = if part.contains('_') && !part.starts_with('_') && !part.ends_with('_') {
-            make('_', part, number_of_chars)
-        } else if part.contains('-') && !part.starts_with('-') && !part.ends_with('-') {
-            make('-', part, number_of_chars)
-        } else {
-            part.chars().take(number_of_chars).collect::<String>()
-        };
-
-        assert_eq!(
-            value.len(),
-            number_of_chars,
-            "'{}' does not have expected length of: {}",
-            value,
-            number_of_chars
-        );
-        value
-    }
-}
-
-impl Display for MapKey {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        f.write_char(self.key)
-    }
-}
diff --git a/pkgs/sources/lf-make-map/update.sh b/pkgs/sources/lf-make-map/update.sh
deleted file mode 100755
index a0a029f4..00000000
--- a/pkgs/sources/lf-make-map/update.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env sh
-
-nix flake update
-
-[ "$1" = "upgrade" ] && cargo upgrade
-cargo update
diff --git a/pkgs/sources/plgs-pkgs/README.md b/pkgs/sources/plgs-pkgs/README.md
deleted file mode 100644
index e8169951..00000000
--- a/pkgs/sources/plgs-pkgs/README.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# Fork
-
-All files in this repository where forked form [here](https://github.com/NixNeovim/NixNeovimPlugins) on commit `5010b91eb03696574c3c293f072a090618227e87`.
-Below the original README. They were licensed under the MIT license.
-
-# All vim plugins, ready to go
-
-This repo auto generates nix packages for vim/neovim plugins.
-Packages are automatically updated twice per week using a GitHub Actions.
-Plugins are fetched from the `manifest.txt` and [awesome-neovim][0] repo.
-
-This is a fork of [this repo](https://github.com/m15a/nixpkgs-vim-extra-plugins); however, we fetch all additions from the original repo, so we will never have less plugins.
-Further, the original deletes plugins that are available in the nixpkgs. We, instead, try to assemble a list of all available plugins.
-Therefore, to access plugins you will never have to search in two places.
-
-This repo can be used as a stand-alone, by adding it to your inputs.
-However, we recommend to use [NixNeovim](https://github.com/NixNeovim/NixNeovim) modules instead, and use this only when you need a plugins, which does not have a module, yet.
-
-## Available plugins
-
-The [plugins.md](plugins.md) contains an auto-generated list of all available plugins.
-
-## Usage
-
-- We recommend using [NixNeovim](https://github.com/NixNeovim/NixNeovim), and only access the plugins directly when they do not have a module in NixNeovim.
-
-However, you can also use this repo without NixNeovim:
-To access the plugins, you need to add the overlay.
-The overlay adds extra Vim plugins to `pkgs.vimExtraPlugins`.
-First, add this repo to your inputs:
-
-```
-inputs.nixneovimplugins.url = github:jooooscha/nixpkgs-vim-extra-plugins
-```
-
-Next, apply the provided overlay:
-
-```
-nixpkgs.overlays = [
-  inputs.nixneovimplugins.overlays.default
-];
-```
-
-Finally, you can add the packages to your vim/neovim config. For example you can use [NixNeovim](https://github.com/NixNeovim/Nixneovim) or you can add the plugins directly:
-
-```
- programs.neovim = {
-   plugins = [
-     pkgs.vimExtraPlugins.nvim-colorizer-lua
-   ];
- }
-```
-
-More info on using neovim with nix can be found here: [NixOS Neovim](https://nixos.wiki/wiki/Neovim)
-
-## Contribution
-
-### How to add a new plugin
-
-#### 1. Add the plugin to manifest.txt:
-
-```
-# Examples
-
-haringsrob/nvim_context_vt
-sourcehut:henriquehbr/ataraxis.lua
-gitlab:yorickpeterse/nvim-pqf
-williamboman/mason.nvim:45b9a4da776d9fb017960b3ac7241161fb7bc578
-foo/bar::baz                   --> renamed to baz
-foo/bar:dev                    --> using dev branch
-```
-
-Supported are Github (default), SourceHut, and GitLab.
-
-#### 2. Create a Pull Request
-
-- Create a pull request with the changed manifest.txt (and blacklist.txt if neccessary).
-- A GitHub action will check your contribution and generate all neccessary nix code for your new plugin. It will also take care of sorting and cleaning the manifest.txt
-- After all checks have passed, I will merge your change.
-
-I am happy for any contribution. :)
-
-### How to remove a new plugin
-
-Copy the entry from manifest.txt to blacklist.txt and create a PR.
-The GitHub Actions will do the rest, including removing the entry from manifest.txt
-
-## Credits
-
-This is originally based on work by [m15a](https://github.com/m15a/nixpkgs-vim-extra-plugins)
-
-[0]: https://github.com/rockerBOO/awesome-neovim
diff --git a/pkgs/sources/plgs-pkgs/check.nix b/pkgs/sources/plgs-pkgs/check.nix
deleted file mode 100644
index ad23e2c7..00000000
--- a/pkgs/sources/plgs-pkgs/check.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  pkgs,
-  lib,
-  ...
-}: let
-  # checks if a plugin has a license
-  hasLicense = _: pkg: let
-    warn = x: lib.warn x x;
-
-    msg =
-      if builtins.hasAttr "license" pkg.meta
-      then "${pkg.name} has license"
-      else warn "${pkg.name} has no license";
-
-    msg' = lib.replaceStrings [" "] ["-"] msg;
-  in
-    pkgs.runCommandNoCC msg' {} "echo : > $out ";
-
-  # function to check License for all packages
-  check-missing-licenses = let
-    buildInputs =
-      lib.mapAttrsToList
-      hasLicense
-      pkgs.vimExtraPlugins;
-  in
-    pkgs.runCommandNoCC
-    "check-missing-licenses"
-    {inherit buildInputs;}
-    "echo : > $out";
-in {
-  checks =
-    pkgs.vimExtraPlugins
-    // {
-      inherit check-missing-licenses;
-      inherit (pkgs) update-vim-plugins;
-    };
-}
diff --git a/pkgs/sources/plgs-pkgs/default.nix b/pkgs/sources/plgs-pkgs/default.nix
deleted file mode 100644
index 0f7cd485..00000000
--- a/pkgs/sources/plgs-pkgs/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-[
-  (final: prev:
-    prev.lib.composeManyExtensions [
-      (self: super: let
-        origin = import ./plugins {
-          inherit (super.vimUtils) buildVimPlugin;
-          inherit (super) lib fetchurl fetchgit;
-        };
-      in {
-        vimExtraPlugins = super.lib.makeExtensible (_: super.lib.recurseIntoAttrs origin);
-      })
-    ]
-    final
-    prev)
-]
diff --git a/pkgs/sources/plgs-pkgs/overrides.nix b/pkgs/sources/plgs-pkgs/overrides.nix
deleted file mode 100644
index e03a78b1..00000000
--- a/pkgs/sources/plgs-pkgs/overrides.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-final: prev: let
-  inherit (final) lib;
-
-  /*
-  * Mark broken packages here.
-  */
-  markBrokenPackages = self: super:
-    lib.mapAttrs (attrName: broken:
-      super.${attrName}.overrideAttrs (old: {
-        meta = old.meta // {inherit broken;};
-      }))
-    {
-      # <name> = true;
-    };
-
-  /*
-  * Add licenses if missing or incorrect in generated ./pkgs/vim-plugins.nix.
-  */
-  fixLicenses = self: super:
-    lib.mapAttrs (attrName: license:
-      super.${attrName}.overrideAttrs (old: {
-        meta = old.meta // {inherit license;};
-      })) (with lib.licenses; {
-      /*
-      * Example:
-      * plugin-name = [<licenses>]
-      */
-    });
-in {
-  vimExtraPlugins = prev.vimExtraPlugins.extend (lib.composeManyExtensions [
-    markBrokenPackages
-    fixLicenses
-  ]);
-}
diff --git a/pkgs/sources/plgs-pkgs/plugins/.plugins.json b/pkgs/sources/plgs-pkgs/plugins/.plugins.json
deleted file mode 100644
index 9331bc8f..00000000
--- a/pkgs/sources/plgs-pkgs/plugins/.plugins.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "ThePrimeagen/harpoon:master": "{\"description\": \"\", \"homepage\": \"https://github.com/ThePrimeagen/harpoon\", \"license\": {\"py/reduce\": [{\"py/type\": \"update_vim_plugins.nix.License\"}, {\"py/tuple\": [\"mit\"]}]}, \"name\": \"harpoon\", \"owner\": \"ThePrimeagen\", \"py/object\": \"update_vim_plugins.plugin.GitHubPlugin\", \"source\": {\"py/object\": \"update_vim_plugins.nix.UrlSource\", \"sha256\": \"1w4hi9hbdjwdhb4vwa0x08a25vbcxqg1d5cskm2qvjy5fdlqils0\", \"url\": \"https://github.com/ThePrimeagen/harpoon/archive/ccae1b9bec717ae284906b0bf83d720e59d12b91.tar.gz\"}, \"source_line\": \"ThePrimeagen/harpoon:master\", \"version\": {\"__reduce__\": [{\"py/type\": \"datetime.date\"}, [\"B+cMGg==\"]], \"py/object\": \"datetime.date\"}}",
-  "akinsho/toggleterm.nvim": "{\"description\": \"A neovim lua plugin to help easily manage multiple terminal windows\", \"homepage\": \"https://github.com/akinsho/toggleterm.nvim\", \"license\": {\"py/reduce\": [{\"py/type\": \"update_vim_plugins.nix.License\"}, {\"py/tuple\": [\"gpl3Only\"]}]}, \"name\": \"toggleterm-nvim\", \"owner\": \"akinsho\", \"py/object\": \"update_vim_plugins.plugin.GitHubPlugin\", \"source\": {\"py/object\": \"update_vim_plugins.nix.UrlSource\", \"sha256\": \"0nx69q9597vy7lzvvh58fnjyin23ns6apmyp532sgf547bw7mld6\", \"url\": \"https://github.com/akinsho/toggleterm.nvim/archive/cbd041d91b90cd3c02df03fe6133208888f8e008.tar.gz\"}, \"source_line\": \"akinsho/toggleterm.nvim\", \"version\": {\"__reduce__\": [{\"py/type\": \"datetime.date\"}, [\"B+cMBg==\"]], \"py/object\": \"datetime.date\"}}",
-  "andrewferrier/debugprint.nvim": "{\"description\": \"Debugging in NeoVim the print() way!\", \"homepage\": \"https://github.com/andrewferrier/debugprint.nvim\", \"license\": {\"py/reduce\": [{\"py/type\": \"update_vim_plugins.nix.License\"}, {\"py/tuple\": [\"mit\"]}]}, \"name\": \"debugprint-nvim\", \"owner\": \"andrewferrier\", \"py/object\": \"update_vim_plugins.plugin.GitHubPlugin\", \"source\": {\"py/object\": \"update_vim_plugins.nix.UrlSource\", \"sha256\": \"06r1jhx7jd15q8wvnw0xqwk3bkx39pm4pbv70hf9ggd6zsnmsrmn\", \"url\": \"https://github.com/andrewferrier/debugprint.nvim/archive/54297dd0a4f318b279a1cb954e7714f3942df123.tar.gz\"}, \"source_line\": \"andrewferrier/debugprint.nvim\", \"version\": {\"__reduce__\": [{\"py/type\": \"datetime.date\"}, [\"B+gDHQ==\"]], \"py/object\": \"datetime.date\"}}",
-  "lmburns/lf.nvim": "{\"description\": \"Lf file manager for Neovim (in Lua)\", \"homepage\": \"https://github.com/lmburns/lf.nvim\", \"license\": {\"py/reduce\": [{\"py/type\": \"update_vim_plugins.nix.License\"}, {\"py/tuple\": [\"mit\"]}]}, \"name\": \"lf-nvim\", \"owner\": \"lmburns\", \"py/object\": \"update_vim_plugins.plugin.GitHubPlugin\", \"source\": {\"py/object\": \"update_vim_plugins.nix.UrlSource\", \"sha256\": \"1nwf90bnzqhlgs007gg6xpx0vf4r1d19586nld78ipi1ch7nz4px\", \"url\": \"https://github.com/lmburns/lf.nvim/archive/69ab1efcffee6928bf68ac9bd0c016464d9b2c8b.tar.gz\"}, \"source_line\": \"lmburns/lf.nvim\", \"version\": {\"__reduce__\": [{\"py/type\": \"datetime.date\"}, [\"B+cKAw==\"]], \"py/object\": \"datetime.date\"}}",
-  "nvim-telescope/telescope-bibtex.nvim": "{\"description\": \"A telescope.nvim extension to search and paste bibtex entries into your TeX files.\", \"homepage\": \"https://github.com/nvim-telescope/telescope-bibtex.nvim\", \"license\": {\"py/reduce\": [{\"py/type\": \"update_vim_plugins.nix.License\"}, {\"py/tuple\": [\"mit\"]}]}, \"name\": \"telescope-bibtex-nvim\", \"owner\": \"nvim-telescope\", \"py/object\": \"update_vim_plugins.plugin.GitHubPlugin\", \"source\": {\"py/object\": \"update_vim_plugins.nix.UrlSource\", \"sha256\": \"1sd6p8cvv3dckgrhc7grlyfcibjxhxbfyh0w7p5m4mdcazhy1kqs\", \"url\": \"https://github.com/nvim-telescope/telescope-bibtex.nvim/archive/289a6f86ebec06e8ae1590533b732b9981d84900.tar.gz\"}, \"source_line\": \"nvim-telescope/telescope-bibtex.nvim\", \"version\": {\"__reduce__\": [{\"py/type\": \"datetime.date\"}, [\"B+gDHA==\"]], \"py/object\": \"datetime.date\"}}"
-}
\ No newline at end of file
diff --git a/pkgs/sources/plgs-pkgs/plugins/blacklist.txt b/pkgs/sources/plgs-pkgs/plugins/blacklist.txt
deleted file mode 100644
index 8b137891..00000000
--- a/pkgs/sources/plgs-pkgs/plugins/blacklist.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/pkgs/sources/plgs-pkgs/plugins/default.nix b/pkgs/sources/plgs-pkgs/plugins/default.nix
deleted file mode 100644
index df09e446..00000000
--- a/pkgs/sources/plgs-pkgs/plugins/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-  lib,
-  buildVimPlugin,
-  fetchurl,
-  fetchgit,
-}: {
-  /*
-  Generated from: ThePrimeagen/harpoon:master
-  */
-  harpoon = buildVimPlugin {
-    pname = "harpoon";
-    version = "2023-12-26";
-    src = fetchurl {
-      url = "https://github.com/ThePrimeagen/harpoon/archive/ccae1b9bec717ae284906b0bf83d720e59d12b91.tar.gz";
-      sha256 = "1w4hi9hbdjwdhb4vwa0x08a25vbcxqg1d5cskm2qvjy5fdlqils0";
-    };
-    meta = with lib; {
-      description = "";
-      homepage = "https://github.com/ThePrimeagen/harpoon";
-      license = with licenses; [mit];
-    };
-  };
-  /*
-  Generated from: lmburns/lf.nvim
-  */
-  lf-nvim = buildVimPlugin {
-    pname = "lf-nvim";
-    version = "2023-10-03";
-    src = fetchurl {
-      url = "https://github.com/lmburns/lf.nvim/archive/69ab1efcffee6928bf68ac9bd0c016464d9b2c8b.tar.gz";
-      sha256 = "1nwf90bnzqhlgs007gg6xpx0vf4r1d19586nld78ipi1ch7nz4px";
-    };
-    meta = with lib; {
-      description = "Lf file manager for Neovim (in Lua)";
-      homepage = "https://github.com/lmburns/lf.nvim";
-      license = with licenses; [mit];
-    };
-  };
-  /*
-  Generated from: nvim-telescope/telescope-bibtex.nvim
-  */
-  telescope-bibtex-nvim = buildVimPlugin {
-    pname = "telescope-bibtex-nvim";
-    version = "2024-03-28";
-    src = fetchurl {
-      url = "https://github.com/nvim-telescope/telescope-bibtex.nvim/archive/289a6f86ebec06e8ae1590533b732b9981d84900.tar.gz";
-      sha256 = "1sd6p8cvv3dckgrhc7grlyfcibjxhxbfyh0w7p5m4mdcazhy1kqs";
-    };
-    meta = with lib; {
-      description = "A telescope.nvim extension to search and paste bibtex entries into your TeX files.";
-      homepage = "https://github.com/nvim-telescope/telescope-bibtex.nvim";
-      license = with licenses; [mit];
-    };
-  };
-}
diff --git a/pkgs/sources/plgs-pkgs/plugins/manifest.txt b/pkgs/sources/plgs-pkgs/plugins/manifest.txt
deleted file mode 100644
index 615083c8..00000000
--- a/pkgs/sources/plgs-pkgs/plugins/manifest.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-lmburns/lf.nvim
-nvim-telescope/telescope-bibtex.nvim
-ThePrimeagen/harpoon:master
diff --git a/pkgs/sources/plgs-pkgs/plugins/plugins.md b/pkgs/sources/plgs-pkgs/plugins/plugins.md
deleted file mode 100644
index 4f73f811..00000000
--- a/pkgs/sources/plgs-pkgs/plugins/plugins.md
+++ /dev/null
@@ -1,7 +0,0 @@
-- Plugin count: 3
-
-| Repo | Last Update | Nix package name | Last checked |
-|:---|:---|:---|:---|
-| [ThePrimeagen/harpoon:master](https://github.com/ThePrimeagen/harpoon) | 2023-12-26 | `harpoon` | 2024-05-09 |
-| [lmburns/lf.nvim](https://github.com/lmburns/lf.nvim) | 2023-10-03 | `lf-nvim` | 2024-05-09 |
-| [nvim-telescope/telescope-bibtex.nvim](https://github.com/nvim-telescope/telescope-bibtex.nvim) | 2024-03-28 | `telescope-bibtex-nvim` | 2024-05-09 |
diff --git a/pkgs/sources/plgs-pkgs/plugins/whitelist.txt b/pkgs/sources/plgs-pkgs/plugins/whitelist.txt
deleted file mode 100644
index e69de29b..00000000
--- a/pkgs/sources/plgs-pkgs/plugins/whitelist.txt
+++ /dev/null
diff --git a/pkgs/sources/plgs-pkgs/update.sh b/pkgs/sources/plgs-pkgs/update.sh
deleted file mode 100755
index 6a0d3452..00000000
--- a/pkgs/sources/plgs-pkgs/update.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env sh
-
-BASE_DIR="$(readlink -f "$(dirname "$0")/plugins")"
-
-# Fetch plugins
-cd "$BASE_DIR" || (echo "BUG: No '$BASE_DIR'" && exit 1)
-
-# Cleanup manifest
-sort -o "$BASE_DIR/manifest.txt" "$BASE_DIR/manifest.txt"
-sort -o "$BASE_DIR/blacklist.txt" "$BASE_DIR/blacklist.txt"
-## Remove all plugins, which are on the blacklist
-# The same file is read and written to
-# shellcheck disable=SC2005
-echo "$(comm -23 "$BASE_DIR/manifest.txt" "$BASE_DIR/blacklist.txt")" >"$BASE_DIR/manifest.txt"
-
-# Backup vim-plugins.nix
-mv "$BASE_DIR/default.nix" "$BASE_DIR/default.nix.bak"
-echo "{...} : {}" >"$BASE_DIR/default.nix"
-
-# Generate derivations for new plugins (this binary is provided by the dev-environment)
-update-vim-plugins cleanup "$BASE_DIR"
-
-# Restore vim-plugins.nix
-mv "$BASE_DIR/default.nix.bak" "$BASE_DIR/default.nix"
-
-# Update new plugins
-update-vim-plugins update "$BASE_DIR" --all
diff --git a/pkgs/sources/scripts/default.nix b/pkgs/sources/scripts/default.nix
deleted file mode 100644
index 09c8d411..00000000
--- a/pkgs/sources/scripts/default.nix
+++ /dev/null
@@ -1,412 +0,0 @@
-{
-  sysLib,
-  homeConfig,
-  nixosConfig,
-}: [
-  (
-    final: prev: let
-      inherit (prev) lib;
-
-      write_shell = {
-        name,
-        path,
-        dependencies ? [],
-        keepPath ? false,
-        completions ? false,
-      }:
-        sysLib.writeShellScript {
-          inherit name keepPath;
-          src = ./source/${path}/${name}.sh;
-          dependencies = dependencies ++ [prev.dash];
-          generateCompletions = completions;
-        };
-      write_python = {
-        name,
-        path,
-        dependencies_system ? [],
-        dependencies_python ? _: [],
-        keepPath ? false,
-      }: let
-        src = ./source/${path}/${name}.py;
-        dependencies =
-          [(prev.python3.withPackages dependencies_python)]
-          ++ dependencies_system;
-        path_setting =
-          if keepPath
-          then "--prefix PATH :"
-          else "--set PATH";
-      in
-        prev.runCommandLocal name {
-          nativeBuildInputs = [prev.makeWrapper] ++ dependencies;
-        }
-        ''
-          install -m755 ${src} -D "$out/bin/${name}"
-          patchShebangs "$out/bin/${name}"
-          wrapProgram "$out/bin/${name}" ${path_setting} ${prev.lib.makeBinPath dependencies};
-        '';
-
-      ## Begin of shell scripts
-      aumo-scr = write_shell {
-        name = "aumo";
-        path = "apps";
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            udisks
-            findutils
-            rofi
-            ;
-        };
-      };
-
-      battery-scr = write_shell {
-        name = "battery";
-        path = "wrappers";
-        dependencies = [];
-      };
-
-      brightness-scr = lib.mkIf nixosConfig.soispha.laptop.enable (write_shell {
-        name = "brightness";
-        path = "small_functions";
-        generateCompletions = true;
-        dependencies = [];
-        replacementStrings = {BACKLIGHT_NAME = nixosConfig.soispha.laptop.backlight;};
-      });
-
-      con2pdf-scr = sysLib.writeShellScript {
-        name = "con2pdf";
-        src = ./source/apps/con2pdf.sh;
-        dependencies = builtins.attrValues {inherit (prev) sane-backends imagemagick coreutils fd;};
-        generateCompletions = true;
-        replacementStrings = {
-          DEVICE_FUNCTION =
-            # This is here, because escaping the whole function, to use it in the shell script
-            # directly just isn't possible
-            prev.writeText "DEVICE_FUNCTION"
-            /*
-            bash
-            */
-            ''
-              scanimage -L | awk 'BEGIN { FS = "`" } { gsub(/'.*/, "", $2); print $2 }'
-            '';
-        };
-      };
-
-      description-scr = write_shell {
-        name = "description";
-        path = "specific/ytcc";
-        dependencies = builtins.attrValues {
-          inherit (prev) jq fmt less locale;
-        };
-      };
-
-      fupdate-scr = write_shell {
-        name = "fupdate";
-        path = "apps";
-        keepPath = true;
-        completions = true;
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            dash
-            nix
-            gnugrep
-            fd
-            coreutils
-            bat # used by batgrep
-            gnused # required by batgrep
-            git # needed to fetch through git
-            ;
-          inherit (prev.bat-extras) batgrep;
-        };
-      };
-
-      git-edit-index-scr = write_shell {
-        name = "git-edit-index";
-        path = "apps";
-        completions = true;
-        # This starts neovim, wich might want to shell out
-        keepPath = true;
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            git
-            gnused
-            # $EDITOR
-
-            ;
-        };
-      };
-
-      hibernate-scr = write_shell {
-        name = "hibernate";
-        path = "wrappers";
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            systemd
-            taskwarrior
-            ;
-        };
-      };
-
-      ll-scr = sysLib.writeShellScript {
-        name = "ll";
-        src = ./source/wrappers/ll.sh;
-        wrap = false;
-      };
-
-      # TODO: this need to be replaced with a wayland alternative
-      #  llp-scr = write_shell {
-      #     name = "llp";
-      #     path = "wrappers";
-      #     dependencies = builtins.attrValues {inherit (prev) lf ueberzug;};
-      #   };
-
-      lock-scr = write_shell {
-        name = "lock";
-        path = "wrappers";
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            taskwarrior
-            swaylock
-            ;
-        };
-      };
-
-      lyrics-scr = write_shell {
-        name = "lyrics";
-        path = "wrappers";
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            exiftool
-            mpc-cli
-            jq
-            less
-            locale # dependency of less
-            ;
-        };
-      };
-
-      mpc-fav-scr = write_shell {
-        name = "mpc-fav";
-        path = "wrappers";
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            mpc-cli
-            ;
-        };
-      };
-
-      mpc-rm-scr = write_shell {
-        name = "mpc-rm";
-        path = "wrappers";
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            mpc-cli
-            trash-cli
-            ;
-        };
-      };
-
-      mpc-scr = write_shell {
-        name = "mpc";
-        path = "wrappers";
-        dependencies = [
-          mpc-fav-scr
-          mpc-rm-scr
-          prev.mpc-cli
-        ];
-      };
-
-      nato-scr = write_python {
-        name = "nato";
-        path = "small_functions";
-        dependencies_python = ps: [];
-      };
-
-      neorg-scr = sysLib.writeShellScriptMultiPart {
-        name = "neorg";
-        keepPath = true;
-        src = ./source/specific/neorg/sh;
-        baseName = "main.sh";
-        cmdPrefix = "functions";
-        cmdNames = [
-          "add.sh"
-          "context.sh"
-          "dmenu.sh"
-          "f_start.sh"
-          "f_stop.sh"
-          "list.sh"
-          "project.sh"
-          "review.sh"
-          "utils.sh"
-          "workspace.sh"
-        ];
-        dependencies = with prev; [
-          cocogitto
-          rofi
-          libnotify
-        ];
-        generateCompletions = true;
-        replacementStrings = {
-          DEFAULT_NEORG_PROJECT_DIR =
-            homeConfig.programs.nixvim.plugins.neorg.modules."core.dirman".config.workspaces.projects;
-          HOME_TASKRC = "${homeConfig.xdg.configHome}/task/home-manager-taskrc";
-          NEORG_REVIEW_PATH = "${homeConfig.xdg.dataHome}/neorg/review";
-          ALL_PROJECTS_NEWLINE = "${homeConfig.soispha.taskwarrior.projects.projects_newline}";
-          ALL_PROJECTS_COMMA = "${homeConfig.soispha.taskwarrior.projects.projects_comma}";
-          ALL_PROJECTS_PIPE = "${homeConfig.soispha.taskwarrior.projects.projects_pipe}";
-          ALL_WORKSPACES = "${lib.strings.concatStringsSep "|" (builtins.attrNames homeConfig.programs.nixvim.plugins.neorg.modules."core.dirman".config.workspaces)}";
-          ID_GENERATION_FUNCTION = "${sysLib.writeShellScript {
-            name = "neorg_id_function";
-            src = ./source/specific/neorg/neorg_id_function.sh;
-            dependencies = with prev; [
-              taskwarrior
-              gawk
-              findutils # xargs
-            ];
-          }}/bin/neorg_id_function";
-
-          # TODO: Replace the hard-coded path here with some reference <2023-10-20>
-          TASK_PROJECT_FILE = "/home/soispha/repos/nix/nixos-config/hm/soispha/conf/taskwarrior/projects/default.nix";
-        };
-      };
-
-      screenshot_persistent-scr = write_shell {
-        name = "screenshot_persistent";
-        path = "small_functions";
-        keepPath = true;
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            grim
-            slurp
-            alacritty
-            rofi
-            libnotify
-            lf # TODO: add llp
-            ;
-        };
-      };
-
-      screenshot_temporary-scr = write_shell {
-        name = "screenshot_temporary";
-        path = "small_functions";
-        dependencies = builtins.attrValues {inherit (prev) grim slurp wl-clipboard;};
-      };
-
-      show-scr = write_shell {
-        name = "show";
-        path = "wrappers";
-        keepPath = true; # I might want to use nvim in less (and shell escapes)
-        dependencies = builtins.attrValues {inherit (prev) less locale;};
-      };
-
-      sort_song-scr = write_shell {
-        name = "sort_song";
-        path = "wrappers";
-        dependencies = builtins.attrValues {inherit (prev) mediainfo jq gawk;};
-      };
-
-      spodi-scr = sysLib.writeShellScriptMultiPart {
-        name = "spodi";
-        keepPath = false;
-        src = ./source/specific/spodi;
-        baseName = "spodi.sh";
-        cmdPrefix = "sh";
-        cmdNames = [
-          "download.sh"
-          "update.sh"
-        ];
-        dependencies = with prev; [
-          gawk
-          expect
-          spotdl
-          fd
-          coreutils
-        ];
-        generateCompletions = true;
-        replacementStrings = {
-          XDG_CACHE_HOME = homeConfig.xdg.cacheHome;
-          XDG_MUSIC_DIR = homeConfig.xdg.userDirs.music;
-        };
-      };
-
-      update-sys-scr = write_shell {
-        name = "update-sys";
-        path = "small_functions";
-        completions = true;
-        dependencies = builtins.attrValues {
-          inherit
-            (prev)
-            git
-            nixos-rebuild
-            sudo
-            openssh
-            coreutils
-            mktemp
-            gnugrep
-            gnused
-            systemd
-            ;
-        };
-      };
-
-      virsh-del-scr = write_shell {
-        name = "virsh-del";
-        path = "wrappers";
-        dependencies = builtins.attrValues {inherit (prev) libvirt;};
-      };
-
-      yti-scr = write_shell {
-        name = "yti";
-        path = "wrappers";
-        dependencies = builtins.attrValues {inherit (prev) gawk expect yt-dlp;};
-      };
-    in {
-      scripts = {
-        # llp = llp-scr; # TODO: see above
-        aumo = aumo-scr;
-        battery = battery-scr;
-        brightness = brightness-scr;
-        con2pdf = con2pdf-scr;
-        description = description-scr;
-        fupdate = fupdate-scr;
-        git-edit-index = git-edit-index-scr;
-        hibernate = hibernate-scr;
-        ll = ll-scr;
-        lock = lock-scr;
-        lyrics = lyrics-scr;
-        mpc = mpc-scr;
-        mpc-fav = mpc-fav-scr;
-        mpc-rm = mpc-rm-scr;
-        nato = nato-scr;
-        neorg = neorg-scr;
-        screenshot_persistent = screenshot_persistent-scr;
-        screenshot_temporary = screenshot_temporary-scr;
-        show = show-scr;
-        sort_song = sort_song-scr;
-        spodi = spodi-scr;
-        update-sys = update-sys-scr;
-        virsh-del = virsh-del-scr;
-        yti = yti-scr;
-      };
-    }
-  )
-]
-
-
-    pkgs = import nixpkgs (import ./sys/nixpkgs {
-      inherit (nixpkgs) lib;
-      inherit system sysLib;
-
-      # FIXME: Don't unconditionally use tiamat here <2024-02-24>
-      homeConfig = self.nixosConfigurations.tiamat.config.home-manager.users.soispha;
-      nixosConfig = self.nixosConfigurations.tiamat.config;
-      overlays = [];
-    });
diff --git a/pkgs/sources/scripts/source/apps/aumo.sh b/pkgs/sources/scripts/source/apps/aumo.sh
deleted file mode 100755
index 84d39deb..00000000
--- a/pkgs/sources/scripts/source/apps/aumo.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#! /usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-unmounting() {
-    disk_name="$(find /dev/disk/by-label -type l -printf "%P|" | rofi -sep "|" -dmenu -p "Select disk to mount")"
-
-    udisksctl unmount --block-device "/dev/disk/by-label/$disk_name"
-}
-
-mounting() {
-    disk_name="$(find /dev/disk/by-label -type l -printf "%P|" | rofi -sep "|" -dmenu -p "Select disk to mount")"
-
-    udisksctl mount --block-device "/dev/disk/by-label/$disk_name"
-}
-
-case "$1" in
-"mount")
-    mounting
-    ;;
-"unmount" | "umount")
-    unmounting
-    ;;
-*)
-    die "Usage: $NAME mount|unmount"
-    ;;
-esac
diff --git a/pkgs/sources/scripts/source/apps/con2pdf.sh b/pkgs/sources/scripts/source/apps/con2pdf.sh
deleted file mode 100755
index 08bf8998..00000000
--- a/pkgs/sources/scripts/source/apps/con2pdf.sh
+++ /dev/null
@@ -1,234 +0,0 @@
-#! /usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-# needed for help() and version
-# shellcheck disable=2034
-AUTHORS="Soispha"
-# shellcheck disable=2034
-YEARS="2023"
-# shellcheck disable=2034
-VERSION="1.0.0"
-
-# NAME is from the wrapper
-# shellcheck disable=SC2269
-NAME="$NAME"
-help() {
-    cat <<EOF
-Scan images and turn them into a pdf.
-
-Usage:
-    $NAME [OPTIONS] --name --device
-
-OPTIONS:
-    --out-dir | -o [FILE]
-                            Path to place the generated pdf files (default: ./pdf).
-
-    --name | -n NAME
-                            Name for the pdf files (e.g. <NAME>_1.pdf).
-
-    --num-pages | -p NUM
-                            Number of pages to merge into one pdf (default: 1).
-
-    --device | -d DEVICE
-                            Device used for scanning.
-
-    --method | -m METHOD
-                            Method to use for scanning (default: ADF).
-
-    --help | -h
-                            Display this help and exit.
-
-    --version | -v
-                            Display version and copyright information and exit.
-ARGUMENTS:
-    FILE := [[fd . --max-depth 3]]
-                            A name of a file to store, default is: ./pdf
-
-    NAME | * := [[fd . --max-depth 3]]
-                            The basename of the generated files
-
-    NUM | *([0-9]) := 0 | 1 | 2 | 3 | 4
-                            Possible numbers of pages, can be more than 4
-
-    DEVICE := [[$(cat %DEVICE_FUNCTION)]]
-                            Possible scanner names
-
-    METHOD := ADF | Flatbed
-                            The scanning method to use, not all scanners support both of
-                            these. The default is ADF
-EOF
-}
-
-scan_adf() {
-    device="$1"
-    sides_per_page="$2"
-    method="ADF"
-    for i in $(seq "$sides_per_page"); do
-        do_until_success \
-            "scanimage --format=tiff --progress --source='$method' --device='$device' --batch=%d.tif --batch-increment='$sides_per_page' --batch-start='$i'" \
-            "warn 'Retrying scan, as we assume a network error!'"
-
-        if [ "$sides_per_page" -ne 1 ]; then
-            msg "Finished turn, please change side!"
-            readp "Press enter to continue" noop
-        fi
-    done
-}
-process_images_adf() {
-    tiff_temp_path="$1"
-    output_directory="$2"
-    name="$3"
-
-    counter=0
-    pdf_counter=0
-    image_cache="$(mktmp)"
-    while read -r scanned_image; do
-        dbg "$scanned_image (scanned_image) at $counter (counter)"
-        echo "$scanned_image" >>"$image_cache"
-        : $((counter += 1))
-        if [ "$counter" = "$number_of_pages" ]; then
-            dbg "$counter == $number_of_pages"
-            counter=0
-            convert_images "$image_cache" "${name}_$pdf_counter" "$output_directory"
-            : $((pdf_counter += 1))
-            printf "" >"$image_cache"
-        fi
-    done <"$(tmp_pipe fd . "$tiff_temp_path" "|" sort -V)"
-}
-
-scan_flatbed() {
-    device="$1"
-    number_of_pages"$2"
-    method="Flatbed"
-    for i in $(seq "$number_of_pages"); do
-        do_until_success \
-            "scanimage --format=tiff --progress --source='$method' --device='$device' --output-file=$i.tiff" \
-            "warn 'Retrying scan, as we assume a network error!'"
-        if [ "$number_of_pages" -ne 1 ]; then
-            msg "Finished turn, please change side!"
-            readp "Press enter to continue" noop
-        fi
-    done
-}
-process_images_flatbed() {
-    tiff_temp_path="$1"
-    output_directory="$2"
-    name="$3"
-
-    counter=0
-    image_cache="$(mktmp)"
-    while read -r scanned_image; do
-        echo "$scanned_image" >>"$image_cache"
-        : $((counter += 1))
-        if [ "$counter" = "$number_of_pages" ]; then
-            counter=0
-            convert_images "$image_cache" "$name" "$output_directory"
-            printf "" >"$image_cache"
-        fi
-    done <"$(tmp_pipe fd . "$tiff_temp_path" "|" sort -V)"
-}
-convert_images() {
-    image_cache="$1"
-    pdf_name="$2"
-    output_dir="$3"
-
-    set --
-    while read -r image; do
-        dbg "setting image: $image"
-        set -- "$@" "$image"
-    done <"$image_cache"
-
-    while [ -e "$output_dir/${pdf_name}.pdf" ]; do
-        pdf_name="${pdf_name}_$(tr -dc 'A-Za-z0-9' </dev/urandom | head -c 25)"
-    done
-    dbg "using pdf_name: $pdf_name"
-    convert "$@" -compress jpeg -quality 100 "$output_dir/${pdf_name}.pdf"
-}
-
-scan() {
-    number_of_pages="$1"
-    device="$2"
-    output_directory="$(readlink -f "$3")"
-    name="$4"
-    method="$5"
-
-    [ -z "$number_of_pages" ] && die "Parameter 'number_of_pages' is not set!"
-    [ -z "$device" ] && die "Parameter 'device' is not set!"
-    [ -z "$output_directory" ] && die "Parameter 'output_directory' is not set!"
-    [ -z "$name" ] && die "Parameter 'name' is not set!"
-    [ -z "$method" ] && die "Parameter 'method' is not set!"
-
-    tiff_temp_path="$(mktmp -d)"
-    cd "$tiff_temp_path" || die "Bug"
-
-    msg "Started scanning..."
-    if [ "$method" = "Flatbed" ]; then
-        scan_flatbed "$device" "$number_of_pages"
-    else
-        scan_adf "$device" "$number_of_pages"
-    fi
-
-    msg "Creating output directory..."
-    mkdir "$output_directory"
-    cd "$output_directory" || die "Bug"
-
-    msg "Converting images to pdfs..."
-    if [ "$method" = "Flatbed" ]; then
-        process_images_flatbed "$tiff_temp_path" "$output_directory" "$name"
-    else
-        process_images_adf "$tiff_temp_path" "$output_directory" "$name"
-    fi
-}
-
-for input in "$@"; do
-    case "$input" in
-    "--help" | "-h")
-        help
-        exit 0
-        ;;
-    "--version" | "-v")
-        version
-        exit 0
-        ;;
-    esac
-done
-
-number_of_pages="1"
-unset device
-output_directory="$(pwd)/pdf"
-unset name
-method="ADF"
-
-while [ "$#" -ne 0 ]; do
-    case "$1" in
-    "--help" | "-h") ;;
-    "--version" | "-v") ;;
-    "--out-dir" | "-o")
-        shift 1
-        output_directory="$1"
-        ;;
-    "--name" | "-n")
-        shift 1
-        name="$1"
-        ;;
-    "--num-pages" | "-p")
-        shift 1
-        number_of_pages="$1"
-        ;;
-    "--device" | "-d")
-        shift 1
-        device="$1"
-        ;;
-    "--method" | "-m")
-        shift 1
-        method="$1"
-        ;;
-    *)
-        die "Command line arg $1 does not exist. See --help for a list."
-        ;;
-    esac
-    shift 1
-done
-scan "$number_of_pages" "$device" "$output_directory" "$name" "$method"
diff --git a/pkgs/sources/scripts/source/apps/fupdate.1.md b/pkgs/sources/scripts/source/apps/fupdate.1.md
deleted file mode 100644
index 710e8fb7..00000000
--- a/pkgs/sources/scripts/source/apps/fupdate.1.md
+++ /dev/null
@@ -1,70 +0,0 @@
-% FUPDATE(1) fupdate 1.0.0
-% Soispha
-% May 2023
-
-# NAME
-
-fupdate - updates your flake, while checking for common mistakes
-
-# SYNOPSIS
-
-**fupdate** list of \[*flake*|*\<some word>*|*--help*|*-h*\]
-
-# DESCRIPTION
-
-Argument can be stacked, this makes it possible to specify multiple targets to be updated in succession. See the Examples section for further details.
-
-No argument or *flake*
-: **fupdate**, when executed without arguments or with *flake*, will update your *flake.lock*, check for duplicate flake inputs, i.e., an input has an input declared, which you have also declared as input, and will run a script called *update.sh*, if you allow it.
-The allowance for the script is asked, when you run **fupdate** and the found script is not yet allowed. Furthermore, the allowance is based on the concrete sha256 hash of the script, so any changes will require another allowance.
-
-**\<some word>** as argument
-: If the executable **update-\<some word>** is reachable thought the PATH variable, than this is run. Otherwise, the program will exit.
-
-# OPTIONS
-
-**--help**, **-h**
-: Displays a help message and exit.
-
-**--version**, **-v**
-: Displays the software version and exit.
-
-# EXAMPLES
-
-**fupdate** or **fupdate flake**
-: Updates your *flake.lock*. See the Description section for further details.
-
-**fupdate sys**
-: Run the executable **update-sys**, if it exists. See the Description section for further details.
-
-**fupdate flake sys docs**
-: First updates your flake, then, if the command succeeded, runs **update-sys**, afterweich **update-docs** is run.
-
-# FILES
-
-*update.sh*
-: This is supposed to be a shell script located in your flake base directory, i.e., the directory which contains both a *flake.nix* and a *flake.lock* file.
-
-*~/.local/share/flake-update/*
-: **fupdate** will store the hashes to the allowed *update.sh* files here.
-
-# BUGS
-
-Report bugs to <https://codeberg.org/soispha/flake_update/issues>.
-
-# COPYRIGHT
-
-Copyright (C) 2023  Soispha
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <https://www.gnu.org/licenses/>.
diff --git a/pkgs/sources/scripts/source/apps/fupdate.sh b/pkgs/sources/scripts/source/apps/fupdate.sh
deleted file mode 100755
index 4322610a..00000000
--- a/pkgs/sources/scripts/source/apps/fupdate.sh
+++ /dev/null
@@ -1,197 +0,0 @@
-#! /usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-UPDATE_SCRIPT_NAME="update.sh"
-CONFIG_DIRECTORY_PATH="$HOME/.local/share/flake-update"
-
-# Both are used in version()
-# shellcheck disable=SC2034
-AUTHORS="Soispha"
-# shellcheck disable=SC2034
-YEARS="2023"
-
-UPDATE_SCRIPT_NOT_WANTED=false
-
-# Searches upward for a `UPDATE_SCRIPT_NAME` script
-# Returns a path to the script if it exists, otherwise nothing is returned
-check_for_update_script() {
-    dirname="$(search_upward_files "$UPDATE_SCRIPT_NAME")"
-    if [ "$dirname" ]; then
-        printf "%s/%s" "$dirname" "$UPDATE_SCRIPT_NAME"
-    fi
-}
-
-# Checks if a given path to the update script is allowed.
-# Takes the path as input
-# Return 0, if allowed, 1 if not.
-check_for_allowed_update_script() {
-    update_script="$1"
-    config_path="${CONFIG_DIRECTORY_PATH}${update_script}"
-    update_script_hash="$(sha256sum "$update_script")"
-    if [ -f "$config_path" ]; then
-        if [ "$(cat "$config_path")" = "$update_script_hash" ]; then
-            dbg "Recorded hash matches"
-            return 0
-        else
-            dbg "Recorded hash \'$(cat "$config_path")\' does not match real hash \'$update_script_hash\', assuming not allowed"
-            return 1
-        fi
-    else
-        dbg "Path \'$config_path\' does not exist, assuming not allowed"
-        return 1
-    fi
-}
-
-# Asks the user if they want to allow a given script.
-# Takes the path as input
-ask_to_allow_update_script() {
-    update_script="$1"
-    config_path="${CONFIG_DIRECTORY_PATH}${update_script}"
-    update_script_hash="$(sha256sum "$update_script")"
-    println "\033[2J" # clear the screen
-    cat "$update_script"
-    readp "Do you want to allow this script?[N/y]: " allow
-    # shellcheck disable=SC2154
-    dbg "allow is: $allow"
-    case "$allow" in
-    [yY])
-        dbg "allowed script"
-        dbg "storing contents in: $config_path"
-        mkdir --parents "$(dirname "$config_path")"
-        print "$update_script_hash" >"$config_path"
-        ;;
-    *)
-        UPDATE_SCRIPT_NOT_ALLOWED=true
-        ;;
-    esac
-}
-
-# Runs the provided script and continues to update the nix flake
-# Takes the path to the script and the directory to the flake as arguments
-# If the path to the update script is empty, it will be ignored
-update() {
-    update_script="$1"
-    flake_base_dir="$2"
-    shift 2
-    dbg "Provided following args to update script: '$*'"
-
-    cd "$flake_base_dir" || die "Provided dir \'$flake_base_dir\' can not be accessed"
-    dbg "changed directory to: $flake_base_dir"
-
-    nix flake update
-
-    if ! [ "$update_script" = "" ] && ! [ "$UPDATE_SCRIPT_NOT_WANTED" = "true" ]; then
-        "$update_script" "$@"
-    fi
-
-    if grep '[^0-9]_[0-9]' flake.lock >/dev/null; then
-        batgrep '[^0-9]_[0-9]' flake.lock
-        die "Your flake.nix contains duplicate inputs!"
-    fi
-}
-
-help() {
-    cat <<EOF
-This is a Nix flake update manager.
-
-USAGE:
-    $NAME [--help | --version] [flake [--no-script] | <some other command>]
-
-OPTIONS:
-    --help   | -h
-                            Display this help and exit.
-
-    --version   | -v
-                            Display version and copyright information and exit.
-
-    --no-script
-                            Avoid running the 'update.sh' script
-COMMANDS:
-    flake
-                            update the flake project
-
-    <some other command>
-                            runs a executable called "update-<some other command>", if it exists
-EOF
-}
-
-main() {
-    if ! [ "$UPDATE_SCRIPT_NOT_ALLOWED" = true ]; then
-        update_script="$(check_for_update_script)"
-        flake_base_dir="$(search_flake_base_dir)" # Assume, that the update script is in the base dir
-        dbg "update_script is: $update_script"
-        dbg "flake_base_dir is: $flake_base_dir"
-
-        if [ "$update_script" = "" ]; then
-            update "" "$flake_base_dir" "$@"
-        elif check_for_allowed_update_script "$update_script" && ! [ "$update_script" = "" ]; then
-            update "$update_script" "$flake_base_dir" "$@"
-        else
-            ask_to_allow_update_script "$update_script"
-            main "$@"
-        fi
-    fi
-}
-
-if [ "$#" -eq 0 ]; then
-    main
-    exit 0
-fi
-
-for input in "$@"; do
-    case "$input" in
-    "--help" | "-h")
-        help
-        exit 0
-        ;;
-    "--version" | "-v")
-        version
-        exit 0
-        ;;
-    "--no-script" | "-n")
-        UPDATE_SCRIPT_NOT_WANTED=true
-        ;;
-    "--")
-        end_of_cli_options=true
-
-        # Stop processing args after that marker.
-        break
-        ;;
-    esac
-    [ "$end_of_cli_options" = "true" ] && break
-done
-
-case "$1" in
-"flake")
-    shift 1
-
-    # Filter out fupdate specific flags
-    while [ "$1" != "--" ]; do
-        # FIXME: This check allows to add a flag multiple times, but this should probably
-        # not be allowed <2024-03-29>
-        case "$1" in
-        "--no-script" | "-n")
-            shift 1
-            ;;
-        *)
-            break
-            ;;
-        esac
-    done
-
-    [ "$1" = "--" ] && shift 1
-    main "$@"
-    ;;
-*)
-    command="$1"
-    shift 1
-    [ "$1" = "--" ] && shift 1
-    if which update-"$command" >/dev/null 2>&1; then
-        update-"$command" "$@"
-    else
-        die "command \"update-$command\" is not executable, or does not exist"
-    fi
-    ;;
-esac
diff --git a/pkgs/sources/scripts/source/apps/git-edit-index.sh b/pkgs/sources/scripts/source/apps/git-edit-index.sh
deleted file mode 100755
index e73dc53c..00000000
--- a/pkgs/sources/scripts/source/apps/git-edit-index.sh
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-# needed for help() and version
-# shellcheck disable=2034
-AUTHORS="Soispha"
-# shellcheck disable=2034
-YEARS="2024"
-# shellcheck disable=2034
-VERSION="1.0.0"
-
-# NAME is from the wrapper
-# shellcheck disable=SC2269
-NAME="$NAME"
-
-help() {
-    cat <<EOF
-Edit a file from the index. This script does not touch the unstaged variant of the file.
-
-USAGE:
-    $NAME [OPTIONS] [--] FILES..
-
-OPTIONS:
-    --
-                            Stop parsing options and interpret everything as an file.
-
-    --help | -h
-                            Display this help and exit.
-
-    --version | -v
-                            Display version and copyright information and exit.
-ARGUMENTS:
-    FILES := [[ git diff --name-only --cached --diff-filter=AM ]]
-                            The files to edit.
-
-EOF
-}
-
-GIT_DIR="$(git rev-parse --show-toplevel)"
-materialize_file() {
-    git diff --cached "$1" >"$GIT_DIR/.git/EDIT_INDEX_PATCH"
-
-    git add "$1"
-    git restore --staged "$1"
-    cat "$1" >"$GIT_DIR/.git/EDIT_INDEX_FILE"
-    git restore "$1"
-
-    git apply "$GIT_DIR/.git/EDIT_INDEX_PATCH"
-    "$EDITOR" "$1"
-
-    git add "$1"
-    mv "$GIT_DIR/.git/EDIT_INDEX_FILE" "$1"
-}
-
-edit() {
-    files_to_add="$(mktmp)"
-    realpath --relative-to=. "$@" >"$files_to_add"
-
-    index_files="$(mktmp)"
-    git diff --name-only --cached --diff-filter=AM >"$index_files"
-
-    while read -r file; do
-        if grep -q "$file" "$files_to_add"; then
-            sed -i "s|$file||" "$files_to_add"
-            materialize_file "$file"
-        fi
-    done <"$index_files"
-
-    files_to_check="$(mktmp)"
-    clean "$files_to_add" >"$files_to_check"
-    if [ "$(wc -l <"$files_to_check")" -gt 0 ]; then
-        warn "Could not edit every file:"
-        cat "$files_to_add"
-    fi
-}
-
-for arg in "$@"; do
-    case "$arg" in
-    "--help" | "-h")
-        help
-        exit 0
-        ;;
-    "--version" | "-v")
-        version
-        exit 0
-        ;;
-    "--")
-        end_of_cli_options=true
-        ;;
-    esac
-    [ "$end_of_cli_options" = "true" ] && break
-done
-
-edit "$@"
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/small_functions/brightness.sh b/pkgs/sources/scripts/source/small_functions/brightness.sh
deleted file mode 100755
index a7272279..00000000
--- a/pkgs/sources/scripts/source/small_functions/brightness.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-help() {
-    cat <<EOF
-This is a system brightness manager
-
-USAGE:
-    $NAME up [VALUE] | down [VALUE]
-
-OPTIONS:
-    --help   | -h
-                                Output this help and exit.
-
-    --version   | -v
-                                Output the version and exit.
-
-COMMANDS:
-    up [VALUE]
-                                Increase the brightness by VALUE or 5%.
-
-    down [VALUE]
-                                Decrease the brightness by VALUE or 5%.
-
-ARGUMENTS:
-    VALUE := [[seq 0 100]]
-                                The amount to increase/decrease the brightness. In percentage
-EOF
-}
-
-BACKLIGHT="/sys/class/%BACKLIGHT_NAME"
-
-brightness() {
-    offset="$1"
-
-    max="$(cat $BACKLIGHT/max_brightness)"
-    cur="$(cat $BACKLIGHT/brightness)"
-    percentage="$(echo | awk --assign=cur="$cur" --assign=max="$max" '{printf cur / max}')"
-
-    new="$(echo | awk --assign=per="$percentage" --assign=offset="$offset" '{printf per + (offset / 10)}')"
-
-    output="$(echo | awk --assign=new="$new" --assign=max="$max" '{printf max * new}')"
-
-    msg "echo \"$output\" > $BACKLIGHT/brightness"
-}
-
-for arg in "$@"; do
-    case "$arg" in
-    "--help" | "-h")
-        help
-        exit 0
-        ;;
-    "--version" | "-v")
-        version
-        exit 0
-        ;;
-    esac
-done
-
-case "$1" in
-"up")
-    shift 1
-    value="5"
-    [ -n "$1" ] && value="$1"
-    brightness "+$value"
-    ;;
-"down")
-    shift 1
-    value="-5"
-    [ -n "$1" ] && value="$1"
-    brightness "-$value"
-    ;;
-*)
-    die "The command '$1' does not exist! See '--help' for a list"
-    ;;
-esac
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/small_functions/nato.py b/pkgs/sources/scripts/source/small_functions/nato.py
deleted file mode 100755
index e9d15f56..00000000
--- a/pkgs/sources/scripts/source/small_functions/nato.py
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/usr/bin/env python3
-# originally from here: https://cgit.pacien.net/desktop-utilities/
-
-import sys
-
-alphabet = {
-    "nato": {
-        "A": "Alfa",  # No idea why this is not just 'Alpha' ..
-        "B": "Bravo",
-        "C": "Charlie",
-        "D": "Delta",
-        "E": "Echo",
-        "F": "Foxtrot",
-        "G": "Golf",
-        "H": "Hotel",
-        "I": "India",
-        "J": "Juliett",
-        "K": "Kilo",
-        "L": "Lima",
-        "M": "Mike",
-        "N": "November",
-        "O": "Oscar",
-        "P": "Papa",
-        "Q": "Quebec",
-        "R": "Romeo",
-        "S": "Sierra",
-        "T": "Tango",
-        "U": "Uniform",
-        "V": "Victor",
-        "W": "Whiskey",
-        "X": "X-ray",
-        "Y": "Yankee",
-        "Z": "Zulu",
-        "0": "Nadazero",
-        "1": "Unaone",
-        "2": "Bissotwo",
-        "3": "Terrathree",
-        "4": "Kartefour",
-        "5": "Pantafive",
-        "6": "Soxisix",
-        "7": "Setteseven",
-        "8": "Oktoeight",
-        "9": "Novenine",
-        ",": "Comma",
-        "/": "Forward slash",
-        ".": "Stop/Decimal",
-    },
-    "german": {
-        "A": "Aachen",
-        "Ä": "Umlaut Aachen",
-        "B": "Berlin",
-        "C": "Chemnitz",
-        "D": "Düsseldorf",
-        "E": "Essen",
-        "F": "Frankfurt",
-        "G": "Goslar",
-        "H": "Hamburg",
-        "I": "Ingelheim",
-        "J": "Jena",
-        "K": "Köln",
-        "L": "Leipzig",
-        "M": "München",
-        "N": "Nürnberg",
-        "O": "Offenbach",
-        "Ö": "Umlaut Offenbach",
-        "P": "Potsdam",
-        "Q": "Quickborn",
-        "R": "Rostock",
-        "S": "Salzwedel",
-        "ẞ": "Eszett",
-        "T": "Tübingen",
-        "U": "Unna",
-        "Ü": "Umlaut Unna",
-        "V": "Völklingen",
-        "W": "Wuppertal",
-        "X": "Xanten",
-        "Y": "Ypsilon",
-        "Z": "Zwickau",
-    },
-}
-
-
-def str_to_telephony(phrase, language):
-    language_alphabet = alphabet[language]
-
-    return [
-        language_alphabet[c] if c in language_alphabet else c for c in phrase.upper()
-    ]
-
-
-language = sys.argv[1]
-if language not in ["nato", "german"]:
-    print(
-        f"Langugae '{language}' is not a valid language, only 'nato' and 'german' are!",
-        file=sys.stderr,
-    )
-    exit(1)
-
-print(
-    "\n".join(
-        str_to_telephony(
-            " ".join(sys.argv[2:]),
-            language,
-        )
-    )
-)
diff --git a/pkgs/sources/scripts/source/small_functions/screenshot_persistent.sh b/pkgs/sources/scripts/source/small_functions/screenshot_persistent.sh
deleted file mode 100755
index 4308b8d2..00000000
--- a/pkgs/sources/scripts/source/small_functions/screenshot_persistent.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#! /usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-# only generate a path (this could lead to a time-of-check/time-of-use bug)
-tmp="$(mktmp --dry-run)"
-
-if grim -g "$(slurp)" "$tmp"; then
-    name="$(rofi -dmenu -p "Name of screenshot: " -l 0)"
-    screen_shot_path="$HOME/media/pictures/screenshots/$name.png"
-    while [ -f "$screen_shot_path" ]; do
-        notify-send "Warning" 'Screenshot name already in use!'
-        name="$(rofi -dmenu -p "New name of screenshot: " -l 0)"
-        screen_shot_path="$HOME/media/pictures/screenshots/$name.png"
-    done
-
-    mv "$tmp" "$screen_shot_path"
-    alacritty -e lf -command ":{{ set sortby atime; set reverse!; }}"
-fi
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/small_functions/screenshot_temporary.sh b/pkgs/sources/scripts/source/small_functions/screenshot_temporary.sh
deleted file mode 100755
index 8968ca79..00000000
--- a/pkgs/sources/scripts/source/small_functions/screenshot_temporary.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#! /usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-grim -g "$(slurp)" | wl-copy
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/small_functions/update-sys.sh b/pkgs/sources/scripts/source/small_functions/update-sys.sh
deleted file mode 100755
index d28247f6..00000000
--- a/pkgs/sources/scripts/source/small_functions/update-sys.sh
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-help() {
-    cat <<EOF
-This is a NixOS System flake update manager.
-
-USAGE:
-    $NAME [--branch <branchname>] [--help]
-
-OPTIONS:
-    --branch | -b  BRANCHNAME
-                                select a branch to update from.
-
-    --mode   | -m  MODE
-                                select a mode to update with
-
-    --help   | -h
-                                output this help.
-ARGUMENTS:
-    BRANCHNAME := [[ git branch --list --format '%(refname:short)' ]]
-                                The name of the branch to deploy the config from
-
-    MODE := switch|boot|test|build|dry-build|dry-activate|edit|repl|build-vm|build-vm-with-bootloader
-                                See the 'nixos-rebuild' manpage for more information about these modes.
-EOF
-    exit "$1"
-}
-default_branch=$(mktmp)
-BRANCH=""
-
-while [ "$#" -gt 0 ]; do
-    case "$1" in
-    "--help" | "-h")
-        help 0
-        ;;
-    "--branch" | "-b")
-        if [ -n "$2" ]; then
-            BRANCH="$2"
-        else
-            error "$1 requires an argument"
-            help 1
-        fi
-        shift 2
-        ;;
-    "--mode" | "-m")
-        if [ -n "$2" ]; then
-            MODE="$2"
-        else
-            error "$1 requires an argument"
-            help 1
-        fi
-        shift 2
-        ;;
-    *)
-        error "the option $1 does not exist!"
-        help 1
-        ;;
-    esac
-done
-
-cd /etc/nixos || die "No /etc/nixos"
-msg "Starting system update..."
-git remote update origin --prune >/dev/null 2>&1
-if ! [ "$BRANCH" = "" ]; then
-    git switch "$BRANCH" >/dev/null 2>&1 && msg2 "Switched to branch '$BRANCH'"
-fi
-msg2 "Updating git repository..."
-git pull --rebase
-
-git remote show origin | grep 'HEAD' | cut -d':' -f2 | sed -e 's/^ *//g' -e 's/ *$//g' >"$default_branch" &
-
-msg2 "Updating system..."
-if [ -n "$MODE" ]; then
-    nixos-rebuild "$MODE"
-else
-    nixos-rebuild switch
-fi
-
-git switch "$(cat "$default_branch")" >/dev/null 2>&1 && msg2 "Switched to branch '$(cat "$default_branch")'"
-msg "Finished Update!"
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/specific/neorg/neorg_id_function.sh b/pkgs/sources/scripts/source/specific/neorg/neorg_id_function.sh
deleted file mode 100755
index 865ecacf..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/neorg_id_function.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#! /usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-context="$(task _get rc.context)"
-if [ "$context" ]; then
-    filter="project:$context"
-else
-    filter="0-10000"
-fi
-tasks="$(task "$filter" _ids)"
-
-if [ "$tasks" ]; then
-    echo "$tasks" | xargs task _zshids | awk -F: -v q="'" '{gsub(/'\''/, q "\\" q q ); print $1 ":" q $2 q}'
-fi
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/add.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/add.sh
deleted file mode 100755
index 5a830a10..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/add.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env dash
-
-add0open_taskwarrior_project_file() {
-    task_project_file="%TASK_PROJECT_FILE"
-
-    cd "$(dirname $task_project_file)" || die "BUG: task_project_file ('$task_project_file') can't be accessed"
-
-    git_dir="$(search_flake_base_dir)"
-    [ "$git_dir" ] || die "(BUG): No git directory?"
-    cd "$git_dir" || die "Unreachable, this MUST exists"
-
-    nvim "$task_project_file"
-    git add "$task_project_file"
-
-    base_task_project_file_path="$(awk "{ gsub(\"$git_dir/\", \"\", \$0); print }" "$(ptmp "$task_project_file")")"
-    git add $task_project_file
-
-    # Check that only the project file has been added (and that our file is actually
-    # modified)
-    if git status --porcelain=v2 | awk -v path="$base_task_project_file_path" 'BEGIN { hit = 0 } { if ($2 ~ /A./ || $2 ~ /M./) { if ($NF ~ path) { hit = 1 } else { hit = 0; exit 1 } } } END { if (hit == 1) { exit 0 } else { exit 1 } }'; then
-        git commit --verbose --message="chore($(dirname "$base_task_project_file_path")): Update"
-    fi
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/context.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/context.sh
deleted file mode 100755
index 7095847d..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/context.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env dash
-
-context0open_current_task_context() {
-    current_context="$(utils0get_current_context)"
-
-    if [ "$current_context" ]; then
-        context_path="$(utils0get_current_context_path "$current_context")"
-
-        extended_neorg_project_dir="$(utils0get_neorg_project_dir)"
-        cd "$extended_neorg_project_dir" || die "(BUG?): Can not access the project dir: $extended_neorg_project_dir"
-
-        nvim "$extended_neorg_project_dir/$context_path"
-
-        git add .
-        git commit --message="chore($(dirname "$context_path")): Update" --no-gpg-sign
-    else
-        warn "No context active"
-    fi
-}
-
-context0open_current_task_context_at_task_id() {
-    task_id="$1"
-    current_context="$(utils0get_current_context)"
-
-    if [ "$current_context" ]; then
-        context_path="$(utils0get_current_context_path "$current_context")"
-        extended_neorg_project_dir="$(utils0get_neorg_project_dir)"
-        task_uuid="$(task "$task_id" uuids)"
-
-        cd "$extended_neorg_project_dir" || die "(BUG?): Can not access the project dir: $extended_neorg_project_dir"
-
-        if ! grep -q "% $task_uuid" "$extended_neorg_project_dir/$context_path"; then
-            echo "* TITLE (% $task_uuid)" >>"$extended_neorg_project_dir/$context_path"
-        fi
-
-        nvim "$extended_neorg_project_dir/$context_path" -c "/% $task_uuid"
-
-        git add .
-        git commit --message="chore($(dirname "$context_path")): Update" --no-gpg-sign
-    else
-        warn "No context active"
-    fi
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/dmenu.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/dmenu.sh
deleted file mode 100755
index 5a138982..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/dmenu.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env dash
-
-dmenu0open_context_in_browser() {
-    project="$(echo "%ALL_PROJECTS_PIPE" | rofi -sep "|" -dmenu)"
-
-    if [ "$project" ]; then
-        [ -d "%NEORG_REVIEW_PATH" ] || mkdir --parents "%NEORG_REVIEW_PATH"
-        [ -f "%NEORG_REVIEW_PATH/$project.lock" ] || touch "%NEORG_REVIEW_PATH/$project.lock"
-        project0open_project_in_browser "$project"
-    else
-        notify-send "(neorg/dmenu) No project selected"
-        exit 1
-    fi
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/f_start.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/f_start.sh
deleted file mode 100755
index 2423dd44..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/f_start.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env dash
-
-fstart0start_new_task() {
-    task_id="$1"
-    fstop0stop_current_task
-    task start "$task_id"
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/f_stop.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/f_stop.sh
deleted file mode 100755
index e4ff0b94..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/f_stop.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env dash
-
-fstop0stop_current_task() {
-    # we ensured that only one task may be active
-    active="$(task +ACTIVE _ids)"
-    [ "$active" ] && task stop "$active"
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/list.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/list.sh
deleted file mode 100755
index 10659457..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/list.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env dash
-
-list0list_all_contexts_newline() {
-    print "%ALL_PROJECTS_NEWLINE"
-}
-list0list_all_contexts_comma() {
-    print "%ALL_PROJECTS_COMMA"
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/project.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/project.sh
deleted file mode 100755
index 64591850..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/project.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env dash
-
-project0open_current_context_in_browser() {
-    current_context="$(utils0get_current_context)"
-    [ "$current_context" ] || die "No current context to use"
-    project0open_context_in_browser "$(utils0context2project "$current_context")"
-}
-
-project0open_project_in_browser() {
-    project="$1"
-    [ "$project" ] || die "BUG: No context supplied to project0open_context_in_browser"
-
-    old_context="$(utils0get_current_context)"
-    # We have ensured that only one task may be active
-    old_started_task="$(task +ACTIVE _ids)"
-
-    tracking="$(mktmp)"
-    task "project:$project" _ids | xargs --no-run-if-empty task _zshids >"$tracking"
-    task context "$(utils0project2context "$project")"
-
-    while read -r description; do
-        desc="$(echo "$description" | awk -F: '{print $2}')"
-        if [ "$desc" = "tracking" ]; then
-            task_id="$(echo "$description" | awk -F: '{print $1}')"
-            notify-send "(Neorg)" "Starting task $project -> $desc"
-            task start "$task_id"
-            break
-        fi
-    done <"$tracking"
-
-    firefox -P "$project"
-
-    task stop "$task_id"
-    [ "$old_started_task" ] && task start "$old_started_task"
-
-    if [ "$old_context" ]; then
-        task context "$old_context"
-    else
-        task context none
-    fi
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/review.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/review.sh
deleted file mode 100755
index a0a9ab8d..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/review.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env dash
-
-review0start() {
-    for project in $(list0list_all_contexts_newline); do
-        if [ -f "%NEORG_REVIEW_PATH/$project.lock" ]; then
-            msg "Reviewing '$project'"
-            notify-send "Neorg" "Reviewing '$project'"
-            firefox -P "$project"
-            rm "%NEORG_REVIEW_PATH/$project.lock"
-        fi
-    done
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/utils.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/utils.sh
deleted file mode 100755
index c3843e8e..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/utils.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env dash
-
-# Runs it's first argument and then the second, regardless if the first failed or
-# succeeded
-utils0chain() {
-    eval "$1"
-    eval "$2"
-}
-
-utils0get_current_context() {
-    current_context="$(task _get rc.context)"
-    printf "%s\n" "$current_context"
-}
-
-utils0get_current_context_path() {
-    current_context="$1"
-    context_path="$(task _get rc.context."$current_context".rc.neorg_path 2>/dev/null)"
-    if ! [ "$context_path" ]; then
-        context_path="$(grep "context.$current_context.rc.neorg_path" "%HOME_TASKRC" | awk 'BEGIN {FS="="} {print $2}')"
-        [ "$context_path" ] || die "All contexts should have a 'neorg_path' set!"
-    fi
-    printf "%s\n" "$context_path"
-}
-
-utils0get_neorg_project_dir() {
-    # Perform shell expansion of Tilde
-    neorg_project_dir="$(sed "s|^~|$HOME|" "$(ptmp "%DEFAULT_NEORG_PROJECT_DIR")")"
-    printf "%s\n" "$neorg_project_dir"
-}
-
-utils0project2context() {
-    project="$1"
-    context="$(sed 's|\.|_|g' "$(ptmp "$project")")"
-    printf "%s\n" "$context"
-}
-utils0context2project() {
-    context="$1"
-    project="$(sed 's|_|\.|g' "$(ptmp "$context")")"
-    printf "%s\n" "$project"
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/functions/workspace.sh b/pkgs/sources/scripts/source/specific/neorg/sh/functions/workspace.sh
deleted file mode 100755
index d5eb2fca..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/functions/workspace.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env dash
-
-workspace0open_neorg_workspace() {
-    workspace="$1"
-    nvim -c "NeorgStart" -s "$(ptmp ":Neorg workspace $workspace\n")"
-}
-workspace0open_neorg_workspace_prompt() {
-    nvim -c "NeorgStart" -s "$(ptmp ":Neorg workspace ")"
-}
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/main.sh b/pkgs/sources/scripts/source/specific/neorg/sh/main.sh
deleted file mode 100755
index 559351b9..00000000
--- a/pkgs/sources/scripts/source/specific/neorg/sh/main.sh
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-# load dependencies
-. ./functions/add.sh
-. ./functions/context.sh
-. ./functions/dmenu.sh
-. ./functions/f_start.sh
-. ./functions/f_stop.sh
-. ./functions/list.sh
-. ./functions/project.sh
-. ./functions/utils.sh
-. ./functions/workspace.sh
-. ./functions/review.sh
-
-# these are used in version()
-# shellcheck disable=2034
-AUTHORS="Soispha"
-# shellcheck disable=2034
-YEARS="2023"
-
-NAME="neorg"
-
-help() {
-    cat <<EOF
-This is the core interface to the system-integrated task management
-
-USAGE:
-    $NAME [OPTIONS] [COMMAND]
-
-OPTIONS:
-    --help      | -h
-                            Display this help and exit.
-
-    --version   | -v
-                            Display version and copyright information and exit.
-COMMANDS:
-    task [ID]
-                            Open the neorg context associated with the current context and
-                            the uuid of the task with id ID. Without ID, it'll open the
-                            current context's norg file.
-                            If no context is set, drops you to the selection prompt
-
-    dmenu
-                            Select a project in dmenu mode. This will give you all projects
-                            and exectute the selected one as in 'neorg projects <selected>'
-
-    workspace [WS]
-                            The neorg workspace (WS) to open at startup, an empty value drops
-                            you at a prompt to enter the workspace yourself.
-
-    project [P]
-                            Opens the webbrowser with either the context (P) or
-                            the current active context as argument if no context is supplied
-
-    list
-                            Lists all available contexts
-
-    add
-                            Allows you to quickly add projects
-
-    fstart ID
-                            Starts the task (ID) but only after it stooped
-                            the previous active task, if it existed.
-
-    fstop
-                            Stops the current active task
-
-    review
-                            Review all firefox tabs
-ARGUMENTS:
-    ID | *([0-9]) := [[%ID_GENERATION_FUNCTION]]
-                            The function displays all possible IDs of the eligable tasks.
-
-    WS := %ALL_WORKSPACES
-                            All possible workspaces
-
-    P := %ALL_PROJECTS_PIPE
-                            The possible project
-
-EOF
-}
-
-for arg in "$@"; do
-    case "$arg" in
-    "--help" | "-h")
-        help
-        exit 0
-        ;;
-    "--version" | "-v")
-        version
-        exit 0
-        ;;
-    esac
-done
-
-while [ "$#" -ne 0 ]; do
-    case "$1" in
-    "t"*) # task
-        shift 1
-        task_id="$1"
-        [ "$task_id" ] || utils0chain context0open_current_task_context "exit 0"
-        context0open_current_task_context_at_task_id "$task_id"
-        exit 0
-        ;;
-    "w"*) # workspace
-        shift 1
-        workspace_to_open="$1"
-        # TODO: Exit with 1 on error, instead of the 0 <2023-10-20>
-        [ "$workspace_to_open" ] || utils0chain workspace0open_neorg_workspace_prompt "exit 0"
-        workspace0open_neorg_workspace "$workspace_to_open"
-        exit 0
-        ;;
-    "p"*) # project
-        shift 1
-        project_to_open="$1"
-        # TODO: Exit with 1 on error, instead of the 0 <2023-10-20>
-        [ "$project_to_open" ] || utils0chain project0open_current_context_in_browser "exit 0"
-        if ! grep -q "$project_to_open" "$(ptmp "%ALL_PROJECTS_NEWLINE")"; then
-            die "Your project ('$project_to_open') is not in the list of available projects:
-%ALL_PROJECTS_COMMA"
-        fi
-        project0open_project_in_browser "$project_to_open"
-        exit 0
-        ;;
-    "l"*) # list
-        list0list_all_contexts_newline
-        exit 0
-        ;;
-    "a"*) # add-project
-        add0open_taskwarrior_project_file
-        exit 0
-        ;;
-    "d"*) # dmenu
-        dmenu0open_context_in_browser
-        exit 0
-        ;;
-    "fsta"*) # fstart
-        shift 1
-        task_id="$1"
-        [ "$task_id" ] || die "No task id provided to fstart"
-        fstart0start_new_task "$task_id"
-        exit 0
-        ;;
-    "fsto"*) # fstop
-        fstop0stop_current_task
-        exit 0
-        ;;
-    "r"*) # review
-        shift 1
-        review0start
-        exit 0
-        ;;
-    *)
-        die "Command '$1' does not exist! Please look at:\n $NAME --help"
-        exit 0
-        ;;
-    esac
-done
-
-context0open_current_task_context
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/specific/spodi/sh/download.sh b/pkgs/sources/scripts/source/specific/spodi/sh/download.sh
deleted file mode 100755
index fe9746c8..00000000
--- a/pkgs/sources/scripts/source/specific/spodi/sh/download.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env dash
-
-download_to_down() {
-    DOWNLOAD_DIRECTORY="%XDG_MUSIC_DIR/down/spotify"
-
-    already_downloaded_files="$(mktmp)"
-    fd . "$DOWNLOAD_DIRECTORY" --exclude spotdl.log --exclude spotdl-errors.log >"$already_downloaded_files"
-    if [ -z "$NO_CHECK" ] && [ "$(wc -l <"$already_downloaded_files")" -ne 0 ]; then
-        die "something is already downloaded"
-    fi
-    # [ -e "$DOWNLOAD_DIRECTORY/spotdl.log" ] && rm "$DOWNLOAD_DIRECTORY/spotdl.log"
-
-    download "$1" "$DOWNLOAD_DIRECTORY"
-}
-
-download() {
-    download_url="$1"
-    output_path="$2"
-
-    config="$(mktmp)"
-    cat <<EOF | clean >"$config"
-# Main options
---audio slider-kz bandcamp youtube-music piped youtube soundcloud
---lyrics genius musixmatch azlyrics synced
-
-# FFmpeg options
---ffmpeg ffmpeg
---threads 16
---bitrate 256k
-
-# Spotify options
---cache-path %XDG_CACHE_HOME/spotdl/.spotipy
-
-# Output options
---preload
---format opus
---output {artists}_-_{title}
---print-errors
---save-errors $output_path/spotdl-errors.log
-# TODO: Reactive whence spotdl support for these has improved <2023-12-19>
-# --generate-lrc
---overwrite skip
-
-# Misc options
---log-level INFO
-EOF
-
-    cd "$output_path" || die "BUG: no $output_path"
-    touch "$output_path/spotdl-errors.log"
-
-    # The sub shell needs to be unquoted, as the arguments may not be treated as one.
-    # shellcheck disable=2046
-    unbuffer spotdl $(cat "$config") download "$download_url" | tee "$output_path/spotdl.log"
-
-    [ -d ~/.spotdl ] && rm -r ~/.spotdl
-}
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/specific/spodi/sh/update.sh b/pkgs/sources/scripts/source/specific/spodi/sh/update.sh
deleted file mode 100755
index a289cf58..00000000
--- a/pkgs/sources/scripts/source/specific/spodi/sh/update.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env dash
-
-update() {
-    UPDATE_DIRECTORY="%XDG_MUSIC_DIR/artists"
-    UPDATE_CONFIG_FILE="%XDG_MUSIC_DIR/artists/update.conf"
-
-    if ! [ -f "$UPDATE_CONFIG_FILE" ]; then
-        error="$(
-            cat <<EOF
-Please provide an update config file at: '$UPDATE_CONFIG_FILE'.
-
-The 'update.conf' file should follow this pattern:
-<path_to_artist>/<artist_name>|<spotify_url>
-
-All comments and empty lines are ignored
-EOF
-        )"
-        die "$error"
-    fi
-
-    config_file="$(mktmp)"
-    clean "$UPDATE_CONFIG_FILE" >"$config_file"
-
-    while IFS="|" read -r artist url; do
-        full_artist="$UPDATE_DIRECTORY/$artist"
-        [ -d "$full_artist" ] || mkdir --parents "$full_artist"
-        [ -d "$full_artist/update" ] || mkdir --parents "$full_artist/update"
-        [ -d "$full_artist/all" ] || mkdir --parents "$full_artist/all"
-        [ -d "$full_artist/filtered" ] || mkdir --parents "$full_artist/filtered"
-
-        while read -r file; do
-            ln --symbolic --relative "$file" "$full_artist/update/$(basename "$file")"
-        done <"$(tmp fd --type file --extension opus . "$full_artist/all")"
-
-        msg2 "Updating $artist with url: '$url'"
-        download "$url" "$full_artist/update"
-
-        while read -r file; do
-            mv "$file" "$full_artist/all"
-            ln --symbolic --relative "$full_artist/all/$(basename "$file")" "$full_artist/filtered/$(basename "$file")"
-        done <"$(tmp fd --type file --extension opus . "$full_artist/update")"
-
-        while read -r file; do
-            rm "$file"
-        done <"$(tmp fd --type symlink --extension opus . "$full_artist/update")"
-
-        cp "$full_artist/update/spotdl.log" "$full_artist/all/spotdl.$(date +%Y_%m_%d).log"
-        cp "$full_artist/update/spotdl-errors.log" "$full_artist/all/spotdl-errors.$(date +%Y_%m_%d).log"
-    done <"$config_file"
-}
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/specific/spodi/spodi.sh b/pkgs/sources/scripts/source/specific/spodi/spodi.sh
deleted file mode 100755
index 475fd48a..00000000
--- a/pkgs/sources/scripts/source/specific/spodi/spodi.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-# these are used in version()
-# shellcheck disable=2034
-AUTHORS="Soispha"
-# shellcheck disable=2034
-YEARS="2023"
-
-# load dependencies
-. ./sh/update.sh
-. ./sh/download.sh
-
-help() {
-    cat <<EOF
-This is a small wrapper around downloading things from spotify
-
-USAGE:
-    $NAME [OPTIONS] COMMAND
-
-OPTIONS:
-    --help      | -h
-                            Display this help and exit.
-
-    --version   | -v
-                            Display version and copyright information and exit.
-COMMANDS:
-    update
-                            Read the artist.conf file and download all newly released things
-
-    download URL
-                            Download a specific url to the DOWNLOAD_DIRECTORY
-EOF
-}
-
-for arg in "$@"; do
-    case "$arg" in
-    "--help" | "-h")
-        help
-        exit 0
-        ;;
-    "--version" | "-v")
-        version
-        exit 0
-        ;;
-    esac
-done
-
-case "$1" in
-"update")
-    shift 1
-    update
-    exit 0
-    ;;
-"download")
-    shift 1
-    download_url="$1"
-    [ -z "$download_url" ] && die "You need to provide a download url"
-    download_to_down "$download_url"
-    exit 0
-    ;;
-*)
-    die "Command '$1' is not know"
-    help
-    exit 1
-    ;;
-esac
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/specific/ytcc/description.sh b/pkgs/sources/scripts/source/specific/ytcc/description.sh
deleted file mode 100755
index ae9107b9..00000000
--- a/pkgs/sources/scripts/source/specific/ytcc/description.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-jq --raw-output '.description' "$XDG_RUNTIME_DIR/ytcc/running" | fmt -u -s | less
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/battery.sh b/pkgs/sources/scripts/source/wrappers/battery.sh
deleted file mode 100755
index e650ba5d..00000000
--- a/pkgs/sources/scripts/source/wrappers/battery.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-capacity="$(cat /sys/class/power_supply/BAT0/capacity)"
-status="$(cat /sys/class/power_supply/BAT0/status)"
-
-printf "%s%% (%s)\n" "$capacity" "$status"
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/hibernate.sh b/pkgs/sources/scripts/source/wrappers/hibernate.sh
deleted file mode 100755
index 30868fd1..00000000
--- a/pkgs/sources/scripts/source/wrappers/hibernate.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-context="$(task _get rc.context)"
-[ "$context" ] && task context none
-
-# We have ensured that only one task is active
-active="$(task +ACTIVE _ids)"
-[ "$active" ] && task stop "$active"
-
-systemctl hibernate "$@"
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/ll.sh b/pkgs/sources/scripts/source/wrappers/ll.sh
deleted file mode 100755
index f689ba44..00000000
--- a/pkgs/sources/scripts/source/wrappers/ll.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-last_directory="$(mktemp)"
-
-command lf -last-dir-path="$last_directory" "$@"
-
-dir="$(cat "$last_directory")"
-cd "$dir" || die "$dir does not exist!"
-rm "$last_directory"
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/lock.sh b/pkgs/sources/scripts/source/wrappers/lock.sh
deleted file mode 100755
index 3101ef9a..00000000
--- a/pkgs/sources/scripts/source/wrappers/lock.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-context="$(task _get rc.context)"
-[ "$context" ] && task context none
-
-# We have ensured that only one task is active
-active="$(task +ACTIVE _ids)"
-[ "$active" ] && task stop "$active"
-
-swaylock
-
-[ "$active" ] && task start "$active"
-
-[ "$context" ] && task context "$context"
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/lyrics.sh b/pkgs/sources/scripts/source/wrappers/lyrics.sh
deleted file mode 100755
index 02a147c8..00000000
--- a/pkgs/sources/scripts/source/wrappers/lyrics.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-(
-    cd "$XDG_MUSIC_DIR" || die "No music dir!"
-    exiftool "$(mpc --format '%file%' current)" -json | jq '.[0].Lyrics' -r | less
-)
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/mpc-fav.sh b/pkgs/sources/scripts/source/wrappers/mpc-fav.sh
deleted file mode 100755
index 795a4875..00000000
--- a/pkgs/sources/scripts/source/wrappers/mpc-fav.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-FAV_DIR="$XDG_MUSIC_DIR/playlists/favourites"
-
-cd "$XDG_MUSIC_DIR" || die "No music dir!"
-
-[ -d "$FAV_DIR" ] || mkdir --parents "$FAV_DIR"
-
-ln -sr "$(mpc --format '%file%' current)" "$FAV_DIR/" || die "Link failed!"
-
-mpc update
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/mpc-rm.sh b/pkgs/sources/scripts/source/wrappers/mpc-rm.sh
deleted file mode 100755
index 94e0634b..00000000
--- a/pkgs/sources/scripts/source/wrappers/mpc-rm.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-cd "$XDG_MUSIC_DIR" || die "No music dir!"
-trash-put "$(mpc --format '%file%' current)"
-mpc del 0
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/mpc.sh b/pkgs/sources/scripts/source/wrappers/mpc.sh
deleted file mode 100755
index 5aae5cdb..00000000
--- a/pkgs/sources/scripts/source/wrappers/mpc.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-case "$1" in
-"rm")
-    shift 1
-    mpc-rm "$@"
-    ;;
-"fav")
-    shift 1
-    mpc-fav "$@"
-    ;;
-*)
-    mpc "$@"
-    ;;
-esac
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/show.sh b/pkgs/sources/scripts/source/wrappers/show.sh
deleted file mode 100755
index ae2bdb13..00000000
--- a/pkgs/sources/scripts/source/wrappers/show.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-# Maybe add `--quit-if-one-screen`
-less --redraw-on-quit "$@"
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/sort_song.sh b/pkgs/sources/scripts/source/wrappers/sort_song.sh
deleted file mode 100755
index e2978507..00000000
--- a/pkgs/sources/scripts/source/wrappers/sort_song.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-case "$("$1" | tr '[:upper:]' '[:lower:]')" in
-"lyrics")
-    filter="LYRICS"
-    directory="lyrics"
-    ;;
-"instrumental")
-    filter="INSTRUMENTAL"
-    directory="instrumental"
-    ;;
-*)
-    die "Expected 'instrumental|lyrics' but got '$1'"
-    ;;
-esac
-
-process() {
-    mediainfo --Output=JSON "$1" | jq '.media.track | map(.Lyrics) | join("")'
-}
-
-mkdir "../$directory"
-
-fd . --extension=opus | while read -r file; do
-    if [ "$(process "$file")" = '""' ] || [ "$(process "$file")" = '"Instrumental"' ] || [ "$(process "$file")" = '"instrumental"' ]; then
-        echo "INSTRUMENTAL::$file"
-    else
-        echo "LYRICS::$file"
-    fi
-done | grep "$filter" | awk 'BEGIN {FS="::"}{print $2}' | while read -r file; do ln -s "../all/$file" "../$directory/$file"; done
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/virsh-del.sh b/pkgs/sources/scripts/source/wrappers/virsh-del.sh
deleted file mode 100755
index c3de5484..00000000
--- a/pkgs/sources/scripts/source/wrappers/virsh-del.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#! /usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-virsh destroy "$1"
-virsh undefine "$1" --nvram
-virsh vol-delete --pool default "$1".qcow2
-
-# vim: ft=sh
diff --git a/pkgs/sources/scripts/source/wrappers/yti.sh b/pkgs/sources/scripts/source/wrappers/yti.sh
deleted file mode 100755
index a69ffa74..00000000
--- a/pkgs/sources/scripts/source/wrappers/yti.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-DOWN_DIR=/home/soispha/media/music/down/youtube
-
-tmp=$(mktmp)
-config=$(mktmp)
-
-for e in "$DOWN_DIR"/*.opus; do echo "$e" >>"$tmp"; done
-[ "$(wc -l "$tmp" | awk '{print $1}')" -gt 2 ] && die "something is already downloaded"
-
-cat <<EO >"$config"
---paths home:"$DOWN_DIR"
-#--output %(fulltitle)
---restrict-filenames
---no-overwrites
---no-write-info-json
---clean-info-json
---prefer-free-formats
-#--format mp3
---extract-audio
---audio-quality 0
---audio-format best
-EO
-
-rm "$DOWN_DIR/yt-dlp.log"
-cd "$DOWN_DIR" || die "BUG: no $DOWN_DIR"
-
-unbuffer yt-dlp --config-location "$config" "$1" | tee "$DOWN_DIR/yt-dlp.log"
-
-# vim: ft=sh
diff --git a/pkgs/sources/snap-sync-forked/default.nix b/pkgs/sources/snap-sync-forked/default.nix
deleted file mode 100644
index 5b086a5a..00000000
--- a/pkgs/sources/snap-sync-forked/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{sysLib}: [
-  (final: prev: {
-    snap-sync-forked = sysLib.writeShellScript {
-      name = "snap-sync-forked";
-      src = ./snap-sync-forked.sh;
-      dependencies = with prev; [
-        bash
-        btrfs-progs
-        coreutils
-        gawk
-        gnugrep
-        snapper
-        util-linux
-
-        # optional:
-        libnotify
-        openssh
-        pv
-        rsync
-        sudo
-      ];
-    };
-  })
-]
diff --git a/pkgs/sources/snap-sync-forked/snap-sync-forked.sh b/pkgs/sources/snap-sync-forked/snap-sync-forked.sh
deleted file mode 100755
index 3d9c1ac9..00000000
--- a/pkgs/sources/snap-sync-forked/snap-sync-forked.sh
+++ /dev/null
@@ -1,534 +0,0 @@
-#!/usr/bin/env bash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
-
-#
-# snap-sync
-# https://github.com/wesbarnett/snap-sync
-# Copyright (C) 2016-2021 Wes Barnett
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-
-# -------------------------------------------------------------------------
-
-# Takes snapshots of each snapper configuration. It then sends the snapshot to
-# a location on an external drive. After the initial transfer, it does
-# incremental snapshots on later calls. It's important not to delete the
-# snapshot created on your system since that will be used to determine the
-# difference for the next incremental snapshot.
-
-set -o errtrace
-
-version="0.7"
-name="snap-sync"
-
-printf "\nsnap-sync version %s, Copyright (C) 2016-2021 Wes Barnett\n" "$version"
-printf "snap-sync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the license for more information. \n\n"
-
-# The following line is modified by the Makefile or
-# find_snapper_config script
-SNAPPER_CONFIG=/etc/sysconfig/snapper
-
-donotify=0
-if ! command -v notify-send &>/dev/null; then
-    donotify=1
-fi
-
-doprogress=0
-if ! command -v pv &>/dev/null; then
-    doprogress=1
-fi
-
-error() {
-    printf "==> ERROR: %s\n" "$@"
-    notify_error 'Error' 'Check journal for more information.'
-} >&2
-
-die() {
-    error "$@"
-    exit 1
-}
-
-traperror() {
-    printf "Exited due to error on line %s.\n" "$1"
-    printf "exit status: %s\n" "$2"
-    printf "command: %s\n" "$3"
-    printf "bash line: %s\n" "$4"
-    printf "function name: %s\n" "$5"
-    exit 1
-}
-
-trapkill() {
-    die "Exited due to user intervention."
-}
-
-trap 'traperror ${LINENO} $? "$BASH_COMMAND" $BASH_LINENO "${FUNCNAME[@]}"' ERR
-trap trapkill SIGTERM SIGINT
-
-usage() {
-    cat <<EOF
-$name $version
-Usage: $name [options]
-
-Options:
- -c, --config <config>    snapper configuration to backup
- -d, --description <desc> snapper description
- -h, --help               print this message
- -n, --noconfirm          do not ask for confirmation
- -k, --keepold            keep old incremental snapshots instead of deleting them
-                          after backup is performed
- -p, --port <port>        remote port; used with '--remote'.
- -q, --quiet              do not send notifications; instead print them.
- -r, --remote <address>   ip address of a remote machine to backup to
- --sudo                   use sudo on the remote machine
- -s, --subvolid <subvlid> subvolume id of the mounted BTRFS subvolume to back up to
- -u, --UUID <UUID>        UUID of the mounted BTRFS subvolume to back up to
-
-See 'man snap-sync' for more details.
-EOF
-}
-
-ssh=""
-sudo=0
-while [[ $# -gt 0 ]]; do
-    key="$1"
-    case $key in
-    -d | --description)
-        description="$2"
-        shift 2
-        ;;
-    -c | --config)
-        selected_configs="$2"
-        shift 2
-        ;;
-    -u | --UUID)
-        uuid_cmdline="$2"
-        shift 2
-        ;;
-    -s | --subvolid)
-        subvolid_cmdline="$2"
-        shift 2
-        ;;
-    -k | --keepold)
-        keep="yes"
-        shift
-        ;;
-    -n | --noconfirm)
-        noconfirm="yes"
-        shift
-        ;;
-    -h | --help)
-        usage
-        exit 1
-        ;;
-    -q | --quiet)
-        donotify=1
-        shift
-        ;;
-    -r | --remote)
-        remote=$2
-        shift 2
-        ;;
-    -p | --port)
-        port=$2
-        shift 2
-        ;;
-    --sudo)
-        sudo=1
-        shift
-        ;;
-    *)
-        die "Unknown option: '$key'. Run '$name -h' for valid options."
-        ;;
-    esac
-done
-
-notify() {
-    for u in $(users | tr ' ' '\n' | sort -u); do
-        sudo -u "$u" DISPLAY=:0 \
-            DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(sudo -u "$u" id -u)/bus" \
-            notify-send -a $name "$1" "$2" --icon="dialog-$3"
-    done
-}
-
-notify_info() {
-    if [[ $donotify -eq 0 ]]; then
-        notify "$1" "$2" "information"
-    else
-        printf '%s\n' "$1: $2"
-    fi
-}
-
-notify_error() {
-    if [[ $donotify -eq 0 ]]; then
-        notify "$1" "$2" "error"
-    else
-        printf '%s\n' "$1: $2"
-    fi
-}
-
-[[ $EUID -ne 0 ]] && die "Script must be run as root. See '$name -h' for a description of options"
-! [[ -f $SNAPPER_CONFIG ]] && die "$SNAPPER_CONFIG does not exist."
-
-description=${description:-"latest incremental backup"}
-uuid_cmdline=${uuid_cmdline:-"none"}
-subvolid_cmdline=${subvolid_cmdline:-"5"}
-noconfirm=${noconfirm:-"no"}
-
-if [[ -z $remote ]]; then
-    if ! command -v rsync &>/dev/null; then
-        die "--remote specified but rsync command not found"
-    fi
-fi
-
-if [[ $uuid_cmdline != "none" ]]; then
-    if [[ -z $remote ]]; then
-        notify_info "Backup started" "Starting backups to $uuid_cmdline subvolid=$subvolid_cmdline..."
-    else
-        notify_info "Backup started" "Starting backups to $uuid_cmdline subvolid $subvolid_cmdline at $remote..."
-    fi
-else
-    if [[ -z $remote ]]; then
-        notify_info "Backup started" "Starting backups. Use command line menu to select disk."
-    else
-        notify_info "Backup started" "Starting backups. Use command line menu to select disk on $remote."
-    fi
-fi
-
-if [[ -n $remote ]]; then
-    ssh="ssh $remote"
-    if [[ -n $port ]]; then
-        ssh="$ssh -p $port"
-    fi
-    if [[ $sudo -eq 1 ]]; then
-        ssh="$ssh sudo"
-    fi
-fi
-
-if [[ "$($ssh findmnt -n -v --target / -o FSTYPE)" == "btrfs" ]]; then
-    EXCLUDE_UUID=$($ssh findmnt -n -v -t btrfs --target / -o UUID)
-    TARGETS=$($ssh findmnt -n -v -t btrfs -o UUID,TARGET --list | grep -v "$EXCLUDE_UUID" | awk '{print $2}')
-    UUIDS=$($ssh findmnt -n -v -t btrfs -o UUID,TARGET --list | grep -v "$EXCLUDE_UUID" | awk '{print $1}')
-else
-    TARGETS=$($ssh findmnt -n -v -t btrfs -o TARGET --list)
-    UUIDS=$($ssh findmnt -n -v -t btrfs -o UUID --list)
-fi
-
-declare -a TARGETS_ARRAY
-declare -a UUIDS_ARRAY
-declare -a SUBVOLIDS_ARRAY
-
-i=0
-for x in $TARGETS; do
-    SUBVOLIDS_ARRAY[i]=$($ssh btrfs subvolume show "$x" | awk '/Subvolume ID:/ { print $3 }')
-    TARGETS_ARRAY[i]=$x
-    i=$((i + 1))
-done
-
-i=0
-disk=-1
-disk_count=0
-for x in $UUIDS; do
-    UUIDS_ARRAY[i]=$x
-    if [[ $x == "$uuid_cmdline" && ${SUBVOLIDS_ARRAY[$((i))]} == "$subvolid_cmdline" ]]; then
-        disk=$i
-        disk_count=$((disk_count + 1))
-    fi
-    i=$((i + 1))
-done
-
-if [[ ${#UUIDS_ARRAY[$@]} -eq 0 ]]; then
-    die "No external btrfs subvolumes found to backup to. Run '$name -h' for more options."
-fi
-
-if [[ $disk_count -gt 1 ]]; then
-    printf "Multiple mount points were found with UUID %s and subvolid %s.\n" "$uuid_cmdline" "$subvolid_cmdline"
-    disk="-1"
-fi
-
-if [[ $disk == -1 ]]; then
-    if [[ $disk_count == 0 && $uuid_cmdline != "none" ]]; then
-        error "A device with UUID $uuid_cmdline and subvolid $subvolid_cmdline was not found to be mounted, or it is not a BTRFS device."
-    fi
-    if [[ -z $ssh ]]; then
-        printf "Select a mounted BTRFS device on your local machine to backup to.\nFor more options, exit and run '%s -h'.\n" "$name"
-    else
-        printf "Select a mounted BTRFS device on %s to backup to.\nFor more options, exit and run '%s -h'.\n" "$remote" "$name"
-    fi
-    while [[ $disk -lt 0 || $disk -gt $i ]]; do
-        for x in "${!TARGETS_ARRAY[@]}"; do
-            printf "%4s) %s (uuid=%s, subvolid=%s)\n" "$((x + 1))" "${TARGETS_ARRAY[$x]}" "${UUIDS_ARRAY[$x]}" "${SUBVOLIDS_ARRAY[$x]}"
-        done
-        printf "%4s) Exit\n" "0"
-        read -e -r -p "Enter a number: " disk
-        if ! [[ $disk == ?(-)+([0-9]) ]] || [[ $disk -lt 0 || $disk -gt $i ]]; then
-            printf "\nNo disk selected. Select a disk to continue.\n"
-            disk=-1
-        fi
-    done
-    if [[ $disk == 0 ]]; then
-        exit 0
-    fi
-    disk=$((disk - 1))
-fi
-
-selected_subvolid="${SUBVOLIDS_ARRAY[$((disk))]}"
-selected_uuid="${UUIDS_ARRAY[$((disk))]}"
-selected_mnt="${TARGETS_ARRAY[$((disk))]}"
-printf "\nYou selected the disk with uuid=%s, subvolid=%s.\n" "$selected_uuid" "$selected_subvolid"
-if [[ -z $ssh ]]; then
-    printf "The disk is mounted at '%s'.\n" "$selected_mnt"
-else
-    printf "The disk is mounted at '%s:%s'.\n" "$remote" "$selected_mnt"
-fi
-
-# shellcheck source=/dev/null
-source "$SNAPPER_CONFIG"
-
-if [[ -z $selected_configs ]]; then
-    printf "\nInteractively cycling through all snapper configurations...\n"
-fi
-selected_configs=${selected_configs:-$SNAPPER_CONFIGS}
-
-declare -a BACKUPDIRS_ARRAY
-declare -a MYBACKUPDIR_ARRAY
-declare -a OLD_NUM_ARRAY
-declare -a OLD_SNAP_ARRAY
-declare -a NEW_NUM_ARRAY
-declare -a NEW_SNAP_ARRAY
-declare -a NEW_INFO_ARRAY
-declare -a BACKUPLOC_ARRAY
-declare -a CONT_BACKUP_ARRAY
-
-# Initial configuration of where backup directories are
-i=0
-for x in $selected_configs; do
-
-    if [[ "$(snapper -c "$x" list --disable-used-space -t single | awk '/'"subvolid=$selected_subvolid, uuid=$selected_uuid"'/ {cnt++} END {print cnt}')" -gt 1 ]]; then
-        error "More than one snapper entry found with UUID $selected_uuid subvolid $selected_subvolid for configuration $x. Skipping configuration $x."
-        continue
-    fi
-
-    if [[ "$(snapper -c "$x" list --disable-used-space -t single | awk '/'$name' backup in progress/ {cnt++} END {print cnt}')" -gt 0 ]]; then
-        printf "\nNOTE: Previous failed %s backup snapshots found for '%s'.\n" "$name" "$x"
-        if [[ $noconfirm == "yes" ]]; then
-            printf "'noconfirm' option passed. Failed backups will not be deleted.\n"
-        else
-            read -e -r -p "Delete failed backup snapshot(s)? (These local snapshots from failed backups are not used.) [y/N]? " delete_failed
-            while [[ -n $delete_failed && $delete_failed != [Yy]"es" &&
-                $delete_failed != [Yy] && $delete_failed != [Nn]"o" &&
-                $delete_failed != [Nn] ]]; do
-                read -e -r -p "Delete failed backup snapshot(s)? (These local snapshots from failed backups are not used.) [y/N] " delete_failed
-                if [[ -n $delete_failed && $delete_failed != [Yy]"es" &&
-                    $delete_failed != [Yy] && $delete_failed != [Nn]"o" &&
-                    $delete_failed != [Nn] ]]; then
-                    printf "Select 'y' or 'N'.\n"
-                fi
-            done
-            if [[ $delete_failed == [Yy]"es" || $delete_failed == [Yy] ]]; then
-                # explicit split list of snapshots (on whitespace) into multiple arguments
-                # shellcheck disable=SC2046
-                snapper -c "$x" delete $(snapper -c "$x" list --disable-used-space | awk '/'$name' backup in progress/ {print $1}')
-            fi
-        fi
-    fi
-
-    SNAP_SYNC_EXCLUDE=no
-
-    if [[ -f "/etc/snapper/configs/$x" ]]; then
-        # shellcheck source=/dev/null
-        source "/etc/snapper/configs/$x"
-    else
-        die "Selected snapper configuration $x does not exist."
-    fi
-
-    if [[ $SNAP_SYNC_EXCLUDE == "yes" ]]; then
-        continue
-    fi
-
-    printf "\n"
-
-    old_num=$(snapper -c "$x" list --disable-used-space -t single | awk '/'"subvolid=$selected_subvolid, uuid=$selected_uuid"'/ {print $1}')
-    old_snap=$SUBVOLUME/.snapshots/$old_num/snapshot
-
-    OLD_NUM_ARRAY[i]=$old_num
-    OLD_SNAP_ARRAY[i]=$old_snap
-
-    if [[ -z $old_num ]]; then
-        printf "No backups have been performed for '%s' on this disk.\n" "$x"
-        read -e -r -p "Enter name of subvolume to store backups, relative to $selected_mnt (to be created if not existing): " mybackupdir
-        printf "This will be the initial backup for snapper configuration '%s' to this disk. This could take awhile.\n" "$x"
-        BACKUPDIR="$selected_mnt/$mybackupdir"
-        $ssh test -d "$BACKUPDIR" || $ssh btrfs subvolume create "$BACKUPDIR"
-    else
-        mybackupdir=$(snapper -c "$x" list --disable-used-space -t single | awk -F"|" '/'"subvolid=$selected_subvolid, uuid=$selected_uuid"'/ {print $5}' | awk -F "," '/backupdir/ {print $1}' | awk -F"=" '{print $2}')
-        BACKUPDIR="$selected_mnt/$mybackupdir"
-        $ssh test -d "$BACKUPDIR" || die "%s is not a directory on %s.\n" "$BACKUPDIR" "$selected_uuid"
-    fi
-    BACKUPDIRS_ARRAY[i]="$BACKUPDIR"
-    MYBACKUPDIR_ARRAY[i]="$mybackupdir"
-
-    printf "Creating new local snapshot for '%s' configuration...\n" "$x"
-    new_num=$(snapper -c "$x" create --print-number -d "$name backup in progress")
-    new_snap=$SUBVOLUME/.snapshots/$new_num/snapshot
-    new_info=$SUBVOLUME/.snapshots/$new_num/info.xml
-    sync
-    backup_location=$BACKUPDIR/$x/$new_num/
-    if [[ -z $ssh ]]; then
-        printf "Will backup %s to %s\n" "$new_snap" "$backup_location/snapshot"
-    else
-        printf "Will backup %s to %s\n" "$new_snap" "$remote":"$backup_location/snapshot"
-    fi
-
-    if ($ssh test -d "$backup_location/snapshot"); then
-        printf "WARNING: Backup directory '%s' already exists. This configuration will be skipped!\n" "$backup_location/snapshot"
-        printf "Move or delete destination directory and try backup again.\n"
-    fi
-
-    NEW_NUM_ARRAY[i]="$new_num"
-    NEW_SNAP_ARRAY[i]="$new_snap"
-    NEW_INFO_ARRAY[i]="$new_info"
-    BACKUPLOC_ARRAY[i]="$backup_location"
-
-    cont_backup="K"
-    CONT_BACKUP_ARRAY[i]="yes"
-    if [[ $noconfirm == "yes" ]]; then
-        cont_backup="yes"
-    else
-        while [[ -n $cont_backup && $cont_backup != [Yy]"es" &&
-            $cont_backup != [Yy] && $cont_backup != [Nn]"o" &&
-            $cont_backup != [Nn] ]]; do
-            read -e -r -p "Proceed with backup of '$x' configuration [Y/n]? " cont_backup
-            if [[ -n $cont_backup && $cont_backup != [Yy]"es" &&
-                $cont_backup != [Yy] && $cont_backup != [Nn]"o" &&
-                $cont_backup != [Nn] ]]; then
-                printf "Select 'Y' or 'n'.\n"
-            fi
-        done
-    fi
-
-    if [[ $cont_backup != [Yy]"es" && $cont_backup != [Yy] && -n $cont_backup ]]; then
-        CONT_BACKUP_ARRAY[i]="no"
-        printf "Not backing up '%s' configuration.\n" "$x"
-        snapper -c "$x" delete "$new_num"
-    fi
-
-    i=$((i + 1))
-
-done
-
-# Actual backing up
-printf "\nPerforming backups...\n"
-i=-1
-for x in $selected_configs; do
-
-    i=$((i + 1))
-
-    SNAP_SYNC_EXCLUDE=no
-
-    if [[ -f "/etc/snapper/configs/$x" ]]; then
-        # shellcheck source=/dev/null
-        source "/etc/snapper/configs/$x"
-    else
-        die "Selected snapper configuration $x does not exist."
-    fi
-
-    cont_backup=${CONT_BACKUP_ARRAY[$i]}
-    if [[ $cont_backup == "no" || $SNAP_SYNC_EXCLUDE == "yes" ]]; then
-        notify_info "Backup in progress" "NOTE: Skipping $x configuration."
-        continue
-    fi
-
-    notify_info "Backup in progress" "Backing up $x configuration."
-
-    printf "\n"
-
-    old_num="${OLD_NUM_ARRAY[$i]}"
-    old_snap="${OLD_SNAP_ARRAY[$i]}"
-    BACKUPDIR="${BACKUPDIRS_ARRAY[$i]}"
-    mybackupdir="${MYBACKUPDIR_ARRAY[$i]}"
-    new_num="${NEW_NUM_ARRAY[$i]}"
-    new_snap="${NEW_SNAP_ARRAY[$i]}"
-    new_info="${NEW_INFO_ARRAY[$i]}"
-    backup_location="${BACKUPLOC_ARRAY[$i]}"
-
-    if ($ssh test -d "$backup_location/snapshot"); then
-        printf "ERROR: Backup directory '%s' already exists. Skipping backup of this configuration!\n" "$backup_location/snapshot"
-        continue
-    fi
-
-    $ssh mkdir -p "$backup_location"
-
-    if [[ -z $old_num ]]; then
-        printf "Sending first snapshot for '%s' configuration...\n" "$x"
-        if [[ $doprogress -eq 0 ]]; then
-            btrfs send "$new_snap" | pv | $ssh btrfs receive "$backup_location" &>/dev/null
-        else
-            btrfs send "$new_snap" | $ssh btrfs receive "$backup_location" &>/dev/null
-        fi
-    else
-
-        printf "Sending incremental snapshot for '%s' configuration...\n" "$x"
-        # Sends the difference between the new snapshot and old snapshot to the
-        # backup location. Using the -c flag instead of -p tells it that there
-        # is an identical subvolume to the old snapshot at the receiving
-        # location where it can get its data. This helps speed up the transfer.
-
-        if [[ $doprogress -eq 0 ]]; then
-            btrfs send -c "$old_snap" "$new_snap" | pv | $ssh btrfs receive "$backup_location"
-        else
-            btrfs send -c "$old_snap" "$new_snap" | $ssh btrfs receive "$backup_location"
-        fi
-
-        if [[ $keep == "yes" ]]; then
-            printf "Modifying data for old local snapshot for '%s' configuration...\n" "$x"
-            snapper -v -c "$x" modify -d "old snap-sync snapshot (you may remove)" -u "backupdir=,subvolid=,uuid=" -c "number" "$old_num"
-        else
-            printf "Deleting old snapshot for %s...\n" "$x"
-            snapper -c "$x" delete "$old_num"
-        fi
-
-    fi
-
-    if [[ -z $remote ]]; then
-        cp "$new_info" "$backup_location"
-    else
-        if [[ -z $port ]]; then
-            rsync -avzq "$new_info" "$remote":"$backup_location"
-        else
-            rsync -avzqe "ssh -p $port" "$new_info" "$remote":"$backup_location"
-        fi
-    fi
-
-    # It's important not to change this userdata in the snapshots, since that's how
-    # we find the previous one.
-
-    userdata="backupdir=$mybackupdir, subvolid=$selected_subvolid, uuid=$selected_uuid"
-
-    # Tag new snapshot as the latest
-    printf "Tagging local snapshot as latest backup for '%s' configuration...\n" "$x"
-    snapper -v -c "$x" modify -d "$description" -u "$userdata" "$new_num"
-
-    printf "Backup complete for '%s' configuration.\n" "$x"
-
-done
-
-printf "\nDone!\n"
-
-if [[ $uuid_cmdline != "none" ]]; then
-    notify_info "Finished" "Backups to $uuid_cmdline complete!"
-else
-    notify_info "Finished" "Backups complete!"
-fi
diff --git a/pkgs/sources/tree-sitter-yts/.editorconfig b/pkgs/sources/tree-sitter-yts/.editorconfig
deleted file mode 100644
index 919c78fa..00000000
--- a/pkgs/sources/tree-sitter-yts/.editorconfig
+++ /dev/null
@@ -1,21 +0,0 @@
-root = true
-
-[*]
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = false
-
-# for testing purposes, the corpus may have trailing whitespace
-# and may have mixed EOL.
-# Still want a final newline though, as that makes no semantic difference.
-[corpus/*]
-trim_trailing_whitespace = false
-end_of_line = unset
-
-[**.{js,json,cc,css}]
-indent_style = space
-indent_size = 2
-
-# tree-sitter generate emits json with no trailing newline
-[src/node-types.json]
-insert_final_newline = false
diff --git a/pkgs/sources/tree-sitter-yts/.envrc b/pkgs/sources/tree-sitter-yts/.envrc
deleted file mode 100644
index 3550a30f..00000000
--- a/pkgs/sources/tree-sitter-yts/.envrc
+++ /dev/null
@@ -1 +0,0 @@
-use flake
diff --git a/pkgs/sources/tree-sitter-yts/.gitignore b/pkgs/sources/tree-sitter-yts/.gitignore
deleted file mode 100644
index c4e2e389..00000000
--- a/pkgs/sources/tree-sitter-yts/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/.direnv
-/result
-/node_modules
diff --git a/pkgs/sources/tree-sitter-yts/Cargo.toml b/pkgs/sources/tree-sitter-yts/Cargo.toml
deleted file mode 100644
index 5287c420..00000000
--- a/pkgs/sources/tree-sitter-yts/Cargo.toml
+++ /dev/null
@@ -1,21 +0,0 @@
-[package]
-name = "tree-sitter-yts"
-description = "yts grammar for the tree-sitter parsing library"
-version = "0.0.1"
-keywords = ["incremental", "parsing", "yts"]
-categories = ["parsing", "text-editors"]
-repository = "https://github.com/tree-sitter/tree-sitter-yts"
-edition = "2018"
-license = "MIT"
-
-build = "bindings/rust/build.rs"
-include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"]
-
-[lib]
-path = "bindings/rust/lib.rs"
-
-[dependencies]
-tree-sitter = "~0.20.10"
-
-[build-dependencies]
-cc = "1.0"
diff --git a/pkgs/sources/tree-sitter-yts/binding.gyp b/pkgs/sources/tree-sitter-yts/binding.gyp
deleted file mode 100644
index b05038b4..00000000
--- a/pkgs/sources/tree-sitter-yts/binding.gyp
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "targets": [
-    {
-      "target_name": "tree_sitter_yts_binding",
-      "include_dirs": [
-        "<!(node -e \"require('nan')\")",
-        "src"
-      ],
-      "sources": [
-        "bindings/node/binding.cc",
-        "src/parser.c",
-        # If your language uses an external scanner, add it here.
-      ],
-      "cflags_c": [
-        "-std=c99",
-      ]
-    }
-  ]
-}
diff --git a/pkgs/sources/tree-sitter-yts/bindings/node/binding.cc b/pkgs/sources/tree-sitter-yts/bindings/node/binding.cc
deleted file mode 100644
index a042be54..00000000
--- a/pkgs/sources/tree-sitter-yts/bindings/node/binding.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "nan.h"
-#include "tree_sitter/parser.h"
-#include <node.h>
-
-using namespace v8;
-
-extern "C" TSLanguage *tree_sitter_yts ();
-
-namespace
-{
-
-NAN_METHOD (New) {}
-
-void
-Init (Local<Object> exports, Local<Object> module)
-{
-  Local<FunctionTemplate> tpl = Nan::New<FunctionTemplate> (New);
-  tpl->SetClassName (Nan::New ("Language").ToLocalChecked ());
-  tpl->InstanceTemplate ()->SetInternalFieldCount (1);
-
-  Local<Function> constructor = Nan::GetFunction (tpl).ToLocalChecked ();
-  Local<Object> instance
-      = constructor->NewInstance (Nan::GetCurrentContext ()).ToLocalChecked ();
-  Nan::SetInternalFieldPointer (instance, 0, tree_sitter_yts ());
-
-  Nan::Set (instance, Nan::New ("name").ToLocalChecked (),
-            Nan::New ("yts").ToLocalChecked ());
-  Nan::Set (module, Nan::New ("exports").ToLocalChecked (), instance);
-}
-
-NODE_MODULE (tree_sitter_yts_binding, Init)
-
-} // namespace
diff --git a/pkgs/sources/tree-sitter-yts/bindings/node/index.js b/pkgs/sources/tree-sitter-yts/bindings/node/index.js
deleted file mode 100644
index 32179742..00000000
--- a/pkgs/sources/tree-sitter-yts/bindings/node/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-try {
-  module.exports = require("../../build/Release/tree_sitter_yts_binding");
-} catch (error1) {
-  if (error1.code !== "MODULE_NOT_FOUND") {
-    throw error1;
-  }
-  try {
-    module.exports = require("../../build/Debug/tree_sitter_yts_binding");
-  } catch (error2) {
-    if (error2.code !== "MODULE_NOT_FOUND") {
-      throw error2;
-    }
-    throw error1;
-  }
-}
-
-try {
-  module.exports.nodeTypeInfo = require("../../src/node-types.json");
-} catch (_) {}
diff --git a/pkgs/sources/tree-sitter-yts/bindings/rust/build.rs b/pkgs/sources/tree-sitter-yts/bindings/rust/build.rs
deleted file mode 100644
index c6061f09..00000000
--- a/pkgs/sources/tree-sitter-yts/bindings/rust/build.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-fn main() {
-    let src_dir = std::path::Path::new("src");
-
-    let mut c_config = cc::Build::new();
-    c_config.include(&src_dir);
-    c_config
-        .flag_if_supported("-Wno-unused-parameter")
-        .flag_if_supported("-Wno-unused-but-set-variable")
-        .flag_if_supported("-Wno-trigraphs");
-    let parser_path = src_dir.join("parser.c");
-    c_config.file(&parser_path);
-
-    // If your language uses an external scanner written in C,
-    // then include this block of code:
-
-    /*
-    let scanner_path = src_dir.join("scanner.c");
-    c_config.file(&scanner_path);
-    println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap());
-    */
-
-    c_config.compile("parser");
-    println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap());
-
-    // If your language uses an external scanner written in C++,
-    // then include this block of code:
-
-    /*
-    let mut cpp_config = cc::Build::new();
-    cpp_config.cpp(true);
-    cpp_config.include(&src_dir);
-    cpp_config
-        .flag_if_supported("-Wno-unused-parameter")
-        .flag_if_supported("-Wno-unused-but-set-variable");
-    let scanner_path = src_dir.join("scanner.cc");
-    cpp_config.file(&scanner_path);
-    cpp_config.compile("scanner");
-    println!("cargo:rerun-if-changed={}", scanner_path.to_str().unwrap());
-    */
-}
diff --git a/pkgs/sources/tree-sitter-yts/bindings/rust/lib.rs b/pkgs/sources/tree-sitter-yts/bindings/rust/lib.rs
deleted file mode 100644
index f1868b2d..00000000
--- a/pkgs/sources/tree-sitter-yts/bindings/rust/lib.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-//! This crate provides yts language support for the [tree-sitter][] parsing library.
-//!
-//! Typically, you will use the [language][language func] function to add this language to a
-//! tree-sitter [Parser][], and then use the parser to parse some code:
-//!
-//! ```
-//! let code = "";
-//! let mut parser = tree_sitter::Parser::new();
-//! parser.set_language(tree_sitter_yts::language()).expect("Error loading yts grammar");
-//! let tree = parser.parse(code, None).unwrap();
-//! ```
-//!
-//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
-//! [language func]: fn.language.html
-//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html
-//! [tree-sitter]: https://tree-sitter.github.io/
-
-use tree_sitter::Language;
-
-extern "C" {
-    fn tree_sitter_yts() -> Language;
-}
-
-/// Get the tree-sitter [Language][] for this grammar.
-///
-/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
-pub fn language() -> Language {
-    unsafe { tree_sitter_yts() }
-}
-
-/// The content of the [`node-types.json`][] file for this grammar.
-///
-/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types
-pub const NODE_TYPES: &'static str = include_str!("../../src/node-types.json");
-
-// Uncomment these to include any queries that this grammar contains
-
-// pub const HIGHLIGHTS_QUERY: &'static str = include_str!("../../queries/highlights.scm");
-// pub const INJECTIONS_QUERY: &'static str = include_str!("../../queries/injections.scm");
-// pub const LOCALS_QUERY: &'static str = include_str!("../../queries/locals.scm");
-// pub const TAGS_QUERY: &'static str = include_str!("../../queries/tags.scm");
-
-#[cfg(test)]
-mod tests {
-    #[test]
-    fn test_can_load_grammar() {
-        let mut parser = tree_sitter::Parser::new();
-        parser
-            .set_language(super::language())
-            .expect("Error loading yts language");
-    }
-}
diff --git a/pkgs/sources/tree-sitter-yts/corpus/comments.txt b/pkgs/sources/tree-sitter-yts/corpus/comments.txt
deleted file mode 100644
index 0070baf8..00000000
--- a/pkgs/sources/tree-sitter-yts/corpus/comments.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-================================================================================
-Parse multiple lines
-================================================================================
-
-pick 6221 "Name" "2024-01-17" "A" "[0m 0s]" "url"
-pick 6181 "Name2" "2024-01-16" "A2" "[0m 0s]" "url"
-
-# This is a comment
-# it contains information
-
---------------------------------------------------------------------------------
-
-(source_file
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote)))
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote)))
-  (comment)
-  (comment))
diff --git a/pkgs/sources/tree-sitter-yts/corpus/comments_correct.txt b/pkgs/sources/tree-sitter-yts/corpus/comments_correct.txt
deleted file mode 100644
index 40cdab7d..00000000
--- a/pkgs/sources/tree-sitter-yts/corpus/comments_correct.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-================================================================================
-Disregard comments in title
-================================================================================
-
-pick 6094 "#100 Name" "2024-01-12" "A" "[133m 29s]" "url"
-
---------------------------------------------------------------------------------
-
-(source_file
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote))))
diff --git a/pkgs/sources/tree-sitter-yts/corpus/duration.txt b/pkgs/sources/tree-sitter-yts/corpus/duration.txt
deleted file mode 100644
index 59476b98..00000000
--- a/pkgs/sources/tree-sitter-yts/corpus/duration.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-================================================================================
-Parse multiple lines with different durations
-================================================================================
-
-pick 6221 "Name" "2024-01-17" "A" "[1h 0m]" "url"
-pick 6181 "Name2" "2024-01-16" "A2" "[20m 02s]" "url2"
-pick 6184 "Name3" "2024-01-16" "A3" "[20h 0m]" "url3"
-pick 6206 "Name4" "2024-01-16" "A4" "[No Duration]" "url4"
-
---------------------------------------------------------------------------------
-
-(source_file
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote)))
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote)))
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote)))
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote))))
diff --git a/pkgs/sources/tree-sitter-yts/corpus/url.txt b/pkgs/sources/tree-sitter-yts/corpus/url.txt
deleted file mode 100644
index 1ae3d106..00000000
--- a/pkgs/sources/tree-sitter-yts/corpus/url.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-================================================================================
-Parse multiple lines with url
-================================================================================
-
-pick 6221 "Name" "2024-01-17" "A" "[0h 0m]" "url"
-pick 6181 "Name2" "2024-01-16" "A2" "[0h 0m]" "url2"
-pick 6184 "Name3" "2024-01-16" "A3" "[0h 0m]" "url3"
-pick 6206 "Name4" "2024-01-16" "A4" "[0h 0m]" "url4"
-
---------------------------------------------------------------------------------
-
-(source_file
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote)))
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote)))
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote)))
-  (line
-    (command)
-    (id)
-    (title
-      (quote)
-      (quote))
-    (date
-      (quote)
-      (quote))
-    (author
-      (quote)
-      (quote))
-    (duration
-      (quote)
-      (quote))
-    (url
-      (quote)
-      (quote))))
diff --git a/pkgs/sources/tree-sitter-yts/default.nix b/pkgs/sources/tree-sitter-yts/default.nix
deleted file mode 100644
index 7e15481c..00000000
--- a/pkgs/sources/tree-sitter-yts/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-[
-  (
-    final: prev: {
-      yts-grammar = (prev.callPackage ./package.nix {}) {
-        language = "yts";
-        version = "1.0";
-        src = ./.;
-      };
-    }
-  )
-]
diff --git a/pkgs/sources/tree-sitter-yts/flake.lock b/pkgs/sources/tree-sitter-yts/flake.lock
deleted file mode 100644
index bff9f1fa..00000000
--- a/pkgs/sources/tree-sitter-yts/flake.lock
+++ /dev/null
@@ -1,97 +0,0 @@
-{
-  "nodes": {
-    "crane": {
-      "inputs": {
-        "nixpkgs": ["nixpkgs"]
-      },
-      "locked": {
-        "lastModified": 1704819371,
-        "narHash": "sha256-oFUfPWrWGQTZaCM3byxwYwrMLwshDxVGOrMH5cVP/X8=",
-        "owner": "ipetkov",
-        "repo": "crane",
-        "rev": "5c234301a1277e4cc759c23a2a7a00a06ddd7111",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ipetkov",
-        "repo": "crane",
-        "type": "github"
-      }
-    },
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1701680307,
-        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "nixpkgs": {
-      "locked": {
-        "lastModified": 1705133751,
-        "narHash": "sha256-rCIsyE80jgiOU78gCWN3A0wE0tR2GI5nH6MlS+HaaSQ=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "npmlock2nix": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1673447413,
-        "narHash": "sha256-sJM82Sj8yfQYs9axEmGZ9Evzdv/kDcI9sddqJ45frrU=",
-        "owner": "nix-community",
-        "repo": "npmlock2nix",
-        "rev": "9197bbf397d76059a76310523d45df10d2e4ca81",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-community",
-        "repo": "npmlock2nix",
-        "type": "github"
-      }
-    },
-    "root": {
-      "inputs": {
-        "crane": "crane",
-        "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs",
-        "npmlock2nix": "npmlock2nix"
-      }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    }
-  },
-  "root": "root",
-  "version": 7
-}
diff --git a/pkgs/sources/tree-sitter-yts/flake.nix b/pkgs/sources/tree-sitter-yts/flake.nix
deleted file mode 100644
index 1b6f8ab0..00000000
--- a/pkgs/sources/tree-sitter-yts/flake.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-  description = "tree-sitter-yts";
-
-  inputs = {
-    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-
-    flake-utils.url = "github:numtide/flake-utils";
-
-    npmlock2nix = {
-      url = "github:nix-community/npmlock2nix";
-      flake = false;
-    };
-
-    crane = {
-      url = "github:ipetkov/crane";
-      inputs.nixpkgs.follows = "nixpkgs";
-    };
-  };
-
-  outputs = {
-    self,
-    nixpkgs,
-    flake-utils,
-    npmlock2nix,
-    crane,
-  }: (flake-utils.lib.eachDefaultSystem (system: let
-    pkgs = nixpkgs.legacyPackages.${system};
-    inherit (pkgs) lib;
-
-    npmlock2nix' = pkgs.callPackage npmlock2nix {};
-    craneLib = crane.lib.${system};
-  in {
-    build = self.packages.${system}.tree-sitter-nix;
-
-    rust-bindings = craneLib.buildPackage {
-      src = self;
-    };
-
-    # Requires xcode
-    node-bindings = npmlock2nix'.v2.build {
-      src = self;
-      inherit (self.devShells.${system}.default) nativeBuildInputs;
-      inherit (pkgs) nodejs;
-
-      buildCommands = [
-        "${pkgs.nodePackages.node-gyp}/bin/node-gyp configure"
-        "npm run build"
-      ];
-
-      installPhase = ''
-        touch $out
-      '';
-    };
-
-    packages.tree-sitter-yts = (pkgs.callPackage ./grammar.nix {}) {
-      language = "yts";
-      version = "1.0";
-      src = self;
-    };
-
-    packages.default = self.packages.${system}.tree-sitter-yts;
-    devShells.default = pkgs.mkShell {
-      packages = [
-        pkgs.nodejs
-        pkgs.python3
-
-        pkgs.tree-sitter
-        pkgs.editorconfig-checker
-
-        pkgs.rustc
-        pkgs.cargo
-
-        # Formatters
-        pkgs.treefmt
-        pkgs.nixpkgs-fmt
-        pkgs.nodePackages.prettier
-        pkgs.rustfmt
-        pkgs.clang-tools
-      ];
-    };
-  }));
-}
diff --git a/pkgs/sources/tree-sitter-yts/grammar.js b/pkgs/sources/tree-sitter-yts/grammar.js
deleted file mode 100644
index 655f6dea..00000000
--- a/pkgs/sources/tree-sitter-yts/grammar.js
+++ /dev/null
@@ -1,26 +0,0 @@
-module.exports = grammar({
-  name: "yts",
-
-  rules: {
-    source_file: ($) => repeat(choice($.line, $.comment)),
-    line: ($) =>
-      seq($.command, $.id, $.title, $.date, $.author, $.duration, $.url, "\n"),
-
-    command: ($) => choice("pick", "p", "watch", "w", "drop", "d", "url", "u"),
-    id: ($) => /[0-9]+/,
-    title: ($) => seq($._q, /[^"]+/, $._q),
-    date: ($) => seq($._q, /\d{4}-\d{2}-\d{2}/, $._q),
-    author: ($) => seq($._q, /[^"]+/, $._q),
-    duration: ($) =>
-      seq(
-        $._q,
-        seq("[", choice("No Duration", /\d+m \d+s/, /\d+h \d+m/), "]"),
-        $._q,
-      ),
-    url: ($) => seq($._q, /[^"]+/, $._q),
-    comment: ($) => /#.*/,
-    _q: ($) => $.quote,
-    quote: ($) => /"/,
-  },
-  extras: ($) => [/\s/, /\\\r?\n/],
-});
diff --git a/pkgs/sources/tree-sitter-yts/highlight.yts b/pkgs/sources/tree-sitter-yts/highlight.yts
deleted file mode 100644
index 319ee95c..00000000
--- a/pkgs/sources/tree-sitter-yts/highlight.yts
+++ /dev/null
@@ -1,4 +0,0 @@
-pick 6221 "Name" "2024-01-17" "A" "0:00" "url"
-pick 6181 "Name2" "2024-01-16" "A2" "0:00" "url2"
-pick 6184 "Name3" "2024-01-16" "A3" "0:00" "url3"
-pick 6206 "Name4" "2024-01-16" "A4" "299:36" "url4"
diff --git a/pkgs/sources/tree-sitter-yts/package.json b/pkgs/sources/tree-sitter-yts/package.json
deleted file mode 100644
index 2511ccb7..00000000
--- a/pkgs/sources/tree-sitter-yts/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "name": "tree-sitter-yts",
-  "version": "0.0.1",
-  "description": "yts grammar for tree-sitter",
-  "main": "bindings/node",
-  "keywords": [
-    "parsing",
-    "incremental"
-  ],
-  "dependencies": {
-    "nan": "^2.12.1"
-  },
-  "devDependencies": {
-    "tree-sitter-cli": "^0.20.8"
-  },
-  "scripts": {
-    "test": "tree-sitter test"
-  },
-  "tree-sitter": [
-    {
-      "scope": "source.yts",
-      "file-types": [
-        "yts"
-      ],
-      "highlights": [
-        "queries/highlights.scm"
-      ],
-      "injection-regex": "^(yts)$"
-    }
-  ]
-}
diff --git a/pkgs/sources/tree-sitter-yts/package.nix b/pkgs/sources/tree-sitter-yts/package.nix
deleted file mode 100644
index fe9a7326..00000000
--- a/pkgs/sources/tree-sitter-yts/package.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-# taken from nixpgks: pkgs/development/tools/parsing/tree-sitter/grammar.nix
-{
-  stdenv,
-  nodejs,
-  tree-sitter,
-  lib,
-}:
-# Build a parser grammar and put the resulting shared object in `$out/parser`
-{
-  # language name
-  language,
-  version,
-  src,
-  location ? null,
-  generate ? false,
-  ...
-} @ args:
-stdenv.mkDerivation ({
-    pname = "${language}-grammar";
-
-    inherit src version;
-
-    nativeBuildInputs = lib.optionals generate [nodejs tree-sitter];
-
-    CFLAGS = ["-Isrc" "-O2"];
-    CXXFLAGS = ["-Isrc" "-O2"];
-
-    stripDebugList = ["parser"];
-
-    configurePhase =
-      lib.optionalString (location != null) ''
-        cd ${location}
-      ''
-      + lib.optionalString generate ''
-        tree-sitter generate
-      '';
-
-    # When both scanner.{c,cc} exist, we should not link both since they may be the same but in
-    # different languages. Just randomly prefer C++ if that happens.
-    buildPhase = ''
-      runHook preBuild
-      if [[ -e src/scanner.cc ]]; then
-        $CXX -fPIC -c src/scanner.cc -o scanner.o $CXXFLAGS
-      elif [[ -e src/scanner.c ]]; then
-        $CC -fPIC -c src/scanner.c -o scanner.o $CFLAGS
-      fi
-      $CC -fPIC -c src/parser.c -o parser.o $CFLAGS
-      rm -rf parser
-      $CXX -shared -o parser *.o
-      runHook postBuild
-    '';
-
-    installPhase = ''
-      runHook preInstall
-      mkdir $out
-      mv parser $out/
-      if [[ -d queries ]]; then
-        cp -r queries $out
-      fi
-      runHook postInstall
-    '';
-  }
-  // removeAttrs args ["language" "location" "generate"])
diff --git a/pkgs/sources/tree-sitter-yts/queries/highlights.scm b/pkgs/sources/tree-sitter-yts/queries/highlights.scm
deleted file mode 100644
index 674cbf18..00000000
--- a/pkgs/sources/tree-sitter-yts/queries/highlights.scm
+++ /dev/null
@@ -1,11 +0,0 @@
-(command) @keyword
-(id) @constant
-(title) @text.title
-(date) @number
-(author) @operator
-(duration) @property
-((url) @conceal (#set! conceal ""))
-
-
-((quote) @conceal (#set! conceal ""))
-(comment) @comment @spell
diff --git a/pkgs/sources/tree-sitter-yts/src/grammar.json b/pkgs/sources/tree-sitter-yts/src/grammar.json
deleted file mode 100644
index a35a5464..00000000
--- a/pkgs/sources/tree-sitter-yts/src/grammar.json
+++ /dev/null
@@ -1,238 +0,0 @@
-{
-  "name": "yts",
-  "rules": {
-    "source_file": {
-      "type": "REPEAT",
-      "content": {
-        "type": "CHOICE",
-        "members": [
-          {
-            "type": "SYMBOL",
-            "name": "line"
-          },
-          {
-            "type": "SYMBOL",
-            "name": "comment"
-          }
-        ]
-      }
-    },
-    "line": {
-      "type": "SEQ",
-      "members": [
-        {
-          "type": "SYMBOL",
-          "name": "command"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "id"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "title"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "date"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "author"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "duration"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "url"
-        },
-        {
-          "type": "STRING",
-          "value": "\n"
-        }
-      ]
-    },
-    "command": {
-      "type": "CHOICE",
-      "members": [
-        {
-          "type": "STRING",
-          "value": "pick"
-        },
-        {
-          "type": "STRING",
-          "value": "p"
-        },
-        {
-          "type": "STRING",
-          "value": "watch"
-        },
-        {
-          "type": "STRING",
-          "value": "w"
-        },
-        {
-          "type": "STRING",
-          "value": "drop"
-        },
-        {
-          "type": "STRING",
-          "value": "d"
-        },
-        {
-          "type": "STRING",
-          "value": "url"
-        },
-        {
-          "type": "STRING",
-          "value": "u"
-        }
-      ]
-    },
-    "id": {
-      "type": "PATTERN",
-      "value": "[0-9]+"
-    },
-    "title": {
-      "type": "SEQ",
-      "members": [
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        },
-        {
-          "type": "PATTERN",
-          "value": "[^\"]+"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        }
-      ]
-    },
-    "date": {
-      "type": "SEQ",
-      "members": [
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        },
-        {
-          "type": "PATTERN",
-          "value": "\\d{4}-\\d{2}-\\d{2}"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        }
-      ]
-    },
-    "author": {
-      "type": "SEQ",
-      "members": [
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        },
-        {
-          "type": "PATTERN",
-          "value": "[^\"]+"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        }
-      ]
-    },
-    "duration": {
-      "type": "SEQ",
-      "members": [
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        },
-        {
-          "type": "SEQ",
-          "members": [
-            {
-              "type": "STRING",
-              "value": "["
-            },
-            {
-              "type": "CHOICE",
-              "members": [
-                {
-                  "type": "STRING",
-                  "value": "No Duration"
-                },
-                {
-                  "type": "PATTERN",
-                  "value": "\\d+m \\d+s"
-                },
-                {
-                  "type": "PATTERN",
-                  "value": "\\d+h \\d+m"
-                }
-              ]
-            },
-            {
-              "type": "STRING",
-              "value": "]"
-            }
-          ]
-        },
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        }
-      ]
-    },
-    "url": {
-      "type": "SEQ",
-      "members": [
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        },
-        {
-          "type": "PATTERN",
-          "value": "[^\"]+"
-        },
-        {
-          "type": "SYMBOL",
-          "name": "_q"
-        }
-      ]
-    },
-    "comment": {
-      "type": "PATTERN",
-      "value": "#.*"
-    },
-    "_q": {
-      "type": "SYMBOL",
-      "name": "quote"
-    },
-    "quote": {
-      "type": "PATTERN",
-      "value": "\""
-    }
-  },
-  "extras": [
-    {
-      "type": "PATTERN",
-      "value": "\\s"
-    },
-    {
-      "type": "PATTERN",
-      "value": "\\\\\\r?\\n"
-    }
-  ],
-  "conflicts": [],
-  "precedences": [],
-  "externals": [],
-  "inline": [],
-  "supertypes": []
-}
-
diff --git a/pkgs/sources/tree-sitter-yts/src/node-types.json b/pkgs/sources/tree-sitter-yts/src/node-types.json
deleted file mode 100644
index 1a63a552..00000000
--- a/pkgs/sources/tree-sitter-yts/src/node-types.json
+++ /dev/null
@@ -1,200 +0,0 @@
-[
-  {
-    "type": "author",
-    "named": true,
-    "fields": {},
-    "children": {
-      "multiple": true,
-      "required": true,
-      "types": [
-        {
-          "type": "quote",
-          "named": true
-        }
-      ]
-    }
-  },
-  {
-    "type": "command",
-    "named": true,
-    "fields": {}
-  },
-  {
-    "type": "date",
-    "named": true,
-    "fields": {},
-    "children": {
-      "multiple": true,
-      "required": true,
-      "types": [
-        {
-          "type": "quote",
-          "named": true
-        }
-      ]
-    }
-  },
-  {
-    "type": "duration",
-    "named": true,
-    "fields": {},
-    "children": {
-      "multiple": true,
-      "required": true,
-      "types": [
-        {
-          "type": "quote",
-          "named": true
-        }
-      ]
-    }
-  },
-  {
-    "type": "line",
-    "named": true,
-    "fields": {},
-    "children": {
-      "multiple": true,
-      "required": true,
-      "types": [
-        {
-          "type": "author",
-          "named": true
-        },
-        {
-          "type": "command",
-          "named": true
-        },
-        {
-          "type": "date",
-          "named": true
-        },
-        {
-          "type": "duration",
-          "named": true
-        },
-        {
-          "type": "id",
-          "named": true
-        },
-        {
-          "type": "title",
-          "named": true
-        },
-        {
-          "type": "url",
-          "named": true
-        }
-      ]
-    }
-  },
-  {
-    "type": "source_file",
-    "named": true,
-    "fields": {},
-    "children": {
-      "multiple": true,
-      "required": false,
-      "types": [
-        {
-          "type": "comment",
-          "named": true
-        },
-        {
-          "type": "line",
-          "named": true
-        }
-      ]
-    }
-  },
-  {
-    "type": "title",
-    "named": true,
-    "fields": {},
-    "children": {
-      "multiple": true,
-      "required": true,
-      "types": [
-        {
-          "type": "quote",
-          "named": true
-        }
-      ]
-    }
-  },
-  {
-    "type": "url",
-    "named": true,
-    "fields": {},
-    "children": {
-      "multiple": true,
-      "required": true,
-      "types": [
-        {
-          "type": "quote",
-          "named": true
-        }
-      ]
-    }
-  },
-  {
-    "type": "\n",
-    "named": false
-  },
-  {
-    "type": "No Duration",
-    "named": false
-  },
-  {
-    "type": "[",
-    "named": false
-  },
-  {
-    "type": "]",
-    "named": false
-  },
-  {
-    "type": "comment",
-    "named": true
-  },
-  {
-    "type": "d",
-    "named": false
-  },
-  {
-    "type": "drop",
-    "named": false
-  },
-  {
-    "type": "id",
-    "named": true
-  },
-  {
-    "type": "p",
-    "named": false
-  },
-  {
-    "type": "pick",
-    "named": false
-  },
-  {
-    "type": "quote",
-    "named": true
-  },
-  {
-    "type": "u",
-    "named": false
-  },
-  {
-    "type": "url",
-    "named": false
-  },
-  {
-    "type": "w",
-    "named": false
-  },
-  {
-    "type": "watch",
-    "named": false
-  }
-]
\ No newline at end of file
diff --git a/pkgs/sources/tree-sitter-yts/src/parser.c b/pkgs/sources/tree-sitter-yts/src/parser.c
deleted file mode 100644
index ded5c342..00000000
--- a/pkgs/sources/tree-sitter-yts/src/parser.c
+++ /dev/null
@@ -1,1108 +0,0 @@
-#include <tree_sitter/parser.h>
-
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
-#endif
-
-#define LANGUAGE_VERSION 14
-#define STATE_COUNT 31
-#define LARGE_STATE_COUNT 2
-#define SYMBOL_COUNT 30
-#define ALIAS_COUNT 0
-#define TOKEN_COUNT 20
-#define EXTERNAL_TOKEN_COUNT 0
-#define FIELD_COUNT 0
-#define MAX_ALIAS_SEQUENCE_LENGTH 8
-#define PRODUCTION_ID_COUNT 1
-
-enum
-{
-  anon_sym_LF = 1,
-  anon_sym_pick = 2,
-  anon_sym_p = 3,
-  anon_sym_watch = 4,
-  anon_sym_w = 5,
-  anon_sym_drop = 6,
-  anon_sym_d = 7,
-  anon_sym_url = 8,
-  anon_sym_u = 9,
-  sym_id = 10,
-  aux_sym_title_token1 = 11,
-  aux_sym_date_token1 = 12,
-  anon_sym_LBRACK = 13,
-  anon_sym_NoDuration = 14,
-  aux_sym_duration_token1 = 15,
-  aux_sym_duration_token2 = 16,
-  anon_sym_RBRACK = 17,
-  sym_comment = 18,
-  sym_quote = 19,
-  sym_source_file = 20,
-  sym_line = 21,
-  sym_command = 22,
-  sym_title = 23,
-  sym_date = 24,
-  sym_author = 25,
-  sym_duration = 26,
-  sym_url = 27,
-  sym__q = 28,
-  aux_sym_source_file_repeat1 = 29,
-};
-
-static const char *const ts_symbol_names[] = {
-  [ts_builtin_sym_end] = "end",
-  [anon_sym_LF] = "\n",
-  [anon_sym_pick] = "pick",
-  [anon_sym_p] = "p",
-  [anon_sym_watch] = "watch",
-  [anon_sym_w] = "w",
-  [anon_sym_drop] = "drop",
-  [anon_sym_d] = "d",
-  [anon_sym_url] = "url",
-  [anon_sym_u] = "u",
-  [sym_id] = "id",
-  [aux_sym_title_token1] = "title_token1",
-  [aux_sym_date_token1] = "date_token1",
-  [anon_sym_LBRACK] = "[",
-  [anon_sym_NoDuration] = "No Duration",
-  [aux_sym_duration_token1] = "duration_token1",
-  [aux_sym_duration_token2] = "duration_token2",
-  [anon_sym_RBRACK] = "]",
-  [sym_comment] = "comment",
-  [sym_quote] = "quote",
-  [sym_source_file] = "source_file",
-  [sym_line] = "line",
-  [sym_command] = "command",
-  [sym_title] = "title",
-  [sym_date] = "date",
-  [sym_author] = "author",
-  [sym_duration] = "duration",
-  [sym_url] = "url",
-  [sym__q] = "_q",
-  [aux_sym_source_file_repeat1] = "source_file_repeat1",
-};
-
-static const TSSymbol ts_symbol_map[] = {
-  [ts_builtin_sym_end] = ts_builtin_sym_end,
-  [anon_sym_LF] = anon_sym_LF,
-  [anon_sym_pick] = anon_sym_pick,
-  [anon_sym_p] = anon_sym_p,
-  [anon_sym_watch] = anon_sym_watch,
-  [anon_sym_w] = anon_sym_w,
-  [anon_sym_drop] = anon_sym_drop,
-  [anon_sym_d] = anon_sym_d,
-  [anon_sym_url] = anon_sym_url,
-  [anon_sym_u] = anon_sym_u,
-  [sym_id] = sym_id,
-  [aux_sym_title_token1] = aux_sym_title_token1,
-  [aux_sym_date_token1] = aux_sym_date_token1,
-  [anon_sym_LBRACK] = anon_sym_LBRACK,
-  [anon_sym_NoDuration] = anon_sym_NoDuration,
-  [aux_sym_duration_token1] = aux_sym_duration_token1,
-  [aux_sym_duration_token2] = aux_sym_duration_token2,
-  [anon_sym_RBRACK] = anon_sym_RBRACK,
-  [sym_comment] = sym_comment,
-  [sym_quote] = sym_quote,
-  [sym_source_file] = sym_source_file,
-  [sym_line] = sym_line,
-  [sym_command] = sym_command,
-  [sym_title] = sym_title,
-  [sym_date] = sym_date,
-  [sym_author] = sym_author,
-  [sym_duration] = sym_duration,
-  [sym_url] = sym_url,
-  [sym__q] = sym__q,
-  [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1,
-};
-
-static const TSSymbolMetadata ts_symbol_metadata[] = {
-  [ts_builtin_sym_end] = {
-    .visible = false,
-    .named = true,
-  },
-  [anon_sym_LF] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_pick] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_p] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_watch] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_w] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_drop] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_d] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_url] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_u] = {
-    .visible = true,
-    .named = false,
-  },
-  [sym_id] = {
-    .visible = true,
-    .named = true,
-  },
-  [aux_sym_title_token1] = {
-    .visible = false,
-    .named = false,
-  },
-  [aux_sym_date_token1] = {
-    .visible = false,
-    .named = false,
-  },
-  [anon_sym_LBRACK] = {
-    .visible = true,
-    .named = false,
-  },
-  [anon_sym_NoDuration] = {
-    .visible = true,
-    .named = false,
-  },
-  [aux_sym_duration_token1] = {
-    .visible = false,
-    .named = false,
-  },
-  [aux_sym_duration_token2] = {
-    .visible = false,
-    .named = false,
-  },
-  [anon_sym_RBRACK] = {
-    .visible = true,
-    .named = false,
-  },
-  [sym_comment] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_quote] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_source_file] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_line] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_command] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_title] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_date] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_author] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_duration] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym_url] = {
-    .visible = true,
-    .named = true,
-  },
-  [sym__q] = {
-    .visible = false,
-    .named = true,
-  },
-  [aux_sym_source_file_repeat1] = {
-    .visible = false,
-    .named = false,
-  },
-};
-
-static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT]
-                                        [MAX_ALIAS_SEQUENCE_LENGTH]
-    = {
-        [0] = { 0 },
-      };
-
-static const uint16_t ts_non_terminal_alias_map[] = {
-  0,
-};
-
-static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
-  [0] = 0,   [1] = 1,   [2] = 2,   [3] = 3,   [4] = 4,   [5] = 5,   [6] = 6,
-  [7] = 7,   [8] = 8,   [9] = 9,   [10] = 10, [11] = 11, [12] = 12, [13] = 13,
-  [14] = 14, [15] = 15, [16] = 16, [17] = 17, [18] = 18, [19] = 19, [20] = 20,
-  [21] = 21, [22] = 22, [23] = 23, [24] = 24, [25] = 25, [26] = 26, [27] = 27,
-  [28] = 28, [29] = 29, [30] = 30,
-};
-
-static bool
-ts_lex (TSLexer *lexer, TSStateId state)
-{
-  START_LEXER ();
-  eof = lexer->eof (lexer);
-  switch (state)
-    {
-    case 0:
-      if (eof)
-        ADVANCE (47);
-      if (lookahead == '"')
-        ADVANCE (74);
-      if (lookahead == '#')
-        ADVANCE (73);
-      if (lookahead == 'N')
-        ADVANCE (30);
-      if (lookahead == '[')
-        ADVANCE (68);
-      if (lookahead == '\\')
-        SKIP (46)
-      if (lookahead == ']')
-        ADVANCE (72);
-      if (lookahead == 'd')
-        ADVANCE (54);
-      if (lookahead == 'p')
-        ADVANCE (50);
-      if (lookahead == 'u')
-        ADVANCE (56);
-      if (lookahead == 'w')
-        ADVANCE (52);
-      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
-          || lookahead == ' ')
-        SKIP (0)
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (60);
-      END_STATE ();
-    case 1:
-      if (lookahead == '\n')
-        SKIP (14)
-      END_STATE ();
-    case 2:
-      if (lookahead == '\n')
-        SKIP (14)
-      if (lookahead == '\r')
-        SKIP (1)
-      END_STATE ();
-    case 3:
-      if (lookahead == '\n')
-        SKIP (16)
-      END_STATE ();
-    case 4:
-      if (lookahead == '\n')
-        SKIP (16)
-      if (lookahead == '\r')
-        SKIP (3)
-      END_STATE ();
-    case 5:
-      if (lookahead == '\n')
-        SKIP (7)
-      END_STATE ();
-    case 6:
-      if (lookahead == '\n')
-        SKIP (7)
-      if (lookahead == '\r')
-        SKIP (5)
-      END_STATE ();
-    case 7:
-      if (lookahead == '\n')
-        ADVANCE (48);
-      if (lookahead == '\\')
-        SKIP (6)
-      if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ')
-        SKIP (7)
-      END_STATE ();
-    case 8:
-      if (lookahead == ' ')
-        ADVANCE (13);
-      END_STATE ();
-    case 9:
-      if (lookahead == ' ')
-        ADVANCE (39);
-      END_STATE ();
-    case 10:
-      if (lookahead == ' ')
-        ADVANCE (40);
-      END_STATE ();
-    case 11:
-      if (lookahead == '-')
-        ADVANCE (43);
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (24);
-      END_STATE ();
-    case 12:
-      if (lookahead == '-')
-        ADVANCE (44);
-      END_STATE ();
-    case 13:
-      if (lookahead == 'D')
-        ADVANCE (38);
-      END_STATE ();
-    case 14:
-      if (lookahead == 'N')
-        ADVANCE (30);
-      if (lookahead == '\\')
-        SKIP (2)
-      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
-          || lookahead == ' ')
-        SKIP (14)
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (23);
-      END_STATE ();
-    case 15:
-      if (lookahead == '\\')
-        ADVANCE (63);
-      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
-          || lookahead == ' ')
-        ADVANCE (65);
-      if (lookahead != 0 && lookahead != '"')
-        ADVANCE (66);
-      END_STATE ();
-    case 16:
-      if (lookahead == '\\')
-        SKIP (4)
-      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
-          || lookahead == ' ')
-        SKIP (16)
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (62);
-      END_STATE ();
-    case 17:
-      if (lookahead == 'a')
-        ADVANCE (36);
-      END_STATE ();
-    case 18:
-      if (lookahead == 'c')
-        ADVANCE (26);
-      END_STATE ();
-    case 19:
-      if (lookahead == 'c')
-        ADVANCE (20);
-      END_STATE ();
-    case 20:
-      if (lookahead == 'h')
-        ADVANCE (51);
-      END_STATE ();
-    case 21:
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (11);
-      END_STATE ();
-    case 22:
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (21);
-      END_STATE ();
-    case 23:
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (22);
-      END_STATE ();
-    case 24:
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (24);
-      END_STATE ();
-    case 25:
-      if (lookahead == 'i')
-        ADVANCE (32);
-      END_STATE ();
-    case 26:
-      if (lookahead == 'k')
-        ADVANCE (49);
-      END_STATE ();
-    case 27:
-      if (lookahead == 'l')
-        ADVANCE (55);
-      END_STATE ();
-    case 28:
-      if (lookahead == 'm')
-        ADVANCE (71);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (28);
-      END_STATE ();
-    case 29:
-      if (lookahead == 'n')
-        ADVANCE (69);
-      END_STATE ();
-    case 30:
-      if (lookahead == 'o')
-        ADVANCE (8);
-      END_STATE ();
-    case 31:
-      if (lookahead == 'o')
-        ADVANCE (33);
-      END_STATE ();
-    case 32:
-      if (lookahead == 'o')
-        ADVANCE (29);
-      END_STATE ();
-    case 33:
-      if (lookahead == 'p')
-        ADVANCE (53);
-      END_STATE ();
-    case 34:
-      if (lookahead == 'r')
-        ADVANCE (17);
-      END_STATE ();
-    case 35:
-      if (lookahead == 's')
-        ADVANCE (70);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (35);
-      END_STATE ();
-    case 36:
-      if (lookahead == 't')
-        ADVANCE (25);
-      END_STATE ();
-    case 37:
-      if (lookahead == 't')
-        ADVANCE (19);
-      END_STATE ();
-    case 38:
-      if (lookahead == 'u')
-        ADVANCE (34);
-      END_STATE ();
-    case 39:
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (28);
-      END_STATE ();
-    case 40:
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (35);
-      END_STATE ();
-    case 41:
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (12);
-      END_STATE ();
-    case 42:
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (67);
-      END_STATE ();
-    case 43:
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (41);
-      END_STATE ();
-    case 44:
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (42);
-      END_STATE ();
-    case 45:
-      if (eof)
-        ADVANCE (47);
-      if (lookahead == '\n')
-        SKIP (0)
-      END_STATE ();
-    case 46:
-      if (eof)
-        ADVANCE (47);
-      if (lookahead == '\n')
-        SKIP (0)
-      if (lookahead == '\r')
-        SKIP (45)
-      END_STATE ();
-    case 47:
-      ACCEPT_TOKEN (ts_builtin_sym_end);
-      END_STATE ();
-    case 48:
-      ACCEPT_TOKEN (anon_sym_LF);
-      if (lookahead == '\n')
-        ADVANCE (48);
-      END_STATE ();
-    case 49:
-      ACCEPT_TOKEN (anon_sym_pick);
-      END_STATE ();
-    case 50:
-      ACCEPT_TOKEN (anon_sym_p);
-      if (lookahead == 'i')
-        ADVANCE (18);
-      END_STATE ();
-    case 51:
-      ACCEPT_TOKEN (anon_sym_watch);
-      END_STATE ();
-    case 52:
-      ACCEPT_TOKEN (anon_sym_w);
-      if (lookahead == 'a')
-        ADVANCE (37);
-      END_STATE ();
-    case 53:
-      ACCEPT_TOKEN (anon_sym_drop);
-      END_STATE ();
-    case 54:
-      ACCEPT_TOKEN (anon_sym_d);
-      if (lookahead == 'r')
-        ADVANCE (31);
-      END_STATE ();
-    case 55:
-      ACCEPT_TOKEN (anon_sym_url);
-      END_STATE ();
-    case 56:
-      ACCEPT_TOKEN (anon_sym_u);
-      if (lookahead == 'r')
-        ADVANCE (27);
-      END_STATE ();
-    case 57:
-      ACCEPT_TOKEN (sym_id);
-      if (lookahead == '-')
-        ADVANCE (43);
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (61);
-      END_STATE ();
-    case 58:
-      ACCEPT_TOKEN (sym_id);
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (57);
-      END_STATE ();
-    case 59:
-      ACCEPT_TOKEN (sym_id);
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (58);
-      END_STATE ();
-    case 60:
-      ACCEPT_TOKEN (sym_id);
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (59);
-      END_STATE ();
-    case 61:
-      ACCEPT_TOKEN (sym_id);
-      if (lookahead == 'h')
-        ADVANCE (9);
-      if (lookahead == 'm')
-        ADVANCE (10);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (61);
-      END_STATE ();
-    case 62:
-      ACCEPT_TOKEN (sym_id);
-      if (('0' <= lookahead && lookahead <= '9'))
-        ADVANCE (62);
-      END_STATE ();
-    case 63:
-      ACCEPT_TOKEN (aux_sym_title_token1);
-      if (lookahead == '\n')
-        ADVANCE (65);
-      if (lookahead == '\r')
-        ADVANCE (64);
-      if (lookahead != 0 && lookahead != '"')
-        ADVANCE (66);
-      END_STATE ();
-    case 64:
-      ACCEPT_TOKEN (aux_sym_title_token1);
-      if (lookahead == '\n')
-        ADVANCE (65);
-      if (lookahead != 0 && lookahead != '"')
-        ADVANCE (66);
-      END_STATE ();
-    case 65:
-      ACCEPT_TOKEN (aux_sym_title_token1);
-      if (lookahead == '\\')
-        ADVANCE (63);
-      if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r'
-          || lookahead == ' ')
-        ADVANCE (65);
-      if (lookahead != 0 && lookahead != '"')
-        ADVANCE (66);
-      END_STATE ();
-    case 66:
-      ACCEPT_TOKEN (aux_sym_title_token1);
-      if (lookahead != 0 && lookahead != '"')
-        ADVANCE (66);
-      END_STATE ();
-    case 67:
-      ACCEPT_TOKEN (aux_sym_date_token1);
-      END_STATE ();
-    case 68:
-      ACCEPT_TOKEN (anon_sym_LBRACK);
-      END_STATE ();
-    case 69:
-      ACCEPT_TOKEN (anon_sym_NoDuration);
-      END_STATE ();
-    case 70:
-      ACCEPT_TOKEN (aux_sym_duration_token1);
-      END_STATE ();
-    case 71:
-      ACCEPT_TOKEN (aux_sym_duration_token2);
-      END_STATE ();
-    case 72:
-      ACCEPT_TOKEN (anon_sym_RBRACK);
-      END_STATE ();
-    case 73:
-      ACCEPT_TOKEN (sym_comment);
-      if (lookahead != 0 && lookahead != '\n')
-        ADVANCE (73);
-      END_STATE ();
-    case 74:
-      ACCEPT_TOKEN (sym_quote);
-      END_STATE ();
-    default:
-      return false;
-    }
-}
-
-static const TSLexMode ts_lex_modes[STATE_COUNT] = {
-  [0] = { .lex_state = 0 },   [1] = { .lex_state = 0 },
-  [2] = { .lex_state = 0 },   [3] = { .lex_state = 0 },
-  [4] = { .lex_state = 0 },   [5] = { .lex_state = 0 },
-  [6] = { .lex_state = 0 },   [7] = { .lex_state = 0 },
-  [8] = { .lex_state = 14 },  [9] = { .lex_state = 0 },
-  [10] = { .lex_state = 0 },  [11] = { .lex_state = 0 },
-  [12] = { .lex_state = 0 },  [13] = { .lex_state = 0 },
-  [14] = { .lex_state = 0 },  [15] = { .lex_state = 0 },
-  [16] = { .lex_state = 15 }, [17] = { .lex_state = 0 },
-  [18] = { .lex_state = 0 },  [19] = { .lex_state = 16 },
-  [20] = { .lex_state = 0 },  [21] = { .lex_state = 7 },
-  [22] = { .lex_state = 15 }, [23] = { .lex_state = 14 },
-  [24] = { .lex_state = 0 },  [25] = { .lex_state = 15 },
-  [26] = { .lex_state = 16 }, [27] = { .lex_state = 0 },
-  [28] = { .lex_state = 7 },  [29] = { .lex_state = 0 },
-  [30] = { .lex_state = 0 },
-};
-
-static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
-  [0] = {
-    [ts_builtin_sym_end] = ACTIONS(1),
-    [anon_sym_pick] = ACTIONS(1),
-    [anon_sym_p] = ACTIONS(1),
-    [anon_sym_watch] = ACTIONS(1),
-    [anon_sym_w] = ACTIONS(1),
-    [anon_sym_drop] = ACTIONS(1),
-    [anon_sym_d] = ACTIONS(1),
-    [anon_sym_url] = ACTIONS(1),
-    [anon_sym_u] = ACTIONS(1),
-    [sym_id] = ACTIONS(1),
-    [aux_sym_date_token1] = ACTIONS(1),
-    [anon_sym_LBRACK] = ACTIONS(1),
-    [anon_sym_NoDuration] = ACTIONS(1),
-    [aux_sym_duration_token1] = ACTIONS(1),
-    [aux_sym_duration_token2] = ACTIONS(1),
-    [anon_sym_RBRACK] = ACTIONS(1),
-    [sym_comment] = ACTIONS(1),
-    [sym_quote] = ACTIONS(1),
-  },
-  [1] = {
-    [sym_source_file] = STATE(29),
-    [sym_line] = STATE(2),
-    [sym_command] = STATE(26),
-    [aux_sym_source_file_repeat1] = STATE(2),
-    [ts_builtin_sym_end] = ACTIONS(3),
-    [anon_sym_pick] = ACTIONS(5),
-    [anon_sym_p] = ACTIONS(7),
-    [anon_sym_watch] = ACTIONS(5),
-    [anon_sym_w] = ACTIONS(7),
-    [anon_sym_drop] = ACTIONS(5),
-    [anon_sym_d] = ACTIONS(7),
-    [anon_sym_url] = ACTIONS(5),
-    [anon_sym_u] = ACTIONS(7),
-    [sym_comment] = ACTIONS(9),
-  },
-};
-
-static const uint16_t ts_small_parse_table[] = {
-  [0] = 6,
-  ACTIONS (11),
-  1,
-  ts_builtin_sym_end,
-  ACTIONS (13),
-  1,
-  sym_comment,
-  STATE (26),
-  1,
-  sym_command,
-  STATE (3),
-  2,
-  sym_line,
-  aux_sym_source_file_repeat1,
-  ACTIONS (5),
-  4,
-  anon_sym_pick,
-  anon_sym_watch,
-  anon_sym_drop,
-  anon_sym_url,
-  ACTIONS (7),
-  4,
-  anon_sym_p,
-  anon_sym_w,
-  anon_sym_d,
-  anon_sym_u,
-  [26] = 6,
-  ACTIONS (15),
-  1,
-  ts_builtin_sym_end,
-  ACTIONS (23),
-  1,
-  sym_comment,
-  STATE (26),
-  1,
-  sym_command,
-  STATE (3),
-  2,
-  sym_line,
-  aux_sym_source_file_repeat1,
-  ACTIONS (17),
-  4,
-  anon_sym_pick,
-  anon_sym_watch,
-  anon_sym_drop,
-  anon_sym_url,
-  ACTIONS (20),
-  4,
-  anon_sym_p,
-  anon_sym_w,
-  anon_sym_d,
-  anon_sym_u,
-  [52] = 2,
-  ACTIONS (28),
-  4,
-  anon_sym_p,
-  anon_sym_w,
-  anon_sym_d,
-  anon_sym_u,
-  ACTIONS (26),
-  6,
-  ts_builtin_sym_end,
-  anon_sym_pick,
-  anon_sym_watch,
-  anon_sym_drop,
-  anon_sym_url,
-  sym_comment,
-  [67] = 3,
-  ACTIONS (30),
-  1,
-  sym_quote,
-  STATE (21),
-  1,
-  sym_url,
-  STATE (22),
-  1,
-  sym__q,
-  [77] = 3,
-  ACTIONS (32),
-  1,
-  sym_quote,
-  STATE (7),
-  1,
-  sym_title,
-  STATE (25),
-  1,
-  sym__q,
-  [87] = 3,
-  ACTIONS (34),
-  1,
-  sym_quote,
-  STATE (9),
-  1,
-  sym_date,
-  STATE (23),
-  1,
-  sym__q,
-  [97] = 1,
-  ACTIONS (36),
-  3,
-  anon_sym_NoDuration,
-  aux_sym_duration_token1,
-  aux_sym_duration_token2,
-  [103] = 3,
-  ACTIONS (38),
-  1,
-  sym_quote,
-  STATE (10),
-  1,
-  sym_author,
-  STATE (16),
-  1,
-  sym__q,
-  [113] = 3,
-  ACTIONS (40),
-  1,
-  sym_quote,
-  STATE (5),
-  1,
-  sym_duration,
-  STATE (18),
-  1,
-  sym__q,
-  [123] = 2,
-  ACTIONS (42),
-  1,
-  sym_quote,
-  STATE (30),
-  1,
-  sym__q,
-  [130] = 2,
-  ACTIONS (44),
-  1,
-  sym_quote,
-  STATE (28),
-  1,
-  sym__q,
-  [137] = 2,
-  ACTIONS (46),
-  1,
-  sym_quote,
-  STATE (24),
-  1,
-  sym__q,
-  [144] = 2,
-  ACTIONS (48),
-  1,
-  sym_quote,
-  STATE (17),
-  1,
-  sym__q,
-  [151] = 2,
-  ACTIONS (50),
-  1,
-  sym_quote,
-  STATE (20),
-  1,
-  sym__q,
-  [158] = 1,
-  ACTIONS (52),
-  1,
-  aux_sym_title_token1,
-  [162] = 1,
-  ACTIONS (54),
-  1,
-  sym_quote,
-  [166] = 1,
-  ACTIONS (56),
-  1,
-  anon_sym_LBRACK,
-  [170] = 1,
-  ACTIONS (58),
-  1,
-  sym_id,
-  [174] = 1,
-  ACTIONS (60),
-  1,
-  sym_quote,
-  [178] = 1,
-  ACTIONS (62),
-  1,
-  anon_sym_LF,
-  [182] = 1,
-  ACTIONS (64),
-  1,
-  aux_sym_title_token1,
-  [186] = 1,
-  ACTIONS (66),
-  1,
-  aux_sym_date_token1,
-  [190] = 1,
-  ACTIONS (68),
-  1,
-  sym_quote,
-  [194] = 1,
-  ACTIONS (70),
-  1,
-  aux_sym_title_token1,
-  [198] = 1,
-  ACTIONS (72),
-  1,
-  sym_id,
-  [202] = 1,
-  ACTIONS (74),
-  1,
-  anon_sym_RBRACK,
-  [206] = 1,
-  ACTIONS (76),
-  1,
-  anon_sym_LF,
-  [210] = 1,
-  ACTIONS (78),
-  1,
-  ts_builtin_sym_end,
-  [214] = 1,
-  ACTIONS (80),
-  1,
-  sym_quote,
-};
-
-static const uint32_t ts_small_parse_table_map[] = {
-  [SMALL_STATE (2)] = 0,    [SMALL_STATE (3)] = 26,   [SMALL_STATE (4)] = 52,
-  [SMALL_STATE (5)] = 67,   [SMALL_STATE (6)] = 77,   [SMALL_STATE (7)] = 87,
-  [SMALL_STATE (8)] = 97,   [SMALL_STATE (9)] = 103,  [SMALL_STATE (10)] = 113,
-  [SMALL_STATE (11)] = 123, [SMALL_STATE (12)] = 130, [SMALL_STATE (13)] = 137,
-  [SMALL_STATE (14)] = 144, [SMALL_STATE (15)] = 151, [SMALL_STATE (16)] = 158,
-  [SMALL_STATE (17)] = 162, [SMALL_STATE (18)] = 166, [SMALL_STATE (19)] = 170,
-  [SMALL_STATE (20)] = 174, [SMALL_STATE (21)] = 178, [SMALL_STATE (22)] = 182,
-  [SMALL_STATE (23)] = 186, [SMALL_STATE (24)] = 190, [SMALL_STATE (25)] = 194,
-  [SMALL_STATE (26)] = 198, [SMALL_STATE (27)] = 202, [SMALL_STATE (28)] = 206,
-  [SMALL_STATE (29)] = 210, [SMALL_STATE (30)] = 214,
-};
-
-static const TSParseActionEntry ts_parse_actions[] = {
-  [0] = { .entry = { .count = 0, .reusable = false } },
-  [1] = { .entry = { .count = 1, .reusable = false } },
-  RECOVER (),
-  [3] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_source_file, 0),
-  [5] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (19),
-  [7] = { .entry = { .count = 1, .reusable = false } },
-  SHIFT (19),
-  [9] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (2),
-  [11] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_source_file, 1),
-  [13] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (3),
-  [15] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (aux_sym_source_file_repeat1, 2),
-  [17] = { .entry = { .count = 2, .reusable = true } },
-  REDUCE (aux_sym_source_file_repeat1, 2),
-  SHIFT_REPEAT (19),
-  [20] = { .entry = { .count = 2, .reusable = false } },
-  REDUCE (aux_sym_source_file_repeat1, 2),
-  SHIFT_REPEAT (19),
-  [23] = { .entry = { .count = 2, .reusable = true } },
-  REDUCE (aux_sym_source_file_repeat1, 2),
-  SHIFT_REPEAT (3),
-  [26] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_line, 8),
-  [28] = { .entry = { .count = 1, .reusable = false } },
-  REDUCE (sym_line, 8),
-  [30] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (22),
-  [32] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (25),
-  [34] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (23),
-  [36] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (27),
-  [38] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (16),
-  [40] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (18),
-  [42] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (30),
-  [44] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (28),
-  [46] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (24),
-  [48] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (17),
-  [50] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (20),
-  [52] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (13),
-  [54] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_title, 3),
-  [56] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (8),
-  [58] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_command, 1),
-  [60] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_date, 3),
-  [62] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (4),
-  [64] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (12),
-  [66] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (15),
-  [68] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_author, 3),
-  [70] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (14),
-  [72] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (6),
-  [74] = { .entry = { .count = 1, .reusable = true } },
-  SHIFT (11),
-  [76] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_url, 3),
-  [78] = { .entry = { .count = 1, .reusable = true } },
-  ACCEPT_INPUT (),
-  [80] = { .entry = { .count = 1, .reusable = true } },
-  REDUCE (sym_duration, 5),
-};
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-#ifdef _WIN32
-#define extern __declspec (dllexport)
-#endif
-
-  extern const TSLanguage *
-  tree_sitter_yts (void)
-  {
-    static const TSLanguage language = {
-      .version = LANGUAGE_VERSION,
-      .symbol_count = SYMBOL_COUNT,
-      .alias_count = ALIAS_COUNT,
-      .token_count = TOKEN_COUNT,
-      .external_token_count = EXTERNAL_TOKEN_COUNT,
-      .state_count = STATE_COUNT,
-      .large_state_count = LARGE_STATE_COUNT,
-      .production_id_count = PRODUCTION_ID_COUNT,
-      .field_count = FIELD_COUNT,
-      .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH,
-      .parse_table = &ts_parse_table[0][0],
-      .small_parse_table = ts_small_parse_table,
-      .small_parse_table_map = ts_small_parse_table_map,
-      .parse_actions = ts_parse_actions,
-      .symbol_names = ts_symbol_names,
-      .symbol_metadata = ts_symbol_metadata,
-      .public_symbol_map = ts_symbol_map,
-      .alias_map = ts_non_terminal_alias_map,
-      .alias_sequences = &ts_alias_sequences[0][0],
-      .lex_modes = ts_lex_modes,
-      .lex_fn = ts_lex,
-      .primary_state_ids = ts_primary_state_ids,
-    };
-    return &language;
-  }
-#ifdef __cplusplus
-}
-#endif
diff --git a/pkgs/sources/tree-sitter-yts/src/tree_sitter/parser.h b/pkgs/sources/tree-sitter-yts/src/tree_sitter/parser.h
deleted file mode 100644
index 972913cf..00000000
--- a/pkgs/sources/tree-sitter-yts/src/tree_sitter/parser.h
+++ /dev/null
@@ -1,241 +0,0 @@
-#ifndef TREE_SITTER_PARSER_H_
-#define TREE_SITTER_PARSER_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-#define ts_builtin_sym_error ((TSSymbol)-1)
-#define ts_builtin_sym_end 0
-#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024
-
-  typedef uint16_t TSStateId;
-
-#ifndef TREE_SITTER_API_H_
-  typedef uint16_t TSSymbol;
-  typedef uint16_t TSFieldId;
-  typedef struct TSLanguage TSLanguage;
-#endif
-
-  typedef struct
-  {
-    TSFieldId field_id;
-    uint8_t child_index;
-    bool inherited;
-  } TSFieldMapEntry;
-
-  typedef struct
-  {
-    uint16_t index;
-    uint16_t length;
-  } TSFieldMapSlice;
-
-  typedef struct
-  {
-    bool visible;
-    bool named;
-    bool supertype;
-  } TSSymbolMetadata;
-
-  typedef struct TSLexer TSLexer;
-
-  struct TSLexer
-  {
-    int32_t lookahead;
-    TSSymbol result_symbol;
-    void (*advance) (TSLexer *, bool);
-    void (*mark_end) (TSLexer *);
-    uint32_t (*get_column) (TSLexer *);
-    bool (*is_at_included_range_start) (const TSLexer *);
-    bool (*eof) (const TSLexer *);
-  };
-
-  typedef enum
-  {
-    TSParseActionTypeShift,
-    TSParseActionTypeReduce,
-    TSParseActionTypeAccept,
-    TSParseActionTypeRecover,
-  } TSParseActionType;
-
-  typedef union
-  {
-    struct
-    {
-      uint8_t type;
-      TSStateId state;
-      bool extra;
-      bool repetition;
-    } shift;
-    struct
-    {
-      uint8_t type;
-      uint8_t child_count;
-      TSSymbol symbol;
-      int16_t dynamic_precedence;
-      uint16_t production_id;
-    } reduce;
-    uint8_t type;
-  } TSParseAction;
-
-  typedef struct
-  {
-    uint16_t lex_state;
-    uint16_t external_lex_state;
-  } TSLexMode;
-
-  typedef union
-  {
-    TSParseAction action;
-    struct
-    {
-      uint8_t count;
-      bool reusable;
-    } entry;
-  } TSParseActionEntry;
-
-  struct TSLanguage
-  {
-    uint32_t version;
-    uint32_t symbol_count;
-    uint32_t alias_count;
-    uint32_t token_count;
-    uint32_t external_token_count;
-    uint32_t state_count;
-    uint32_t large_state_count;
-    uint32_t production_id_count;
-    uint32_t field_count;
-    uint16_t max_alias_sequence_length;
-    const uint16_t *parse_table;
-    const uint16_t *small_parse_table;
-    const uint32_t *small_parse_table_map;
-    const TSParseActionEntry *parse_actions;
-    const char *const *symbol_names;
-    const char *const *field_names;
-    const TSFieldMapSlice *field_map_slices;
-    const TSFieldMapEntry *field_map_entries;
-    const TSSymbolMetadata *symbol_metadata;
-    const TSSymbol *public_symbol_map;
-    const uint16_t *alias_map;
-    const TSSymbol *alias_sequences;
-    const TSLexMode *lex_modes;
-    bool (*lex_fn) (TSLexer *, TSStateId);
-    bool (*keyword_lex_fn) (TSLexer *, TSStateId);
-    TSSymbol keyword_capture_token;
-    struct
-    {
-      const bool *states;
-      const TSSymbol *symbol_map;
-      void *(*create) (void);
-      void (*destroy) (void *);
-      bool (*scan) (void *, TSLexer *, const bool *symbol_whitelist);
-      unsigned (*serialize) (void *, char *);
-      void (*deserialize) (void *, const char *, unsigned);
-    } external_scanner;
-    const TSStateId *primary_state_ids;
-  };
-
-  /*
-   *  Lexer Macros
-   */
-
-#define START_LEXER()                                                         \
-  bool result = false;                                                        \
-  bool skip = false;                                                          \
-  bool eof = false;                                                           \
-  int32_t lookahead;                                                          \
-  goto start;                                                                 \
-  next_state:                                                                 \
-  lexer->advance (lexer, skip);                                               \
-  start:                                                                      \
-  skip = false;                                                               \
-  lookahead = lexer->lookahead;
-
-#define ADVANCE(state_value)                                                  \
-  {                                                                           \
-    state = state_value;                                                      \
-    goto next_state;                                                          \
-  }
-
-#define SKIP(state_value)                                                     \
-  {                                                                           \
-    skip = true;                                                              \
-    state = state_value;                                                      \
-    goto next_state;                                                          \
-  }
-
-#define ACCEPT_TOKEN(symbol_value)                                            \
-  result = true;                                                              \
-  lexer->result_symbol = symbol_value;                                        \
-  lexer->mark_end (lexer);
-
-#define END_STATE() return result;
-
-  /*
-   *  Parse Table Macros
-   */
-
-#define SMALL_STATE(id) id - LARGE_STATE_COUNT
-
-#define STATE(id) id
-
-#define ACTIONS(id) id
-
-#define SHIFT(state_value)                                                    \
-  {                                                                           \
-    {                                                                         \
-      .shift = {.type = TSParseActionTypeShift, .state = state_value }        \
-    }                                                                         \
-  }
-
-#define SHIFT_REPEAT(state_value)                                             \
-  {                                                                           \
-    {                                                                         \
-      .shift                                                                  \
-          = {.type = TSParseActionTypeShift,                                  \
-             .state = state_value,                                            \
-             .repetition = true }                                             \
-    }                                                                         \
-  }
-
-#define SHIFT_EXTRA()                                                         \
-  {                                                                           \
-    {                                                                         \
-      .shift = {.type = TSParseActionTypeShift, .extra = true }               \
-    }                                                                         \
-  }
-
-#define REDUCE(symbol_val, child_count_val, ...)                              \
-  {                                                                           \
-    {                                                                         \
-      .reduce = { .type = TSParseActionTypeReduce,                            \
-                  .symbol = symbol_val,                                       \
-                  .child_count = child_count_val,                             \
-                  __VA_ARGS__ },                                              \
-    }                                                                         \
-  }
-
-#define RECOVER()                                                             \
-  {                                                                           \
-    {                                                                         \
-      .type = TSParseActionTypeRecover                                        \
-    }                                                                         \
-  }
-
-#define ACCEPT_INPUT()                                                        \
-  {                                                                           \
-    {                                                                         \
-      .type = TSParseActionTypeAccept                                         \
-    }                                                                         \
-  }
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // TREE_SITTER_PARSER_H_
diff --git a/pkgs/sources/tree-sitter-yts/treefmt.toml b/pkgs/sources/tree-sitter-yts/treefmt.toml
deleted file mode 100644
index 3d604b40..00000000
--- a/pkgs/sources/tree-sitter-yts/treefmt.toml
+++ /dev/null
@@ -1,35 +0,0 @@
-[formatter.nix]
-command = "nixpkgs-fmt"
-includes = ["*.nix"]
-excludes = ["test/**.nix"]
-
-[formatter.prettier]
-command = "prettier"
-options = ["--write"]
-includes = [
-  "*.css",
-  "*.html",
-  "*.js",
-  "*.json",
-  "*.jsx",
-  "*.md",
-  "*.mdx",
-  "*.scss",
-  "*.ts",
-]
-excludes = ["src/**.json"]
-
-[formatter.rust]
-command = "rustfmt"
-options = ["--edition", "2018"]
-includes = ["*.rs"]
-
-[formatter.c]
-command = "clang-format"
-options = ["-i"]
-includes = ["*.c", "*.cpp", "*.cc", "*.h", "*.hpp"]
-excludes = [
-  "bindings/node/binding.cc",
-  "src/parser.c",
-  "src/tree_sitter/parser.h",
-]
diff --git a/pkgs/sources/update_pkgs.sh b/pkgs/sources/update_pkgs.sh
deleted file mode 100755
index be1573c6..00000000
--- a/pkgs/sources/update_pkgs.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env sh
-
-die() {
-    printf "\033[31;1mError: \033[0m%s" "$1"
-    exit 1
-}
-
-cd "$(dirname "$0")" || die "Bug: run with false dirname ('$0')!"
-
-fd . --type directory --max-depth 1 | while read -r dir; do
-    cd "$dir" || die "Dir '$dir' does not exist"
-
-    if [ -f update.sh ]; then
-        printf "\033[34;1m> \033[0m\033[34;1m%s\033[0m\n" "Running '${dir}update.sh'"
-
-        [ -f flake.nix ] && nix flake update
-
-        direnv allow
-        eval "$(direnv export bash 2>/dev/null)"
-        ./update.sh "$@"
-    fi
-    cd - >/dev/null || die "Bug: Last dir does not exist"
-done
-
-# vim: ft=sh
diff --git a/pkgs/sources/update_vim_plugins/.envrc b/pkgs/sources/update_vim_plugins/.envrc
deleted file mode 100644
index 3550a30f..00000000
--- a/pkgs/sources/update_vim_plugins/.envrc
+++ /dev/null
@@ -1 +0,0 @@
-use flake
diff --git a/pkgs/sources/update_vim_plugins/check-duplicates.sh b/pkgs/sources/update_vim_plugins/check-duplicates.sh
deleted file mode 100755
index 781b8aeb..00000000
--- a/pkgs/sources/update_vim_plugins/check-duplicates.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env bash
-
-plugins="$(grep -E "^  [a-zA-Z-]+ =" ./pkgs/vim-plugins.nix | sed -E 's/^  ([a-zA-Z-]+) =.*$/\1/' | sort)"
-count=$(echo "$plugins" | uniq -d | wc -l)
-
-echo "duplicates count: $count"
-
-if [ "$count" -gt 0 ]; then
-    filtered_plugins=$(echo "$plugins" | uniq -d)
-
-    if [ "$1" == "check-only" ]; then
-        echo "$filtered_plugins"
-        exit 1
-    else
-        known_issues=$(gh issue list --state "open" --label "bot" --json "body" | jq -r ".[].body")
-
-        echo "known_issues: $known_issues"
-
-        # iterate over plugins we found missing and
-        # compare them to all open issues.
-        # We no matching issue was found, we create a new one
-        for f in $filtered_plugins; do # do not add " " here. It would break the plugin
-            found=false
-
-            for k in $known_issues; do
-                if [[ $f == "$k" ]]; then
-                    found=true
-                    break
-                fi
-            done
-
-            # test if matching issue was found
-            if ! $found; then
-                echo "Did not find an issue for $f. Creating a new one ..."
-                gh issue create --title "Detected broken plugin: $f" --label "bot" --body "$f"
-            else
-                echo "Issue for $f already exists"
-            fi
-        done
-    fi
-else
-    echo "No duplicates found"
-fi
diff --git a/pkgs/sources/update_vim_plugins/default.nix b/pkgs/sources/update_vim_plugins/default.nix
deleted file mode 100644
index 7f0b3f0d..00000000
--- a/pkgs/sources/update_vim_plugins/default.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-[
-  (
-    final: prev: {
-      update-vim-plugins = import ./package.nix {
-        inherit
-          (prev)
-          python3
-          # dependencies
-          
-          nix
-          alejandra
-          nix-prefetch-git
-          ;
-      };
-    }
-  )
-]
diff --git a/pkgs/sources/update_vim_plugins/flake.lock b/pkgs/sources/update_vim_plugins/flake.lock
deleted file mode 100644
index 50494465..00000000
--- a/pkgs/sources/update_vim_plugins/flake.lock
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "nodes": {
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1710146030,
-        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "nixpkgs": {
-      "locked": {
-        "lastModified": 1715087517,
-        "narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "b211b392b8486ee79df6cdfb1157ad2133427a29",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "root": {
-      "inputs": {
-        "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs"
-      }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    }
-  },
-  "root": "root",
-  "version": 7
-}
diff --git a/pkgs/sources/update_vim_plugins/flake.nix b/pkgs/sources/update_vim_plugins/flake.nix
deleted file mode 100644
index ef440af0..00000000
--- a/pkgs/sources/update_vim_plugins/flake.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  description = "update_vim_plugins";
-
-  inputs = {
-    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-
-    flake-utils.url = "github:numtide/flake-utils";
-  };
-
-  outputs = {
-    self,
-    nixpkgs,
-    flake-utils,
-  }: (flake-utils.lib.eachDefaultSystem (system: let
-    pkgs = nixpkgs.legacyPackages.${system};
-  in {
-    devShells.default = pkgs.mkShell {
-      packages = [
-        pkgs.python3
-        pkgs.poetry
-      ];
-    };
-  }));
-}
diff --git a/pkgs/sources/update_vim_plugins/package.nix b/pkgs/sources/update_vim_plugins/package.nix
deleted file mode 100644
index e74a29b1..00000000
--- a/pkgs/sources/update_vim_plugins/package.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  python3,
-  # dependencies
-  nix,
-  alejandra,
-  nix-prefetch-git,
-}:
-python3.pkgs.buildPythonApplication {
-  pname = "update-vim-plugins";
-  version = "0.1.0";
-  format = "pyproject";
-
-  src = ./.;
-
-  # NOTE: The test are not really meant to work <2023-12-09>
-  doCheck = false;
-
-  nativeBuildInputs = [
-    python3.pkgs.poetry-core
-  ];
-  buildInputs = [
-    alejandra
-    nix-prefetch-git
-    nix
-  ];
-  propagatedBuildInputs = with python3.pkgs; [
-    requests
-    cleo
-    jsonpickle
-    dateparser
-  ];
-  nativeCheckInputs = with python3.pkgs; [
-    pytestCheckHook
-
-    pytest-cov
-    pytest-mock
-  ];
-  pytestFlagsArray = [
-    "--cov"
-    "update_vim_plugins"
-    "--cov-report"
-    "term-missing:skip-covered"
-    "--cov-fail-under"
-    "50"
-    "update_vim_plugins/tests"
-  ];
-}
diff --git a/pkgs/sources/update_vim_plugins/poetry.lock b/pkgs/sources/update_vim_plugins/poetry.lock
deleted file mode 100644
index f4764b42..00000000
--- a/pkgs/sources/update_vim_plugins/poetry.lock
+++ /dev/null
@@ -1,680 +0,0 @@
-# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
-
-[[package]]
-name = "certifi"
-version = "2024.2.2"
-description = "Python package for providing Mozilla's CA Bundle."
-optional = false
-python-versions = ">=3.6"
-files = [
-    {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
-    {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
-]
-
-[[package]]
-name = "charset-normalizer"
-version = "3.3.2"
-description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
-optional = false
-python-versions = ">=3.7.0"
-files = [
-    {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
-    {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
-]
-
-[[package]]
-name = "cleo"
-version = "2.1.0"
-description = "Cleo allows you to create beautiful and testable command-line interfaces."
-optional = false
-python-versions = ">=3.7,<4.0"
-files = [
-    {file = "cleo-2.1.0-py3-none-any.whl", hash = "sha256:4a31bd4dd45695a64ee3c4758f583f134267c2bc518d8ae9a29cf237d009b07e"},
-    {file = "cleo-2.1.0.tar.gz", hash = "sha256:0b2c880b5d13660a7ea651001fb4acb527696c01f15c9ee650f377aa543fd523"},
-]
-
-[package.dependencies]
-crashtest = ">=0.4.1,<0.5.0"
-rapidfuzz = ">=3.0.0,<4.0.0"
-
-[[package]]
-name = "colorama"
-version = "0.4.6"
-description = "Cross-platform colored terminal text."
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
-files = [
-    {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
-    {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
-]
-
-[[package]]
-name = "coverage"
-version = "7.5.1"
-description = "Code coverage measurement for Python"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "coverage-7.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e"},
-    {file = "coverage-7.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f"},
-    {file = "coverage-7.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a"},
-    {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35"},
-    {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e"},
-    {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223"},
-    {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e"},
-    {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146"},
-    {file = "coverage-7.5.1-cp310-cp310-win32.whl", hash = "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228"},
-    {file = "coverage-7.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8"},
-    {file = "coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428"},
-    {file = "coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746"},
-    {file = "coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3"},
-    {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2"},
-    {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca"},
-    {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8"},
-    {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057"},
-    {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987"},
-    {file = "coverage-7.5.1-cp311-cp311-win32.whl", hash = "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136"},
-    {file = "coverage-7.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd"},
-    {file = "coverage-7.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206"},
-    {file = "coverage-7.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34"},
-    {file = "coverage-7.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d"},
-    {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa"},
-    {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e"},
-    {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572"},
-    {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07"},
-    {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7"},
-    {file = "coverage-7.5.1-cp312-cp312-win32.whl", hash = "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19"},
-    {file = "coverage-7.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596"},
-    {file = "coverage-7.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7"},
-    {file = "coverage-7.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90"},
-    {file = "coverage-7.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e"},
-    {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5"},
-    {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661"},
-    {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8"},
-    {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4"},
-    {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d"},
-    {file = "coverage-7.5.1-cp38-cp38-win32.whl", hash = "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41"},
-    {file = "coverage-7.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de"},
-    {file = "coverage-7.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1"},
-    {file = "coverage-7.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece"},
-    {file = "coverage-7.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26"},
-    {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5"},
-    {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601"},
-    {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be"},
-    {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f"},
-    {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668"},
-    {file = "coverage-7.5.1-cp39-cp39-win32.whl", hash = "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981"},
-    {file = "coverage-7.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f"},
-    {file = "coverage-7.5.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312"},
-    {file = "coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c"},
-]
-
-[package.dependencies]
-tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""}
-
-[package.extras]
-toml = ["tomli"]
-
-[[package]]
-name = "crashtest"
-version = "0.4.1"
-description = "Manage Python errors with ease"
-optional = false
-python-versions = ">=3.7,<4.0"
-files = [
-    {file = "crashtest-0.4.1-py3-none-any.whl", hash = "sha256:8d23eac5fa660409f57472e3851dab7ac18aba459a8d19cbbba86d3d5aecd2a5"},
-    {file = "crashtest-0.4.1.tar.gz", hash = "sha256:80d7b1f316ebfbd429f648076d6275c877ba30ba48979de4191714a75266f0ce"},
-]
-
-[[package]]
-name = "dateparser"
-version = "1.2.0"
-description = "Date parsing library designed to parse dates from HTML pages"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "dateparser-1.2.0-py2.py3-none-any.whl", hash = "sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830"},
-    {file = "dateparser-1.2.0.tar.gz", hash = "sha256:7975b43a4222283e0ae15be7b4999d08c9a70e2d378ac87385b1ccf2cffbbb30"},
-]
-
-[package.dependencies]
-python-dateutil = "*"
-pytz = "*"
-regex = "<2019.02.19 || >2019.02.19,<2021.8.27 || >2021.8.27"
-tzlocal = "*"
-
-[package.extras]
-calendars = ["convertdate", "hijri-converter"]
-fasttext = ["fasttext"]
-langdetect = ["langdetect"]
-
-[[package]]
-name = "exceptiongroup"
-version = "1.2.1"
-description = "Backport of PEP 654 (exception groups)"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"},
-    {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"},
-]
-
-[package.extras]
-test = ["pytest (>=6)"]
-
-[[package]]
-name = "idna"
-version = "3.7"
-description = "Internationalized Domain Names in Applications (IDNA)"
-optional = false
-python-versions = ">=3.5"
-files = [
-    {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
-    {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
-]
-
-[[package]]
-name = "iniconfig"
-version = "2.0.0"
-description = "brain-dead simple config-ini parsing"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
-    {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
-]
-
-[[package]]
-name = "jsonpickle"
-version = "3.0.4"
-description = "Serialize any Python object to JSON"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "jsonpickle-3.0.4-py3-none-any.whl", hash = "sha256:04ae7567a14269579e3af66b76bda284587458d7e8a204951ca8f71a3309952e"},
-    {file = "jsonpickle-3.0.4.tar.gz", hash = "sha256:a1b14c8d6221cd8f394f2a97e735ea1d7edc927fbd135b26f2f8700657c8c62b"},
-]
-
-[package.extras]
-docs = ["furo", "rst.linker (>=1.9)", "sphinx"]
-packaging = ["build", "twine"]
-testing = ["bson", "ecdsa", "feedparser", "gmpy2", "numpy", "pandas", "pymongo", "pytest (>=3.5,!=3.7.3)", "pytest-benchmark", "pytest-benchmark[histogram]", "pytest-checkdocs (>=1.2.3)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-ruff (>=0.2.1)", "scikit-learn", "scipy", "scipy (>=1.9.3)", "simplejson", "sqlalchemy", "ujson"]
-
-[[package]]
-name = "packaging"
-version = "24.0"
-description = "Core utilities for Python packages"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"},
-    {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"},
-]
-
-[[package]]
-name = "pluggy"
-version = "1.5.0"
-description = "plugin and hook calling mechanisms for python"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
-    {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
-]
-
-[package.extras]
-dev = ["pre-commit", "tox"]
-testing = ["pytest", "pytest-benchmark"]
-
-[[package]]
-name = "pytest"
-version = "7.4.4"
-description = "pytest: simple powerful testing with Python"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"},
-    {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"},
-]
-
-[package.dependencies]
-colorama = {version = "*", markers = "sys_platform == \"win32\""}
-exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
-iniconfig = "*"
-packaging = "*"
-pluggy = ">=0.12,<2.0"
-tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
-
-[package.extras]
-testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
-
-[[package]]
-name = "pytest-cov"
-version = "4.1.0"
-description = "Pytest plugin for measuring coverage."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"},
-    {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"},
-]
-
-[package.dependencies]
-coverage = {version = ">=5.2.1", extras = ["toml"]}
-pytest = ">=4.6"
-
-[package.extras]
-testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"]
-
-[[package]]
-name = "pytest-mock"
-version = "3.14.0"
-description = "Thin-wrapper around the mock package for easier use with pytest"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"},
-    {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"},
-]
-
-[package.dependencies]
-pytest = ">=6.2.5"
-
-[package.extras]
-dev = ["pre-commit", "pytest-asyncio", "tox"]
-
-[[package]]
-name = "python-dateutil"
-version = "2.9.0.post0"
-description = "Extensions to the standard Python datetime module"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-files = [
-    {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
-    {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
-]
-
-[package.dependencies]
-six = ">=1.5"
-
-[[package]]
-name = "pytz"
-version = "2024.1"
-description = "World timezone definitions, modern and historical"
-optional = false
-python-versions = "*"
-files = [
-    {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
-    {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
-]
-
-[[package]]
-name = "rapidfuzz"
-version = "3.9.0"
-description = "rapid fuzzy string matching"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "rapidfuzz-3.9.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bd375c4830fee11d502dd93ecadef63c137ae88e1aaa29cc15031fa66d1e0abb"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:55e2c5076f38fc1dbaacb95fa026a3e409eee6ea5ac4016d44fb30e4cad42b20"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:488f74126904db6b1bea545c2f3567ea882099f4c13f46012fe8f4b990c683df"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3f2d1ea7cd57dfcd34821e38b4924c80a31bcf8067201b1ab07386996a9faee"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b11e602987bcb4ea22b44178851f27406fca59b0836298d0beb009b504dba266"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3083512e9bf6ed2bb3d25883922974f55e21ae7f8e9f4e298634691ae1aee583"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b33c6d4b3a1190bc0b6c158c3981535f9434e8ed9ffa40cf5586d66c1819fb4b"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dcb95fde22f98e6d0480db8d6038c45fe2d18a338690e6f9bba9b82323f3469"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:08d8b49b3a4fb8572e480e73fcddc750da9cbb8696752ee12cca4bf8c8220d52"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e721842e6b601ebbeb8cc5e12c75bbdd1d9e9561ea932f2f844c418c31256e82"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7988363b3a415c5194ce1a68d380629247f8713e669ad81db7548eb156c4f365"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2d267d4c982ab7d177e994ab1f31b98ff3814f6791b90d35dda38307b9e7c989"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0bb28ab5300cf974c7eb68ea21125c493e74b35b1129e629533468b2064ae0a2"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-win32.whl", hash = "sha256:1b1f74997b6d94d66375479fa55f70b1c18e4d865d7afcd13f0785bfd40a9d3c"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:c56d2efdfaa1c642029f3a7a5bb76085c5531f7a530777be98232d2ce142553c"},
-    {file = "rapidfuzz-3.9.0-cp310-cp310-win_arm64.whl", hash = "sha256:6a83128d505cac76ea560bb9afcb3f6986e14e50a6f467db9a31faef4bd9b347"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e2218d62ab63f3c5ad48eced898854d0c2c327a48f0fb02e2288d7e5332a22c8"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:36bf35df2d6c7d5820da20a6720aee34f67c15cd2daf8cf92e8141995c640c25"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:905b01a9b633394ff6bb5ebb1c5fd660e0e180c03fcf9d90199cc6ed74b87cf7"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33cfabcb7fd994938a6a08e641613ce5fe46757832edc789c6a5602e7933d6fa"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1179dcd3d150a67b8a678cd9c84f3baff7413ff13c9e8fe85e52a16c97e24c9b"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47d97e28c42f1efb7781993b67c749223f198f6653ef177a0c8f2b1c516efcaf"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28da953eb2ef9ad527e536022da7afff6ace7126cdd6f3e21ac20f8762e76d2c"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:182b4e11de928fb4834e8f8b5ecd971b5b10a86fabe8636ab65d3a9b7e0e9ca7"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c74f2da334ce597f31670db574766ddeaee5d9430c2c00e28d0fbb7f76172036"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:014ac55b03f4074f903248ded181f3000f4cdbd134e6155cbf643f0eceb4f70f"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c4ef34b2ddbf448f1d644b4ec6475df8bbe5b9d0fee173ff2e87322a151663bd"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fc02157f521af15143fae88f92ef3ddcc4e0cff05c40153a9549dc0fbdb9adb3"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ff08081c49b18ba253a99e6a47f492e6ee8019e19bbb6ddc3ed360cd3ecb2f62"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-win32.whl", hash = "sha256:b9bf90b3d96925cbf8ef44e5ee3cf39ef0c422f12d40f7a497e91febec546650"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:d5d5684f54d82d9b0cf0b2701e55a630527a9c3dd5ddcf7a2e726a475ac238f2"},
-    {file = "rapidfuzz-3.9.0-cp311-cp311-win_arm64.whl", hash = "sha256:a2de844e0e971d7bd8aa41284627dbeacc90e750b90acfb016836553c7a63192"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f81fe99a69ac8ee3fd905e70c62f3af033901aeb60b69317d1d43d547b46e510"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:633b9d03fc04abc585c197104b1d0af04b1f1db1abc99f674d871224cd15557a"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab872cb57ae97c54ba7c71a9e3c9552beb57cb907c789b726895576d1ea9af6f"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdd8c15c3a14e409507fdf0c0434ec481d85c6cbeec8bdcd342a8cd1eda03825"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2444d8155d9846f206e2079bb355b85f365d9457480b0d71677a112d0a7f7128"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f83bd3d01f04061c3660742dc85143a89d49fd23eb31eccbf60ad56c4b955617"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ca799f882364e69d0872619afb19efa3652b7133c18352e4a3d86a324fb2bb1"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6993d361f28b9ef5f0fa4e79b8541c2f3507be7471b9f9cb403a255e123b31e1"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:170822a1b1719f02b58e3dce194c8ad7d4c5b39be38c0fdec603bd19c6f9cf81"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0e86e39c1c1a0816ceda836e6f7bd3743b930cbc51a43a81bb433b552f203f25"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:731269812ea837e0b93d913648e404736407408e33a00b75741e8f27c590caa2"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:8e5ff882d3a3d081157ceba7e0ebc7fac775f95b08cbb143accd4cece6043819"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2003071aa633477a01509890c895f9ef56cf3f2eaa72c7ec0b567f743c1abcba"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-win32.whl", hash = "sha256:13857f9070600ea1f940749f123b02d0b027afbaa45e72186df0f278915761d0"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:134b7098ac109834eeea81424b6822f33c4c52bf80b81508295611e7a21be12a"},
-    {file = "rapidfuzz-3.9.0-cp312-cp312-win_arm64.whl", hash = "sha256:2a96209f046fe328be30fc43f06e3d4b91f0d5b74e9dcd627dbfd65890fa4a5e"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:544b0bf9d17170720809918e9ccd0d482d4a3a6eca35630d8e1459f737f71755"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d536f8beb8dd82d6efb20fe9f82c2cfab9ffa0384b5d184327e393a4edde91d"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:30f7609da871510583f87484a10820b26555a473a90ab356cdda2f3b4456256c"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f4a2468432a1db491af6f547fad8f6d55fa03e57265c2f20e5eaceb68c7907e"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a7ec4676242c8a430509cff42ce98bca2fbe30188a63d0f60fdcbfd7e84970"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dcb523243e988c849cf81220164ec3bbed378a699e595a8914fffe80596dc49f"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4eea3bf72c4fe68e957526ffd6bcbb403a21baa6b3344aaae2d3252313df6199"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4514980a5d204c076dd5b756960f6b1b7598f030009456e6109d76c4c331d03c"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9a06a99f1335fe43464d7121bc6540de7cd9c9475ac2025babb373fe7f27846b"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6c1ed63345d1581c39d4446b1a8c8f550709656ce2a3c88c47850b258167f3c2"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:cd2e6e97daf17ebb3254285cf8dd86c60d56d6cf35c67f0f9a557ef26bd66290"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9bc0f7e6256a9c668482c41c8a3de5d0aa12e8ca346dcc427b97c7edb82cba48"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7c09f4e87e82a164c9db769474bc61f8c8b677f2aeb0234b8abac73d2ecf9799"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-win32.whl", hash = "sha256:e65b8f7921bf60cbb207c132842a6b45eefef48c4c3b510eb16087d6c08c70af"},
-    {file = "rapidfuzz-3.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9d6478957fb35c7844ad08f2442b62ba76c1857a56370781a707eefa4f4981e1"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:65d9250a4b0bf86320097306084bc3ca479c8f5491927c170d018787793ebe95"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47b7c0840afa724db3b1a070bc6ed5beab73b4e659b1d395023617fc51bf68a2"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3a16c48c6df8fb633efbbdea744361025d01d79bca988f884a620e63e782fe5b"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48105991ff6e4a51c7f754df500baa070270ed3d41784ee0d097549bc9fcb16d"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a7f273906b3c7cc6d63a76e088200805947aa0bc1ada42c6a0e582e19c390d7"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c396562d304e974b4b0d5cd3afc4f92c113ea46a36e6bc62e45333d6aa8837e"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68da1b70458fea5290ec9a169fcffe0c17ff7e5bb3c3257e63d7021a50601a8e"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c5b8f9a7b177af6ce7c6ad5b95588b4b73e37917711aafa33b2e79ee80fe709"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3c42a238bf9dd48f4ccec4c6934ac718225b00bb3a438a008c219e7ccb3894c7"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a365886c42177b2beab475a50ba311b59b04f233ceaebc4c341f6f91a86a78e2"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ce897b5dafb7fb7587a95fe4d449c1ea0b6d9ac4462fbafefdbbeef6eee4cf6a"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:413ac49bae291d7e226a5c9be65c71b2630b3346bce39268d02cb3290232e4b7"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8982fc3bd49d55a91569fc8a3feba0de4cef0b391ff9091be546e9df075b81"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-win32.whl", hash = "sha256:3904d0084ab51f82e9f353031554965524f535522a48ec75c30b223eb5a0a488"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:3733aede16ea112728ffeafeb29ccc62e095ed8ec816822fa2a82e92e2c08696"},
-    {file = "rapidfuzz-3.9.0-cp39-cp39-win_arm64.whl", hash = "sha256:fc4e26f592b51f97acf0a3f8dfed95e4d830c6a8fbf359361035df836381ab81"},
-    {file = "rapidfuzz-3.9.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e33362e98c7899b5f60dcb06ada00acd8673ce0d59aefe9a542701251fd00423"},
-    {file = "rapidfuzz-3.9.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb67cf43ad83cb886cbbbff4df7dcaad7aedf94d64fca31aea0da7d26684283c"},
-    {file = "rapidfuzz-3.9.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e2e106cc66453bb80d2ad9c0044f8287415676df5c8036d737d05d4b9cdbf8e"},
-    {file = "rapidfuzz-3.9.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1256915f7e7a5cf2c151c9ac44834b37f9bd1c97e8dec6f936884f01b9dfc7d"},
-    {file = "rapidfuzz-3.9.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:ae643220584518cbff8bf2974a0494d3e250763af816b73326a512c86ae782ce"},
-    {file = "rapidfuzz-3.9.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:491274080742110427f38a6085bb12dffcaff1eef12dccf9e8758398c7e3957e"},
-    {file = "rapidfuzz-3.9.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bc5559b9b94326922c096b30ae2d8e5b40b2e9c2c100c2cc396ad91bcb84d30"},
-    {file = "rapidfuzz-3.9.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:849160dc0f128acb343af514ca827278005c1d00148d025e4035e034fc2d8c7f"},
-    {file = "rapidfuzz-3.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:623883fb78e692d54ed7c43b09beec52c6685f10a45a7518128e25746667403b"},
-    {file = "rapidfuzz-3.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d20ab9abc7e19767f1951772a6ab14cb4eddd886493c2da5ee12014596ad253f"},
-    {file = "rapidfuzz-3.9.0.tar.gz", hash = "sha256:b182f0fb61f6ac435e416eb7ab330d62efdbf9b63cf0c7fa12d1f57c2eaaf6f3"},
-]
-
-[package.extras]
-full = ["numpy"]
-
-[[package]]
-name = "regex"
-version = "2024.4.28"
-description = "Alternative regular expression module, to replace re."
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "regex-2024.4.28-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd196d056b40af073d95a2879678585f0b74ad35190fac04ca67954c582c6b61"},
-    {file = "regex-2024.4.28-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8bb381f777351bd534462f63e1c6afb10a7caa9fa2a421ae22c26e796fe31b1f"},
-    {file = "regex-2024.4.28-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:47af45b6153522733aa6e92543938e97a70ce0900649ba626cf5aad290b737b6"},
-    {file = "regex-2024.4.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d6a550425cc51c656331af0e2b1651e90eaaa23fb4acde577cf15068e2e20f"},
-    {file = "regex-2024.4.28-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf29304a8011feb58913c382902fde3395957a47645bf848eea695839aa101b7"},
-    {file = "regex-2024.4.28-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:92da587eee39a52c91aebea8b850e4e4f095fe5928d415cb7ed656b3460ae79a"},
-    {file = "regex-2024.4.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6277d426e2f31bdbacb377d17a7475e32b2d7d1f02faaecc48d8e370c6a3ff31"},
-    {file = "regex-2024.4.28-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28e1f28d07220c0f3da0e8fcd5a115bbb53f8b55cecf9bec0c946eb9a059a94c"},
-    {file = "regex-2024.4.28-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aaa179975a64790c1f2701ac562b5eeb733946eeb036b5bcca05c8d928a62f10"},
-    {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6f435946b7bf7a1b438b4e6b149b947c837cb23c704e780c19ba3e6855dbbdd3"},
-    {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:19d6c11bf35a6ad077eb23852827f91c804eeb71ecb85db4ee1386825b9dc4db"},
-    {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:fdae0120cddc839eb8e3c15faa8ad541cc6d906d3eb24d82fb041cfe2807bc1e"},
-    {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e672cf9caaf669053121f1766d659a8813bd547edef6e009205378faf45c67b8"},
-    {file = "regex-2024.4.28-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f57515750d07e14743db55d59759893fdb21d2668f39e549a7d6cad5d70f9fea"},
-    {file = "regex-2024.4.28-cp310-cp310-win32.whl", hash = "sha256:a1409c4eccb6981c7baabc8888d3550df518add6e06fe74fa1d9312c1838652d"},
-    {file = "regex-2024.4.28-cp310-cp310-win_amd64.whl", hash = "sha256:1f687a28640f763f23f8a9801fe9e1b37338bb1ca5d564ddd41619458f1f22d1"},
-    {file = "regex-2024.4.28-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:84077821c85f222362b72fdc44f7a3a13587a013a45cf14534df1cbbdc9a6796"},
-    {file = "regex-2024.4.28-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b45d4503de8f4f3dc02f1d28a9b039e5504a02cc18906cfe744c11def942e9eb"},
-    {file = "regex-2024.4.28-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:457c2cd5a646dd4ed536c92b535d73548fb8e216ebee602aa9f48e068fc393f3"},
-    {file = "regex-2024.4.28-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b51739ddfd013c6f657b55a508de8b9ea78b56d22b236052c3a85a675102dc6"},
-    {file = "regex-2024.4.28-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:459226445c7d7454981c4c0ce0ad1a72e1e751c3e417f305722bbcee6697e06a"},
-    {file = "regex-2024.4.28-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:670fa596984b08a4a769491cbdf22350431970d0112e03d7e4eeaecaafcd0fec"},
-    {file = "regex-2024.4.28-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe00f4fe11c8a521b173e6324d862ee7ee3412bf7107570c9b564fe1119b56fb"},
-    {file = "regex-2024.4.28-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36f392dc7763fe7924575475736bddf9ab9f7a66b920932d0ea50c2ded2f5636"},
-    {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:23a412b7b1a7063f81a742463f38821097b6a37ce1e5b89dd8e871d14dbfd86b"},
-    {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f1d6e4b7b2ae3a6a9df53efbf199e4bfcff0959dbdb5fd9ced34d4407348e39a"},
-    {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:499334ad139557de97cbc4347ee921c0e2b5e9c0f009859e74f3f77918339257"},
-    {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:0940038bec2fe9e26b203d636c44d31dd8766abc1fe66262da6484bd82461ccf"},
-    {file = "regex-2024.4.28-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:66372c2a01782c5fe8e04bff4a2a0121a9897e19223d9eab30c54c50b2ebeb7f"},
-    {file = "regex-2024.4.28-cp311-cp311-win32.whl", hash = "sha256:c77d10ec3c1cf328b2f501ca32583625987ea0f23a0c2a49b37a39ee5c4c4630"},
-    {file = "regex-2024.4.28-cp311-cp311-win_amd64.whl", hash = "sha256:fc0916c4295c64d6890a46e02d4482bb5ccf33bf1a824c0eaa9e83b148291f90"},
-    {file = "regex-2024.4.28-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:08a1749f04fee2811c7617fdd46d2e46d09106fa8f475c884b65c01326eb15c5"},
-    {file = "regex-2024.4.28-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b8eb28995771c087a73338f695a08c9abfdf723d185e57b97f6175c5051ff1ae"},
-    {file = "regex-2024.4.28-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dd7ef715ccb8040954d44cfeff17e6b8e9f79c8019daae2fd30a8806ef5435c0"},
-    {file = "regex-2024.4.28-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb0315a2b26fde4005a7c401707c5352df274460f2f85b209cf6024271373013"},
-    {file = "regex-2024.4.28-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2fc053228a6bd3a17a9b0a3f15c3ab3cf95727b00557e92e1cfe094b88cc662"},
-    {file = "regex-2024.4.28-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fe9739a686dc44733d52d6e4f7b9c77b285e49edf8570754b322bca6b85b4cc"},
-    {file = "regex-2024.4.28-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74fcf77d979364f9b69fcf8200849ca29a374973dc193a7317698aa37d8b01c"},
-    {file = "regex-2024.4.28-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:965fd0cf4694d76f6564896b422724ec7b959ef927a7cb187fc6b3f4e4f59833"},
-    {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2fef0b38c34ae675fcbb1b5db760d40c3fc3612cfa186e9e50df5782cac02bcd"},
-    {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bc365ce25f6c7c5ed70e4bc674f9137f52b7dd6a125037f9132a7be52b8a252f"},
-    {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ac69b394764bb857429b031d29d9604842bc4cbfd964d764b1af1868eeebc4f0"},
-    {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:144a1fc54765f5c5c36d6d4b073299832aa1ec6a746a6452c3ee7b46b3d3b11d"},
-    {file = "regex-2024.4.28-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2630ca4e152c221072fd4a56d4622b5ada876f668ecd24d5ab62544ae6793ed6"},
-    {file = "regex-2024.4.28-cp312-cp312-win32.whl", hash = "sha256:7f3502f03b4da52bbe8ba962621daa846f38489cae5c4a7b5d738f15f6443d17"},
-    {file = "regex-2024.4.28-cp312-cp312-win_amd64.whl", hash = "sha256:0dd3f69098511e71880fb00f5815db9ed0ef62c05775395968299cb400aeab82"},
-    {file = "regex-2024.4.28-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:374f690e1dd0dbdcddea4a5c9bdd97632cf656c69113f7cd6a361f2a67221cb6"},
-    {file = "regex-2024.4.28-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f87ae6b96374db20f180eab083aafe419b194e96e4f282c40191e71980c666"},
-    {file = "regex-2024.4.28-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5dbc1bcc7413eebe5f18196e22804a3be1bfdfc7e2afd415e12c068624d48247"},
-    {file = "regex-2024.4.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f85151ec5a232335f1be022b09fbbe459042ea1951d8a48fef251223fc67eee1"},
-    {file = "regex-2024.4.28-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:57ba112e5530530fd175ed550373eb263db4ca98b5f00694d73b18b9a02e7185"},
-    {file = "regex-2024.4.28-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:224803b74aab56aa7be313f92a8d9911dcade37e5f167db62a738d0c85fdac4b"},
-    {file = "regex-2024.4.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a54a047b607fd2d2d52a05e6ad294602f1e0dec2291152b745870afc47c1397"},
-    {file = "regex-2024.4.28-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a2a512d623f1f2d01d881513af9fc6a7c46e5cfffb7dc50c38ce959f9246c94"},
-    {file = "regex-2024.4.28-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c06bf3f38f0707592898428636cbb75d0a846651b053a1cf748763e3063a6925"},
-    {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1031a5e7b048ee371ab3653aad3030ecfad6ee9ecdc85f0242c57751a05b0ac4"},
-    {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d7a353ebfa7154c871a35caca7bfd8f9e18666829a1dc187115b80e35a29393e"},
-    {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7e76b9cfbf5ced1aca15a0e5b6f229344d9b3123439ffce552b11faab0114a02"},
-    {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5ce479ecc068bc2a74cb98dd8dba99e070d1b2f4a8371a7dfe631f85db70fe6e"},
-    {file = "regex-2024.4.28-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7d77b6f63f806578c604dca209280e4c54f0fa9a8128bb8d2cc5fb6f99da4150"},
-    {file = "regex-2024.4.28-cp38-cp38-win32.whl", hash = "sha256:d84308f097d7a513359757c69707ad339da799e53b7393819ec2ea36bc4beb58"},
-    {file = "regex-2024.4.28-cp38-cp38-win_amd64.whl", hash = "sha256:2cc1b87bba1dd1a898e664a31012725e48af826bf3971e786c53e32e02adae6c"},
-    {file = "regex-2024.4.28-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7413167c507a768eafb5424413c5b2f515c606be5bb4ef8c5dee43925aa5718b"},
-    {file = "regex-2024.4.28-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:108e2dcf0b53a7c4ab8986842a8edcb8ab2e59919a74ff51c296772e8e74d0ae"},
-    {file = "regex-2024.4.28-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f1c5742c31ba7d72f2dedf7968998730664b45e38827637e0f04a2ac7de2f5f1"},
-    {file = "regex-2024.4.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecc6148228c9ae25ce403eade13a0961de1cb016bdb35c6eafd8e7b87ad028b1"},
-    {file = "regex-2024.4.28-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7d893c8cf0e2429b823ef1a1d360a25950ed11f0e2a9df2b5198821832e1947"},
-    {file = "regex-2024.4.28-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4290035b169578ffbbfa50d904d26bec16a94526071ebec3dadbebf67a26b25e"},
-    {file = "regex-2024.4.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44a22ae1cfd82e4ffa2066eb3390777dc79468f866f0625261a93e44cdf6482b"},
-    {file = "regex-2024.4.28-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd24fd140b69f0b0bcc9165c397e9b2e89ecbeda83303abf2a072609f60239e2"},
-    {file = "regex-2024.4.28-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:39fb166d2196413bead229cd64a2ffd6ec78ebab83fff7d2701103cf9f4dfd26"},
-    {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9301cc6db4d83d2c0719f7fcda37229691745168bf6ae849bea2e85fc769175d"},
-    {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c3d389e8d76a49923683123730c33e9553063d9041658f23897f0b396b2386f"},
-    {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:99ef6289b62042500d581170d06e17f5353b111a15aa6b25b05b91c6886df8fc"},
-    {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:b91d529b47798c016d4b4c1d06cc826ac40d196da54f0de3c519f5a297c5076a"},
-    {file = "regex-2024.4.28-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:43548ad74ea50456e1c68d3c67fff3de64c6edb85bcd511d1136f9b5376fc9d1"},
-    {file = "regex-2024.4.28-cp39-cp39-win32.whl", hash = "sha256:05d9b6578a22db7dedb4df81451f360395828b04f4513980b6bd7a1412c679cc"},
-    {file = "regex-2024.4.28-cp39-cp39-win_amd64.whl", hash = "sha256:3986217ec830c2109875be740531feb8ddafe0dfa49767cdcd072ed7e8927962"},
-    {file = "regex-2024.4.28.tar.gz", hash = "sha256:83ab366777ea45d58f72593adf35d36ca911ea8bd838483c1823b883a121b0e4"},
-]
-
-[[package]]
-name = "requests"
-version = "2.31.0"
-description = "Python HTTP for Humans."
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
-    {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
-]
-
-[package.dependencies]
-certifi = ">=2017.4.17"
-charset-normalizer = ">=2,<4"
-idna = ">=2.5,<4"
-urllib3 = ">=1.21.1,<3"
-
-[package.extras]
-socks = ["PySocks (>=1.5.6,!=1.5.7)"]
-use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
-
-[[package]]
-name = "six"
-version = "1.16.0"
-description = "Python 2 and 3 compatibility utilities"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
-files = [
-    {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
-    {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
-]
-
-[[package]]
-name = "tomli"
-version = "2.0.1"
-description = "A lil' TOML parser"
-optional = false
-python-versions = ">=3.7"
-files = [
-    {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
-    {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
-]
-
-[[package]]
-name = "tzdata"
-version = "2024.1"
-description = "Provider of IANA time zone data"
-optional = false
-python-versions = ">=2"
-files = [
-    {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
-    {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
-]
-
-[[package]]
-name = "tzlocal"
-version = "5.2"
-description = "tzinfo object for the local timezone"
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"},
-    {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"},
-]
-
-[package.dependencies]
-tzdata = {version = "*", markers = "platform_system == \"Windows\""}
-
-[package.extras]
-devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"]
-
-[[package]]
-name = "urllib3"
-version = "2.2.1"
-description = "HTTP library with thread-safe connection pooling, file post, and more."
-optional = false
-python-versions = ">=3.8"
-files = [
-    {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
-    {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
-]
-
-[package.extras]
-brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
-h2 = ["h2 (>=4,<5)"]
-socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
-zstd = ["zstandard (>=0.18.0)"]
-
-[metadata]
-lock-version = "2.0"
-python-versions = "^3.10"
-content-hash = "f65cd66387236673e2a5afb3b2a75362c97815cdde592a86712737fb9ca71695"
diff --git a/pkgs/sources/update_vim_plugins/pyproject.toml b/pkgs/sources/update_vim_plugins/pyproject.toml
deleted file mode 100644
index 38caf76d..00000000
--- a/pkgs/sources/update_vim_plugins/pyproject.toml
+++ /dev/null
@@ -1,45 +0,0 @@
-[tool.poetry]
-name = "update_vim_plugins"
-version = "0.1.0"
-description = ""
-authors = ["Your Name <you@example.com>"]
-packages = [{ include = "update_vim_plugins" }]
-
-[tool.poetry.scripts]
-update-vim-plugins = "update_vim_plugins.__main__:main"
-
-[tool.poetry.dependencies]
-python = "^3.10"
-requests = "^2.28.2"
-cleo = "^2.0.1"
-jsonpickle = "*"
-dateparser = "^1.1.8"
-
-[tool.poetry.group.test.dependencies]
-pytest-cov = "^4.0.0"
-pytest = "^7.3.1"
-pytest-mock = "^3.10.0"
-
-[tool.poetry.group.dev]
-optional = true
-
-[tool.poetry.group.dev.dependencies]
-# black = "^23.3.0"
-# ruff-lsp = "^0.0.24"
-# mypy = "^1.2.0"
-# types-requests = "^2.28.11.17"
-# isort = "^5.12.0"
-# ruff = "^0.0.262"
-
-[tool.isort]
-profile = "black"
-
-[tool.black]
-line-length = 120
-
-[tool.ruff]
-line-length = 120
-
-[build-system]
-requires = ["poetry-core"]
-build-backend = "poetry.core.masonry.api"
diff --git a/pkgs/sources/update_vim_plugins/update.sh b/pkgs/sources/update_vim_plugins/update.sh
deleted file mode 100755
index 1bad12a9..00000000
--- a/pkgs/sources/update_vim_plugins/update.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env sh
-
-poetry update --lock
-
-# vim: ft=sh
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/__init__.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/__init__.py
+++ /dev/null
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/__main__.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/__main__.py
deleted file mode 100644
index a8d9e06f..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/__main__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from cleo.application import Application
-
-from .update import UpdateCommand
-from .cleanup import CleanUpCommand
-
-
-def main():
-    application = Application()
-    application.add(UpdateCommand())
-    application.add(CleanUpCommand())
-    application.run()
-
-
-if __name__ == "__main__":
-    main()
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/cleanup.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/cleanup.py
deleted file mode 100644
index fd313ed0..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/cleanup.py
+++ /dev/null
@@ -1,100 +0,0 @@
-from cleo.commands.command import Command
-from cleo.helpers import argument
-
-from .helpers import read_manifest_to_spec, read_blacklist_to_spec, write_manifest_from_spec
-
-
-class CleanUpCommand(Command):
-    name = "cleanup"
-    description = "Clean up manifest"
-    arguments = [argument("plug_dir", description="Path to the plugin directory", optional=False)]
-
-    def handle(self):
-        """Main command function"""
-
-        plug_dir = self.argument("plug_dir")
-        self.line("<comment>Checking manifest file</comment>")
-        # all cleaning up will be done during reading and writing automatically
-        manifest = read_manifest_to_spec(plug_dir)
-        blacklist = read_blacklist_to_spec(plug_dir)
-
-        new_manifest = [spec for spec in manifest if spec not in blacklist]
-
-        new_manifest_filterd = self.filter_renamed(new_manifest)
-
-        write_manifest_from_spec(new_manifest_filterd, plug_dir)
-
-        self.line("<comment>Done</comment>")
-
-    def filter_renamed(self, specs):
-        """Filter specs that define the same plugin (same owner and same repo) but with different properties.
-        This could be a different name, source, or branch
-        """
-
-        error = False
-        for i, p in enumerate(specs):
-            for p2 in specs:
-                same_owner = p.owner.lower() == p2.owner.lower()
-                same_repo = p.repo.lower() == p2.repo.lower()
-                different_specs = p != p2
-                marked_duplicate = p.marked_duplicate or p2.marked_duplicate
-
-                if same_owner and same_repo and different_specs and not marked_duplicate:
-                    self.line("<info>The following lines appear to define the same plugin</info>")
-
-                    p_props_defined = p.branch is not None or p.custom_name is not None
-                    p2_props_defined = p2.branch is not None or p2.custom_name is not None
-                    p_is_lower_case = p.owner == p.owner.lower() and p.name == p.name.lower()
-                    p2_is_lower_case = p2.owner == p2.owner.lower() and p2.name == p2.name.lower()
-
-                    # list of conditions for selecting p
-                    select_p = p_props_defined and not p2_props_defined or p2_is_lower_case and not p_is_lower_case
-                    # list of conditions for selecting p2
-                    select_p2 = p2_props_defined and not p_props_defined or p_is_lower_case and not p2_is_lower_case
-
-                    # one is more defined and is all lower, but the other is not all lower
-                    # (we assume the not all lower case is the correct naming)
-                    error_props_lower = (
-                        p_props_defined and p_is_lower_case and not p2_props_defined and not p2_is_lower_case
-                    )
-                    error_props_lower2 = (
-                        p2_props_defined and p2_is_lower_case and not p_props_defined and not p_is_lower_case
-                    )
-
-                    # both props are defined
-                    error_props = p_props_defined and p2_props_defined
-
-                    # the sources are different
-                    error_source = p.repository_host != p2.repository_host
-
-                    if error_props_lower or error_props_lower2 or error_props or error_source:
-                        self.line(" • <error>Cannot determine which is the correct plugin</error>")
-                        self.line(f" - {p.line}")
-                        self.line(f" - {p2.line}")
-                        error = True
-                        # remove second spec to not encounter the error twice
-                        # this will not be written to the manifest.txt because we set
-                        # the error flag and will exit after the loop
-                        specs.remove(p2)
-                    elif select_p:
-                        self.line(f" - <comment>{p.line}</comment>")
-                        self.line(f" - {p2.line}")
-                        specs.remove(p2)
-                    elif select_p2:
-                        self.line(f" - {p.line}")
-                        self.line(f" - <comment>{p2.line}</comment>")
-                        specs.remove(p)
-                    else:
-                        self.line(" • <error>Logic error in correct spec determination</error>")
-                        self.line(f" - {p.line}")
-                        self.line(f" - {p2.line}")
-                        error = True
-                        # remove second spec to not encounter the error twice
-                        # this will not be written to the manifest.txt because we set
-                        # the error flag and will exit after the loop
-                        specs.remove(p)
-        if error:
-            # exit after all errors have been found
-            exit(1)
-
-        return specs
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/helpers.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/helpers.py
deleted file mode 100644
index 8a28b0e8..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/helpers.py
+++ /dev/null
@@ -1,61 +0,0 @@
-from .spec import PluginSpec
-
-MANIFEST_FILE = "manifest.txt"
-BLACKLIST_FILE = "blacklist.txt"
-PKGS_FILE = "default.nix"
-JSON_FILE = ".plugins.json"
-PLUGINS_LIST_FILE = "plugins.md"
-
-
-def get_const(const: str, plug_dir: str) -> str:
-    out = plug_dir + "/" + const
-    return out
-
-
-def read_manifest(plug_dir: str) -> list[str]:
-    with open(get_const(MANIFEST_FILE, plug_dir), "r") as file:
-        specs = set([spec.strip() for spec in file.readlines()])
-
-    return sorted(specs)
-
-
-def read_manifest_to_spec(plug_dir: str) -> list[PluginSpec]:
-    manifest = read_manifest(plug_dir)
-    specs = [PluginSpec.from_spec(spec.strip()) for spec in manifest]
-
-    return sorted(specs)
-
-
-def read_blacklist(plug_dir: str) -> list[str]:
-    with open(get_const(BLACKLIST_FILE, plug_dir), "r") as file:
-        if len(file.readlines()) == 0:
-            return [""]
-        else:
-            blacklisted_specs = set([spec.strip() for spec in file.readlines()])
-
-    return sorted(blacklisted_specs)
-
-
-def read_blacklist_to_spec(plug_dir: str) -> list[PluginSpec]:
-    blacklist = read_blacklist(plug_dir)
-    specs = [PluginSpec.from_spec(spec.strip()) for spec in blacklist]
-
-    return sorted(specs)
-
-
-def write_manifest(specs: list[str] | set[str], plug_dir: str):
-    """write specs to manifest file. Does some cleaning up"""
-
-    with open(get_const(MANIFEST_FILE, plug_dir), "w") as file:
-        specs = sorted(set(specs), key=lambda x: x.lower())
-        specs = [p for p in specs]
-
-        for s in specs:
-            file.write(f"{s}\n")
-
-
-def write_manifest_from_spec(specs: list[PluginSpec], plug_dir: str):
-    """write specs to manifest file. Does some cleaning up"""
-
-    strings = [f"{spec}" for spec in specs]
-    write_manifest(strings, plug_dir)
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/nix.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/nix.py
deleted file mode 100644
index 66a8df4c..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/nix.py
+++ /dev/null
@@ -1,121 +0,0 @@
-import abc
-import enum
-import json
-import subprocess
-
-
-def nix_prefetch_url(url):
-    """Return the sha256 hash of the given url."""
-    subprocess_output = subprocess.check_output(
-        ["nix-prefetch-url", "--type", "sha256", url],
-        stderr=subprocess.DEVNULL,
-    )
-    sha256 = subprocess_output.decode("utf-8").strip()
-    return sha256
-
-
-def nix_prefetch_git(url):
-    """Return the sha256 hash of the given git url."""
-    subprocess_output = subprocess.check_output(["nix-prefetch-git", url], stderr=subprocess.DEVNULL)
-    sha256 = json.loads(subprocess_output)["sha256"]
-    return sha256
-
-
-class Source(abc.ABC):
-    """Abstract base class for sources."""
-
-    url: str
-    sha256: str
-
-    @abc.abstractmethod
-    def __init__(self, url: str) -> None:
-        """Initialize a Source."""
-
-    @abc.abstractmethod
-    def get_nix_expression(self):
-        """Return the nix expression for this source."""
-
-    def __repr__(self):
-        """Return the representation of this source."""
-        return self.get_nix_expression()
-
-
-class UrlSource(Source):
-    """A source that is a url."""
-
-    def __init__(self, url: str) -> None:
-        """Initialize a UrlSource."""
-        self.url = url
-        self.sha256 = nix_prefetch_url(url)
-
-    def get_nix_expression(self):
-        """Return the nix expression for this source."""
-        return f'fetchurl {{ url = "{self.url}"; sha256 = "{self.sha256}"; }}'
-
-
-class GitSource(Source):
-    """A source that is a git repository."""
-
-    def __init__(self, url: str, rev: str) -> None:
-        """Initialize a GitSource."""
-        self.url = url
-        self.rev = rev
-        self.sha256 = nix_prefetch_git(url)
-
-    def get_nix_expression(self):
-        """Return the nix expression for this source."""
-        return f'fetchgit {{ url = "{self.url}"; rev = "{self.rev}"; sha256 = "{self.sha256}"; }}'
-
-
-class License(enum.Enum):
-    """An enumeration of licenses."""
-
-    AGPL_3_0 = "agpl3Only"
-    APACHE_2_0 = "asf20"
-    BSD_2_CLAUSE = "bsd2"
-    BSD_3_CLAUSE = "bsd3"
-    BSL_1_0 = "bsl1_0"
-    CC0_1_0 = "cc0"
-    EPL_2_0 = "epl20"
-    GPL_2_0 = "gpl2Only"
-    GPL_3_0 = "gpl3Only"
-    ISCLGPL_2_1 = "lgpl21Only"
-    MIT = "mit"
-    MPL_2_0 = "mpl20"
-    UNLUNLICENSE = "unlicense"
-    WTFPL = "wtfpl"
-    UNFREE = "unfree"
-    UNKNOWN = ""
-
-    @classmethod
-    def from_spdx_id(cls, spdx_id: str | None) -> "License":
-        """Return the License from the given spdx_id."""
-        mapping = {
-            "AGPL-3.0": cls.AGPL_3_0,
-            "AGPL-3.0-only": cls.AGPL_3_0,
-            "Apache-2.0": cls.APACHE_2_0,
-            "BSD-2-Clause": cls.BSD_2_CLAUSE,
-            "BSD-3-Clause": cls.BSD_3_CLAUSE,
-            "BSL-1.0": cls.BSL_1_0,
-            "CC0-1.0": cls.CC0_1_0,
-            "EPL-2.0": cls.EPL_2_0,
-            "GPL-2.0": cls.GPL_2_0,
-            "GPL-2.0-only": cls.GPL_2_0,
-            "GPL-3.0": cls.GPL_3_0,
-            "GPL-3.0-only": cls.GPL_3_0,
-            "LGPL-2.1-only": cls.ISCLGPL_2_1,
-            "MIT": cls.MIT,
-            "MPL-2.0": cls.MPL_2_0,
-            "Unlicense": cls.UNLUNLICENSE,
-            "WTFPL": cls.WTFPL,
-        }
-
-        if spdx_id is None:
-            return cls.UNKNOWN
-
-        spdx_id = spdx_id.upper()
-        return mapping.get(spdx_id, cls.UNKNOWN)
-
-    def __str__(self):
-        """Return the string representation of this license."""
-        return self.value
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/plugin.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/plugin.py
deleted file mode 100644
index 8334ad53..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/plugin.py
+++ /dev/null
@@ -1,182 +0,0 @@
-import logging
-import os
-import urllib
-
-import requests
-import jsonpickle
-from datetime import datetime, date
-from dateparser import parse
-
-from .nix import GitSource, License, Source, UrlSource
-from .spec import PluginSpec, RepositoryHost
-
-
-logger = logging.getLogger(__name__)
-
-
-class VimPlugin:
-    """Abstract base class for vim plugins."""
-
-    name: str
-    owner: str
-    repo: str
-    version: date
-    source: Source
-    description: str = "No description"
-    homepage: str
-    license: License
-    source_line: str
-    checked: date = datetime.now().date()
-
-    def to_nix(self):
-        """Return the nix expression for this plugin."""
-        meta = f'with lib; {{ description = "{self.description}"; homepage = "{self.homepage}"; license = with licenses; [ {self.license.value} ]; }}'
-        return f'/* Generated from: {self.source_line} */ {self.name} = buildVimPlugin {{ pname = "{self.name}";  version = "{self.version}"; src = {self.source.get_nix_expression()}; meta = {meta}; }};'
-
-    def to_json(self):
-        """Serizalize the plugin to json"""
-        return jsonpickle.encode(self)
-
-    def to_markdown(self):
-        link = f"[{self.source_line}]({self.homepage})"
-        version = f"{self.version}"
-        package_name = f"{self.name}"
-        checked = f"{self.checked}"
-
-        return f"| {link} | {version} | `{package_name}` | {checked} |"
-
-    def __lt__(self, o: object) -> bool:
-        if not isinstance(o, VimPlugin):
-            return False
-
-        return self.name.lower() < o.name.lower()
-
-    def __repr__(self):
-        """Return the representation of this plugin."""
-        return f"VimPlugin({self.name!r}, {self.version.strftime('%Y-%m-%d')})"
-
-
-def _get_github_token():
-    token = os.environ.get("GITHUB_TOKEN")
-    if token is None:
-        # NOTE: This should never use more than the free api requests <2023-12-09>
-        pass
-        # logger.warning("GITHUB_TOKEN environment variable not set")
-    return token
-
-
-class GitHubPlugin(VimPlugin):
-    def __init__(self, plugin_spec: PluginSpec) -> None:
-        """Initialize a GitHubPlugin."""
-
-        full_name = f"{plugin_spec.owner}/{plugin_spec.repo}"
-        repo_info = self._api_call(f"repos/{full_name}")
-        default_branch = plugin_spec.branch or repo_info["default_branch"]
-        api_callback = self._api_call(f"repos/{full_name}/commits/{default_branch}")
-        latest_commit = api_callback["commit"]
-        sha = api_callback["sha"]
-
-        self.name = plugin_spec.name
-        self.owner = plugin_spec.owner
-        self.version = parse(latest_commit["committer"]["date"]).date()
-        self.source = UrlSource(f"https://github.com/{full_name}/archive/{sha}.tar.gz")
-        self.description = (repo_info.get("description") or "").replace('"', '\\"')
-        self.homepage = repo_info["html_url"]
-        self.license = plugin_spec.license or License.from_spdx_id((repo_info.get("license") or {}).get("spdx_id"))
-        self.source_line = plugin_spec.line
-
-    def _api_call(self, path: str, token: str | None = _get_github_token()):
-        """Call the GitHub API."""
-        url = f"https://api.github.com/{path}"
-        headers = {"Content-Type": "application/json"}
-        if token is not None:
-            headers["Authorization"] = f"token {token}"
-        response = requests.get(url, headers=headers)
-        if response.status_code != 200:
-            raise RuntimeError(f"GitHub API call failed: {response.text}")
-        return response.json()
-
-
-class GitlabPlugin(VimPlugin):
-    def __init__(self, plugin_spec: PluginSpec) -> None:
-        """Initialize a GitlabPlugin."""
-
-        full_name = urllib.parse.quote(f"{plugin_spec.owner}/{plugin_spec.repo}", safe="")
-        repo_info = self._api_call(f"projects/{full_name}")
-        default_branch = plugin_spec.branch or repo_info["default_branch"]
-        api_callback = self._api_call(f"projects/{full_name}/repository/branches/{default_branch}")
-        latest_commit = api_callback["commit"]
-        sha = latest_commit["id"]
-
-        self.name = plugin_spec.name
-        self.owner = plugin_spec.owner
-        self.version = parse(latest_commit["created_at"]).date()
-        self.source = UrlSource(f"https://gitlab.com/api/v4/projects/{full_name}/repository/archive.tar.gz?sha={sha}")
-        self.description = (repo_info.get("description") or "").replace('"', '\\"')
-        self.homepage = repo_info["web_url"]
-        self.license = plugin_spec.license or License.from_spdx_id(repo_info.get("license", {}).get("key"))
-        self.source_line = plugin_spec.line
-
-    def _api_call(self, path: str) -> dict:
-        """Call the Gitlab API."""
-        url = f"https://gitlab.com/api/v4/{path}"
-        response = requests.get(url)
-        if response.status_code != 200:
-            raise RuntimeError(f"Gitlab API call failed: {response.text}")
-        return response.json()
-
-
-def _get_sourcehut_token():
-    token = os.environ.get("SOURCEHUT_TOKEN")
-    if token is None:
-        # NOTE: This should never use more than the free requests <2023-12-09>
-        pass
-        # logger.warning("SOURCEHUT_TOKEN environment variable not set")
-    return token
-
-
-class SourceHutPlugin(VimPlugin):
-    def __init__(self, plugin_spec: PluginSpec) -> None:
-        """Initialize a SourceHutPlugin."""
-
-        repo_info = self._api_call(f"~{plugin_spec.owner}/repos/{plugin_spec.repo}")
-        if plugin_spec.branch is None:
-            commits = self._api_call(f"~{plugin_spec.owner}/repos/{plugin_spec.repo}/log")
-        else:
-            commits = self._api_call(f"~{plugin_spec.owner}/repos/{plugin_spec.repo}/log/{plugin_spec.branch}")
-        latest_commit = commits["results"][0]
-        sha = latest_commit["id"]
-
-        self.name = plugin_spec.name
-        self.owner = plugin_spec.owner
-        self.version = parse(latest_commit["timestamp"]).date()
-        self.description = (repo_info.get("description") or "").replace('"', '\\"')
-        self.homepage = f"https://git.sr.ht/~{plugin_spec.owner}/{plugin_spec.repo}"
-        self.source = GitSource(self.homepage, sha)
-        self.license = plugin_spec.license or License.UNKNOWN  # cannot be determined via API
-        self.source_line = plugin_spec.line
-
-    def _api_call(self, path: str, token: str | None = _get_sourcehut_token()):
-        """Call the SourceHut API."""
-
-        url = f"https://git.sr.ht/api/{path}"
-        headers = {"Content-Type": "application/json"}
-        if token is not None:
-            headers["Authorization"] = f"token {token}"
-        response = requests.get(url, headers=headers)
-        if response.status_code != 200:
-            raise RuntimeError(f"SourceHut API call failed: {response.json()}")
-        return response.json()
-
-
-def plugin_from_spec(plugin_spec: PluginSpec) -> VimPlugin:
-    """Initialize a VimPlugin."""
-
-    if plugin_spec.repository_host == RepositoryHost.GITHUB:
-        return GitHubPlugin(plugin_spec)
-    elif plugin_spec.repository_host == RepositoryHost.GITLAB:
-        return GitlabPlugin(plugin_spec)
-    elif plugin_spec.repository_host == RepositoryHost.SOURCEHUT:
-        return SourceHutPlugin(plugin_spec)
-    else:
-        raise NotImplementedError(f"Unsupported source: {plugin_spec.repository_host}")
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/spec.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/spec.py
deleted file mode 100644
index 0f2fb29c..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/spec.py
+++ /dev/null
@@ -1,143 +0,0 @@
-import enum
-import re
-
-from .nix import License
-
-
-class RepositoryHost(enum.Enum):
-    """A repository host."""
-
-    GITHUB = "github"
-    GITLAB = "gitlab"
-    SOURCEHUT = "sourcehut"
-
-
-class PluginSpec:
-    """A Vim plugin Spec."""
-
-    @classmethod
-    def from_spec(cls, spec):
-        """The spec line must be in the format:
-            [<repository_host>:]<owner>/<repo>[:<branch>][:name].
-
-        repository_host is one of github (default), gitlab, or sourcehut.
-        owner is the repository owner.
-        repo is the repository name.
-        branch is the git branch.
-        name is the name to use for the plugin (default is value of repo).
-        """
-        repository_host = RepositoryHost.GITHUB
-        # gitref = "master"
-
-        repository_host_regex = r"((?P<repository_host>[^:]+):)"
-        owner_regex = r"(?P<owner>[^/:]+)"
-        repo_regex = r"(?P<repo>[^:]+)"
-        branch_regex = r"(:(?P<branch>[^:]+)?)"
-        name_regex = r"(:(?P<name>[^:]+)?)"
-        license_regex = r"(:(?P<license>[^:]+)?)"
-        marked_duplicate_regex = r"(:(?P<duplicate>duplicate))"
-
-        spec_regex = re.compile(
-            f"^{repository_host_regex}?{owner_regex}/{repo_regex}{branch_regex}?{name_regex}?{license_regex}?{marked_duplicate_regex}?$",
-        )
-
-        match = spec_regex.match(spec)
-        if match is None:
-            raise ValueError(f"Invalid spec: {spec}")
-
-        group_dict = match.groupdict()
-
-        repository_host = RepositoryHost(group_dict.get("repository_host") or "github")
-
-        owner = group_dict.get("owner")
-        if owner is None:
-            raise RuntimeError("Could not get owner")
-
-        repo = group_dict.get("repo")
-        if repo is None:
-            raise RuntimeError("Could not get repo")
-
-        branch = group_dict.get("branch")
-        name = group_dict.get("name")
-        license = group_dict.get("license")
-        marked_duplicate = bool(group_dict.get("duplicate"))  # True if 'duplicate', False if None
-
-        line = spec
-
-        return cls(repository_host, owner, repo, line, branch, name, license, marked_duplicate)
-
-    def __init__(
-        self,
-        repository_host: RepositoryHost,
-        owner: str,
-        repo: str,
-        line: str,
-        branch: str | None = None,
-        name: str | None = None,
-        license: str | None = None,
-        marked_duplicate: bool = False,
-    ) -> None:
-        """Initialize a VimPluginSpec."""
-        self.repository_host = repository_host
-        self.owner = owner
-        self.repo = repo
-        self.branch = branch
-        self.custom_name = name
-        self.name = name or repo.replace(".", "-").replace("_", "-")
-        self.license = License(license) if license else None
-        self.line = line
-        self.marked_duplicate = marked_duplicate
-
-    def __str__(self) -> str:
-        """Return a string representation of a VimPluginSpec."""
-        spec = ""
-
-        if self.repository_host != RepositoryHost.GITHUB:
-            spec += f"{self.repository_host.value}:"
-
-        spec += f"{self.owner}/{self.repo}"
-
-        spec += ":"
-        if self.branch is not None:
-            spec += self.branch
-
-        spec += ":"
-        if self.custom_name is not None:
-            spec += self.custom_name
-
-        spec += ":"
-        if self.license is not None:
-            spec += str(self.license)
-
-        spec += ":"
-        if self.marked_duplicate:
-            spec += "duplicate"
-
-        return spec.rstrip(":")
-
-    def __repr__(self):
-        """Return the representation of the specs"""
-        return f"PluginSpec({self.owner}/{self.repo}, {self.name})"
-
-    def to_spec(self):
-        """Return a spec line for a VimPluginSpec."""
-        return str(self)
-
-    def __lt__(self, o: object) -> bool:
-        if not isinstance(o, PluginSpec):
-            return False
-
-        return self.name.lower() < o.name.lower()
-
-    def __eq__(self, o: object) -> bool:
-        """Return True if the two specs are equal."""
-        if not isinstance(o, PluginSpec):
-            return False
-
-        return (
-            self.repository_host == o.repository_host
-            and self.owner == o.owner
-            and self.repo == o.repo
-            and self.branch == o.branch
-            and self.name == o.name
-        )
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/__init__.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/__init__.py
+++ /dev/null
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/fixtures.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/fixtures.py
deleted file mode 100644
index 75dd251a..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/fixtures.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import json
-
-import pytest
-from pytest_mock import MockerFixture
-
-from update_vim_plugins.nix import GitSource, UrlSource
-
-
-@pytest.fixture()
-def url():
-    return "https://example.com"
-
-
-@pytest.fixture()
-def rev():
-    return "1234567890abcdef"
-
-
-@pytest.fixture()
-def sha256():
-    return "sha256-1234567890abcdef"
-
-
-@pytest.fixture()
-def url_source(mocker: MockerFixture, url: str, sha256: str):
-    mocker.patch("subprocess.check_output", return_value=bytes(sha256, "utf-8"))
-    return UrlSource(url)
-
-
-@pytest.fixture()
-def git_source(mocker: MockerFixture, url: str, rev: str, sha256: str):
-    return_value = {
-        "url": url,
-        "rev": rev,
-        "date": "1970-01-01T00:00:00+00:00",
-        "path": "",
-        "sha256": sha256,
-        "fetchLFS": False,
-        "fetchSubmodules": False,
-        "deepClone": False,
-        "leaveDotGit": False,
-    }
-    mocker.patch("subprocess.check_output", return_value=json.dumps(return_value).encode("utf-8"))
-    return GitSource(url, rev)
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_nix.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_nix.py
deleted file mode 100644
index 46e59f76..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_nix.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from update_vim_plugins.nix import GitSource, License, UrlSource
-
-
-def test_url_source(url_source: UrlSource, url: str, sha256: str):
-    assert url_source.url == url
-    assert url_source.sha256 == sha256
-
-
-def test_url_source_nix_expression(url_source: UrlSource, url: str, sha256: str):
-    assert url_source.get_nix_expression() == f'fetchurl {{ url = "{url}"; sha256 = "{sha256}"; }}'
-
-
-def test_git_source(git_source: GitSource, url: str, rev: str, sha256: str):
-    assert git_source.url == url
-    assert git_source.sha256 == sha256
-    assert git_source.rev == rev
-
-
-def test_git_source_nix_expression(git_source: GitSource, url: str, rev: str, sha256: str):
-    assert git_source.get_nix_expression() == f'fetchgit {{ url = "{url}"; rev = "{rev}"; sha256 = "{sha256}"; }}'
-
-
-def test_license_github():
-    github_license = "MIT"
-    license = License.from_spdx_id(github_license)
-    assert license == License.MIT
-
-
-def test_license_gitlab():
-    gitlab_license = "mit"
-    license = License.from_spdx_id(gitlab_license)
-    assert license == License.MIT
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_plugin.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_plugin.py
deleted file mode 100644
index 32377e24..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_plugin.py
+++ /dev/null
@@ -1,144 +0,0 @@
-import json
-from typing import Callable
-
-import pytest
-from pytest_mock import MockFixture
-
-from update_vim_plugins.nix import License, UrlSource
-from update_vim_plugins.plugin import GitHubPlugin, VimPlugin
-from update_vim_plugins.spec import PluginSpec
-
-
-@pytest.fixture()
-def mock_source(sha256: str):
-    class MockSource:
-        def __init__(self, *args, **kwargs):
-            pass
-
-        def get_nix_expression(self):
-            return "src"
-
-    return MockSource()
-
-
-@pytest.fixture()
-def mock_plugin(mock_source):
-    class MockVimPlugin(VimPlugin):
-        def __init__(self):
-            self.name = "test"
-            self.version = "1.0.0"
-            self.source = mock_source
-            self.description = "No description"
-            self.homepage = "https://example.com"
-            self.license = License.UNKNOWN
-
-    return MockVimPlugin()
-
-
-def test_vim_plugin_nix_expression(mock_plugin):
-    assert (
-        mock_plugin.get_nix_expression()
-        == 'test = buildVimPluginFrom2Nix { pname = "test"; version = "1.0.0"; src = src; meta = with lib; { description = "No description"; homepage = "https://example.com"; license = with licenses; [  ]; }; };'
-    )
-
-
-class MockResponse:
-    def __init__(self, status_code: int, content: bytes):
-        self.status_code = status_code
-        self.content = content
-
-    def json(self):
-        return json.loads(self.content)
-
-
-def mock_request_get(repsonses: dict[str, MockResponse]):
-    respones_not_found = MockResponse(404, b'{"message": "Not Found"}')
-
-    def mock_get(url: str, *args, **kwargs):
-        return repsonses.get(url, respones_not_found)
-
-    return mock_get
-
-
-@pytest.fixture()
-def github_commits_response():
-    return MockResponse(
-        200,
-        json.dumps(
-            {
-                "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
-                "commit": {
-                    "committer": {
-                        "date": "2011-04-14T16:00:49Z",
-                    },
-                },
-            }
-        ),
-    )
-
-
-@pytest.fixture()
-def github_get(github_commits_response: MockResponse):
-    repos_response = MockResponse(
-        200,
-        json.dumps(
-            {
-                "html_url": "https://github.com/octocat/Hello-World",
-                "description": "This your first repo!",
-                "fork": False,
-                "default_branch": "master",
-                "license": {
-                    "spdx_id": "MIT",
-                },
-            }
-        ),
-    )
-    responses = {
-        "https://api.github.com/repos/octocat/Hello-World": repos_response,
-        "https://api.github.com/repos/octocat/Hello-World/commits/master": github_commits_response,
-    }
-    return mock_request_get(responses)
-
-
-@pytest.fixture()
-def github_get_no_license(github_commits_response: MockResponse):
-    repos_response = MockResponse(
-        200,
-        json.dumps(
-            {
-                "html_url": "https://github.com/octocat/Hello-World",
-                "description": "This your first repo!",
-                "fork": False,
-                "default_branch": "master",
-            }
-        ),
-    )
-    responses = {
-        "https://api.github.com/repos/octocat/Hello-World": repos_response,
-        "https://api.github.com/repos/octocat/Hello-World/commits/master": github_commits_response,
-    }
-    return mock_request_get(responses)
-
-
-def test_github_plugin(mocker: MockFixture, github_get: Callable, url_source: UrlSource):
-    mocker.patch("requests.get", github_get)
-    url_source = mocker.patch("update_vim_plugins.nix.UrlSource", url_source)
-
-    spec = PluginSpec.from_spec("octocat/Hello-World")
-    plugin = GitHubPlugin(spec)
-
-    assert plugin.name == "Hello-World"
-    assert plugin.version == "2011-04-14"
-    assert plugin.description == "This your first repo!"
-    assert plugin.homepage == "https://github.com/octocat/Hello-World"
-    assert plugin.license == License.MIT
-
-
-def test_github_plugin_no_license(mocker: MockFixture, github_get_no_license: Callable, url_source: UrlSource):
-    mocker.patch("requests.get", github_get_no_license)
-    url_source = mocker.patch("update_vim_plugins.nix.UrlSource", url_source)
-
-    spec = PluginSpec.from_spec("octocat/Hello-World")
-    plugin = GitHubPlugin(spec)
-
-    assert plugin.license == License.UNKNOWN
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_spec.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_spec.py
deleted file mode 100644
index 2b9a1d24..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/tests/test_spec.py
+++ /dev/null
@@ -1,136 +0,0 @@
-import pytest
-
-from update_vim_plugins.spec import PluginSpec, RepositoryHost
-
-
-@pytest.fixture()
-def owner():
-    return "owner"
-
-
-@pytest.fixture()
-def repo():
-    return "repo.nvim"
-
-
-@pytest.fixture()
-def branch():
-    return "main"
-
-
-@pytest.fixture()
-def name():
-    return "repo-nvim"
-
-
-@pytest.fixture()
-def license():
-    return "mit"
-
-
-def test_from_spec_simple(owner: str, repo: str):
-    vim_plugin = PluginSpec.from_spec(f"{owner}/{repo}")
-
-    assert vim_plugin.owner == owner
-    assert vim_plugin.repo == repo
-
-
-def test_from_spec_with_gitref(owner: str, repo: str, branch: str):
-    vim_plugin = PluginSpec.from_spec(f"{owner}/{repo}:{branch}")
-
-    assert vim_plugin.branch == branch
-
-
-def test_from_spec_with_name(owner: str, repo: str, name: str):
-    vim_plugin = PluginSpec.from_spec(f"{owner}/{repo}::{name}")
-
-    assert vim_plugin.name == name
-
-
-@pytest.mark.parametrize("host", RepositoryHost)
-def test_from_spec_with_repository_host(owner: str, repo: str, host: RepositoryHost):
-    vim_plugin = PluginSpec.from_spec(f"{host.value}:{owner}/{repo}")
-
-    assert vim_plugin.repository_host == host
-
-
-def test_from_spec_without_repository_host(owner: str, repo: str):
-    vim_plugin = PluginSpec.from_spec(f"{owner}/{repo}")
-
-    assert vim_plugin.repository_host == RepositoryHost.GITHUB
-
-
-def test_from_spec_complex(owner: str, repo: str, branch: str, name: str):
-    vim_plugin = PluginSpec.from_spec(f"gitlab:{owner}/{repo}:{branch}:{name}")
-
-    assert vim_plugin.repository_host == RepositoryHost.GITLAB
-    assert vim_plugin.owner == owner
-    assert vim_plugin.repo == repo
-    assert vim_plugin.branch == branch
-    assert vim_plugin.name == name
-
-
-def test_from_spec_invalid_spec():
-    with pytest.raises(ValueError):
-        PluginSpec.from_spec("invalid_spec")
-
-
-def test_to_spec_simple(owner: str, repo: str):
-    vim_plugin = PluginSpec(RepositoryHost.GITHUB, owner, repo)
-
-    assert vim_plugin.to_spec() == f"{owner}/{repo}"
-
-
-def test_to_spec_with_branch(owner: str, repo: str, branch: str):
-    vim_plugin = PluginSpec(RepositoryHost.GITHUB, owner, repo, branch=branch)
-    assert vim_plugin.to_spec() == f"{owner}/{repo}:{branch}"
-
-
-def test_to_spec_with_name(owner: str, repo: str, name: str):
-    vim_plugin = PluginSpec(RepositoryHost.GITHUB, owner, repo, name=name)
-
-    assert vim_plugin.to_spec() == f"{owner}/{repo}::{name}"
-
-
-@pytest.mark.parametrize("host", [RepositoryHost.GITLAB, RepositoryHost.SOURCEHUT])
-def test_to_spec_with_repository_host(host: RepositoryHost, owner: str, repo: str):
-    vim_plugin = PluginSpec(host, owner, repo)
-
-    assert vim_plugin.to_spec() == f"{host.value}:{owner}/{repo}"
-
-
-def test_to_spec_complex(owner: str, repo: str, branch: str, name: str, license: str):
-    vim_plugin = PluginSpec(RepositoryHost.GITLAB, owner, repo, branch=branch, name=name, license=license)
-
-    assert vim_plugin.to_spec() == f"gitlab:{owner}/{repo}:{branch}:{name}:{license}"
-
-
-def test_spec_equal(owner: str, repo: str):
-    vim_plugin = PluginSpec(RepositoryHost.GITHUB, owner, repo)
-    vim_plugin2 = PluginSpec(RepositoryHost.GITHUB, owner, repo)
-
-    assert vim_plugin == vim_plugin2
-
-
-def test_spec_not_equal_different_branch(owner: str, repo: str):
-    vim_plugin = PluginSpec(RepositoryHost.GITHUB, owner, repo)
-    vim_plugin2 = PluginSpec(RepositoryHost.GITHUB, owner, repo, branch="main")
-
-    assert vim_plugin != vim_plugin2
-
-
-def test_spec_not_equal_different_name(owner: str, repo: str):
-    vim_plugin = PluginSpec(RepositoryHost.GITHUB, owner, repo)
-    vim_plugin2 = PluginSpec(RepositoryHost.GITHUB, owner, repo, name="renamed")
-
-    assert vim_plugin != vim_plugin2
-
-
-def test_spec_equal_same_normalized_name(owner: str):
-    repo = "repo.nvim"
-    name = "repo-nvim"
-
-    vim_plugin = PluginSpec(RepositoryHost.GITHUB, owner, repo)
-    vim_plugin2 = PluginSpec(RepositoryHost.GITHUB, owner, repo, name=name)
-
-    assert vim_plugin == vim_plugin2
diff --git a/pkgs/sources/update_vim_plugins/update_vim_plugins/update.py b/pkgs/sources/update_vim_plugins/update_vim_plugins/update.py
deleted file mode 100644
index 7eb3eeb4..00000000
--- a/pkgs/sources/update_vim_plugins/update_vim_plugins/update.py
+++ /dev/null
@@ -1,212 +0,0 @@
-import subprocess
-from random import shuffle
-from cleo.helpers import argument, option
-from cleo.commands.command import Command
-from concurrent.futures import ThreadPoolExecutor, as_completed
-
-from pprint import pprint
-
-from .plugin import plugin_from_spec
-
-from .helpers import read_manifest_to_spec, get_const
-from .helpers import JSON_FILE, PLUGINS_LIST_FILE, PKGS_FILE
-
-import json
-import jsonpickle
-
-jsonpickle.set_encoder_options("json", sort_keys=True)
-
-
-class UpdateCommand(Command):
-    name = "update"
-    description = "Generate nix module from input file"
-    arguments = [argument("plug_dir", description="Path to the plugin directory", optional=False)]
-    options = [
-        option("all", "a", description="Update all plugins. Else only update new plugins", flag=True),
-        option("dry-run", "d", description="Show which plugins would be updated", flag=True),
-    ]
-
-    def handle(self):
-        """Main command function"""
-
-        plug_dir = self.argument("plug_dir")
-        self.specs = read_manifest_to_spec(plug_dir)
-
-        if self.option("all"):
-            # update all plugins
-            spec_list = self.specs
-            known_plugins = []
-        else:
-            # filter plugins we already know
-            spec_list = self.specs
-
-            with open(get_const(JSON_FILE, plug_dir), "r") as json_file:
-                data = json.load(json_file)
-
-                known_specs = list(filter(lambda x: x.line in data, spec_list))
-                known_plugins = [jsonpickle.decode(data[x.line]) for x in known_specs]
-
-                spec_list = list(filter(lambda x: x.line not in data, spec_list))
-
-        if self.option("dry-run"):
-            self.line("<comment>These plugins would be updated</comment>")
-            pprint(spec_list)
-            self.line(f"<info>Total:</info> {len(spec_list)}")
-            exit(0)
-
-        processed_plugins, failed_plugins, failed_but_known = self.process_manifest(spec_list, plug_dir)
-
-        processed_plugins += known_plugins  # add plugins from .plugins.json
-        processed_plugins: list = sorted(set(processed_plugins))  # remove duplicates based only on source line
-
-        self.check_duplicates(processed_plugins)
-
-        if failed_plugins != []:
-            self.line("<error>Not processed:</error> The following plugins could not be updated")
-            for s, e in failed_plugins:
-                self.line(f" - {s!r} - {e}")
-
-        if failed_but_known != []:
-            self.line(
-                "<error>Not updated:</error> The following plugins could not be updated but an older version is known"
-            )
-            for s, e in failed_but_known:
-                self.line(f" - {s!r} - {e}")
-
-        # update plugin "database"
-        self.write_plugins_json(processed_plugins, plug_dir)
-
-        # generate output
-        self.write_plugins_nix(processed_plugins, plug_dir)
-
-        self.write_plugins_markdown(processed_plugins, plug_dir)
-
-        self.line("<comment>Done</comment>")
-
-    def write_plugins_markdown(self, plugins, plug_dir):
-        """Write the list of all plugins to PLUGINS_LIST_FILE in markdown"""
-
-        plugins.sort()
-
-        self.line("<info>Updating plugins.md</info>")
-
-        header = f" - Plugin count: {len(plugins)}\n\n| Repo | Last Update | Nix package name | Last checked |\n|:---|:---|:---|:---|\n"
-
-        with open(get_const(PLUGINS_LIST_FILE, plug_dir), "w") as file:
-            file.write(header)
-            for plugin in plugins:
-                file.write(f"{plugin.to_markdown()}\n")
-
-    def write_plugins_nix(self, plugins, plug_dir):
-        self.line("<info>Generating nix output</info>")
-
-        plugins.sort()
-
-        header = "{ lib, buildVimPlugin, fetchurl, fetchgit }: {"
-        footer = "}"
-
-        with open(get_const(PKGS_FILE, plug_dir), "w") as file:
-            file.write(header)
-            for plugin in plugins:
-                file.write(f"{plugin.to_nix()}\n")
-            file.write(footer)
-
-        self.line("<info>Formatting nix output</info>")
-
-        subprocess.run(
-            ["alejandra", get_const(PKGS_FILE, plug_dir)],
-            stdout=subprocess.DEVNULL,
-            stderr=subprocess.DEVNULL,
-        )
-
-    def write_plugins_json(self, plugins, plug_dir):
-        self.line("<info>Storing results in .plugins.json</info>")
-
-        plugins.sort()
-
-        with open(get_const(JSON_FILE, plug_dir), "r+") as json_file:
-            data = json.load(json_file)
-
-            for plugin in plugins:
-                data.update({f"{plugin.source_line}": plugin.to_json()})
-
-            json_file.seek(0)
-            json_file.write(json.dumps(data, indent=2, sort_keys=True))
-            json_file.truncate()
-
-    def check_duplicates(self, plugins):
-        """check for duplicates in proccesed_plugins"""
-        error = False
-        for i, plugin in enumerate(plugins):
-            for p in plugins[i + 1 :]:
-                if plugin.name == p.name:
-                    self.line(
-                        f"<error>Error:</error> The following two lines produce the same plugin name:\n - {plugin.source_line}\n - {p.source_line}\n -> {p.name}"
-                    )
-                    error = True
-
-        # We want to exit if the resulting nix file would be broken
-        # But we want to go through all plugins before we do so
-        if error:
-            exit(1)
-
-    def generate_plugin(self, spec, i, size, plug_dir):
-        debug_string = ""
-
-        processed_plugin = None
-        failed_but_known = None
-        failed_plugin = None
-        try:
-            debug_string += f" - <info>({i+1}/{size}) Processing</info> {spec!r}\n"
-            vim_plugin = plugin_from_spec(spec)
-            debug_string += f"   • <comment>Success</comment> {vim_plugin!r}\n"
-            processed_plugin = vim_plugin
-        except Exception as e:
-            debug_string += f"   • <error>Error:</error> Could not update <info>{spec.name}</info>. Keeping old values. Reason: {e}\n"
-            with open(get_const(JSON_FILE, plug_dir), "r") as json_file:
-                data = json.load(json_file)
-
-            plugin_json = data.get(spec.line)
-            if plugin_json:
-                vim_plugin = jsonpickle.decode(plugin_json)
-                processed_plugin = vim_plugin
-                failed_but_known = (vim_plugin, e)
-            else:
-                debug_string += f"   • <error>Error:</error> No entries for <info>{spec.name}</info> in '.plugins.json'. Skipping...\n"
-                failed_plugin = (spec, e)
-
-        self.line(debug_string.strip())
-
-        return processed_plugin, failed_plugin, failed_but_known
-
-    def process_manifest(self, spec_list, plug_dir):
-        """Read specs in 'spec_list' and generate plugins"""
-
-        size = len(spec_list)
-
-        # We have to assume that we will reach an api limit. Therefore
-        # we randomize the spec list to give every entry the same change to be updated and
-        # not favor those at the start of the list
-        shuffle(spec_list)
-
-        with ThreadPoolExecutor() as executor:
-            futures = [
-                executor.submit(self.generate_plugin, spec, i, size, plug_dir) for i, spec in enumerate(spec_list)
-            ]
-            results = [future.result() for future in as_completed(futures)]
-
-        processed_plugins = [r[0] for r in results]
-        failed_plugins = [r[1] for r in results]
-        failed_but_known = [r[2] for r in results]
-
-        processed_plugins = list(filter(lambda x: x is not None, processed_plugins))
-        failed_plugins = list(filter(lambda x: x is not None, failed_plugins))
-        failed_but_known = list(filter(lambda x: x is not None, failed_but_known))
-
-        processed_plugins.sort()
-        failed_plugins.sort()
-        failed_but_known.sort()
-
-        assert len(processed_plugins) == len(spec_list) - len(failed_plugins)
-
-        return processed_plugins, failed_plugins, failed_but_known
diff --git a/pkgs/sources/yt/.env b/pkgs/sources/yt/.env
deleted file mode 100755
index 8018a738..00000000
--- a/pkgs/sources/yt/.env
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env sh
-
-PATH="$(pwd)/target/release/:$(pwd)/target/debug/:$PATH"
diff --git a/pkgs/sources/yt/.envrc b/pkgs/sources/yt/.envrc
deleted file mode 100644
index 3550a30f..00000000
--- a/pkgs/sources/yt/.envrc
+++ /dev/null
@@ -1 +0,0 @@
-use flake
diff --git a/pkgs/sources/yt/.gitignore b/pkgs/sources/yt/.gitignore
deleted file mode 100644
index c84fa049..00000000
--- a/pkgs/sources/yt/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# build dirs
-/target
-/result
diff --git a/pkgs/sources/yt/Cargo.lock b/pkgs/sources/yt/Cargo.lock
deleted file mode 100644
index ef2a53fd..00000000
--- a/pkgs/sources/yt/Cargo.lock
+++ /dev/null
@@ -1,640 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "android-tzdata"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
-
-[[package]]
-name = "android_system_properties"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "anstream"
-version = "0.6.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
-dependencies = [
- "anstyle",
- "anstyle-parse",
- "anstyle-query",
- "anstyle-wincon",
- "colorchoice",
- "is_terminal_polyfill",
- "utf8parse",
-]
-
-[[package]]
-name = "anstyle"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
-
-[[package]]
-name = "anstyle-parse"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
-dependencies = [
- "utf8parse",
-]
-
-[[package]]
-name = "anstyle-query"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "anstyle-wincon"
-version = "3.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
-dependencies = [
- "anstyle",
- "windows-sys",
-]
-
-[[package]]
-name = "anyhow"
-version = "1.0.83"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3"
-
-[[package]]
-name = "autocfg"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
-
-[[package]]
-name = "bitflags"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
-
-[[package]]
-name = "bumpalo"
-version = "3.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
-
-[[package]]
-name = "cc"
-version = "1.0.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "chrono"
-version = "0.4.38"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
-dependencies = [
- "android-tzdata",
- "iana-time-zone",
- "js-sys",
- "num-traits",
- "wasm-bindgen",
- "windows-targets",
-]
-
-[[package]]
-name = "clap"
-version = "4.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
-dependencies = [
- "clap_builder",
- "clap_derive",
-]
-
-[[package]]
-name = "clap_builder"
-version = "4.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
-dependencies = [
- "anstream",
- "anstyle",
- "clap_lex",
- "strsim",
-]
-
-[[package]]
-name = "clap_derive"
-version = "4.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "clap_lex"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
-
-[[package]]
-name = "cli-log"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d2ab00dc4c82ec28af25ac085aecc11ffeabf353755715a3113a7aa044ca5cc"
-dependencies = [
- "chrono",
- "file-size",
- "log",
- "proc-status",
-]
-
-[[package]]
-name = "colorchoice"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
-
-[[package]]
-name = "errno"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
-dependencies = [
- "libc",
- "windows-sys",
-]
-
-[[package]]
-name = "fastrand"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
-
-[[package]]
-name = "file-size"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9544f10105d33957765016b8a9baea7e689bf1f0f2f32c2fa2f568770c38d2b3"
-
-[[package]]
-name = "form_urlencoded"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
-dependencies = [
- "percent-encoding",
-]
-
-[[package]]
-name = "heck"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
-
-[[package]]
-name = "iana-time-zone"
-version = "0.1.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
-dependencies = [
- "android_system_properties",
- "core-foundation-sys",
- "iana-time-zone-haiku",
- "js-sys",
- "wasm-bindgen",
- "windows-core",
-]
-
-[[package]]
-name = "iana-time-zone-haiku"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "idna"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
-dependencies = [
- "unicode-bidi",
- "unicode-normalization",
-]
-
-[[package]]
-name = "is_terminal_polyfill"
-version = "1.70.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
-
-[[package]]
-name = "itoa"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
-
-[[package]]
-name = "js-sys"
-version = "0.3.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.154"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
-
-[[package]]
-name = "log"
-version = "0.4.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
-
-[[package]]
-name = "num-traits"
-version = "0.2.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
-
-[[package]]
-name = "percent-encoding"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.82"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "proc-status"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0e0c0ac915e7b76b47850ba4ffc377abde6c6ff9eeace61d0a89623db449712"
-dependencies = [
- "thiserror",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "rustix"
-version = "0.38.34"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
-dependencies = [
- "bitflags",
- "errno",
- "libc",
- "linux-raw-sys",
- "windows-sys",
-]
-
-[[package]]
-name = "ryu"
-version = "1.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
-
-[[package]]
-name = "serde"
-version = "1.0.201"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.201"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.117"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "strsim"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
-
-[[package]]
-name = "syn"
-version = "2.0.61"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "tempfile"
-version = "3.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
-dependencies = [
- "cfg-if",
- "fastrand",
- "rustix",
- "windows-sys",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "tinyvec"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
-dependencies = [
- "tinyvec_macros",
-]
-
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-[[package]]
-name = "unicode-bidi"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "unicode-normalization"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
-dependencies = [
- "tinyvec",
-]
-
-[[package]]
-name = "url"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
-dependencies = [
- "form_urlencoded",
- "idna",
- "percent-encoding",
-]
-
-[[package]]
-name = "utf8parse"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
-dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
-dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
-
-[[package]]
-name = "windows-core"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
-
-[[package]]
-name = "yt"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "clap",
- "cli-log",
- "log",
- "serde",
- "serde_json",
- "tempfile",
- "url",
-]
diff --git a/pkgs/sources/yt/Cargo.toml b/pkgs/sources/yt/Cargo.toml
deleted file mode 100644
index 7c17d20b..00000000
--- a/pkgs/sources/yt/Cargo.toml
+++ /dev/null
@@ -1,35 +0,0 @@
-[package]
-name = "yt"
-version = "0.1.0"
-edition = "2021"
-
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
-[dependencies]
-anyhow = "1.0.83"
-clap = { version = "4.5.4", features = ["derive"] }
-cli-log = "2.0.0"
-log = "0.4.21"
-serde = { version = "1.0.201", features = ["derive"] }
-serde_json = "1.0.117"
-tempfile = "3.10.1"
-url = "2.5.0"
-
-# This is here to be able to tell nix which binary to build
-[features]
-yts = []
-ytc = []
-yt = []
-default = ["yt", "yts", "ytc"]
-
-[[bin]]
-name = "yts"
-required-features = ["yts"]
-
-[[bin]]
-name = "ytc"
-required-features = ["ytc"]
-
-[[bin]]
-name = "yt"
-required-features = ["yt"]
diff --git a/pkgs/sources/yt/default.nix b/pkgs/sources/yt/default.nix
deleted file mode 100644
index 32396051..00000000
--- a/pkgs/sources/yt/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-[
-  (
-    final: prev: {
-      yt = import ./yt.nix {
-        inherit
-          (prev)
-          lib
-          makeWrapper
-          rustPlatform
-          # dependencies
-          
-          ytcc
-          yt-dlp
-          mpv
-          ;
-      };
-    }
-  )
-  (
-    final: prev: {
-      yts = import ./yts.nix {
-        inherit
-          (prev)
-          lib
-          makeWrapper
-          rustPlatform
-          # dependencies
-          
-          ytcc
-          ;
-      };
-    }
-  )
-  (
-    final: prev: {
-      ytc = import ./ytc.nix {
-        inherit
-          (prev)
-          lib
-          makeWrapper
-          rustPlatform
-          # dependencies
-          
-          ytcc
-          yt-dlp
-          mpv
-          ;
-      };
-    }
-  )
-]
diff --git a/pkgs/sources/yt/flake.lock b/pkgs/sources/yt/flake.lock
deleted file mode 100644
index 50494465..00000000
--- a/pkgs/sources/yt/flake.lock
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-  "nodes": {
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1710146030,
-        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "nixpkgs": {
-      "locked": {
-        "lastModified": 1715087517,
-        "narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "b211b392b8486ee79df6cdfb1157ad2133427a29",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "root": {
-      "inputs": {
-        "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs"
-      }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    }
-  },
-  "root": "root",
-  "version": 7
-}
diff --git a/pkgs/sources/yt/flake.nix b/pkgs/sources/yt/flake.nix
deleted file mode 100644
index 561b1c0d..00000000
--- a/pkgs/sources/yt/flake.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  description = "yt";
-
-  inputs = {
-    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-
-    flake-utils.url = "github:numtide/flake-utils";
-  };
-
-  outputs = {
-    self,
-    nixpkgs,
-    flake-utils,
-  }: (flake-utils.lib.eachDefaultSystem (system: let
-    pkgs = nixpkgs.legacyPackages."${system}";
-  in {
-    devShells.default = pkgs.mkShell {
-      packages = with pkgs; [
-        # rust stuff
-        cargo
-        clippy
-        rustc
-        rustfmt
-
-        cargo-edit
-        cargo-expand
-      ];
-    };
-  }));
-}
diff --git a/pkgs/sources/yt/src/bin/yt/main.rs b/pkgs/sources/yt/src/bin/yt/main.rs
deleted file mode 100644
index 37348834..00000000
--- a/pkgs/sources/yt/src/bin/yt/main.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-use anyhow::{bail, Context, Result};
-use std::{
-    env, fs,
-    io::{BufRead, BufReader, BufWriter, Write},
-    process::Command as StdCmd,
-};
-use tempfile::Builder;
-use yt::{
-    constants::{last_select, HELP_STR},
-    downloader::Downloader,
-    filter_line, YtccListData,
-};
-
-fn main() -> Result<()> {
-    cli_log::init_cli_log!();
-
-    let json_map = {
-        let mut ytcc = StdCmd::new("ytcc");
-        ytcc.args([
-            "--output",
-            "json",
-            "list",
-            "--order-by",
-            "publish_date",
-            "desc",
-        ]);
-
-        serde_json::from_slice::<Vec<YtccListData>>(
-            &ytcc.output().context("Failed to json from ytcc")?.stdout,
-        )
-        .context("Failed to deserialize json output")?
-    };
-
-    let temp_file = Builder::new()
-        .prefix("yt_video_select-")
-        .suffix(".yts")
-        .rand_bytes(6)
-        .tempfile()
-        .context("Failed to get tempfile")?;
-
-    {
-        let mut edit_file = BufWriter::new(&temp_file);
-
-        json_map.iter().for_each(|line| {
-            let line = line.to_string();
-            edit_file
-                .write_all(line.as_bytes())
-                .expect("This write should not fail");
-        });
-
-        edit_file.write_all(HELP_STR.as_bytes())?;
-        edit_file.flush().context("Failed to flush edit file")?;
-
-        let mut nvim = StdCmd::new("nvim");
-        nvim.arg(temp_file.path());
-        let status = nvim.status().context("Falied to run nvim")?;
-        if !status.success() {
-            bail!("nvim exited with error status: {}", status)
-        }
-    }
-
-    let read_file = temp_file.reopen()?;
-    fs::copy(
-        temp_file.path(),
-        last_select().context("Failed to get the persistent selection file path")?,
-    )
-    .context("Failed to persist selection file")?;
-
-    let mut watching = Vec::new();
-    let reader = BufReader::new(&read_file);
-    for line in reader.lines() {
-        let line = line.context("Failed to read line")?;
-
-        if let Some(downloadable) =
-            filter_line(&line).with_context(|| format!("Failed to process line: '{}'", line))?
-        {
-            watching.push(downloadable);
-        }
-    }
-
-    if watching.is_empty() {
-        return Ok(());
-    }
-
-    let downloader = Downloader::new(watching).context("Failed to construct downloader")?;
-    downloader
-        .consume()
-        .context("Failed to consume downloader")?;
-
-    Ok(())
-}
diff --git a/pkgs/sources/yt/src/bin/ytc/args.rs b/pkgs/sources/yt/src/bin/ytc/args.rs
deleted file mode 100644
index 8b2d6a61..00000000
--- a/pkgs/sources/yt/src/bin/ytc/args.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-use clap::{Parser, Subcommand};
-/// A helper for downloading and playing youtube videos
-#[derive(Parser, Debug)]
-#[clap(author, version, about, long_about = None)]
-pub struct Args {
-    #[command(subcommand)]
-    /// The subcommand to execute
-    pub subcommand: Command,
-}
-#[derive(Subcommand, Debug)]
-pub enum Command {
-    #[clap(value_parser)]
-    /// Work based of ytcc ids
-    Id {
-        #[clap(value_parser)]
-        /// A list of ids to play
-        ids: Vec<u32>,
-    },
-    #[clap(value_parser)]
-    /// Work based of raw youtube urls
-    Url {
-        #[clap(value_parser)]
-        /// A list of urls to play
-        urls: Vec<String>,
-    },
-}
diff --git a/pkgs/sources/yt/src/bin/ytc/main.rs b/pkgs/sources/yt/src/bin/ytc/main.rs
deleted file mode 100644
index b38157df..00000000
--- a/pkgs/sources/yt/src/bin/ytc/main.rs
+++ /dev/null
@@ -1,77 +0,0 @@
-use std::{env, process::Command as StdCmd};
-
-use anyhow::{bail, Context, Result};
-use clap::Parser;
-use log::debug;
-use url::Url;
-use yt::{
-    downloader::{Downloadable, Downloader},
-    YtccListData,
-};
-
-use crate::args::{Args, Command};
-
-mod args;
-
-fn main() -> Result<()> {
-    let args = Args::parse();
-    cli_log::init_cli_log!();
-
-    let playspec: Vec<Downloadable> = match args.subcommand {
-        Command::Id { ids } => {
-            let mut output = Vec::with_capacity(ids.len());
-            for id in ids {
-                debug!("Adding {}", id);
-                let mut ytcc = StdCmd::new("ytcc");
-                ytcc.args([
-                    "--output",
-                    "json",
-                    "list",
-                    "--watched",
-                    "--unwatched",
-                    "--attributes",
-                    "url",
-                    "--ids",
-                    id.to_string().as_str(),
-                ]);
-                let json = serde_json::from_slice::<Vec<YtccListData>>(
-                    &ytcc.output().context("Failed to get url from id")?.stdout,
-                )
-                .context("Failed to deserialize json output")?;
-
-                if json.is_empty() {
-                    bail!("Could not find a video with id: {}", id);
-                }
-                assert_eq!(json.len(), 1);
-                let json = json.first().expect("Has only one element");
-
-                debug!("Id resolved to: '{}'", &json.url);
-
-                output.push(Downloadable {
-                    url: Url::parse(&json.url)?,
-                    id: Some(json.id),
-                })
-            }
-            output
-        }
-        Command::Url { urls } => {
-            let mut output = Vec::with_capacity(urls.len());
-            for url in urls {
-                output.push(Downloadable {
-                    url: Url::parse(&url).context("Failed to parse url")?,
-                    id: None,
-                })
-            }
-            output
-        }
-    };
-
-    debug!("Initializing downloader");
-    let downloader = Downloader::new(playspec)?;
-
-    downloader
-        .consume()
-        .context("Failed to consume downloader")?;
-
-    Ok(())
-}
diff --git a/pkgs/sources/yt/src/bin/yts/args.rs b/pkgs/sources/yt/src/bin/yts/args.rs
deleted file mode 100644
index 56989421..00000000
--- a/pkgs/sources/yt/src/bin/yts/args.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-use clap::{Parser, Subcommand};
-/// A helper for selecting which videos to download from ytcc to ytc
-#[derive(Parser, Debug)]
-#[clap(author, version, about, long_about = None)]
-pub struct Args {
-    #[command(subcommand)]
-    /// subcommand to execute
-    pub subcommand: Option<Command>,
-}
-
-#[derive(Subcommand, Debug)]
-pub enum Command {
-    #[clap(value_parser)]
-    /// Which ordering to use
-    Order {
-        #[command(subcommand)]
-        command: OrderCommand,
-    },
-}
-
-#[derive(Subcommand, Debug)]
-pub enum OrderCommand {
-    #[clap(value_parser)]
-    /// Order by date
-    #[group(required = true)]
-    Date {
-        #[arg(value_parser)]
-        /// Order descending
-        desc: bool,
-        #[clap(value_parser)]
-        /// Order ascending
-        asc: bool,
-    },
-    #[clap(value_parser)]
-    /// Pass a raw SQL 'ORDER BY' value
-    Raw {
-        #[clap(value_parser)]
-        /// The raw value(s) to pass
-        value: Vec<String>,
-    },
-}
diff --git a/pkgs/sources/yt/src/bin/yts/main.rs b/pkgs/sources/yt/src/bin/yts/main.rs
deleted file mode 100644
index 7398db61..00000000
--- a/pkgs/sources/yt/src/bin/yts/main.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-use anyhow::{bail, Context, Result};
-use clap::Parser;
-use std::{
-    env,
-    io::{BufRead, BufReader, Write},
-    process::Command as StdCmd,
-};
-use tempfile::NamedTempFile;
-use yt::{constants::HELP_STR, filter_line, YtccListData};
-
-use crate::args::{Args, Command, OrderCommand};
-
-mod args;
-
-fn main() -> Result<()> {
-    let args = Args::parse();
-    cli_log::init_cli_log!();
-
-    let ordering = match args.subcommand.unwrap_or(Command::Order {
-        command: OrderCommand::Date {
-            desc: true,
-            asc: false,
-        },
-    }) {
-        Command::Order { command } => match command {
-            OrderCommand::Date { desc, asc } => {
-                if desc {
-                    vec!["--order-by".into(), "publish_date".into(), "desc".into()]
-                } else if asc {
-                    vec!["--order-by".into(), "publish_date".into(), "asc".into()]
-                } else {
-                    vec!["--order-by".into(), "publish_date".into(), "desc".into()]
-                }
-            }
-            OrderCommand::Raw { value } => [vec!["--order-by".into()], value].concat(),
-        },
-    };
-
-    let json_map = {
-        let mut ytcc = StdCmd::new("ytcc");
-        ytcc.args(["--output", "json", "list"]);
-        ytcc.args(ordering);
-
-        serde_json::from_slice::<Vec<YtccListData>>(
-            &ytcc.output().context("Failed to json from ytcc")?.stdout,
-        )
-        .context("Failed to deserialize json output")?
-    };
-
-    let mut edit_file = NamedTempFile::new().context("Failed to get tempfile")?;
-
-    json_map.iter().for_each(|line| {
-        let line = line.to_string();
-        edit_file
-            .write_all(line.as_bytes())
-            .expect("This write should not fail");
-    });
-
-    write!(&edit_file, "{}", HELP_STR)?;
-    edit_file.flush().context("Failed to flush edit file")?;
-
-    let read_file = edit_file.reopen()?;
-
-    let mut nvim = StdCmd::new("nvim");
-    nvim.arg(edit_file.path());
-
-    let status = nvim.status().context("Falied to run nvim")?;
-    if !status.success() {
-        bail!("Nvim exited with error status: {}", status)
-    }
-
-    let mut watching = Vec::new();
-    let reader = BufReader::new(&read_file);
-    for line in reader.lines() {
-        let line = line.context("Failed to read line")?;
-
-        if let Some(downloadable) =
-            filter_line(&line).with_context(|| format!("Failed to process line: '{}'", line))?
-        {
-            watching.push(downloadable);
-        }
-    }
-
-    let watching: String = watching
-        .iter()
-        .map(|d| d.to_string())
-        .collect::<Vec<String>>()
-        .join("\n");
-    println!("{}", &watching);
-    Ok(())
-}
diff --git a/pkgs/sources/yt/src/constants.rs b/pkgs/sources/yt/src/constants.rs
deleted file mode 100644
index 5e233656..00000000
--- a/pkgs/sources/yt/src/constants.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-use std::{env, fs, path::PathBuf};
-
-pub const HELP_STR: &str = include_str!("./help.str");
-
-pub const YT_DLP_FLAGS: [&str; 13] = [
-    // Ignore errors arising of unavailable sponsor block API
-    "--ignore-errors",
-    "--format",
-    "bestvideo[height<=?1080]+bestaudio/best",
-    "--embed-chapters",
-    "--progress",
-    "--write-comments",
-    "--extractor-args",
-    "youtube:max_comments=150,all,100;comment_sort=top",
-    "--write-info-json",
-    "--sponsorblock-mark",
-    "default",
-    "--sponsorblock-remove",
-    "sponsor",
-];
-pub const MPV_FLAGS: [&str; 4] = [
-    "--speed=2.7",
-    "--volume=75",
-    "--keep-open=yes",
-    "--msg-level=osd/libass=fatal",
-];
-
-pub const CONCURRENT: u32 = 5;
-
-pub const DOWNLOAD_DIR: &str = "/tmp/ytcc";
-
-fn get_runtime_path(component: &'static str) -> anyhow::Result<PathBuf> {
-    let out: PathBuf = format!(
-        "{}/{}",
-        env::var("XDG_RUNTIME_DIR").expect("This should always exist"),
-        component
-    )
-    .into();
-    fs::create_dir_all(out.parent().expect("Parent should exist"))?;
-    Ok(out)
-}
-
-const STATUS_PATH: &str = "ytcc/running";
-pub fn status_path() -> anyhow::Result<PathBuf> {
-    get_runtime_path(STATUS_PATH)
-}
-
-const LAST_SELECT: &str = "ytcc/selected.yts";
-pub fn last_select() -> anyhow::Result<PathBuf> {
-    get_runtime_path(LAST_SELECT)
-}
diff --git a/pkgs/sources/yt/src/downloader.rs b/pkgs/sources/yt/src/downloader.rs
deleted file mode 100644
index e915700d..00000000
--- a/pkgs/sources/yt/src/downloader.rs
+++ /dev/null
@@ -1,212 +0,0 @@
-use std::{
-    fs::{self, canonicalize},
-    io::{stderr, stdout, Read},
-    mem,
-    os::unix::fs::symlink,
-    path::PathBuf,
-    process::Command,
-    sync::mpsc::{self, Receiver, Sender},
-    thread::{self, JoinHandle},
-};
-
-use anyhow::{bail, Context, Result};
-use log::{debug, error, warn};
-use url::Url;
-
-use crate::constants::{status_path, CONCURRENT, DOWNLOAD_DIR, MPV_FLAGS, YT_DLP_FLAGS};
-
-#[derive(Debug)]
-pub struct Downloadable {
-    pub url: Url,
-    pub id: Option<u32>,
-}
-
-impl std::fmt::Display for Downloadable {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
-        write!(
-            f,
-            "{}|{}",
-            self.url.as_str().replace('|', ";"),
-            self.id.unwrap_or(0),
-        )
-    }
-}
-
-pub struct Downloader {
-    sent: usize,
-    download_thread: JoinHandle<Result<()>>,
-    orx: Receiver<(PathBuf, Option<u32>)>,
-    itx: Option<Sender<Downloadable>>,
-    playspec: Vec<Downloadable>,
-}
-
-impl Downloader {
-    pub fn new(mut playspec: Vec<Downloadable>) -> anyhow::Result<Downloader> {
-        let (itx, irx): (Sender<Downloadable>, Receiver<Downloadable>) = mpsc::channel();
-        let (otx, orx) = mpsc::channel();
-        let jh = thread::spawn(move || -> Result<()> {
-            while let Ok(pt) = irx.recv() {
-                debug!("Got '{}' to be downloaded", pt);
-                let path = download_url(&pt.url)
-                    .with_context(|| format!("Failed to download url: '{}'", &pt.url))?;
-                otx.send((path, pt.id)).expect("Should not be dropped");
-            }
-            debug!("Finished Downloading everything");
-            Ok(())
-        });
-
-        playspec.reverse();
-        let mut output = Downloader {
-            sent: 0,
-            download_thread: jh,
-            orx,
-            itx: Some(itx),
-            playspec,
-        };
-        if output.playspec.len() <= CONCURRENT as usize {
-            output.add(output.playspec.len() as u32)?;
-        } else {
-            output.add(CONCURRENT)?;
-        }
-        Ok(output)
-    }
-
-    pub fn add(&mut self, number_to_add: u32) -> Result<()> {
-        debug!("Adding {} to be downloaded concurrently", number_to_add);
-        for _ in 0..number_to_add {
-            let pt = self.playspec.pop().expect("This call should be guarded");
-            self.itx.as_ref().expect("Should still be valid").send(pt)?;
-            self.sent += 1;
-        }
-        Ok(())
-    }
-
-    /// Return the next video already downloaded, will block until the download is complete
-    pub fn next(&mut self) -> Option<(PathBuf, Option<u32>)> {
-        debug!("Requesting next output");
-        match self.orx.recv() {
-            Ok(ok) => {
-                debug!("Output downloaded to: {}", ok.0.display());
-                if !self.playspec.is_empty() {
-                    self.add(1).ok()?;
-                } else {
-                    debug!(
-                        "Done sending videos to be downloaded, downoladed: {} videos",
-                        self.sent
-                    );
-                    let itx = mem::take(&mut self.itx);
-                    drop(itx)
-                }
-                debug!("Returning: {}|{}", ok.0.display(), ok.1.unwrap_or(0));
-                Some(ok)
-            }
-            Err(err) => {
-                debug!("Received error while listening: {}", err);
-                None
-            }
-        }
-    }
-
-    pub fn drop(self) -> anyhow::Result<()> {
-        // Check that we really downloaded everything
-        assert_eq!(self.playspec.len(), 0);
-        match self.download_thread.join() {
-            Ok(ok) => ok,
-            Err(err) => panic!("Failed to join downloader thread: '{:#?}'", err),
-        }
-    }
-
-    pub fn consume(mut self) -> anyhow::Result<()> {
-        while let Some((path, id)) = self.next() {
-            debug!("Next path to play is: '{}'", path.display());
-            let mut info_json = canonicalize(&path).context("Failed to canoncialize path")?;
-            info_json.set_extension("info.json");
-
-            if status_path()?.is_symlink() {
-                fs::remove_file(status_path()?).context("Failed to delete old status file")?;
-            } else if !status_path()?.exists() {
-                debug!(
-                    "The status path at '{}' does not exists",
-                    status_path()?.display()
-                );
-            } else {
-                bail!(
-                    "The status path ('{}') is not a symlink but exists!",
-                    status_path()?.display()
-                );
-            }
-
-            symlink(info_json, status_path()?).context("Failed to symlink")?;
-
-            let mut mpv = Command::new("mpv");
-            mpv.stdout(stdout());
-            mpv.stderr(stderr());
-            mpv.args(MPV_FLAGS);
-            // TODO: Set the title to the name of the video, not the path <2024-02-09>
-            // mpv.arg(format!("--title="))
-            mpv.arg(&path);
-
-            let status = mpv.status().context("Failed to run mpv")?;
-            if status.success() {
-                fs::remove_file(&path)?;
-                if let Some(id) = id {
-                    println!("\x1b[32;1mMarking {} as watched!\x1b[0m", id);
-                    let mut ytcc = std::process::Command::new("ytcc");
-                    ytcc.stdout(stdout());
-                    ytcc.stderr(stderr());
-                    ytcc.args(["mark"]);
-                    ytcc.arg(id.to_string());
-                    let status = ytcc.status().context("Failed to run ytcc")?;
-                    if let Some(code) = status.code() {
-                        if code != 0 {
-                            bail!("Ytcc failed with status: {}", code);
-                        }
-                    }
-                }
-                debug!("mpv exited with: '{}'", status);
-            } else {
-                warn!("mpv exited with: '{}'", status);
-            }
-        }
-        self.drop()?;
-        Ok(())
-    }
-}
-
-fn download_url(url: &Url) -> Result<PathBuf> {
-    let output_file = tempfile::NamedTempFile::new().context("Failed to create tempfile")?;
-    output_file
-        .as_file()
-        .set_len(0)
-        .context("Failed to truncate temp-file")?;
-    if !Into::<PathBuf>::into(DOWNLOAD_DIR).exists() {
-        fs::create_dir_all(DOWNLOAD_DIR)
-            .with_context(|| format!("Failed to create download dir at: {}", DOWNLOAD_DIR))?
-    }
-    let mut yt_dlp = Command::new("yt-dlp");
-    yt_dlp.current_dir(DOWNLOAD_DIR);
-    yt_dlp.stdout(stdout());
-    yt_dlp.stderr(stderr());
-    yt_dlp.args(YT_DLP_FLAGS);
-    yt_dlp.args([
-        "--output",
-        "%(channel)s/%(title)s.%(ext)s",
-        url.as_str(),
-        "--print-to-file",
-        "after_move:filepath",
-    ]);
-    yt_dlp.arg(output_file.path().as_os_str());
-
-    let status = yt_dlp.status().context("Failed to run yt-dlp")?;
-    if !status.success() {
-        error!("yt-dlp execution failed with error: '{}'", status);
-    }
-
-    let mut path = String::new();
-    output_file
-        .as_file()
-        .read_to_string(&mut path)
-        .context("Failed to read output file temp file")?;
-    let path = path.trim();
-    Ok(path.into())
-}
diff --git a/pkgs/sources/yt/src/help.str b/pkgs/sources/yt/src/help.str
deleted file mode 100644
index 130fe42a..00000000
--- a/pkgs/sources/yt/src/help.str
+++ /dev/null
@@ -1,8 +0,0 @@
-# Commands:
-# w, watch  = watch id
-# d, drop   = mark id as watched
-# u, url    = open the associated URL in the `timesinks.youtube` Firefox profile
-# p, pick   = leave id as is; This is a noop
-#
-# These lines can be re-ordered; they are executed from top to bottom.
-# vim: filetype=yts conceallevel=2 concealcursor=nc colorcolumn=
diff --git a/pkgs/sources/yt/src/lib.rs b/pkgs/sources/yt/src/lib.rs
deleted file mode 100644
index b089c1a2..00000000
--- a/pkgs/sources/yt/src/lib.rs
+++ /dev/null
@@ -1,185 +0,0 @@
-use anyhow::{bail, Context};
-use downloader::Downloadable;
-use serde::Deserialize;
-use url::Url;
-
-pub mod constants;
-pub mod downloader;
-
-#[derive(Deserialize)]
-pub struct YtccListData {
-    pub url: String,
-    pub title: String,
-    pub description: String,
-    pub publish_date: String,
-    pub watch_date: Option<f64>,
-    pub duration: String,
-    pub thumbnail_url: Option<String>,
-    pub extractor_hash: String,
-    pub id: u32,
-    pub playlists: Vec<YtccPlaylistData>,
-}
-
-impl std::fmt::Display for YtccListData {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
-        write!(
-            f,
-            r#"pick {} "{}" "{}" "{}" "{}" "{}"{}"#,
-            self.id,
-            self.title.replace(['"', '„', '”'], "'"),
-            self.publish_date,
-            self.playlists
-                .iter()
-                .map(|p| p.name.replace('"', "'"))
-                .collect::<Vec<String>>()
-                .join(", "),
-            Duration::from(self.duration.trim()),
-            self.url.replace('"', "'"),
-            "\n"
-        )
-    }
-}
-
-#[derive(Deserialize)]
-pub struct YtccPlaylistData {
-    pub name: String,
-    pub url: String,
-    pub reverse: bool,
-}
-
-pub enum LineCommand {
-    Pick,
-    Drop,
-    Watch,
-    Url,
-}
-
-impl std::str::FromStr for LineCommand {
-    type Err = anyhow::Error;
-    fn from_str(v: &str) -> Result<Self, <Self as std::str::FromStr>::Err> {
-        match v {
-            "pick" | "p" => Ok(Self::Pick),
-            "drop" | "d" => Ok(Self::Drop),
-            "watch" | "w" => Ok(Self::Watch),
-            "url" | "u" => Ok(Self::Url),
-            other => bail!("'{}' is not a recognized command!", other),
-        }
-    }
-}
-
-pub struct Line {
-    pub cmd: LineCommand,
-    pub id: u32,
-    pub url: Url,
-}
-
-/// We expect that each line is correctly formatted, and simply use default ones if they are not
-impl From<&str> for Line {
-    fn from(v: &str) -> Self {
-        let buf: Vec<_> = v.split_whitespace().collect();
-        let url: Url = Url::parse(
-            buf.last()
-                .expect("This should always exists")
-                .trim_matches('"'),
-        )
-        .expect("This parsing should work,as the url is generated");
-
-        Line {
-            cmd: buf
-                .get(0)
-                .unwrap_or(&"pick")
-                .parse()
-                .unwrap_or(LineCommand::Pick),
-            id: buf.get(1).unwrap_or(&"0").parse().unwrap_or(0),
-            url,
-        }
-    }
-}
-
-pub struct Duration {
-    time: u32,
-}
-
-impl From<&str> for Duration {
-    fn from(v: &str) -> Self {
-        let buf: Vec<_> = v.split(':').take(2).collect();
-        Self {
-            time: (buf[0].parse::<u32>().expect("Should be a number") * 60)
-                + buf[1].parse::<u32>().expect("Should be a number"),
-        }
-    }
-}
-
-impl std::fmt::Display for Duration {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
-        const SECOND: u32 = 1;
-        const MINUTE: u32 = 60 * SECOND;
-        const HOUR: u32 = 60 * MINUTE;
-
-        let base_hour = self.time - (self.time % HOUR);
-        let base_min = (self.time % HOUR) - ((self.time % HOUR) % MINUTE);
-        let base_sec = (self.time % HOUR) % MINUTE;
-
-        let h = base_hour / HOUR;
-        let m = base_min / MINUTE;
-        let s = base_sec / SECOND;
-
-        if self.time == 0 {
-            write!(f, "[No Duration]")
-        } else if h > 0 {
-            write!(f, "[{h}h {m}m]")
-        } else {
-            write!(f, "[{m}m {s}s]")
-        }
-    }
-}
-#[cfg(test)]
-mod test {
-    use crate::Duration;
-
-    #[test]
-    fn test_display_duration_1h() {
-        let dur = Duration { time: 60 * 60 };
-        assert_eq!("[1h 0m]".to_owned(), dur.to_string());
-    }
-    #[test]
-    fn test_display_duration_30min() {
-        let dur = Duration { time: 60 * 30 };
-        assert_eq!("[30m 0s]".to_owned(), dur.to_string());
-    }
-}
-
-pub fn ytcc_drop(id: u32) -> anyhow::Result<()> {
-    let mut ytcc = std::process::Command::new("ytcc");
-    ytcc.args(["mark", &format!("{}", id)]);
-    if !ytcc.status().context("Failed to run ytcc")?.success() {
-        bail!("`ytcc mark {}` failed to execute", id)
-    }
-    Ok(())
-}
-
-pub fn filter_line(line: &str) -> anyhow::Result<Option<Downloadable>> {
-    // Filter out comments and empty lines
-    if line.starts_with('#') || line.trim().is_empty() {
-        return Ok(None);
-    }
-
-    let line = Line::from(line);
-    match line.cmd {
-        LineCommand::Pick => Ok(None),
-        LineCommand::Drop => ytcc_drop(line.id)
-            .with_context(|| format!("Failed to drop: {}", line.id))
-            .map(|_| None),
-        LineCommand::Watch => Ok(Some(Downloadable {
-            id: Some(line.id),
-            url: line.url,
-        })),
-        LineCommand::Url => {
-            let mut firefox = std::process::Command::new("firefox");
-            firefox.args(["-P", "timesinks.youtube"]);
-            firefox.arg(line.url.as_str());
-            let _handle = firefox.spawn().context("Failed to run firefox")?;
-            Ok(None)
-        }
-    }
-}
diff --git a/pkgs/sources/yt/todo b/pkgs/sources/yt/todo
deleted file mode 100644
index 3f22042c..00000000
--- a/pkgs/sources/yt/todo
+++ /dev/null
@@ -1 +0,0 @@
-subtitles
diff --git a/pkgs/sources/yt/update.sh b/pkgs/sources/yt/update.sh
deleted file mode 100755
index e500bb23..00000000
--- a/pkgs/sources/yt/update.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env sh
-
-nix flake update
-
-[ "$1" = "upgrade" ] && cargo upgrade
-cargo update
-
-# vim: ft=sh
diff --git a/pkgs/sources/yt/yt.nix b/pkgs/sources/yt/yt.nix
deleted file mode 100644
index aaa971c3..00000000
--- a/pkgs/sources/yt/yt.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  lib,
-  rustPlatform,
-  ytcc,
-  yt-dlp,
-  mpv,
-  makeWrapper,
-}:
-rustPlatform.buildRustPackage {
-  pname = "yt";
-  version = "0.1.0";
-
-  src = ./.;
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-  };
-
-  buildNoDefaultFeatures = true;
-  buildFeatures = ["yt"];
-
-  nativeBuildInputs = [
-    makeWrapper
-  ];
-
-  postInstall = ''
-    wrapProgram $out/bin/yt \
-      --prefix PATH : ${lib.makeBinPath [mpv yt-dlp ytcc]}
-  '';
-}
diff --git a/pkgs/sources/yt/ytc.nix b/pkgs/sources/yt/ytc.nix
deleted file mode 100644
index dff5bcf8..00000000
--- a/pkgs/sources/yt/ytc.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  lib,
-  rustPlatform,
-  ytcc,
-  yt-dlp,
-  mpv,
-  makeWrapper,
-}:
-rustPlatform.buildRustPackage {
-  pname = "ytc";
-  version = "0.1.0";
-
-  src = ./.;
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-  };
-
-  buildNoDefaultFeatures = true;
-  buildFeatures = ["ytc"];
-
-  nativeBuildInputs = [
-    makeWrapper
-  ];
-
-  postInstall = ''
-    wrapProgram $out/bin/ytc \
-      --set PATH ${lib.makeBinPath [mpv yt-dlp ytcc]}
-  '';
-}
diff --git a/pkgs/sources/yt/yts.nix b/pkgs/sources/yt/yts.nix
deleted file mode 100644
index 9a8b172e..00000000
--- a/pkgs/sources/yt/yts.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  lib,
-  rustPlatform,
-  ytcc,
-  makeWrapper,
-}:
-rustPlatform.buildRustPackage {
-  pname = "yts";
-  version = "0.1.0";
-
-  src = ./.;
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-  };
-
-  buildNoDefaultFeatures = true;
-  buildFeatures = ["yts"];
-
-  nativeBuildInputs = [
-    makeWrapper
-  ];
-
-  postInstall = ''
-    wrapProgram $out/bin/yts \
-      --prefix PATH : ${lib.makeBinPath [ytcc]}
-  '';
-}