aboutsummaryrefslogtreecommitdiff
path: root/mirenn
diff options
context:
space:
mode:
Diffstat (limited to 'mirenn')
-rw-r--r--mirenn/channels.scm12
-rw-r--r--mirenn/home.scm102
-rw-r--r--mirenn/home/files/dotfiles/.config/btop/btop.conf286
-rw-r--r--mirenn/home/files/dotfiles/.config/fastfetch/config.jsonc76
-rw-r--r--mirenn/home/files/dotfiles/.config/fish/conf.d/interactive.fish5
-rw-r--r--mirenn/home/files/dotfiles/.config/fish/conf.d/theme.fish38
-rw-r--r--mirenn/home/files/dotfiles/.config/fish/functions/cat.fish3
-rw-r--r--mirenn/home/files/dotfiles/.config/fish/functions/fish_prompt.fish7
-rw-r--r--mirenn/home/files/dotfiles/.config/fish/functions/rm.fish3
-rw-r--r--mirenn/home/files/dotfiles/.config/fish/functions/shrekfetch.fish3
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/.luarc.json7
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/init.lua1
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/config/globals.lua2
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/config/init.lua3
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/config/keymaps.lua39
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/config/lazy.lua47
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/config/options.lua51
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/comment.lua6
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/gitsigns.lua57
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/indent-blankline.lua16
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lazy.lua12
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lazydev.lua5
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lspsaga.lua34
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lualine.lua32
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/mini-starter.lua227
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/neopywal.lua26
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/neorg.lua127
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/noice.lua28
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-autopairs.lua6
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-cmp.lua64
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua138
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-treesitter.lua54
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/oil.lua63
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/parinfer-rust.lua6
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/telescope.lua42
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/todo-comments.lua36
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/toggleterm.lua64
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/vim-highlightedyank.lua8
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/vim-illuminate.lua5
-rw-r--r--mirenn/home/files/dotfiles/.config/nvim/lua/plugins/which-key.lua25
-rwxr-xr-xmirenn/home/files/dotfiles/.config/scripts/powermenu27
-rwxr-xr-xmirenn/home/files/dotfiles/.config/scripts/set_background18
-rwxr-xr-xmirenn/home/files/dotfiles/.config/scripts/set_random8
-rwxr-xr-xmirenn/home/files/dotfiles/.config/scripts/wallpapermenu12
-rw-r--r--mirenn/home/files/dotfiles/.config/swayidle/config5
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/foot33
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/mako25
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/niri300
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/nvim19
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/rofi-applauncher41
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/rofi-powermenu40
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/rofi-wallpapermenu45
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/swaylock36
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/templates/waybar93
-rw-r--r--mirenn/home/files/dotfiles/.config/wallust/wallust.toml16
-rw-r--r--mirenn/home/files/dotfiles/.config/waybar/config129
-rw-r--r--mirenn/home/files/dotfiles/.config/yazi/init.lua1
-rw-r--r--mirenn/home/files/dotfiles/.config/yazi/keymap.toml368
-rw-r--r--mirenn/home/files/dotfiles/.config/yazi/package.toml7
-rw-r--r--mirenn/home/files/dotfiles/.config/yazi/theme.toml959
-rw-r--r--mirenn/home/files/dotfiles/.config/yazi/yazi.toml213
-rw-r--r--mirenn/home/services/brightnessctl.scm37
-rw-r--r--mirenn/home/services/timer.scm42
-rw-r--r--mirenn/packages/bluetuith.scm30
-rw-r--r--mirenn/packages/files/ca-certs/home-internal-ca.pem11
-rw-r--r--mirenn/packages/lazygit.scm30
-rw-r--r--mirenn/packages/pki.scm22
-rw-r--r--mirenn/packages/tailscale.scm30
-rw-r--r--mirenn/packages/tree-sitter.scm3748
-rw-r--r--mirenn/packages/wallust.scm1486
-rw-r--r--mirenn/services/tailscale.scm34
-rw-r--r--mirenn/system.scm84
72 files changed, 9715 insertions, 0 deletions
diff --git a/mirenn/channels.scm b/mirenn/channels.scm
new file mode 100644
index 0000000..6b74de2
--- /dev/null
+++ b/mirenn/channels.scm
@@ -0,0 +1,12 @@
+(define-module (mirenn channels)
+ #:use-module (guix channels))
+
+(cons* (channel
+ (name 'nonguix)
+ (url "https://gitlab.com/nonguix/nonguix")
+ (introduction
+ (make-channel-introduction
+ "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
+ (openpgp-fingerprint
+ "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
+ %default-channels)
diff --git a/mirenn/home.scm b/mirenn/home.scm
new file mode 100644
index 0000000..9cdc93e
--- /dev/null
+++ b/mirenn/home.scm
@@ -0,0 +1,102 @@
+(define-module (mirenn home))
+
+(use-modules (gnu packages)
+ (gnu packages window-management)
+ (gnu packages finance)
+ (gnu home)
+ (gnu home services)
+ (gnu home services shells)
+ (gnu home services niri)
+ (gnu home services ssh)
+ (gnu home services shepherd)
+ (gnu home services xdg)
+ (gnu home services dotfiles)
+ (mirenn home services brightnessctl)
+ (mirenn home services timer)
+ (guix gexp))
+
+(home-environment
+ (packages (specifications->packages
+ (list
+ "foot" "waybar" "mako"
+ "rofi" "swaybg" "swaylock-effects"
+ "wallust" "swayidle" "libnotify"
+ "wl-clipboard" "wev" "fzf"
+ "fish" "neovim" "bat"
+ "btop" "fd" "ripgrep"
+ "zoxide" "trash-cli" "brightnessctl"
+ "pamixer" "pulsemixer" "sshfs"
+ "sshfs" "python-yubikey-manager" "libsixel"
+ "xdg-utils" "lazygit" "emacs"
+
+ "font-cica" "font-nerd-symbols" "font-google-noto-emoji"
+ "papirus-icon-theme"
+
+ "git" "git-lfs" "fastfetch"
+ "hyperfine" "rsync" "yt-dlp"
+ "mpv" "feh" "icecat"
+ "nautilus" "bzmenu" "icedove-wayland"
+ "trezord" "monero-gui" "steam"
+ "telegram-desktop" "ardour"
+ "zoom")))
+ (services (cons* (service home-fish-service-type
+ (home-fish-configuration
+ (environment-variables
+ '(("EDITOR" . "nvim")))))
+ (service home-xdg-mime-applications-service-type)
+ (service home-niri-service-type)
+ (service home-brightnessctl-service-type)
+ (service home-timer-service-type
+ (home-timer-configuration
+ (name 'random-wallpaper)
+ (script (local-file "home/files/dotfiles/.config/scripts/set_random"))
+ (arguments '("~/Pictures/Backgrounds/"))
+ (delay 3600)))
+ (service home-openssh-service-type
+ (home-openssh-configuration
+ (hosts
+ (list
+ (openssh-host
+ (name "github")
+ (user "git")
+ (host-name "github.com")
+ (extra-content " PreferredAuthentications publickey")
+ (identity-file "~/.ssh/zenbook"))
+ (openssh-host
+ (name "codeberg")
+ (user "git")
+ (host-name "codeberg.org")
+ (extra-content " PreferredAuthentications publickey")
+ (identity-file "~/.ssh/yubikey_sk"))
+ (openssh-host
+ (name "pve1")
+ (user "root")
+ (host-name "192.168.0.3")
+ (extra-content " PreferredAuthentications publickey")
+ (identity-file "~/.ssh/yubikey_sk")
+ (environment-variables
+ '(("TERM" . "xterm")))
+ (control-master 'auto)
+ (control-file-name "~/.ssh/yubikey_sk-%r@%h:%p")
+ (control-persist "5m"))
+ (openssh-host
+ (name "cgit")
+ (user "git")
+ (host-name "192.168.0.5")
+ (extra-content " PreferredAuthentications publickey")
+ (identity-file "~/.ssh/yubikey_sk")
+ (environment-variables
+ '(("TERM" . "xterm")))
+ (control-master 'auto)
+ (control-file-name "~/.ssh/yubikey_sk-%r@%h:%p")
+ (control-persist "5m"))
+ (openssh-host
+ (name "desktop")
+ (user "eric")
+ (host-name "100.64.0.7")
+ (extra-content " PreferredAuthentications publickey")
+ (identity-file "~/.ssh/zenbook"))))))
+ (service home-dotfiles-service-type
+ (home-dotfiles-configuration
+ (directories '("home/files/dotfiles"))))
+ %base-home-services)))
diff --git a/mirenn/home/files/dotfiles/.config/btop/btop.conf b/mirenn/home/files/dotfiles/.config/btop/btop.conf
new file mode 100644
index 0000000..d6e4c59
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/btop/btop.conf
@@ -0,0 +1,286 @@
+#? Config file for btop v.1.4.7
+
+#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
+#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
+color_theme = "TTY"
+
+#* If the theme set background should be shown, set to False if you want terminal background transparency.
+theme_background = false
+
+#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
+truecolor = true
+
+#* Set to true to force tty mode regardless if a real tty has been detected or not.
+#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
+force_tty = false
+
+#* Option to disable presets. Either the default preset, custom presets, or all presets.
+#* "Off" All presets are enabled.
+#* "Default" preset is disabled.#* "Custom" presets are disabled.#* "All" presets are disabled.
+disable_presets = "Off"
+
+#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
+#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
+#* Use whitespace " " as separator between different presets.
+#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
+presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
+
+#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
+#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
+vim_keys = false
+
+#* Disable all mouse events.
+disable_mouse = false
+
+#* Rounded corners on boxes, is ignored if TTY mode is ON.
+rounded_corners = false
+
+#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
+terminal_sync = true
+
+#* Default symbols to use for graph creation, "braille", "block" or "tty".
+#* "braille" offers the highest resolution but might not be included in all fonts.
+#* "block" has half the resolution of braille but uses more common characters.
+#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
+#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
+graph_symbol = "braille"
+
+# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
+graph_symbol_cpu = "default"
+
+# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
+graph_symbol_gpu = "default"
+
+# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
+graph_symbol_mem = "default"
+
+# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
+graph_symbol_net = "default"
+
+# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
+graph_symbol_proc = "default"
+
+#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
+shown_boxes = "proc cpu mem net"
+
+#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
+update_ms = 1000
+
+#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
+#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
+proc_sorting = "cpu lazy"
+
+#* Reverse sorting order, True or False.
+proc_reversed = false
+
+#* Show processes as a tree.
+proc_tree = false
+
+#* Use the cpu graph colors in the process list.
+proc_colors = true
+
+#* Use a darkening gradient in the process list.
+proc_gradient = true
+
+#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
+proc_per_core = true
+
+#* Show process memory as bytes instead of percent.
+proc_mem_bytes = true
+
+#* Show cpu graph for each process.
+proc_cpu_graphs = true
+
+#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
+proc_info_smaps = false
+
+#* Show proc box on left side of screen instead of right.
+proc_left = false
+
+#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
+proc_filter_kernel = false
+
+#* Should the process list follow the selected process when detailed view is open.
+proc_follow_detailed = true
+
+#* In tree-view, always accumulate child process resources in the parent process.
+proc_aggregate = false
+
+#* Should cpu and memory usage display be preserved for dead processes when paused.
+keep_dead_proc_usage = false
+
+#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
+#* Select from a list of detected attributes from the options menu.
+cpu_graph_upper = "total"
+
+#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
+#* Select from a list of detected attributes from the options menu.
+cpu_graph_lower = "total"
+
+#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
+show_gpu_info = "Auto"
+
+#* Toggles if the lower CPU graph should be inverted.
+cpu_invert_lower = true
+
+#* Set to True to completely disable the lower CPU graph.
+cpu_single_graph = true
+
+#* Show cpu box at bottom of screen instead of top.
+cpu_bottom = false
+
+#* Shows the system uptime in the CPU box.
+show_uptime = true
+
+#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
+show_cpu_watts = true
+
+#* Show cpu temperature.
+check_temp = true
+
+#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
+cpu_sensor = "Auto"
+
+#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
+show_coretemp = true
+
+#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
+#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
+#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
+#* Example: "4:0 5:1 6:3"
+cpu_core_map = ""
+
+#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
+temp_scale = "celsius"
+
+#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
+base_10_sizes = false
+
+#* Show CPU frequency.
+show_cpu_freq = true
+
+#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
+freq_mode = "first"
+
+#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
+#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
+clock_format = "%H:%M"
+
+#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
+background_update = true
+
+#* Custom cpu model name, empty string to disable.
+custom_cpu_name = ""
+
+#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
+#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
+disks_filter = "exclude=/boot"
+
+#* Show graphs instead of meters for memory values.
+mem_graphs = true
+
+#* Show mem box below net box instead of above.
+mem_below_net = false
+
+#* Count ZFS ARC in cached and available memory.
+zfs_arc_cached = true
+
+#* If swap memory should be shown in memory box.
+show_swap = true
+
+#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
+swap_disk = true
+
+#* If mem box should be split to also show disks info.
+show_disks = true
+
+#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
+only_physical = true
+
+#* Read disks list from /etc/fstab. This also disables only_physical.
+use_fstab = false
+
+#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
+zfs_hide_datasets = false
+
+#* Set to true to show available disk space for privileged users.
+disk_free_priv = false
+
+#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
+show_io_stat = true
+
+#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
+io_mode = false
+
+#* Set to True to show combined read/write io graphs in io mode.
+io_graph_combined = false
+
+#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
+#* Example: "/mnt/media:100 /:20 /boot:1".
+io_graph_speeds = ""
+
+#* Swap the positions of the upload and download speed graphs. When true, upload will be on top.
+swap_upload_download = false
+
+#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
+net_download = 100
+
+net_upload = 100
+
+#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
+net_auto = true
+
+#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
+net_sync = true
+
+#* Starts with the Network Interface specified here.
+net_iface = "br0"
+
+#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
+base_10_bitrate = "Auto"
+
+#* Show battery stats in top right if battery is present.
+show_battery = true
+
+#* Which battery to use if multiple are present. "Auto" for auto detection.
+selected_battery = "Auto"
+
+#* Show power stats of battery next to charge indicator.
+show_battery_watts = true
+
+#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
+#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
+log_level = "DEBUG"
+
+#* Automatically save current settings to config file on exit.
+save_config_on_exit = true
+
+#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
+nvml_measure_pcie_speeds = true
+
+#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
+rsmi_measure_pcie_speeds = true
+
+#* Horizontally mirror the GPU graph.
+gpu_mirror_graph = true
+
+#* Set which GPU vendors to show. Available values are "nvidia amd intel apple"
+shown_gpus = "nvidia amd intel"
+
+#* Custom gpu0 model name, empty string to disable.
+custom_gpu_name0 = ""
+
+#* Custom gpu1 model name, empty string to disable.
+custom_gpu_name1 = ""
+
+#* Custom gpu2 model name, empty string to disable.
+custom_gpu_name2 = ""
+
+#* Custom gpu3 model name, empty string to disable.
+custom_gpu_name3 = ""
+
+#* Custom gpu4 model name, empty string to disable.
+custom_gpu_name4 = ""
+
+#* Custom gpu5 model name, empty string to disable.
+custom_gpu_name5 = ""
diff --git a/mirenn/home/files/dotfiles/.config/fastfetch/config.jsonc b/mirenn/home/files/dotfiles/.config/fastfetch/config.jsonc
new file mode 100644
index 0000000..bfebe37
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/fastfetch/config.jsonc
@@ -0,0 +1,76 @@
+// _____ _____ _____ _____ _____ _____ _____ _____ _____
+// | __| _ | __|_ _| __| __|_ _| | | |
+// | __| |__ | | | | __| __| | | | --| |
+// |__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__| GUIX
+//
+// by Bina, modified by mirenn
+
+
+// execute with: fastfetch --colors-block-range-start 9 --colors-block-width 3
+
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "source": "guix_small",
+ "padding": {
+ "top": 1,
+ }
+ },
+ "display": {
+ "separator": " "
+ },
+ "modules": [
+ "break",
+ // {
+ // "type": "title",
+ // "keyWidth": 10
+ // },
+ {
+ "type": "os",
+ "key": " ",
+ "keyColor": "30", // = color3
+ },
+ {
+ "type": "kernel",
+ "key": " ",
+ "keyColor": "31",
+ },
+ {
+ "type": "packages",
+ "format": "{guix-all} (guix)",
+ "combined": true,
+ "key": " ",
+ "keyColor": "32",
+ },
+ {
+ "type": "shell",
+ "key": " ",
+ "keyColor": "33",
+ },
+ {
+ "type": "terminal",
+ "key": " ",
+ "keyColor": "34",
+ },
+ {
+ "type": "wm",
+ "key": " ",
+ "keyColor": "35",
+ },
+ {
+ "type": "uptime",
+ "key": " ",
+ "keyColor": "36",
+ },
+ {
+ "type": "media",
+ "key": "󰝚 ",
+ "keyColor": "37",
+ },
+ "break",
+ {
+ "type": "colors",
+ "block": { "width": 3, "range": [8, 15]}
+ }
+ ]
+}
diff --git a/mirenn/home/files/dotfiles/.config/fish/conf.d/interactive.fish b/mirenn/home/files/dotfiles/.config/fish/conf.d/interactive.fish
new file mode 100644
index 0000000..8f82c33
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/fish/conf.d/interactive.fish
@@ -0,0 +1,5 @@
+if status is-interactive
+ fish_add_path -p ~/.cargo/bin ~/.ghcup/bin
+ set -g fish_greeting
+ zoxide init fish | source
+end
diff --git a/mirenn/home/files/dotfiles/.config/fish/conf.d/theme.fish b/mirenn/home/files/dotfiles/.config/fish/conf.d/theme.fish
new file mode 100644
index 0000000..9b5e536
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/fish/conf.d/theme.fish
@@ -0,0 +1,38 @@
+set --global fish_color_autosuggestion brblack
+set --global fish_color_cancel --reverse
+set --global fish_color_command blue
+set --global fish_color_comment red
+set --global fish_color_cwd green
+set --global fish_color_cwd_root red
+set --global fish_color_end green
+set --global fish_color_error brred
+set --global fish_color_escape brcyan
+set --global fish_color_history_current --bold
+set --global fish_color_host normal
+set --global fish_color_host_remote yellow
+set --global fish_color_keyword normal
+set --global fish_color_match --background=brblue
+set --global fish_color_normal normal
+set --global fish_color_operator brcyan
+set --global fish_color_option cyan
+set --global fish_color_param cyan
+set --global fish_color_quote yellow
+set --global fish_color_redirection cyan --bold
+set --global fish_color_search_match bryellow --background=brblack
+set --global fish_color_selection white --bold --background=brblack
+set --global fish_color_status red
+set --global fish_color_user brgreen
+set --global fish_color_valid_path --underline
+set --global fish_pager_color_background
+set --global fish_pager_color_completion normal
+set --global fish_pager_color_description yellow --italics
+set --global fish_pager_color_prefix normal --bold --underline
+set --global fish_pager_color_progress brwhite --background=cyan
+set --global fish_pager_color_secondary_background
+set --global fish_pager_color_secondary_completion
+set --global fish_pager_color_secondary_description
+set --global fish_pager_color_secondary_prefix
+set --global fish_pager_color_selected_background --reverse
+set --global fish_pager_color_selected_completion
+set --global fish_pager_color_selected_description
+set --global fish_pager_color_selected_prefix
diff --git a/mirenn/home/files/dotfiles/.config/fish/functions/cat.fish b/mirenn/home/files/dotfiles/.config/fish/functions/cat.fish
new file mode 100644
index 0000000..73b5541
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/fish/functions/cat.fish
@@ -0,0 +1,3 @@
+function cat --wraps=bat --description 'alias cat bat'
+ bat $argv
+end
diff --git a/mirenn/home/files/dotfiles/.config/fish/functions/fish_prompt.fish b/mirenn/home/files/dotfiles/.config/fish/functions/fish_prompt.fish
new file mode 100644
index 0000000..e0df61e
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/fish/functions/fish_prompt.fish
@@ -0,0 +1,7 @@
+function fish_prompt
+ printf (if fish_is_root_user
+ echo '%s%s%s # '
+ else
+ echo '%s%s%s $ '
+ end) (set_color $fish_color_cwd) (prompt_pwd --full-length-dirs 5) (set_color normal)
+end
diff --git a/mirenn/home/files/dotfiles/.config/fish/functions/rm.fish b/mirenn/home/files/dotfiles/.config/fish/functions/rm.fish
new file mode 100644
index 0000000..7d8fe20
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/fish/functions/rm.fish
@@ -0,0 +1,3 @@
+function rm --wraps=trash --description 'alias rm trash'
+ trash $argv
+end
diff --git a/mirenn/home/files/dotfiles/.config/fish/functions/shrekfetch.fish b/mirenn/home/files/dotfiles/.config/fish/functions/shrekfetch.fish
new file mode 100644
index 0000000..191c64f
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/fish/functions/shrekfetch.fish
@@ -0,0 +1,3 @@
+function shrekfetch --wraps='fastfetch -l ~/Pictures/shrek.jpg --logo-type sixel --logo-width 30' --description 'alias shrekfetch fastfetch -l ~/Pictures/shrek.jpg --logo-type sixel --logo-width 30'
+ fastfetch -l ~/Pictures/shrek.jpg --logo-type sixel --logo-width 30 $argv
+end
diff --git a/mirenn/home/files/dotfiles/.config/nvim/.luarc.json b/mirenn/home/files/dotfiles/.config/nvim/.luarc.json
new file mode 100644
index 0000000..3f7714a
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/.luarc.json
@@ -0,0 +1,7 @@
+{
+ "diagnostics.globals": [
+ "vim",
+ "_lazygit_toggle",
+ "config"
+ ]
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/init.lua b/mirenn/home/files/dotfiles/.config/nvim/init.lua
new file mode 100644
index 0000000..dbc863e
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/init.lua
@@ -0,0 +1 @@
+require("config")
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/config/globals.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/config/globals.lua
new file mode 100644
index 0000000..6ef2cd8
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/config/globals.lua
@@ -0,0 +1,2 @@
+vim.g.mapleader = " "
+vim.g.maplocalleader = " "
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/config/init.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/config/init.lua
new file mode 100644
index 0000000..03722bd
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/config/init.lua
@@ -0,0 +1,3 @@
+require("config.lazy")
+require("config.keymaps")
+require("config.options")
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/config/keymaps.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/config/keymaps.lua
new file mode 100644
index 0000000..d81308d
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/config/keymaps.lua
@@ -0,0 +1,39 @@
+-- define common options
+local keymap = vim.keymap
+local opts = {
+ noremap = true, -- non-recursive
+ silent = true, -- do not show message
+}
+
+-- Pane Navigation
+keymap.set("n", "<C-h>", "<C-w>h", opts)
+keymap.set("n", "<C-j>", "<C-w>j", opts)
+keymap.set("n", "<C-k>", "<C-w>k", opts)
+keymap.set("n", "<C-l>", "<C-w>l", opts)
+
+-- Window Resize
+keymap.set("n", "<C-Up>", ":resize -2<Enter>", opts)
+keymap.set("n", "<C-Down>", ":resize +2<Enter>", opts)
+keymap.set("n", "<C-Left>", ":vertical resize -2<Enter>", opts)
+keymap.set("n", "<C-Right>", ":vertical resize +2<Enter>", opts)
+
+-- Window Managment
+keymap.set("n", "<Space>sv", ":vsplit<Enter>", opts)
+keymap.set("n", "<Space>sh", ":split<Enter>", opts)
+
+-- Indending
+keymap.set("v", "<", "<gv")
+keymap.set("v", ">", ">gv")
+
+-- Comments
+vim.api.nvim_set_keymap("n", "<C-c>", "gcc", { noremap = false })
+vim.api.nvim_set_keymap("v", "<C-c>", "gb", { noremap = false })
+
+-- Buffer kill
+-- keymap.set("n", "<C-q>", ":bunload<Enter>", opts)
+
+-- Working
+keymap.set("n", "<C-s>", ":w<Enter>", opts)
+
+-- Format All
+keymap.set("n", "fa", "ggVG=<C-o>", opts)
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/config/lazy.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/config/lazy.lua
new file mode 100644
index 0000000..135704c
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/config/lazy.lua
@@ -0,0 +1,47 @@
+-- bootstrap lazy
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+ vim.fn.system({
+ "git",
+ "clone",
+ "--filter=blob:none",
+ "https://github.com/folke/lazy.nvim.git",
+ "--branch=stable", -- latest stable release
+ lazypath,
+ })
+end
+vim.opt.rtp:prepend(lazypath)
+
+require("config.globals")
+
+local opts = {
+ defaults = {
+ lazy = true,
+ },
+ rtp = {
+ disabled_plugins = {
+ "gzip",
+ "matchit",
+ "matchparen",
+ "netrw",
+ "netrwPlugin",
+ "tarPlugin",
+ "tohtml",
+ "tutor",
+ "zipPlugin",
+ }
+ },
+ change_detection = {
+ notify = false,
+ },
+ ui = {
+ border = "rounded",
+ backdrop = 100,
+ },
+ checker = {
+ enabled = true,
+ },
+ lockfile = vim.fn.stdpath("state") .. "/lazy-lock.json",
+}
+
+require("lazy").setup("plugins", opts)
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/config/options.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/config/options.lua
new file mode 100644
index 0000000..e465418
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/config/options.lua
@@ -0,0 +1,51 @@
+local opt = vim.opt
+
+-- Indent
+opt.tabstop = 2
+opt.softtabstop = 2
+opt.shiftwidth = 2
+opt.expandtab = false
+opt.smartindent = true
+opt.wrap = false
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = "bend",
+ callback = function()
+ vim.opt_local.expandtab = true
+ vim.opt_local.tabstop = 4
+ vim.opt_local.shiftwidth = 4
+ end,
+})
+
+
+-- Appearance
+opt.number = true
+opt.relativenumber = false
+opt.cursorline = true
+opt.termguicolors = true
+opt.showmode = true
+opt.colorcolumn = "100"
+opt.signcolumn = "yes"
+opt.cmdheight = 1
+opt.scrolloff = 10
+opt.completeopt = "menuone,noinsert,noselect"
+opt.conceallevel = 3
+
+-- Search
+opt.incsearch = true
+opt.hlsearch = false
+opt.ignorecase = true
+opt.smartcase = true
+
+-- Behaviuor
+opt.hidden = true
+opt.errorbells = false
+opt.swapfile = false
+opt.backup = false
+opt.backspace = "indent,eol,start"
+opt.splitright = true
+opt.splitbelow = true
+opt.autochdir = false
+opt.mouse = "a"
+opt.clipboard = "unnamedplus"
+opt.modifiable = true
+opt.encoding = "UTF-8"
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/comment.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/comment.lua
new file mode 100644
index 0000000..559fd3c
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/comment.lua
@@ -0,0 +1,6 @@
+return {
+ "numToStr/Comment.nvim",
+ lazy = true,
+ event = { "BufReadPost", "BufWritePost", "BufNewFile" },
+ opts = {}
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/gitsigns.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/gitsigns.lua
new file mode 100644
index 0000000..2df9a2e
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/gitsigns.lua
@@ -0,0 +1,57 @@
+local opts = {
+ signs = {
+ add = { text = '┃' },
+ change = { text = '┃' },
+ delete = { text = '_' },
+ topdelete = { text = '‾' },
+ changedelete = { text = '~' },
+ untracked = { text = '┆' },
+ },
+ signs_staged = {
+ add = { text = '┃' },
+ change = { text = '┃' },
+ delete = { text = '_' },
+ topdelete = { text = '‾' },
+ changedelete = { text = '~' },
+ untracked = { text = '┆' },
+ },
+ signs_staged_enable = true,
+ signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
+ numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
+ linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
+ word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
+ watch_gitdir = {
+ follow_files = true
+ },
+ auto_attach = true,
+ attach_to_untracked = false,
+ current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
+ current_line_blame_opts = {
+ virt_text = true,
+ virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
+ delay = 1000,
+ ignore_whitespace = false,
+ virt_text_priority = 100,
+ use_focus = true,
+ },
+ current_line_blame_formatter = '<author>, <author_time:%R> - <summary>',
+ sign_priority = 6,
+ update_debounce = 100,
+ status_formatter = nil, -- Use default
+ max_file_length = 40000, -- Disable if file is longer than this (in lines)
+ preview_config = {
+ -- Options passed to nvim_open_win
+ style = 'minimal',
+ relative = 'cursor',
+ row = 0,
+ col = 1
+ },
+}
+
+return {
+ "lewis6991/gitsigns.nvim",
+ lazy = true,
+ event = "VeryLazy",
+ -- event = { "BufReadPost", "BufWritePost", "BufNewFile" },
+ opts = opts,
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/indent-blankline.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/indent-blankline.lua
new file mode 100644
index 0000000..af9cff8
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/indent-blankline.lua
@@ -0,0 +1,16 @@
+return {
+ "lukas-reineke/indent-blankline.nvim",
+ lazy = true,
+ event = { "BufReadPost", "BufWritePost", "BufNewFile" },
+ main = "ibl",
+ ---@module "ibl"
+ ---@type ibl.config
+ opts = {
+ exclude = {
+ filetypes = {
+ "dashboard",
+ "norg"
+ },
+ },
+ },
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lazy.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lazy.lua
new file mode 100644
index 0000000..d48db7e
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lazy.lua
@@ -0,0 +1,12 @@
+local init = function()
+ local keymap = vim.keymap
+ keymap.set("n", "<Space>p", ":Lazy home<Enter>",
+ { noremap = true, silent = true, desc = "Plugin Manager (Lazy)" })
+end
+
+
+return {
+ "folke/lazy.nvim",
+ lazy = false,
+ init = init
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lazydev.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lazydev.lua
new file mode 100644
index 0000000..704d963
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lazydev.lua
@@ -0,0 +1,5 @@
+return {
+ "folke/lazydev.nvim",
+ ft = "lua", -- only load on lua files
+ opts = {}
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lspsaga.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lspsaga.lua
new file mode 100644
index 0000000..86e949f
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lspsaga.lua
@@ -0,0 +1,34 @@
+local config = function()
+ vim.diagnostic.config({
+ severity_sort = true,
+ virtual_lines = true,
+ virtual_text = false
+ })
+ require("lspsaga").setup({
+ ui = {
+ code_action = "",
+ },
+ outline = {
+ keys = {
+ toggle_or_jump = "<Enter>"
+ }
+ },
+ finder = {
+ keys = {
+ toggle_or_open = "<Enter>",
+ shuttle = "<Tab>",
+ }
+ },
+ })
+end
+
+return {
+ "nvimdev/lspsaga.nvim",
+ lazy = true,
+ event = { "BufReadPost", "BufWritePost", "BufNewFile" },
+ config = config,
+ dependencies = {
+ "nvim-treesitter/nvim-treesitter", -- optional
+ "nvim-tree/nvim-web-devicons", -- optional
+ },
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lualine.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lualine.lua
new file mode 100644
index 0000000..495822e
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/lualine.lua
@@ -0,0 +1,32 @@
+local opts = {
+ options = {
+ theme = "auto",
+ globalstatus = true,
+ disabled_filetypes = { "toggleterm", "lazy", "oil", "dashboard", "TelescopePrompt", "oil_preview", "ministarter" }
+ },
+ sections = {
+ lualine_a = { "mode" },
+ lualine_b = { "branch", "diff",
+ {
+ "diagnostics",
+ sections = { "error", "warn", "info", "hint" },
+ symbols = { error = " ", warn = " ", info = " ", hint = " " },
+ }
+ },
+ lualine_c = {
+ {
+ require("lazy.status").updates,
+ cond = require("lazy.status").has_updates,
+ color = { fg = "#ff9e64" },
+ },
+ },
+ },
+}
+
+return {
+ "nvim-lualine/lualine.nvim",
+ lazy = true,
+ event = "VeryLazy",
+ -- event = { "BufReadPost", "BufWritePost", "BufNewFile" },
+ opts = opts,
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/mini-starter.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/mini-starter.lua
new file mode 100644
index 0000000..67aae04
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/mini-starter.lua
@@ -0,0 +1,227 @@
+Headers = {
+ [[
+ ███╗ ██╗ ███████╗ ██████╗ ██╗ ██╗ ██╗ ███╗ ███╗
+ ████╗ ██║ ██╔════╝██╔═══██╗ ██║ ██║ ██║ ████╗ ████║
+ ██╔██╗ ██║ █████╗ ██║ ██║ ██║ ██║ ██║ ██╔████╔██║
+ ██║╚██╗██║ ██╔══╝ ██║ ██║ ╚██╗ ██╔╝ ██║ ██║╚██╔╝██║
+ ██║ ╚████║ ███████╗╚██████╔╝ ╚████╔╝ ██║ ██║ ╚═╝ ██║
+ ╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝
+ ]],
+ [[
+ ███▄ █ ▓█████ ▒█████ ██▒ █▓ ██▓ ███▄ ▄███▓
+ ██ ▀█ █ ▓█ ▀ ▒██▒ ██▒▓██░ █▒▓██▒▓██▒▀█▀ ██▒
+ ▓██ ▀█ ██▒▒███ ▒██░ ██▒ ▓██ █▒░▒██▒▓██ ▓██░
+ ▓██▒ ▐▌██▒▒▓█ ▄ ▒██ ██░ ▒██ █░░░██░▒██ ▒██
+ ▒██░ ▓██░░▒████▒░ ████▓▒░ ▒▀█░ ░██░▒██▒ ░██▒
+ ░ ▒░ ▒ ▒ ░░ ▒░ ░░ ▒░▒░▒░ ░ ▐░ ░▓ ░ ▒░ ░ ░
+ ░ ░░ ░ ▒░ ░ ░ ░ ░ ▒ ▒░ ░ ░░ ▒ ░░ ░ ░
+ ░ ░ ░ ░ ░ ░ ░ ▒ ░░ ▒ ░░ ░
+ ░ ░ ░ ░ ░ ░ ░ ░
+ ░
+ ]],
+ [[
+ ██████ █████ █████ █████ ███
+ ░░██████ ░░███ ░░███ ░░███ ░░░
+ ░███░███ ░███ ██████ ██████ ░███ ░███ ████ █████████████
+ ░███░░███░███ ███░░███ ███░░███ ░███ ░███ ░░███ ░░███░░███░░███
+ ░███ ░░██████ ░███████ ░███ ░███ ░░███ ███ ░███ ░███ ░███ ░███
+ ░███ ░░█████ ░███░░░ ░███ ░███ ░░░█████░ ░███ ░███ ░███ ░███
+ █████ ░░█████░░██████ ░░██████ ░░███ █████ █████░███ █████
+ ░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░ ░░░░░ ░░░░░ ░░░ ░░░░░
+ ]],
+ [[
+ ▐ ▄ ▄▄▄ . ▌ ▐·▪ • ▌ ▄ ·.
+ •█▌▐█▀▄.▀· ▄█▀▄ ▪█·█▌██ ·██ ▐███▪
+ ▐█▐▐▌▐▀▀▪▄▐█▌.▐▌▐█▐█•▐█·▐█ ▌▐▌▐█·
+ ██▐█▌▐█▄▄▌▐█▌.▐▌ ███ ▐█▌██ ██▌▐█▌
+ ▀▀ █▪ ▀▀▀ ▀█▄▀▪. ▀ ▀▀▀▀▀ █▪▀▀▀
+ ]],
+ [[
+ __ __ ________ ______ __ __ ______ __ __
+ | \ | \ \/ \| \ | \ \ \ / \
+ | ▓▓\ | ▓▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓\ ▓▓ | ▓▓\▓▓▓▓▓▓ ▓▓\ / ▓▓
+ | ▓▓▓\| ▓▓ ▓▓__ | ▓▓ | ▓▓ ▓▓ | ▓▓ | ▓▓ | ▓▓▓\ / ▓▓▓
+ | ▓▓▓▓\ ▓▓ ▓▓ \ | ▓▓ | ▓▓\▓▓\ / ▓▓ | ▓▓ | ▓▓▓▓\ ▓▓▓▓
+ | ▓▓\▓▓ ▓▓ ▓▓▓▓▓ | ▓▓ | ▓▓ \▓▓\ ▓▓ | ▓▓ | ▓▓\▓▓ ▓▓ ▓▓
+ | ▓▓ \▓▓▓▓ ▓▓_____| ▓▓__/ ▓▓ \▓▓ ▓▓ _| ▓▓_| ▓▓ \▓▓▓| ▓▓
+ | ▓▓ \▓▓▓ ▓▓ \\▓▓ ▓▓ \▓▓▓ | ▓▓ \ ▓▓ \▓ | ▓▓
+ \▓▓ \▓▓\▓▓▓▓▓▓▓▓ \▓▓▓▓▓▓ \▓ \▓▓▓▓▓▓\▓▓ \▓▓
+ ]],
+ [[
+ ▀███▄ ▀███▀███▀▀▀███ ▄▄█▀▀██▄ ▀████▀ ▀███▀████▀████▄ ▄███▀
+ ███▄ █ ██ ▀█▄██▀ ▀██▄ ▀██ ▄█ ██ ████ ████
+ █ ███ █ ██ █ ██▀ ▀██ ██▄ ▄█ ██ █ ██ ▄█ ██
+ █ ▀██▄ █ ██████ ██ ██ ██▄ █▀ ██ █ █▓ █▀ ██
+ █ ▀██▄▓ ██ █ ▄█ ██ ▀▓█ ▓▀ █▓ ▓ █▓▄█▀ ██
+ ▓ ▓█▓ █▓ ▄███ ██▀ ▓██▄ █▓ ▓ ▀▓█▀ ██
+ ▓ ▀▓▓▓▓ ▓▓ ▓ ▓██ ▓█▓ ▓▓ ▓▀ ▓▓ ▓ ▓▓▓▓▀ ▓▓
+ ▓ ▓▓▓ ▓▓ ▓▓█▓▓▓ ▓▓▓ ▓▓▒▒ ▒▓ ▒ ▀▓▓▀ ▓▓
+ ▒ ▒ ▒ ▒▓▓▒ ▒▒▒▓▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒▓▒ ▒▒ ▒▒▒ ▒ ▒ ▒▒▒
+ ]],
+ [[
+ ⣴⣶⣤⡤⠦⣤⣀⣤⠆ ⣈⣭⣿⣶⣿⣦⣼⣆
+ ⠉⠻⢿⣿⠿⣿⣿⣶⣦⠤⠄⡠⢾⣿⣿⡿⠋⠉⠉⠻⣿⣿⡛⣦
+ ⠈⢿⣿⣟⠦ ⣾⣿⣿⣷ ⠻⠿⢿⣿⣧⣄
+ ⣸⣿⣿⢧ ⢻⠻⣿⣿⣷⣄⣀⠄⠢⣀⡀⠈⠙⠿⠄
+ ⢠⣿⣿⣿⠈ ⣻⣿⣿⣿⣿⣿⣿⣿⣛⣳⣤⣀⣀
+ ⢠⣧⣶⣥⡤⢄ ⣸⣿⣿⠘ ⢀⣴⣿⣿⡿⠛⣿⣿⣧⠈⢿⠿⠟⠛⠻⠿⠄
+ ⣰⣿⣿⠛⠻⣿⣿⡦⢹⣿⣷ ⢊⣿⣿⡏ ⢸⣿⣿⡇ ⢀⣠⣄⣾⠄
+ ⣠⣿⠿⠛ ⢀⣿⣿⣷⠘⢿⣿⣦⡀ ⢸⢿⣿⣿⣄ ⣸⣿⣿⡇⣪⣿⡿⠿⣿⣷⡄
+ ⠙⠃ ⣼⣿⡟ ⠈⠻⣿⣿⣦⣌⡇⠻⣿⣿⣷⣿⣿⣿ ⣿⣿⡇ ⠛⠻⢷⣄
+ ⢻⣿⣿⣄ ⠈⠻⣿⣿⣿⣷⣿⣿⣿⣿⣿⡟ ⠫⢿⣿⡆
+ ⠻⣿⣿⣿⣿⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⡟⢀⣀⣤⣾⡿⠃
+ ]],
+ [[
+ ,-. _,---._ __ / \
+ / ) .-' `./ / \
+ ( ( ,' `/ /|
+ \ `-" \'\ / |
+ `. , \ \ / |
+ /`. ,'-`----Y |
+ ( ; | '
+ | ,-. ,-' | /
+ | | ( | | /
+ ) | \ `.___________|/
+ `--' `--'
+ ]],
+ [[
+ |\ _,,,---,,_
+ ZZZzz /,`.-'`' -. ;-;;,_
+ |,4- ) )-,_. ,\ ( `'-'
+ '---''(_/--' `-'\_)
+ ]],
+ [[
+ ╭╮╭┬─╮╭─╮┬ ┬┬╭┬╮
+ │││├┤ │ │╰┐┌╯││││
+ ╯╰╯╰─╯╰─╯ ╰╯ ┴┴ ┴
+ ]],
+}
+
+Quotes = {
+ [[
+ I don't care that they stole my idea... I care that they don't have any of their own.
+ ~ Nikola Tesla
+ ]],
+ [[
+ Make everything as simple as possible, but not simpler.
+ ~ Albert Einstein
+ ]],
+ [[
+ Code never lies, comments sometimes do.
+ ~ Ron Jeffries
+ ]],
+ [[
+ Good code is its own best documentation.
+ ~ Steve McConnell
+ ]],
+ [[
+ I do not fear computers. I fear the lack of them.
+ ~ Isaac Asimov
+ ]],
+ [[
+ If a machine is expected to be infallible, it cannot also be intelligent.
+ ~ Alan Turing
+ ]],
+ [[
+ Mathematical reasoning may be regarded.
+ ~ Alan Turing
+ ]],
+ [[
+ Anti-social behavior is a trait of intelligence in a world full of conformists.
+ ~ Nikola Tesla
+ ]],
+ [[
+ We are very, very small, but we are profoundly capable of very, very big things.
+ ~ Stephen Hawking
+ ]],
+ [[
+ Quiet people have the loudest minds.
+ ~ Stephen Hawking
+ ]],
+ [[
+ An idiot admires complexity, a genius admires simplicity.
+ ~ Terry Davis
+ ]],
+ [[
+ It's hardware that makes a machine fast. It's software that makes a fast machine slow.
+ ~ Craig Reucassel
+ ]],
+ [[
+ Computer science is no more about computers than astronomy is about telescopes.
+ ~ Edsger Dijkstra
+ ]],
+ [[
+ An algorithm must be seen to be believed.
+ ~ Donald Knuth
+ ]],
+ [[
+ In theory there is no difference between theory and practice.
+ In practice there is.
+ ~ Yogi Berra
+ ]],
+ [[
+ If Java had true garbage collection, most programs would delete themselves upon execution.
+ ~ Robert Sewell
+ ]],
+ [[
+ If debugging is the process of removing software bugs,
+ then programming must be the process of putting them in.
+ ~ Edsger Dijkstra
+ ]],
+ [[
+ Most of you are familiar with the virtues of a programmer.
+ There are three, of course: laziness, impatience, and hubris.
+ ~ Larry Wall
+ ]],
+ [[
+ The question of whether computers can think is like the question of whether submarines can swim.
+ ~ Edsger Dijkstra
+ ]],
+ [[
+ Of course, I'd also suggest that whoever was the genius who thought it was a good idea to read
+ things ONE F*CKING BYTE AT A TIME with system calls for each byte should be retroactively aborted.
+ Who the f*ck does idiotic things like that? How did they not die as babies, considering that they
+ were likely too stupid to find a tit to suck on?
+ ~ Linus Torvalds
+ ]]
+}
+
+
+math.randomseed(os.time())
+
+local header = function()
+ return Headers[math.random(#Headers)]
+end
+
+local footer = function()
+ return Quotes[math.random(#Quotes)]
+end
+
+
+local config = function()
+ local starter = require("mini.starter")
+ vim.keymap.set("n", "<Space>d", starter.open, { desc = "Dashboard" })
+ starter.setup({
+ autoopen = true,
+ evaluate_single = false,
+ items = {
+ starter.sections.recent_files(5, false, true),
+ { name = "Plugin Manager", action = "Lazy", section = "Actions" },
+ { name = "File Browser", action = "Oil --float", section = "Actions" },
+ { name = "Neorg Index", action = "Neorg index", section = "Actions" },
+ { name = 'Edit new buffer', action = 'enew', section = 'Actions' },
+ { name = 'Quit Neovim', action = 'qall', section = 'Actions' },
+ },
+ header = header,
+ footer = footer,
+ content_hooks = nil,
+ query_updaters = "abcdefghijklmnopqrstuvwxyz0123456789_-.",
+ silent = false,
+ })
+end
+
+return {
+ "echasnovski/mini.starter",
+ lazy = false,
+ config = config
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/neopywal.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/neopywal.lua
new file mode 100644
index 0000000..7c37dbe
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/neopywal.lua
@@ -0,0 +1,26 @@
+local init = function()
+ vim.cmd.colorscheme("neopywal")
+end
+
+local config = function()
+ require("neopywal").setup({
+ plugins = {
+ treesitter = true
+ },
+ custom_colors = {},
+ custom_highlights = {},
+ use_palette = {
+ light = "wallust",
+ dark = "wallust",
+ },
+ })
+end
+
+return {
+ "RedsXDD/neopywal.nvim",
+ lazy = false,
+ name = "neopywal",
+ init = init,
+ config = config,
+ priority = 1000,
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/neorg.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/neorg.lua
new file mode 100644
index 0000000..b6480b8
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/neorg.lua
@@ -0,0 +1,127 @@
+local config = function()
+ vim.api.nvim_create_autocmd("Filetype", {
+ pattern = "norg",
+ callback = function()
+ -- remap keybinds
+ vim.keymap.set("n", "<Space>nn", "<Plug>(neorg.dirman.new-note)", { buffer = true })
+ vim.keymap.set("n", "<Space>tc", "<cmd>Neorg toc<CR>", { buffer = true })
+
+ vim.keymap.set("i", "<C-d>", "<Plug>(neorg.promo.demote)", { buffer = true })
+ vim.keymap.set("i", "<C-t>", "<Plug>(neorg.promo.promote)", { buffer = true })
+ vim.keymap.set("i", "<M-CR>", "<Plug>(neorg.itero.next-iteration)", { buffer = true })
+ vim.keymap.set("i", "<M-d>", "<Plug>(neorg.tempus.insert-date.insert-mode)", { buffer = true })
+
+ vim.keymap.set("n", "<.", "<Plug>(neorg.promo.demote)", { buffer = true })
+ vim.keymap.set("n", "<<", "<Plug>(neorg.promo.demote.nested)", { buffer = true })
+ vim.keymap.set("n", "<C-Space>", "<Plug>(neorg.qol.todo-items.todo.task-cycle)",
+ { buffer = true })
+ vim.keymap.set("n", "<CR>", "<Plug>(neorg.esupports.hop.hop-link)", { buffer = true })
+ vim.keymap.set("n", "<Space>cm", "<Plug>(neorg.looking-glass.magnify-code-block)",
+ { buffer = true })
+ vim.keymap.set("n", "<Space>id", "<Plug>(neorg.tempus.insert-date)", { buffer = true })
+ vim.keymap.set("n", "<Space>li", "<Plug>(neorg.pivot.list.invert)", { buffer = true })
+ vim.keymap.set("n", "<Space>lt", "<Plug>(neorg.pivot.list.toggle)", { buffer = true })
+ vim.keymap.set("n", "<Space>ma", "<Plug>(neorg.qol.todo-items.todo.task-ambiguous)",
+ { buffer = true })
+ vim.keymap.set("n", "<Space>mc", "<Plug>(neorg.qol.todo-items.todo.task-cancelled)",
+ { buffer = true })
+ vim.keymap.set("n", "<Space>md", "<Plug>(neorg.qol.todo-items.todo.task-done)", { buffer = true })
+ vim.keymap.set("n", "<Space>mh", "<Plug>(neorg.qol.todo-items.todo.task-on-hold)",
+ { buffer = true })
+ vim.keymap.set("n", "<Space>mi", "<Plug>(neorg.qol.todo-items.todo.task-important)",
+ { buffer = true })
+ vim.keymap.set("n", "<Space>mp", "<Plug>(neorg.qol.todo-items.todo.task-pending)",
+ { buffer = true })
+ vim.keymap.set("n", "<Space>mr", "<Plug>(neorg.qol.todo-items.todo.task-recurring)",
+ { buffer = true })
+ vim.keymap.set("n", "<Space>mu", "<Plug>(neorg.qol.todo-items.todo.task-undone)",
+ { buffer = true })
+ vim.keymap.set("n", "<M-CR>", "<Plug>(neorg.esupports.hop.hop-link.vsplit)", { buffer = true })
+ vim.keymap.set("n", "<M-t>", "<Plug>(neorg.esupports.hop.hop-link.tab-drop)", { buffer = true })
+ vim.keymap.set("n", ">.", "Plug>(neorg.promo.promote)", { buffer = true })
+ vim.keymap.set("n", ">>", "Plug>(neorg.promo.promote.nested)", { buffer = true })
+
+ vim.keymap.set("v", "<", "<Plug>(neorg.promo.demote.range)", { buffer = true })
+ vim.keymap.set("v", ">", "<Plug>(neorg.promo.promote.range)", { buffer = true })
+ end,
+ })
+
+ require("neorg").setup({
+ load = {
+ ["core.defaults"] = {
+ config = {
+ disable = {
+ "core.esupports.metagen",
+ "core.journal",
+ }
+ }
+ },
+ ["core.keybinds"] = {
+ config = {
+ default_keybinds = false
+ }
+ },
+ ["core.summary"] = {},
+ -- ["core.latex.renderer"] = {},
+ ["core.export"] = {},
+ ["core.dirman"] = {
+ config = {
+ default_workspace = "documents",
+ workspaces = {
+ documents = "~/Documents/neorg",
+ physics = "~/Documents/neorg/uni/fisica",
+ asd = "~/Documents/neorg/uni/algoritmi-strutture-dati",
+ },
+ index = "index.norg"
+ }
+ },
+ ["core.completion"] = {
+ config = {
+ engine = "nvim-cmp"
+ }
+ },
+ ["core.journal"] = {
+ config = {
+ journal_folder = "journal",
+ workspace = "documents"
+ }
+ },
+ ["core.esupports.metagen"] = {
+ config = {
+ timezone = "implicit-local",
+ type = "auto"
+ }
+ },
+ ["core.concealer"] = {
+ config = {
+ folds = false,
+ icons = {
+ heading = {
+ icons = { "󰲠", "󰲢", "󰲤", "󰲦", "󰲨", "󰲪" },
+ },
+ todo = {
+ cancelled = { icon = "" },
+ pending = { icon = "󰔛" },
+ uncertain = { icon = "" },
+ urgent = { icon = "" },
+ },
+ code_block = {
+ conceal = true,
+ }
+ }
+ }
+ }
+ }
+ })
+end
+
+return {
+ "nvim-neorg/neorg",
+ enabled = false,
+ lazy = true,
+ ft = "norg",
+ cmd = "Neorg",
+ version = "*", -- Pin Neorg to the latest stable release
+ config = config,
+ -- dependencies = { "3rd/image.nvim" }
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/noice.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/noice.lua
new file mode 100644
index 0000000..43a12b2
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/noice.lua
@@ -0,0 +1,28 @@
+local opts = {
+ lsp = {
+ -- override markdown rendering so that **cmp** and other plugins use **Treesitter**
+ override = {
+ ["vim.lsp.util.convert_input_to_markdown_lines"] = true,
+ ["vim.lsp.util.stylize_markdown"] = true,
+ ["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
+ },
+ },
+ -- you can enable a preset for easier configuration
+ presets = {
+ bottom_search = true, -- use a classic bottom cmdline for search
+ command_palette = true, -- position the cmdline and popupmenu together
+ long_message_to_split = true, -- long messages will be sent to a split
+ inc_rename = false, -- enables an input dialog for inc-rename.nvim
+ lsp_doc_border = true, -- add a border to hover docs and signature help
+ },
+}
+
+return {
+ "folke/noice.nvim",
+ lazy = true,
+ event = "VeryLazy",
+ opts = opts,
+ dependencies = {
+ "MunifTanjim/nui.nvim",
+ },
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-autopairs.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-autopairs.lua
new file mode 100644
index 0000000..d92a8cc
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-autopairs.lua
@@ -0,0 +1,6 @@
+return {
+ "windwp/nvim-autopairs",
+ lazy = true,
+ event = "InsertEnter",
+ config = true
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-cmp.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-cmp.lua
new file mode 100644
index 0000000..b7d71a3
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-cmp.lua
@@ -0,0 +1,64 @@
+local config = function()
+ local cmp = require("cmp")
+ vim.opt.completeopt = "menu,menuone"
+
+ cmp.setup({
+ formatting = {
+ expandable_indicator = false,
+ fields = { "abbr", "kind" },
+ format = require("lspkind").cmp_format({
+ mode = "text_symbol",
+ maxwidth = function() return math.floor(0.45 * vim.o.columns) end,
+ ellipsis_char = "...", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
+ before = function(_, vim_item)
+ vim_item.menu = ""
+ return vim_item
+ end
+ })
+ },
+ snippet = {
+ expand = function(args)
+ vim.snippet.expand(args.body)
+ end,
+ },
+ window = {
+ completion = cmp.config.window.bordered(),
+ documentation = cmp.config.window.bordered(),
+ },
+ mapping = {
+ ["<TAB>"] = cmp.mapping.select_next_item(),
+ ["<C-b>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<C-e>"] = cmp.mapping.abort(),
+ ["<CR>"] = cmp.mapping.confirm({ select = true }),
+ },
+ sources = cmp.config.sources(
+ {
+ { name = "lazydev", group_index = 0 }
+ }, {
+ { name = "neorg" }
+ }, {
+ { name = "nvim_lsp" },
+ }, {
+ { name = "path" },
+ }, {
+ { name = "buffer" },
+ }
+ )
+ })
+end
+
+return {
+ "hrsh7th/nvim-cmp",
+ lazy = true,
+ event = "InsertEnter",
+ config = config,
+ dependencies = {
+ "neovim/nvim-lspconfig",
+ "onsails/lspkind.nvim",
+ "hrsh7th/cmp-nvim-lsp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-path",
+ },
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua
new file mode 100644
index 0000000..4c69816
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-lspconfig.lua
@@ -0,0 +1,138 @@
+local config = function()
+ local lsp = vim.lsp
+ local capabilities = require("cmp_nvim_lsp").default_capabilities()
+
+ -- setting custom signs
+ vim.diagnostic.config({
+ signs = {
+ text = {
+ [vim.diagnostic.severity.ERROR] = '',
+ [vim.diagnostic.severity.WARN] = '',
+ [vim.diagnostic.severity.HINT] = '',
+ [vim.diagnostic.severity.INFO] = '',
+ },
+ linehl = {
+ [vim.diagnostic.severity.ERROR] = 'ErrorMsg',
+ },
+ numhl = {
+ [vim.diagnostic.severity.WARN] = 'WarningMsg',
+ },
+ },
+ })
+
+ vim.api.nvim_create_autocmd('LspAttach', {
+ callback = function(ev)
+ local client = lsp.get_client_by_id(ev.data.client_id)
+ local keymap = vim.keymap
+ local opts = { noremap = true, silent = true, buffer = ev.buf, desc = "" }
+
+ -- setting custom keymaps
+ opts.desc = "Finder"
+ keymap.set("n", "<Space>lf", ":Lspsaga finder<Enter>", opts) -- go to definition
+ opts.desc = "Peek Definition (Lspsaga)"
+ keymap.set("n", "<Space>lp", ":Lspsaga peek_definition<Enter>", opts) -- peak definition
+ opts.desc = "Goto Definition (Lspsaga)"
+ keymap.set("n", "<Space>lg", ":Lspsaga goto_definition<Enter>", opts) -- go to definition
+ opts.desc = "Code Action (Lspsaga)"
+ keymap.set("n", "<Space>la", ":Lspsaga code_action<Enter>", opts) -- see available code actions
+ opts.desc = "Rename (Lspsaga)"
+ keymap.set("n", "<Space>lr", ":Lspsaga rename<Enter>", opts) -- smart rename
+ opts.desc = "Hover Documentation (Lspsaga)"
+ keymap.set("n", "<Space>lk", lsp.buf.hover, opts) -- show documentation for what is under cursor
+ opts.desc = "Outline (Lspsaga)"
+ keymap.set("n", "<Space>lo", ":Lspsaga outline<Enter>", opts) -- show outline
+ opts.desc = "Diagnostic (Lspsaga)"
+ keymap.set("n", "<Space>ld", ":Lspsaga show_workspace_diagnostics<Enter>", opts) -- show diagnostics
+
+ -- enable auto formatting on save
+ if client ~= nil and client:supports_method("textDocument/formatting") then
+ vim.api.nvim_create_autocmd("BufWritePre", {
+ buffer = ev.buf,
+ callback = function()
+ lsp.buf.format({ async = true })
+ end,
+ })
+ end
+ end
+ })
+
+ vim.api.nvim_create_autocmd('LspDetach', {
+ callback = function(ev)
+ local client = lsp.get_client_by_id(ev.data.client_id)
+ local keymap = vim.keymap
+ keymap.del("n", "<Space>lf")
+ keymap.del("n", "<Space>lp")
+ keymap.del("n", "<Space>lg")
+ keymap.del("n", "<Space>la")
+ keymap.del("n", "<Space>lr")
+ keymap.del("n", "<Space>lk")
+ keymap.del("n", "<Space>lo")
+ keymap.del("n", "<Space>ld")
+ if client ~= nil and client:supports_method('textDocument/formatting') then
+ vim.api.nvim_clear_autocmds({
+ event = 'BufWritePre',
+ buffer = ev.buf,
+ })
+ end
+ end,
+ })
+
+ -- C/C++
+ lsp.enable("clangd")
+ lsp.config("clangd", {
+ capabilities = capabilities,
+ })
+ -- Rust
+ lsp.enable("rust_analyzer")
+ lsp.config("rust_analyzer", {
+ capabilities = capabilities,
+ })
+ -- Haskell
+ lsp.enable("hls")
+ lsp.config("hls", {
+ capabilities = capabilities,
+ settings = {
+ ['haskell'] = {
+ cabalFormattingProvider = "cabalfmt",
+ formattingProvider = "ormolu"
+ },
+ },
+ })
+ -- Lua
+ lsp.enable("lua_ls")
+ lsp.config("lua_ls", {
+ capabilities = capabilities,
+ })
+ -- JavaScript/Typescript
+ lsp.enable("ts_ls")
+ lsp.config("ts_ls", {
+ capabilities = capabilities,
+ })
+ -- CSS
+ lsp.enable("cssls")
+ lsp.config("cssls", {
+ capabilities = capabilities,
+ })
+ -- Meson
+ lsp.enable("mesonlsp")
+ lsp.config("mesonlsp", {
+ capabilities = capabilities,
+ })
+ -- Zig
+ lsp.enable("zls")
+ lsp.config("zls", {
+ capabilities = capabilities,
+ })
+ -- Python
+ lsp.enable("pyright")
+ lsp.config("pyright", {
+ capabilities = capabilities,
+ })
+end
+
+return {
+ "neovim/nvim-lspconfig",
+ config = config,
+ lazy = true,
+ event = { "FileType" },
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-treesitter.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-treesitter.lua
new file mode 100644
index 0000000..15d88b1
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/nvim-treesitter.lua
@@ -0,0 +1,54 @@
+local config = function()
+ require("nvim-treesitter.config").setup {
+ install_dir = vim.fn.stdpath('data') .. '/site',
+ auto_install = false,
+ sync_install = false,
+ highlight = {
+ enable = true,
+ additional_vim_regex_highlighting = false,
+ },
+ incremental_selection = {
+ enable = true
+ },
+ indent = {
+ enable = true,
+ },
+ autotag = {
+ enable = true,
+ },
+ }
+
+ local parsers = {
+ "c",
+ "lua",
+ "markdown",
+ "vim",
+ "vimdoc",
+ "query",
+ "regex",
+ "diff",
+ "cmake",
+ "meson",
+ "markdown_inline",
+ "bash",
+ "toml",
+ "latex",
+ "cpp",
+ "rust",
+ "haskell",
+ "nix",
+ "javascript",
+ "norg",
+ "fish",
+ "kdl",
+ }
+ -- require("nvim-treesitter").install(parsers)
+end
+
+return {
+ "nvim-treesitter/nvim-treesitter",
+ lazy = false,
+ branch = "main",
+ -- build = ":TSUpdate",
+ config = config
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/oil.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/oil.lua
new file mode 100644
index 0000000..0d90db2
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/oil.lua
@@ -0,0 +1,63 @@
+local init = function()
+ local keymap = vim.keymap
+ keymap.set("n", "<Space>b", ":Oil --float .<Enter>",
+ { noremap = true, silent = true, desc = "File browser (Oil)" }) -- Oil
+end
+
+local config = function()
+ local detail = false
+ require("oil").setup({
+ float = {
+ border = "rounded",
+ },
+ confirmation = {
+ border = "rounded",
+ },
+ progress = {
+ border = "rounded",
+ },
+ ssh = {
+ border = "rounded",
+ },
+ keymaps_help = {
+ border = "rounded",
+ },
+ default_file_explorer = true,
+ delete_to_trash = true,
+ skip_confirm_for_simple_edits = true,
+ keymaps = {
+ ["b?"] = "actions.show_help",
+ ["<CR>"] = "actions.select",
+ ["bp"] = "actions.preview",
+ ["q"] = "actions.close",
+ ["br"] = "actions.refresh",
+ ["-"] = "actions.parent",
+ ["_"] = "actions.open_cwd",
+ ["~"] = "actions.cd",
+ ["bs"] = "actions.change_sort",
+ ["b."] = "actions.toggle_hidden",
+ ["bt"] = "actions.toggle_trash",
+ ["bd"] = {
+ desc = "Toggle file detail view",
+ callback = function()
+ detail = not detail
+ if detail then
+ require("oil").set_columns({ "icon", "permissions", "size", "mtime" })
+ else
+ require("oil").set_columns({ "icon" })
+ end
+ end,
+ },
+ },
+ use_default_keymaps = false,
+ })
+end
+
+return {
+ "stevearc/oil.nvim",
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ lazy = true,
+ cmd = "Oil",
+ init = init,
+ config = config
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/parinfer-rust.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/parinfer-rust.lua
new file mode 100644
index 0000000..2b31d8a
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/parinfer-rust.lua
@@ -0,0 +1,6 @@
+return {
+ "eraserhd/parinfer-rust",
+ build = "cargo build --release",
+ lazy = true,
+ ft = { "scheme", "lisp" }
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/telescope.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/telescope.lua
new file mode 100644
index 0000000..0f6d853
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/telescope.lua
@@ -0,0 +1,42 @@
+local init = function()
+ local keymap = vim.keymap
+ local opts = { noremap = true, silent = true, desc = "" }
+ opts.desc = "Keymaps (Telescope)"
+ keymap.set("n", "<Space>tk", ":Telescope keymaps<Enter>", opts) -- Keymaps
+ opts.desc = "Help (Telescope)"
+ keymap.set("n", "<Space>th", ":Telescope help_tags<Enter>", opts) -- Help
+ opts.desc = "Find files (Telescope)"
+ keymap.set("n", "<Space>tf", ":Telescope find_files<Enter>", opts) -- Find files
+ opts.desc = "All commands (Telescope)"
+ keymap.set("n", "<Space>ta", ":Telescope<Enter>", opts) -- All commands
+ opts.desc = "Find words (Telescope)"
+ keymap.set("n", "<Space>tw", ":Telescope live_grep<Enter>", opts) -- Find words
+ opts.desc = "Buffers (Telescope)"
+ keymap.set("n", "<Space>tb", ":Telescope buffers<Enter>", opts) -- Buffers
+end
+
+local config = function()
+ require("telescope").setup({
+ defaults = require("telescope.themes").get_ivy(),
+ pickers = {
+ find_files = {
+ hidden = true,
+ },
+ builtin = {
+ previewer = false,
+ },
+ help_tags = {
+ previewer = false,
+ }
+ },
+ })
+end
+
+return {
+ "nvim-telescope/telescope.nvim",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ lazy = true,
+ cmd = "Telescope",
+ init = init,
+ config = config,
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/todo-comments.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/todo-comments.lua
new file mode 100644
index 0000000..1ae4a83
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/todo-comments.lua
@@ -0,0 +1,36 @@
+local opts = {
+ keywords = {
+ FIX = { icon = "", color = "error", alt = { "FIXME", "BUG", "FIXIT", "ISSUE" } },
+ TODO = { icon = "", color = "info" },
+ HACK = { icon = "", color = "hack" },
+ WARN = { icon = "", color = "warning", alt = { "WARNING", "XXX" } },
+ PERF = { icon = "󰅒", color = "perf", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
+ NOTE = { icon = "", color = "hint", alt = { "INFO" } },
+ TEST = { icon = "", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
+ },
+ colors = {
+ error = "@text.title.1.markdown",
+ info = "DiagnosticInfo",
+ hack = "@text.title.2.markdown",
+ warning = "@text.title.3.markdown",
+ perf = "@text.title.4.markdown",
+ hint = "@text.title.5.markdown",
+ test = "@text.title.6.markdown",
+ }
+}
+
+return {
+ "folke/todo-comments.nvim",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ lazy = true,
+ event = { "BufReadPost", "BufWritePost", "BufNewFile" },
+ opts = opts
+}
+
+-- FIX: ciao
+-- TODO: ciao
+-- HACK: ciao
+-- WARN: ciao
+-- PERF: ciao
+-- NOTE: ciao
+-- TEST: ciao
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/toggleterm.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/toggleterm.lua
new file mode 100644
index 0000000..9bd1b78
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/toggleterm.lua
@@ -0,0 +1,64 @@
+local init = function()
+ local keymap = vim.keymap
+ --[[ keymap.set("n", "<C-t>", ":ToggleTerm<Enter>",
+ { noremap = true, silent = true, desc = "Terminal (ToggleTerm)" }) -- Terminal
+ keymap.set("t", "<C-t>", "<C-\\><C-n>:ToggleTerm<Enter>") ]]
+ keymap.set("n", "<Space>g", ":ToggleLazyGit<Enter>",
+ { noremap = true, silent = true, desc = "LazyGit (ToggleTerm)" }) -- LazyGit
+end
+
+local config = function()
+ --[[ require("toggleterm").setup {
+ autochdir = false,
+ direction = "float",
+ open_mapping = "<c-t>",
+ terminal_mappings = true,
+ start_in_insert = true,
+ float_opts = {
+ border = "curved",
+ },
+ on_open = function(term)
+ local cwd = vim.fn.getcwd()
+ if term.dir ~= cwd then
+ term:send("cd " .. cwd .. " && clear")
+ term.dir = cwd
+ end
+ end,
+ } ]]
+ local Terminal = require("toggleterm.terminal").Terminal
+ local opts = {
+ noremap = true, -- non-recursive
+ silent = true, -- do not show message
+ }
+
+ -- LazyGit
+ local lazygit = Terminal:new({
+ cmd = "lazygit",
+ dir = "git_dir",
+ direction = "float",
+ float_opts = {
+ border = "curved",
+ },
+ -- function to run on opening the terminal
+ on_open = function(term)
+ vim.cmd("startinsert!")
+ vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", ":close<Enter>", opts)
+ end,
+ -- function to run on closing the terminal
+ on_close = function()
+ vim.cmd("startinsert!")
+ end,
+ })
+ local function toggle_lazygit()
+ lazygit:toggle()
+ end
+ vim.api.nvim_create_user_command("ToggleLazyGit", toggle_lazygit, {})
+end
+
+return {
+ "akinsho/toggleterm.nvim",
+ lazy = true,
+ cmd = { "ToggleTerm", "ToggleLazyGit" },
+ init = init,
+ config = config,
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/vim-highlightedyank.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/vim-highlightedyank.lua
new file mode 100644
index 0000000..9405e9e
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/vim-highlightedyank.lua
@@ -0,0 +1,8 @@
+return {
+ "machakann/vim-highlightedyank",
+ lazy = true,
+ keys = {
+ { "y", mode = "n" },
+ { "y", mode = "v" }
+ }
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/vim-illuminate.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/vim-illuminate.lua
new file mode 100644
index 0000000..f44b6c9
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/vim-illuminate.lua
@@ -0,0 +1,5 @@
+return {
+ "RRethy/vim-illuminate",
+ lazy = true,
+ event = { "BufReadPost", "BufWritePost", "BufNewFile" },
+}
diff --git a/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/which-key.lua b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/which-key.lua
new file mode 100644
index 0000000..4e391f9
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/nvim/lua/plugins/which-key.lua
@@ -0,0 +1,25 @@
+local config = function()
+ require("which-key").setup()
+ vim.o.timeout = true
+ vim.o.timeoutlen = 500
+end
+
+return {
+ "folke/which-key.nvim",
+ lazy = true,
+ event = "VeryLazy",
+ config = config,
+ keys = {
+ {
+ "<leader>?",
+ function()
+ require("which-key").show({ global = false })
+ end,
+ desc = "Buffer Local Keymaps (which-key)",
+ },
+ },
+ dependencies = {
+ "echasnovski/mini.icons",
+ "nvim-tree/nvim-web-devicons", -- optional
+ },
+}
diff --git a/mirenn/home/files/dotfiles/.config/scripts/powermenu b/mirenn/home/files/dotfiles/.config/scripts/powermenu
new file mode 100755
index 0000000..d118a69
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/scripts/powermenu
@@ -0,0 +1,27 @@
+#!/usr/bin/env fish
+
+set poweroff ""
+set reboot ""
+set lock ""
+set exit "󰗼"
+set sleep "󰒲"
+set hibernate ""
+
+set chosen (echo -e "$poweroff\n$reboot\n$lock\n$exit\n$sleep\n$hibernate" | rofi -dmenu -theme ~/.config/rofi/powermenu.rasi)
+
+switch $chosen
+case $poweroff
+ loginctl poweroff
+case $reboot
+ loginctl reboot
+case $lock
+ loginctl lock-session
+case $exit
+ niri msg action quit
+case $sleep
+ loginctl suspend
+case $hibernate
+ loginctl hibernate
+case '*'
+ exit 1
+end
diff --git a/mirenn/home/files/dotfiles/.config/scripts/set_background b/mirenn/home/files/dotfiles/.config/scripts/set_background
new file mode 100755
index 0000000..7fea3d9
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/scripts/set_background
@@ -0,0 +1,18 @@
+#!/usr/bin/env fish
+
+if test (count $argv) -lt 1; or not test -f $argv[1]
+ echo "Usage: $(status filename) <img>"
+ exit 1
+end
+
+wallust run $argv[1] -Ts; and begin
+ niri msg action do-screen-transition
+ set -U IMG $argv[1] &
+ wallust -q run $IMG &
+ killall swaybg ; swaybg -i $IMG -m fill &
+ makoctl reload &
+ notify-send -i $IMG "Wallust" "Changed wallpaper and palette."
+end; or begin
+ notify-send -i $argv[1] -u critical "Wallust" "Failed to change palette"
+end;
+
diff --git a/mirenn/home/files/dotfiles/.config/scripts/set_random b/mirenn/home/files/dotfiles/.config/scripts/set_random
new file mode 100755
index 0000000..33cf267
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/scripts/set_random
@@ -0,0 +1,8 @@
+#!/usr/bin/env fish
+
+if test (count $argv) -lt 1; or not test -d $argv[1]
+ echo "Usage: $(status filename) <dir>"
+ exit 1
+end
+
+~/.config/scripts/set_background "$(fd -a -t f -d 1 -E "$(basename "$IMG")" -e jpg -e png -e webp . "$argv[1]" | shuf -n1)"
diff --git a/mirenn/home/files/dotfiles/.config/scripts/wallpapermenu b/mirenn/home/files/dotfiles/.config/scripts/wallpapermenu
new file mode 100755
index 0000000..2d6e1a8
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/scripts/wallpapermenu
@@ -0,0 +1,12 @@
+#!/usr/bin/env fish
+
+if test (count $argv) -lt 1; or not test -d $argv[1]
+ echo "Usage: $(status filename) <dir>"
+ exit 1
+end
+
+~/.config/scripts/set_background (
+ for file in (fd -a -t f -d 1 -E "$(basename "$IMG")" -e jpg -e png -e webp . "$argv[1]")
+ echo -en "$file\0icon\x1fthumbnail://$file\n"
+ end | rofi -dmenu -p " " -show-icons -theme ~/.config/rofi/wallpapermenu.rasi
+)
diff --git a/mirenn/home/files/dotfiles/.config/swayidle/config b/mirenn/home/files/dotfiles/.config/swayidle/config
new file mode 100644
index 0000000..d6ba83a
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/swayidle/config
@@ -0,0 +1,5 @@
+lock 'physlock -l ; swaylock -fe ; physlock -L'
+before-sleep 'loginctl lock-session ; niri msg output eDP-1 off'
+after-resume 'niri msg output eDP-1 on'
+timeout 300 'brightnessctl -se set 10%' resume 'brightnessctl -r'
+timeout 360 'loginctl suspend'
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/foot b/mirenn/home/files/dotfiles/.config/wallust/templates/foot
new file mode 100644
index 0000000..6dfe5e6
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/foot
@@ -0,0 +1,33 @@
+font=Cica:size=10
+pad=10x10x10x10 center
+dpi-aware=yes
+
+[cursor]
+style=block
+blink=yes
+
+[scrollback]
+indicator-position=none
+
+[colors-dark]
+foreground={{foreground | strip}}
+background={{background | strip}}
+
+regular0={{color0 | strip}}
+regular1={{color1 | strip}}
+regular2={{color2 | strip}}
+regular3={{color3 | strip}}
+regular4={{color4 | strip}}
+regular5={{color5 | strip}}
+regular6={{color6 | strip}}
+regular7={{color7 | strip}}
+
+bright0={{color8 | strip}}
+bright1={{color9 | strip}}
+bright2={{color10 | strip}}
+bright3={{color11 | strip}}
+bright4={{color12 | strip}}
+bright5={{color13 | strip}}
+bright6={{color14 | strip}}
+bright7={{color15 | strip}}
+
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/mako b/mirenn/home/files/dotfiles/.config/wallust/templates/mako
new file mode 100644
index 0000000..e06ab00
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/mako
@@ -0,0 +1,25 @@
+layer=overlay
+background-color={{background}}
+border-size=1
+border-color={{color2}}
+border-radius=0
+default-timeout=5000
+ignore-timeout=1
+font=Cica 10
+text-color={{foreground}}
+outer-margin=0,5,15,0
+anchor=bottom-right
+
+[urgency=high]
+border-color={{color4}}
+default-timeout=0
+
+[urgency=low]
+border-color={{color0}}
+
+[category=mpd]
+default-timeout=2000
+group-by=category
+
+[app-name="Steam"]
+invisible=1
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/niri b/mirenn/home/files/dotfiles/.config/wallust/templates/niri
new file mode 100644
index 0000000..95760b9
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/niri
@@ -0,0 +1,300 @@
+prefer-no-csd
+screenshot-path "~/Pictures/Screenshots/%Y%m%d-%H%M%S.png"
+spawn-sh-at-startup "fish -c 'swaybg -i $IMG &'"
+spawn-at-startup "waybar"
+spawn-at-startup "swayidle" "-w"
+
+environment {
+ QT_QPA_PLATFORM "wayland"
+ DISPLAY ":0"
+}
+
+hotkey-overlay {
+ skip-at-startup
+}
+
+cursor {
+ // xcursor-theme "breeze_cursors"
+ // xcursor-size 48
+
+ // hide-when-typing
+ // hide-after-inactive-ms 5000
+}
+
+gestures {
+ hot-corners {
+ off
+ }
+}
+
+input {
+ keyboard {
+ xkb {
+ layout "it"
+ }
+ }
+
+ touchpad {
+ tap
+ natural-scroll
+ }
+
+ mouse {
+ // off
+ // natural-scroll
+ // accel-speed 0.2
+ // accel-profile "flat"
+ // scroll-factor 1.0
+ // scroll-method "no-scroll"
+ // scroll-button 273
+ // left-handed
+ // middle-emulation
+ }
+
+ // disable-power-key-handling
+ // warp-mouse-to-focus
+ // focus-follows-mouse max-scroll-amount="0%"
+ // workspace-auto-back-and-forth
+}
+
+output "eDP-1" {
+ // off
+ mode "2560x1600@60.000"
+ scale 2.0
+ transform "normal"
+ position x=0 y=0
+}
+
+output "HDMI-A-1" {
+
+}
+
+layout {
+ gaps 5
+ center-focused-column "on-overflow"
+ // empty-workspace-above-first
+ background-color "transparent"
+
+ preset-column-widths {
+ proportion 0.33333
+ proportion 0.5
+ proportion 0.66667
+ }
+ default-column-width { proportion 0.5; }
+
+ preset-window-heights {
+ proportion 0.33333
+ proportion 0.5
+ proportion 0.66667
+ }
+
+ focus-ring {
+ off
+ }
+
+ border {
+ // off
+ width 1
+ active-color "{{color1}}"
+ inactive-color "{{color0}}"
+ }
+
+ tab-indicator {
+ place-within-column
+ gaps-between-tabs 5
+ active-color "{{color1}}"
+ inactive-color "{{color0}}"
+ length total-proportion=1.0
+ }
+
+ insert-hint {
+ color "{{color1}}"
+ }
+}
+
+overview {
+ workspace-shadow {
+ off
+ }
+}
+
+animations {
+ window-resize {
+ spring damping-ratio=0.75 stiffness=250 epsilon=0.0001
+ }
+ window-open {
+ duration-ms 250
+ curve "ease-out-quad"
+ custom-shader r"
+ vec4 zoom_in(vec3 coords_geo, vec3 size_geo) {
+ float progress = niri_clamped_progress;
+ float scale = progress;
+ vec2 coords = (coords_geo.xy - vec2(0.5, 0.5)) * size_geo.xy;
+ coords = coords / scale;
+ coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 0.5), 1.0);
+ vec3 coords_tex = niri_geo_to_tex * coords_geo;
+ vec4 color = texture2D(niri_tex, coords_tex.st);
+ color.a *= progress;
+
+ return color;
+ }
+ vec4 open_color(vec3 coords_geo, vec3 size_geo) {
+ return zoom_in(coords_geo, size_geo);
+ }
+ "
+ }
+ window-close {
+ duration-ms 500
+ curve "linear"
+ custom-shader r"
+ // Fall and Rotate
+ vec4 close_color(vec3 coords_geo, vec3 size_geo) {
+ float progress = niri_clamped_progress * niri_clamped_progress;
+ vec2 coords = (coords_geo.xy - vec2(0.5, 1.0)) * size_geo.xy;
+ coords.y -= progress * 1440.0;
+ float random = (niri_random_seed - 0.5) / 2.0;
+ random = sign(random) - random;
+ float max_angle = 0.5 * random;
+ float angle = progress * max_angle;
+ mat2 rotate = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
+ coords = rotate * coords;
+ coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 1.0), 1.0);
+ vec3 coords_tex = niri_geo_to_tex * coords_geo;
+ return texture2D(niri_tex, coords_tex.st);
+ }
+ "
+ }
+}
+
+layer-rule {
+ match namespace="^wallpaper$"
+ place-within-backdrop true
+}
+
+window-rule {
+ match title="btop"
+ match title="nmtui"
+ default-column-width { proportion 1.0; }
+}
+window-rule {
+ //geometry-corner-radius 10
+ clip-to-geometry true
+}
+window-rule {
+ match app-id="SFML"
+ open-floating true
+}
+window-rule {
+ match is-floating=true
+ shadow {
+ on
+ }
+}
+
+switch-events {
+ lid-open { spawn "niri" "msg" "action" "power-on-monitors"; }
+}
+
+binds {
+ Mod+Backslash { show-hotkey-overlay; }
+
+ Mod+Return hotkey-overlay-title="Spawn Terminal" { spawn "foot"; }
+ Mod+Space hotkey-overlay-title="Spawn Applauncher" { spawn "rofi" "-show" "drun" "-theme" "~/.config/rofi/applauncher.rasi"; }
+ Mod+Escape hotkey-overlay-title="Spawn Powermenu" { spawn "~/.config/scripts/powermenu"; }
+ Mod+W hotkey-overlay-title="Spawn Wallpapermenu" { spawn-sh "~/.config/scripts/wallpapermenu ~/Pictures/Backgrounds/"; }
+ Mod+Shift+W hotkey-overlay-title="Random Wallpaper" { spawn-sh "~/.config/scripts/set_random ~/Pictures/Backgrounds/"; }
+ // Mod+Alt+W { spawn-sh "~/.config/scripts/wallpapermenu ~/Pictures/Backgrounds/Alt/"; }
+ // Mod+Alt+Shift+W { spawn-sh "~/.config/scripts/set_random ~/Pictures/Backgrounds/Alt/"; }
+
+ XF86AudioRaiseVolume allow-when-locked=true { spawn "pamixer" "-i" "5"; }
+ XF86AudioLowerVolume allow-when-locked=true { spawn "pamixer" "-d" "5"; }
+ XF86AudioMute allow-when-locked=true { spawn "pamixer" "-t"; }
+ XF86AudioMicMute allow-when-locked=true { spawn "pamixer" "--default-source" "-t"; }
+ XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "-e" "s" "+5%"; }
+ XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "-e" "s" "5%-"; }
+
+ Mod+Q { close-window; }
+
+ Mod+H { focus-column-left; }
+ Mod+J { focus-window-down; }
+ Mod+K { focus-window-up; }
+ Mod+L { focus-column-right; }
+ Mod+Ctrl+H { move-column-left; }
+ Mod+Ctrl+J { move-window-down; }
+ Mod+Ctrl+K { move-window-up; }
+ Mod+Ctrl+L { move-column-right; }
+
+ Mod+N { focus-column-first; }
+ Mod+M { focus-column-last; }
+ Mod+Ctrl+N { move-column-to-first; }
+ Mod+Ctrl+M { move-column-to-last; }
+
+ Mod+Shift+H { focus-monitor-left; }
+ Mod+Shift+J { focus-monitor-down; }
+ Mod+Shift+K { focus-monitor-up; }
+ Mod+Shift+L { focus-monitor-right; }
+ Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
+ Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
+ Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
+ Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
+
+ Mod+U { focus-workspace-down; }
+ Mod+I { focus-workspace-up; }
+ Mod+Ctrl+U { move-column-to-workspace-down; }
+ Mod+Ctrl+I { move-column-to-workspace-up; }
+ Mod+Shift+U { move-workspace-down; }
+ Mod+Shift+I { move-workspace-up; }
+
+ Mod+1 { focus-workspace 1; }
+ Mod+2 { focus-workspace 2; }
+ Mod+3 { focus-workspace 3; }
+ Mod+4 { focus-workspace 4; }
+ Mod+5 { focus-workspace 5; }
+ Mod+6 { focus-workspace 6; }
+ Mod+7 { focus-workspace 7; }
+ Mod+8 { focus-workspace 8; }
+ Mod+9 { focus-workspace 9; }
+ Mod+Ctrl+1 { move-column-to-workspace 1; }
+ Mod+Ctrl+2 { move-column-to-workspace 2; }
+ Mod+Ctrl+3 { move-column-to-workspace 3; }
+ Mod+Ctrl+4 { move-column-to-workspace 4; }
+ Mod+Ctrl+5 { move-column-to-workspace 5; }
+ Mod+Ctrl+6 { move-column-to-workspace 6; }
+ Mod+Ctrl+7 { move-column-to-workspace 7; }
+ Mod+Ctrl+8 { move-column-to-workspace 8; }
+ Mod+Ctrl+9 { move-column-to-workspace 9; }
+
+ Mod+Z { focus-workspace-previous; }
+
+ Mod+Comma { consume-window-into-column; }
+ Mod+Period { expel-window-from-column; }
+ Mod+O { consume-or-expel-window-left; }
+ Mod+P { consume-or-expel-window-right; }
+
+ Mod+R { switch-preset-column-width; }
+ Mod+Shift+R { switch-preset-window-height; }
+ Mod+Ctrl+R { reset-window-height; }
+ Mod+F { maximize-column; }
+ Mod+Shift+F { fullscreen-window; }
+ Mod+Ctrl+F { maximize-window-to-edges; }
+ Mod+C { center-column; }
+
+ Mod+Minus { set-column-width "-1%"; }
+ Mod+Plus { set-column-width "+1%"; }
+
+ Mod+Shift+Minus { set-window-height "-1%"; }
+ Mod+Shift+Plus { set-window-height "+1%"; }
+
+ Print { screenshot; }
+ Ctrl+Print { screenshot-screen; }
+ Alt+Print { screenshot-window; }
+
+ Mod+Ctrl+V { toggle-window-floating; }
+ Mod+V { switch-focus-between-floating-and-tiling; }
+
+ Mod+T { toggle-column-tabbed-display; }
+
+ Mod+Tab { toggle-overview; }
+
+ Mod+Shift+E { quit; }
+}
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/nvim b/mirenn/home/files/dotfiles/.config/wallust/templates/nvim
new file mode 100644
index 0000000..c5e966d
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/nvim
@@ -0,0 +1,19 @@
+let background = "{{background}}"
+let foreground = "{{foreground}}"
+let cursor = "{{cursor}}"
+let color0 = "{{color0}}"
+let color1 = "{{color1}}"
+let color2 = "{{color2}}"
+let color3 = "{{color3}}"
+let color4 = "{{color4}}"
+let color5 = "{{color5}}"
+let color6 = "{{color6}}"
+let color7 = "{{color7}}"
+let color8 = "{{color8}}"
+let color9 = "{{color9}}"
+let color10 = "{{color10}}"
+let color11 = "{{color11}}"
+let color12 = "{{color12}}"
+let color13 = "{{color13}}"
+let color14 = "{{color14}}"
+let color15 = "{{color15}}"
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-applauncher b/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-applauncher
new file mode 100644
index 0000000..5a07aae
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-applauncher
@@ -0,0 +1,41 @@
+@theme "/dev/null"
+
+configuration {
+ drun-display-format: "{name}";
+ show-icons: true;
+ icon-theme: "Papirus";
+ terminal: "foot -o pad=0x0";
+ run-command: "sh -c '{cmd}'";
+}
+* {
+ background-color: {{background}};
+ color: {{foreground}};
+ font: "Cica 10";
+}
+window {
+ location: north west;
+ anchor: center;
+ width: 710;
+ y-offset: -22;
+ x-offset: 220;
+ padding: 3 5 3 3;
+}
+mainbox {
+ orientation: horizontal;
+}
+inputbar {
+ children: [ entry ];
+}
+entry {
+ enabled: false;
+}
+listview {
+ spacing: 5;
+ layout: horizontal;
+}
+element-text {
+ color: inherit;
+}
+element selected {
+ color: {{color1}};
+}
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-powermenu b/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-powermenu
new file mode 100644
index 0000000..0ce26aa
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-powermenu
@@ -0,0 +1,40 @@
+@theme "/dev/null"
+
+configuration {
+ show-icons: false;
+}
+* {
+ background-color: {{background}};
+}
+window {
+ location: north east;
+ children: [ box ];
+ border: 1;
+ border-color: {{color1}};
+ padding: 5;
+ width: 60px;
+}
+box {
+ orientation: vertical;
+ children: [ listview ];
+}
+listview {
+ layout: vertical;
+ spacing: 5;
+ lines: 6;
+}
+element {
+ text-color: {{foreground}};
+ background-color: {{color0}};
+ padding: 15;
+}
+element-text {
+ font: "Symbols Nerd Font Mono 13";
+ text-color: inherit;
+ background-color: inherit;
+ vertical-align: 0.5;
+}
+element selected{
+ text-color: inherit;
+ background-color: {{color4}};
+}
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-wallpapermenu b/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-wallpapermenu
new file mode 100644
index 0000000..70cd711
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/rofi-wallpapermenu
@@ -0,0 +1,45 @@
+@theme "/dev/null"
+
+* {
+ background-color: {{background}};
+ color: {{foreground}};
+ font: "Cica 10";
+}
+window {
+ border: 1;
+ border-color: {{color1}};
+ padding: 5;
+ width: 1197;
+}
+mainbox {
+ spacing: 5;
+}
+inputbar {
+ border: 1;
+ border-color: {{color1}};
+ padding: 5;
+}
+listview {
+ spacing: 5;
+ columns: 3;
+ lines: 3;
+ fixed-columns: true;
+ fixed-height: true;
+ cycle: true;
+}
+element {
+ border-color: {{color0}};
+ border: 1;
+ children: [ element-icon ];
+}
+element-icon {
+ expand: true;
+ size: 50%;
+ margin: -100 0;
+ squared: true;
+}
+element selected {
+ text-color: inherit;
+ border: 5;
+ border-color: {{color4}};
+}
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/swaylock b/mirenn/home/files/dotfiles/.config/wallust/templates/swaylock
new file mode 100644
index 0000000..5e4e273
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/swaylock
@@ -0,0 +1,36 @@
+indicator-caps-lock
+indicator-idle-visible
+indicator-radius=100
+
+font=Cica
+font-size=50
+
+clock
+timestr=%H:%M:%S
+datestr=%a %d/%m/%y
+
+image={{wallpaper}}
+effect-blur=5x2
+
+key-hl-color={{color6 | strip}}
+caps-lock-key-hl-color={{color6 | strip}}
+bs-hl-color={{color5 | strip}}
+caps-lock-bs-hl-color={{color5 | strip}}
+
+inside-color={{background}}
+inside-clear-color={{background}}
+inside-caps-lock-color={{background}}
+inside-ver-color={{background}}
+inside-wrong-color={{background}}
+
+ring-color={{color0 | strip}}
+ring-clear-color={{color5 | strip}}
+ring-caps-lock-color={{color2 | strip}}
+ring-ver-color={{color4 | strip}}
+ring-wrong-color={{color3 | strip}}
+
+text-color={{foreground | strip}}
+text-clear-color={{color5 | strip}}
+text-caps-lock-color={{color2 | strip}}
+text-ver-color={{color4 | strip}}
+text-wrong-color={{color3 | strip}}
diff --git a/mirenn/home/files/dotfiles/.config/wallust/templates/waybar b/mirenn/home/files/dotfiles/.config/wallust/templates/waybar
new file mode 100644
index 0000000..3ff730c
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/templates/waybar
@@ -0,0 +1,93 @@
+* {
+ font-family: Cica;
+}
+
+window#waybar {
+ background: {{background}};
+ color: {{foreground}};
+}
+
+.modules-left, .modules-center, .modules-right {
+ padding: 1px;
+}
+
+#clock,#network,#bluetooth,#backlight,#pulseaudio, #idle_inhibitor,
+#battery,#disk,#temperature,#memory,#cpu {
+ padding-left: 3px;
+ padding-right: 3px;
+ border-color: {{color8}};
+ border-style: solid;
+ border-width: 1px;
+}
+#network,#bluetooth,#backlight,#pulseaudio, #idle_inhibitor {
+ border-left-width: 0px;
+}
+#disk,#temperature,#memory,#cpu {
+ border-right-width: 0px;
+}
+
+#clock, #idle_inhibitor {
+ background: {{color6}};
+}
+#network {
+ background: {{color5}};
+}
+#bluetooth {
+ background: {{color3}};
+}
+#backlight {
+ background: {{color4}};
+}
+#pulseaudio {
+ background: {{color2}};
+}
+#battery {
+ background: {{color6}};
+}
+#disk {
+ background: {{color5}};
+}
+#temperature {
+ background: {{color3}};
+}
+#memory {
+ background: {{color4}};
+}
+#cpu {
+ background: {{color2}};
+}
+
+tooltip {
+ background: {{color0}};
+}
+tooltip label {
+ color: {{foreground}};
+}
+
+#tray menu {
+ background: {{color0}};
+ color: {{foreground}};
+}
+
+#bluetooth.off, #pulseaudio.muted, #network.disconnected, #battery.warning, #battery.notempty, #idle_inhibitor.deactivated {
+ background: {{color0}};
+}
+#bluetooth.off {
+ color: {{color3}};
+}
+#pulseaudio.muted {
+ color: {{color2}};
+}
+#network.disconnected {
+ color: {{color5}};
+}
+#battery.warning, #battery.notempty {
+ color: {{color6}};
+}
+#battery.charging {
+ background: {{color6}};
+ color: {{foreground}};
+}
+#idle_inhibitor.deactivated {
+ color: {{color6}}
+}
diff --git a/mirenn/home/files/dotfiles/.config/wallust/wallust.toml b/mirenn/home/files/dotfiles/.config/wallust/wallust.toml
new file mode 100644
index 0000000..9a63624
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/wallust/wallust.toml
@@ -0,0 +1,16 @@
+backend = "full"
+check_contrast = true
+color_space = "salience"
+fallback_generator = "complementary"
+palette = "dark16"
+
+[templates]
+foot = { src = "foot", dst = "~/.config/foot/foot.ini" }
+nvim = { src = "nvim", dst = "~/.cache/wallust/colors_neopywal.vim" }
+niri = { src = "niri", dst = "~/.config/niri/config.kdl" }
+swaylock = { src = "swaylock", dst = "~/.config/swaylock/config" }
+mako = { src = "mako", dst = "~/.config/mako/config" }
+waybar = { src = "waybar", dst = "~/.config/waybar/style.css" }
+rofi-applauncher = { src = "rofi-applauncher", dst = "~/.config/rofi/applauncher.rasi" }
+rofi-powermenu = { src = "rofi-powermenu", dst = "~/.config/rofi/powermenu.rasi" }
+rofi-wallpapermenu = { src = "rofi-wallpapermenu", dst = "~/.config/rofi/wallpapermenu.rasi" }
diff --git a/mirenn/home/files/dotfiles/.config/waybar/config b/mirenn/home/files/dotfiles/.config/waybar/config
new file mode 100644
index 0000000..ae38d5f
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/waybar/config
@@ -0,0 +1,129 @@
+{
+ "layer": "top",
+ "spacing": 0,
+ "margin": 0,
+ "height": 22,
+ "reload_style_on_change": true,
+ "fixed-center": false,
+ "modules-left": ["clock", "network", "bluetooth", "backlight", "pulseaudio", "idle_inhibitor"],
+ "modules-center": ["tray"],
+ "modules-right": ["cpu", "memory", "temperature", "disk", "battery"],
+ "tray": {
+ "icon-size": 20,
+ "spacing": 5,
+ },
+ "bluetooth": {
+ "format-on": "<span font-family='Symbols Nerd Font Mono'>󰂯</span>",
+ "format-off": "<span font-family='Symbols Nerd Font Mono'>󰂲</span>",
+ "format-connected": "<span font-family='Symbols Nerd Font Mono'>󰂱</span>",
+ "tooltip-format-connecte": "{device_alias}",
+ "tooltip-format-connected-battery": "{device_alias} ({device_battery_percentage}%)",
+ "on-click": "bzmenu -l rofi"
+ },
+ "network": {
+ "format-wifi": "<span font-family='Symbols Nerd Font Mono'>󰖩</span>",
+ "format-disconnected": "<span font-family='Symbols Nerd Font Mono'>󰖪</span>",
+ "tooltip-format": "{essid}",
+ "on-click": "foot -T nmtui -o pad=0x0 nmtui"
+ },
+ "pulseaudio": {
+ "states": {
+ "notempty": 9,
+ "notfull": 99,
+ },
+ "format": "<span font-family='Symbols Nerd Font Mono'>{icon}</span>{volume}%",
+ "format-notfull": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {volume}%",
+ "format-notempty": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {volume}%",
+ "format-muted": "<span font-family='Symbols Nerd Font Mono'>󰝟</span>{volume}%",
+ "format-muted-notfull": "<span font-family='Symbols Nerd Font Mono'>󰝟</span> {volume}%",
+ "format-muted-notempty": "<span font-family='Symbols Nerd Font Mono'>󰝟</span> {volume}%",
+ "format-bluetooth": "<span font-family='Symbols Nerd Font Mono'>{icon}</span>{volume}%",
+ "format-bluetooth-notfull": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {volume}%",
+ "format-bluetooth-notempty": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {volume}%",
+ "format-icons": {
+ "default": ["󰕿", "󰖀", "󰕾"],
+ },
+ "on-click": "foot pulsemixer"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "<span font-family='Symbols Nerd Font Mono'></span>",
+ "deactivated": "<span font-family='Symbols Nerd Font Mono'></span>"
+ },
+ "tooltip-format-activated": "Inhibiting",
+ "tooltip-format-deactivated": ""
+ },
+ "backlight": {
+ "device": "intel_backlight",
+ "states": {
+ "notempty": 10,
+ "notfull": 100,
+ },
+ "format": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {percent}%",
+ "format-notfull": "<span font-family='Symbols Nerd Font Mono'>{icon}</span>{percent}%",
+ "format-notempty": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {percent}%",
+ "format-icons": ["", "", "", "", "", "", "", "", ""],
+ "tooltip": false
+ },
+ "cpu": {
+ "interval": 1,
+ "format": "<span font-family='Symbols Nerd Font Mono'> </span>{icon0}{icon1}{icon2}{icon3}{icon4}{icon5}{icon6}{icon7}{icon8}{icon9}{icon10}{icon11}{icon12}{icon13}{icon14}{icon15}",
+ "format-icons": [
+ "<span>▁</span>",
+ "<span>▂</span>",
+ "<span>▃</span>",
+ "<span>▄</span>",
+ "<span>▅</span>",
+ "<span>▆</span>",
+ "<span>▇</span>",
+ "<span>█</span>"
+ ],
+ "on-click": "foot -T btop -o pad=0x0 btop",
+ },
+ "temperature": {
+ "interval": 5,
+ "hwmon-path-abs": "/sys/devices/platform/coretemp.0/hwmon",
+ "input-filename": "temp1_input",
+ "format": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {temperatureC}°",
+ "format-icons": ["", "", "", "", ""],
+ "tooltip": false
+ },
+ "memory": {
+ "interval": 5,
+ "format": "<span font-family='Symbols Nerd Font Mono'>󰘚</span> {used:0.1f}GiB",
+ "tooltip-format": "{used:0.1f}GiB / {total:0.1f}GiB"
+ },
+ "disk": {
+ "states": {
+ "notempty": 10,
+ "notfull": 100,
+ },
+ "format": "<span font-family='Symbols Nerd Font Mono'>󰋊</span> {percentage_used}%",
+ "format-notfull": "<span font-family='Symbols Nerd Font Mono'>󰋊</span>{percentage_used}%",
+ "format-notempty": "<span font-family='Symbols Nerd Font Mono'>󰋊</span> {percentage_used}%",
+ "tooltip-format": "{used} / {total}"
+ },
+ "battery": {
+ "interval": 5,
+ "states": {
+ "notempty": 9,
+ "warning": 25,
+ "notfull": 99,
+ },
+ "format": "<span font-family='Symbols Nerd Font Mono'>{icon}</span>{capacity}%",
+ "format-notfull": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {capacity}%",
+ "format-warning": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {capacity}%",
+ "format-notempty": "<span font-family='Symbols Nerd Font Mono'>{icon}</span> {capacity}%",
+ "format-charging": "<span font-family='Symbols Nerd Font Mono'>󰂄</span>{capacity}%",
+ "format-charging-notfull": "<span font-family='Symbols Nerd Font Mono'>󰂄</span> {capacity}%",
+ "format-charging-warning": "<span font-family='Symbols Nerd Font Mono'>󰂄</span> {capacity}%",
+ "format-charging-notempty": "<span font-family='Symbols Nerd Font Mono'>󰂄</span> {capacity}%",
+ "format-icons": ["󰂎","󰁺","󰁻","󰁼","󰁽","󰁾","󰁿","󰂀","󰂁","󰂂","󰁹"],
+ },
+ "clock": {
+ "format": "<span font-family='Symbols Nerd Font Mono'>󰥔</span> {:%H:%M}",
+ "tooltip-format": "{:%A, %d %B %Y}"
+ }
+}
+
diff --git a/mirenn/home/files/dotfiles/.config/yazi/init.lua b/mirenn/home/files/dotfiles/.config/yazi/init.lua
new file mode 100644
index 0000000..6c283c4
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/yazi/init.lua
@@ -0,0 +1 @@
+require("full-border"):setup()
diff --git a/mirenn/home/files/dotfiles/.config/yazi/keymap.toml b/mirenn/home/files/dotfiles/.config/yazi/keymap.toml
new file mode 100644
index 0000000..397b2ec
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/yazi/keymap.toml
@@ -0,0 +1,368 @@
+# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
+# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
+"$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
+
+[mgr]
+
+keymap = [
+ { on = "<Esc>", run = "escape", desc = "Exit visual mode, clear selection, or cancel search" },
+ { on = "<C-[>", run = "escape", desc = "Exit visual mode, clear selection, or cancel search" },
+ { on = "q", run = "quit", desc = "Quit the process" },
+ { on = "Q", run = "quit --no-cwd-file", desc = "Quit without outputting cwd-file" },
+ { on = "<C-c>", run = "close", desc = "Close the current tab, or quit if it's last" },
+ { on = "<C-z>", run = "suspend", desc = "Suspend the process" },
+
+ # Hopping
+ { on = "k", run = "arrow prev", desc = "Previous file" },
+ { on = "j", run = "arrow next", desc = "Next file" },
+
+ { on = "<Up>", run = "arrow prev", desc = "Previous file" },
+ { on = "<Down>", run = "arrow next", desc = "Next file" },
+
+ { on = "<C-u>", run = "arrow -50%", desc = "Move cursor up half page" },
+ { on = "<C-d>", run = "arrow 50%", desc = "Move cursor down half page" },
+ { on = "<C-b>", run = "arrow -100%", desc = "Move cursor up one page" },
+ { on = "<C-f>", run = "arrow 100%", desc = "Move cursor down one page" },
+
+ { on = "<S-PageUp>", run = "arrow -50%", desc = "Move cursor up half page" },
+ { on = "<S-PageDown>", run = "arrow 50%", desc = "Move cursor down half page" },
+ { on = "<PageUp>", run = "arrow -100%", desc = "Move cursor up one page" },
+ { on = "<PageDown>", run = "arrow 100%", desc = "Move cursor down one page" },
+
+ { on = [ "g", "g" ], run = "arrow top", desc = "Go to top" },
+ { on = "G", run = "arrow bot", desc = "Go to bottom" },
+
+ # Navigation
+ { on = "h", run = "leave", desc = "Back to the parent directory" },
+ { on = "l", run = "enter", desc = "Enter the child directory" },
+
+ { on = "<Left>", run = "leave", desc = "Back to the parent directory" },
+ { on = "<Right>", run = "enter", desc = "Enter the child directory" },
+
+ { on = "H", run = "back", desc = "Back to previous directory" },
+ { on = "L", run = "forward", desc = "Forward to next directory" },
+
+ # Toggle
+ { on = "<Space>", run = [ "toggle", "arrow next" ], desc = "Toggle the current selection state" },
+ { on = "<C-a>", run = "toggle_all --state=on", desc = "Select all files" },
+ { on = "<C-r>", run = "toggle_all", desc = "Invert selection of all files" },
+
+ # Visual mode
+ { on = "v", run = "visual_mode", desc = "Enter visual mode (selection mode)" },
+ { on = "V", run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" },
+
+ # Seeking
+ { on = "K", run = "seek -5", desc = "Seek up 5 units in the preview" },
+ { on = "J", run = "seek 5", desc = "Seek down 5 units in the preview" },
+
+ # Spotting
+ { on = "<Tab>", run = "spot", desc = "Spot hovered file" },
+
+ # Operation
+ { on = "o", run = "open", desc = "Open selected files" },
+ { on = "O", run = "open --interactive", desc = "Open selected files interactively" },
+ { on = "<Enter>", run = "open", desc = "Open selected files" },
+ { on = "<S-Enter>", run = "open --interactive", desc = "Open selected files interactively" },
+ { on = "y", run = "yank", desc = "Yank selected files (copy)" },
+ { on = "x", run = "yank --cut", desc = "Yank selected files (cut)" },
+ { on = "p", run = "paste", desc = "Paste yanked files" },
+ { on = "P", run = "paste --force", desc = "Paste yanked files (overwrite if the destination exists)" },
+ { on = "-", run = "link", desc = "Symlink the absolute path of yanked files" },
+ { on = "_", run = "link --relative", desc = "Symlink the relative path of yanked files" },
+ { on = "<C-->", run = "hardlink", desc = "Hardlink yanked files" },
+ { on = "Y", run = "unyank", desc = "Cancel the yank status" },
+ { on = "X", run = "unyank", desc = "Cancel the yank status" },
+ { on = "d", run = "remove", desc = "Trash selected files" },
+ { on = "D", run = "remove --permanently", desc = "Permanently delete selected files" },
+ { on = "a", run = "create", desc = "Create a file (ends with / for directories)" },
+ { on = "r", run = "rename --cursor=before_ext", desc = "Rename selected file(s)" },
+ { on = ";", run = "shell --interactive", desc = "Run a shell command" },
+ { on = ":", run = "shell --block --interactive", desc = "Run a shell command (block until finishes)" },
+ { on = ".", run = "hidden toggle", desc = "Toggle the visibility of hidden files" },
+ { on = "s", run = "search --via=fd", desc = "Search files by name via fd" },
+ { on = "S", run = "search --via=rg", desc = "Search files by content via ripgrep" },
+ { on = "<C-s>", run = "escape --search", desc = "Cancel the ongoing search" },
+ { on = "z", run = "plugin fzf", desc = "Jump to a file/directory via fzf" },
+ { on = "Z", run = "plugin zoxide", desc = "Jump to a directory via zoxide" },
+
+ # Linemode
+ { on = [ "m", "s" ], run = "linemode size", desc = "Linemode: size" },
+ { on = [ "m", "p" ], run = "linemode permissions", desc = "Linemode: permissions" },
+ { on = [ "m", "b" ], run = "linemode btime", desc = "Linemode: btime" },
+ { on = [ "m", "m" ], run = "linemode mtime", desc = "Linemode: mtime" },
+ { on = [ "m", "o" ], run = "linemode owner", desc = "Linemode: owner" },
+ { on = [ "m", "n" ], run = "linemode none", desc = "Linemode: none" },
+
+ # Copy
+ { on = [ "c", "c" ], run = "copy path", desc = "Copy the file path" },
+ { on = [ "c", "d" ], run = "copy dirname", desc = "Copy the directory path" },
+ { on = [ "c", "f" ], run = "copy filename", desc = "Copy the filename" },
+ { on = [ "c", "n" ], run = "copy name_without_ext", desc = "Copy the filename without extension" },
+
+ # Filter
+ { on = "f", run = "filter --smart", desc = "Filter files" },
+
+ # Find
+ { on = "/", run = "find --smart", desc = "Find next file" },
+ { on = "?", run = "find --previous --smart", desc = "Find previous file" },
+ { on = "n", run = "find_arrow", desc = "Next found" },
+ { on = "N", run = "find_arrow --previous", desc = "Previous found" },
+
+ # Sorting
+ { on = [ ",", "m" ], run = [ "sort mtime --reverse=no", "linemode mtime" ], desc = "Sort by modified time" },
+ { on = [ ",", "M" ], run = [ "sort mtime --reverse", "linemode mtime" ], desc = "Sort by modified time (reverse)" },
+ { on = [ ",", "b" ], run = [ "sort btime --reverse=no", "linemode btime" ], desc = "Sort by birth time" },
+ { on = [ ",", "B" ], run = [ "sort btime --reverse", "linemode btime" ], desc = "Sort by birth time (reverse)" },
+ { on = [ ",", "e" ], run = "sort extension --reverse=no", desc = "Sort by extension" },
+ { on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" },
+ { on = [ ",", "a" ], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" },
+ { on = [ ",", "A" ], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" },
+ { on = [ ",", "n" ], run = "sort natural --reverse=no", desc = "Sort naturally" },
+ { on = [ ",", "N" ], run = "sort natural --reverse", desc = "Sort naturally (reverse)" },
+ { on = [ ",", "s" ], run = [ "sort size --reverse=no", "linemode size" ], desc = "Sort by size" },
+ { on = [ ",", "S" ], run = [ "sort size --reverse", "linemode size" ], desc = "Sort by size (reverse)" },
+ { on = [ ",", "r" ], run = "sort random --reverse=no", desc = "Sort randomly" },
+
+ # Goto
+ { on = [ "g", "h" ], run = "cd ~", desc = "Go home" },
+ { on = [ "g", "c" ], run = "cd ~/.config", desc = "Go ~/.config" },
+ { on = [ "g", "d" ], run = "cd ~/Downloads", desc = "Go ~/Downloads" },
+ { on = [ "g", "<Space>" ], run = "cd --interactive", desc = "Jump interactively" },
+ { on = [ "g", "f" ], run = "follow", desc = "Follow hovered symlink" },
+
+ # Tabs
+ { on = "t", run = "tab_create --current", desc = "Create a new tab with CWD" },
+
+ { on = "1", run = "tab_switch 0", desc = "Switch to first tab" },
+ { on = "2", run = "tab_switch 1", desc = "Switch to second tab" },
+ { on = "3", run = "tab_switch 2", desc = "Switch to third tab" },
+ { on = "4", run = "tab_switch 3", desc = "Switch to fourth tab" },
+ { on = "5", run = "tab_switch 4", desc = "Switch to fifth tab" },
+ { on = "6", run = "tab_switch 5", desc = "Switch to sixth tab" },
+ { on = "7", run = "tab_switch 6", desc = "Switch to seventh tab" },
+ { on = "8", run = "tab_switch 7", desc = "Switch to eighth tab" },
+ { on = "9", run = "tab_switch 8", desc = "Switch to ninth tab" },
+
+ { on = "[", run = "tab_switch -1 --relative", desc = "Switch to previous tab" },
+ { on = "]", run = "tab_switch 1 --relative", desc = "Switch to next tab" },
+
+ { on = "{", run = "tab_swap -1", desc = "Swap current tab with previous tab" },
+ { on = "}", run = "tab_swap 1", desc = "Swap current tab with next tab" },
+
+ # Tasks
+ { on = "w", run = "tasks:show", desc = "Show task manager" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "<F1>", run = "help", desc = "Open help" },
+]
+
+[tasks]
+
+keymap = [
+ { on = "<Esc>", run = "close", desc = "Close task manager" },
+ { on = "<C-[>", run = "close", desc = "Close task manager" },
+ { on = "<C-c>", run = "close", desc = "Close task manager" },
+ { on = "w", run = "close", desc = "Close task manager" },
+
+ { on = "k", run = "arrow prev", desc = "Previous task" },
+ { on = "j", run = "arrow next", desc = "Next task" },
+
+ { on = "<Up>", run = "arrow prev", desc = "Previous task" },
+ { on = "<Down>", run = "arrow next", desc = "Next task" },
+
+ { on = "<Enter>", run = "inspect", desc = "Inspect the task" },
+ { on = "x", run = "cancel", desc = "Cancel the task" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "<F1>", run = "help", desc = "Open help" },
+]
+
+[spot]
+
+keymap = [
+ { on = "<Esc>", run = "close", desc = "Close the spot" },
+ { on = "<C-[>", run = "close", desc = "Close the spot" },
+ { on = "<C-c>", run = "close", desc = "Close the spot" },
+ { on = "<Tab>", run = "close", desc = "Close the spot" },
+
+ { on = "k", run = "arrow prev", desc = "Previous line" },
+ { on = "j", run = "arrow next", desc = "Next line" },
+ { on = "h", run = "swipe prev", desc = "Swipe to previous file" },
+ { on = "l", run = "swipe next", desc = "Swipe to next file" },
+
+ { on = "<Up>", run = "arrow prev", desc = "Previous line" },
+ { on = "<Down>", run = "arrow next", desc = "Next line" },
+ { on = "<Left>", run = "swipe prev", desc = "Swipe to previous file" },
+ { on = "<Right>", run = "swipe next", desc = "Swipe to next file" },
+
+ # Copy
+ { on = [ "c", "c" ], run = "copy cell", desc = "Copy selected cell" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "<F1>", run = "help", desc = "Open help" },
+]
+
+[pick]
+
+keymap = [
+ { on = "<Esc>", run = "close", desc = "Cancel pick" },
+ { on = "<C-[>", run = "close", desc = "Cancel pick" },
+ { on = "<C-c>", run = "close", desc = "Cancel pick" },
+ { on = "<Enter>", run = "close --submit", desc = "Submit the pick" },
+
+ { on = "k", run = "arrow prev", desc = "Previous option" },
+ { on = "j", run = "arrow next", desc = "Next option" },
+
+ { on = "<Up>", run = "arrow prev", desc = "Previous option" },
+ { on = "<Down>", run = "arrow next", desc = "Next option" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "<F1>", run = "help", desc = "Open help" },
+]
+
+[input]
+
+keymap = [
+ { on = "<C-c>", run = "close", desc = "Cancel input" },
+ { on = "<Enter>", run = "close --submit", desc = "Submit input" },
+ { on = "<Esc>", run = "escape", desc = "Back to normal mode, or cancel input" },
+ { on = "<C-[>", run = "escape", desc = "Back to normal mode, or cancel input" },
+
+ # Mode
+ { on = "i", run = "insert", desc = "Enter insert mode" },
+ { on = "I", run = [ "move first-char", "insert" ], desc = "Move to the BOL, and enter insert mode" },
+ { on = "a", run = "insert --append", desc = "Enter append mode" },
+ { on = "A", run = [ "move eol", "insert --append" ], desc = "Move to the EOL, and enter append mode" },
+ { on = "v", run = "visual", desc = "Enter visual mode" },
+ { on = "r", run = "replace", desc = "Replace a single character" },
+
+ # Selection
+ { on = "V", run = [ "move bol", "visual", "move eol" ], desc = "Select from BOL to EOL" },
+ { on = "<C-A>", run = [ "move eol", "visual", "move bol" ], desc = "Select from EOL to BOL" },
+ { on = "<C-E>", run = [ "move bol", "visual", "move eol" ], desc = "Select from BOL to EOL" },
+
+ # Character-wise movement
+ { on = "h", run = "move -1", desc = "Move back a character" },
+ { on = "l", run = "move 1", desc = "Move forward a character" },
+ { on = "<Left>", run = "move -1", desc = "Move back a character" },
+ { on = "<Right>", run = "move 1", desc = "Move forward a character" },
+ { on = "<C-b>", run = "move -1", desc = "Move back a character" },
+ { on = "<C-f>", run = "move 1", desc = "Move forward a character" },
+
+ # Word-wise movement
+ { on = "b", run = "backward", desc = "Move back to the start of the current or previous word" },
+ { on = "B", run = "backward --far", desc = "Move back to the start of the current or previous WORD" },
+ { on = "w", run = "forward", desc = "Move forward to the start of the next word" },
+ { on = "W", run = "forward --far", desc = "Move forward to the start of the next WORD" },
+ { on = "e", run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" },
+ { on = "E", run = "forward --far --end-of-word", desc = "Move forward to the end of the current or next WORD" },
+ { on = "<A-b>", run = "backward", desc = "Move back to the start of the current or previous word" },
+ { on = "<A-f>", run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" },
+
+ # Line-wise movement
+ { on = "0", run = "move bol", desc = "Move to the BOL" },
+ { on = "$", run = "move eol", desc = "Move to the EOL" },
+ { on = "_", run = "move first-char", desc = "Move to the first non-whitespace character" },
+ { on = "^", run = "move first-char", desc = "Move to the first non-whitespace character" },
+ { on = "<C-a>", run = "move bol", desc = "Move to the BOL" },
+ { on = "<C-e>", run = "move eol", desc = "Move to the EOL" },
+ { on = "<Home>", run = "move bol", desc = "Move to the BOL" },
+ { on = "<End>", run = "move eol", desc = "Move to the EOL" },
+
+ # Delete
+ { on = "<Backspace>", run = "backspace", desc = "Delete the character before the cursor" },
+ { on = "<Delete>", run = "backspace --under", desc = "Delete the character under the cursor" },
+ { on = "<C-h>", run = "backspace", desc = "Delete the character before the cursor" },
+ { on = "<C-d>", run = "backspace --under", desc = "Delete the character under the cursor" },
+
+ # Kill
+ { on = "<C-u>", run = "kill bol", desc = "Kill backwards to the BOL" },
+ { on = "<C-k>", run = "kill eol", desc = "Kill forwards to the EOL" },
+ { on = "<C-w>", run = "kill backward", desc = "Kill backwards to the start of the current word" },
+ { on = "<A-d>", run = "kill forward", desc = "Kill forwards to the end of the current word" },
+
+ # Cut/Yank/Paste
+ { on = "d", run = "delete --cut", desc = "Cut selected characters" },
+ { on = "D", run = [ "delete --cut", "move eol" ], desc = "Cut until EOL" },
+ { on = "c", run = "delete --cut --insert", desc = "Cut selected characters, and enter insert mode" },
+ { on = "C", run = [ "delete --cut --insert", "move eol" ], desc = "Cut until EOL, and enter insert mode" },
+ { on = "s", run = [ "delete --cut --insert", "move 1" ], desc = "Cut current character, and enter insert mode" },
+ { on = "S", run = [ "move bol", "delete --cut --insert", "move eol" ], desc = "Cut from BOL until EOL, and enter insert mode" },
+ { on = "x", run = [ "delete --cut", "move 1 --in-operating" ], desc = "Cut current character" },
+ { on = "y", run = "yank", desc = "Copy selected characters" },
+ { on = "p", run = "paste", desc = "Paste copied characters after the cursor" },
+ { on = "P", run = "paste --before", desc = "Paste copied characters before the cursor" },
+
+ # Undo/Redo
+ { on = "u", run = "undo", desc = "Undo the last operation" },
+ { on = "<C-r>", run = "redo", desc = "Redo the last operation" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "<F1>", run = "help", desc = "Open help" },
+]
+
+[confirm]
+
+keymap = [
+ { on = "<Esc>", run = "close", desc = "Cancel the confirm" },
+ { on = "<C-[>", run = "close", desc = "Cancel the confirm" },
+ { on = "<C-c>", run = "close", desc = "Cancel the confirm" },
+ { on = "<Enter>", run = "close --submit", desc = "Submit the confirm" },
+
+ { on = "n", run = "close", desc = "Cancel the confirm" },
+ { on = "y", run = "close --submit", desc = "Submit the confirm" },
+
+ { on = "k", run = "arrow prev", desc = "Previous line" },
+ { on = "j", run = "arrow next", desc = "Next line" },
+
+ { on = "<Up>", run = "arrow prev", desc = "Previous line" },
+ { on = "<Down>", run = "arrow next", desc = "Next line" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "<F1>", run = "help", desc = "Open help" },
+]
+
+[cmp]
+
+keymap = [
+ { on = "<C-c>", run = "close", desc = "Cancel completion" },
+ { on = "<Tab>", run = "close --submit", desc = "Submit the completion" },
+ { on = "<Enter>", run = [ "close --submit", "input:close --submit" ], desc = "Complete and submit the input" },
+
+ { on = "<A-k>", run = "arrow prev", desc = "Previous item" },
+ { on = "<A-j>", run = "arrow next", desc = "Next item" },
+
+ { on = "<Up>", run = "arrow prev", desc = "Previous item" },
+ { on = "<Down>", run = "arrow next", desc = "Next item" },
+
+ { on = "<C-p>", run = "arrow prev", desc = "Previous item" },
+ { on = "<C-n>", run = "arrow next", desc = "Next item" },
+
+ # Help
+ { on = "~", run = "help", desc = "Open help" },
+ { on = "<F1>", run = "help", desc = "Open help" },
+]
+
+[help]
+
+keymap = [
+ { on = "<Esc>", run = "escape", desc = "Clear the filter, or hide the help" },
+ { on = "<C-[>", run = "escape", desc = "Clear the filter, or hide the help" },
+ { on = "<C-c>", run = "close", desc = "Hide the help" },
+
+ # Navigation
+ { on = "k", run = "arrow prev", desc = "Previous line" },
+ { on = "j", run = "arrow next", desc = "Next line" },
+
+ { on = "<Up>", run = "arrow prev", desc = "Previous line" },
+ { on = "<Down>", run = "arrow next", desc = "Next line" },
+
+ # Filtering
+ { on = "f", run = "filter", desc = "Filter help items" },
+]
diff --git a/mirenn/home/files/dotfiles/.config/yazi/package.toml b/mirenn/home/files/dotfiles/.config/yazi/package.toml
new file mode 100644
index 0000000..da4281b
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/yazi/package.toml
@@ -0,0 +1,7 @@
+[[plugin.deps]]
+use = "yazi-rs/plugins:full-border"
+rev = "eaf6920"
+hash = "3996fc74044bc44144b323686f887e1"
+
+[flavor]
+deps = []
diff --git a/mirenn/home/files/dotfiles/.config/yazi/theme.toml b/mirenn/home/files/dotfiles/.config/yazi/theme.toml
new file mode 100644
index 0000000..8bb3558
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/yazi/theme.toml
@@ -0,0 +1,959 @@
+# If the user's terminal is in dark mode, Yazi will load `theme-dark.toml` on startup; otherwise, `theme-light.toml`.
+# You can override any parts of them that are not related to the dark/light mode in your own `theme.toml`.
+
+# If you want to dynamically override their content based on dark/light mode, you can specify two different flavors
+# for dark and light modes under `[flavor]`, and do so in those flavors instead.
+"$schema" = "https://yazi-rs.github.io/schemas/theme.json"
+
+# vim:fileencoding=utf-8:foldmethod=marker
+
+# : Flavor {{{
+
+[flavor]
+dark = ""
+light = ""
+
+# : }}}
+
+
+# : Manager {{{
+
+[mgr]
+cwd = { fg = "cyan" }
+
+# Hovered
+hovered = { reversed = true }
+preview_hovered = { underline = true }
+
+# Find
+find_keyword = { fg = "yellow", bold = true, italic = true, underline = true }
+find_position = { fg = "magenta", bg = "reset", bold = true, italic = true }
+
+# Symlink
+symlink_target = { italic = true }
+
+# Marker
+marker_copied = { fg = "lightgreen", bg = "lightgreen" }
+marker_cut = { fg = "lightred", bg = "lightred" }
+marker_marked = { fg = "lightcyan", bg = "lightcyan" }
+marker_selected = { fg = "lightyellow", bg = "lightyellow" }
+
+# Count
+count_copied = { fg = "white", bg = "green" }
+count_cut = { fg = "white", bg = "red" }
+count_selected = { fg = "white", bg = "yellow" }
+
+# Border
+border_symbol = "│"
+border_style = { fg = "gray" }
+
+# Highlighting
+syntect_theme = ""
+
+# : }}}
+
+
+# : Tabs {{{
+
+[tabs]
+active = { bg = "blue", bold = true }
+inactive = { fg = "blue", bg = "gray" }
+
+# Separator
+sep_inner = { open = "", close = "" }
+sep_outer = { open = "", close = "" }
+
+# : }}}
+
+
+# : Mode {{{
+
+[mode]
+normal_main = { bg = "blue", bold = true }
+normal_alt = { fg = "blue", bg = "gray" }
+
+# Select mode
+select_main = { bg = "red", bold = true }
+select_alt = { fg = "red", bg = "gray" }
+
+# Unset mode
+unset_main = { bg = "red", bold = true }
+unset_alt = { fg = "red", bg = "gray" }
+
+# : }}}
+
+
+# : Status bar {{{
+
+[status]
+overall = {}
+sep_left = { open = "", close = "" }
+sep_right = { open = "", close = "" }
+
+
+# Permissions
+perm_sep = { fg = "darkgray" }
+perm_type = { fg = "green" }
+perm_read = { fg = "yellow" }
+perm_write = { fg = "red" }
+perm_exec = { fg = "cyan" }
+
+# Progress
+progress_label = { bold = true }
+progress_normal = { fg = "blue", bg = "black" }
+progress_error = { fg = "red", bg = "black" }
+
+# : }}}
+
+
+# : Which {{{
+
+[which]
+cols = 3
+mask = { bg = "black" }
+cand = { fg = "lightcyan" }
+rest = { fg = "darkgray" }
+desc = { fg = "lightmagenta" }
+separator = "  "
+separator_style = { fg = "darkgray" }
+
+# : }}}
+
+
+# : Confirmation {{{
+
+[confirm]
+border = { fg = "blue" }
+title = { fg = "blue" }
+content = {}
+list = {}
+btn_yes = { reversed = true }
+btn_no = {}
+btn_labels = [ " [Y]es ", " (N)o " ]
+
+# : }}}
+
+
+# : Spotter {{{
+
+[spot]
+border = { fg = "blue" }
+title = { fg = "blue" }
+
+# Table
+tbl_col = { fg = "blue" }
+tbl_cell = { fg = "yellow", reversed = true }
+
+# : }}}
+
+
+# : Notification {{{
+
+[notify]
+title_info = { fg = "green" }
+title_warn = { fg = "yellow" }
+title_error = { fg = "red" }
+
+# Icons
+icon_info = ""
+icon_warn = ""
+icon_error = ""
+
+# : }}}
+
+
+# : Picker {{{
+
+[pick]
+border = { fg = "blue" }
+active = { fg = "magenta", bold = true }
+inactive = {}
+
+# : }}}
+
+
+# : Input {{{
+
+[input]
+border = { fg = "blue" }
+title = {}
+value = {}
+selected = { reversed = true }
+
+# : }}}
+
+
+# : Completion {{{
+
+[cmp]
+border = { fg = "blue" }
+active = { reversed = true }
+inactive = {}
+
+# Icons
+icon_file = ""
+icon_folder = ""
+icon_command = ""
+
+# : }}}
+
+
+# : Task manager {{{
+
+[tasks]
+border = { fg = "blue" }
+title = {}
+hovered = { fg = "magenta", underline = true }
+
+# : }}}
+
+
+# : Help menu {{{
+
+[help]
+on = { fg = "cyan" }
+run = { fg = "magenta" }
+desc = {}
+hovered = { reversed = true, bold = true }
+footer = { fg = "black", bg = "white" }
+
+# : }}}
+
+
+# : File-specific styles {{{
+
+[filetype]
+rules = [
+ # Images
+ { mime = "image/*", fg = "yellow" },
+
+ # Media
+ { mime = "{audio,video}/*", fg = "magenta" },
+
+ # Archives
+ { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "red" },
+
+ # Documents
+ { mime = "application/{pdf,doc,rtf}", fg = "cyan" },
+
+ # Empty files
+ # { mime = "inode/empty", fg = "red" },
+
+ # Special files
+ { name = "*", is = "orphan", bg = "red" },
+ { name = "*", is = "exec" , fg = "green" },
+
+ # Dummy files
+ { name = "*", is = "dummy", bg = "red" },
+ { name = "*/", is = "dummy", bg = "red" },
+
+ # Fallback
+ # { name = "*", fg = "white" },
+ { name = "*/", fg = "blue" }
+]
+
+# : }}}
+
+
+# : Icons {{{
+
+[icon]
+globs = []
+dirs = [
+ { name = ".config", text = "" },
+ { name = ".git", text = "" },
+ { name = ".github", text = "" },
+ { name = ".npm", text = "" },
+ { name = "Desktop", text = "" },
+ { name = "Development", text = "" },
+ { name = "Documents", text = "" },
+ { name = "Downloads", text = "" },
+ { name = "Library", text = "" },
+ { name = "Movies", text = "" },
+ { name = "Music", text = "" },
+ { name = "Pictures", text = "" },
+ { name = "Public", text = "" },
+ { name = "Videos", text = "" },
+]
+files = [
+ { name = ".babelrc", text = "", fg = "#cbcb41" },
+ { name = ".bash_profile", text = "", fg = "#89e051" },
+ { name = ".bashrc", text = "", fg = "#89e051" },
+ { name = ".clang-format", text = "", fg = "#6d8086" },
+ { name = ".clang-tidy", text = "", fg = "#6d8086" },
+ { name = ".codespellrc", text = "󰓆", fg = "#35da60" },
+ { name = ".condarc", text = "", fg = "#43b02a" },
+ { name = ".dockerignore", text = "󰡨", fg = "#458ee6" },
+ { name = ".ds_store", text = "", fg = "#41535b" },
+ { name = ".editorconfig", text = "", fg = "#fff2f2" },
+ { name = ".env", text = "", fg = "#faf743" },
+ { name = ".eslintignore", text = "", fg = "#4b32c3" },
+ { name = ".eslintrc", text = "", fg = "#4b32c3" },
+ { name = ".git-blame-ignore-revs", text = "", fg = "#f54d27" },
+ { name = ".gitattributes", text = "", fg = "#f54d27" },
+ { name = ".gitconfig", text = "", fg = "#f54d27" },
+ { name = ".gitignore", text = "", fg = "#f54d27" },
+ { name = ".gitlab-ci.yml", text = "", fg = "#e24329" },
+ { name = ".gitmodules", text = "", fg = "#f54d27" },
+ { name = ".gtkrc-2.0", text = "", fg = "#ffffff" },
+ { name = ".gvimrc", text = "", fg = "#019833" },
+ { name = ".justfile", text = "", fg = "#6d8086" },
+ { name = ".luacheckrc", text = "", fg = "#00a2ff" },
+ { name = ".luaurc", text = "", fg = "#00a2ff" },
+ { name = ".mailmap", text = "󰊢", fg = "#f54d27" },
+ { name = ".nanorc", text = "", fg = "#440077" },
+ { name = ".npmignore", text = "", fg = "#e8274b" },
+ { name = ".npmrc", text = "", fg = "#e8274b" },
+ { name = ".nuxtrc", text = "󱄆", fg = "#00c58e" },
+ { name = ".nvmrc", text = "", fg = "#5fa04e" },
+ { name = ".pre-commit-config.yaml", text = "󰛢", fg = "#f8b424" },
+ { name = ".prettierignore", text = "", fg = "#4285f4" },
+ { name = ".prettierrc", text = "", fg = "#4285f4" },
+ { name = ".prettierrc.cjs", text = "", fg = "#4285f4" },
+ { name = ".prettierrc.js", text = "", fg = "#4285f4" },
+ { name = ".prettierrc.json", text = "", fg = "#4285f4" },
+ { name = ".prettierrc.json5", text = "", fg = "#4285f4" },
+ { name = ".prettierrc.mjs", text = "", fg = "#4285f4" },
+ { name = ".prettierrc.toml", text = "", fg = "#4285f4" },
+ { name = ".prettierrc.yaml", text = "", fg = "#4285f4" },
+ { name = ".prettierrc.yml", text = "", fg = "#4285f4" },
+ { name = ".pylintrc", text = "", fg = "#6d8086" },
+ { name = ".settings.json", text = "", fg = "#854cc7" },
+ { name = ".SRCINFO", text = "󰣇", fg = "#0f94d2" },
+ { name = ".vimrc", text = "", fg = "#019833" },
+ { name = ".Xauthority", text = "", fg = "#e54d18" },
+ { name = ".xinitrc", text = "", fg = "#e54d18" },
+ { name = ".Xresources", text = "", fg = "#e54d18" },
+ { name = ".xsession", text = "", fg = "#e54d18" },
+ { name = ".zprofile", text = "", fg = "#89e051" },
+ { name = ".zshenv", text = "", fg = "#89e051" },
+ { name = ".zshrc", text = "", fg = "#89e051" },
+ { name = "_gvimrc", text = "", fg = "#019833" },
+ { name = "_vimrc", text = "", fg = "#019833" },
+ { name = "AUTHORS", text = "", fg = "#a172ff" },
+ { name = "AUTHORS.txt", text = "", fg = "#a172ff" },
+ { name = "brewfile", text = "", fg = "#701516" },
+ { name = "bspwmrc", text = "", fg = "#2f2f2f" },
+ { name = "build", text = "", fg = "#89e051" },
+ { name = "build.gradle", text = "", fg = "#005f87" },
+ { name = "build.zig.zon", text = "", fg = "#f69a1b" },
+ { name = "bun.lock", text = "", fg = "#eadcd1" },
+ { name = "bun.lockb", text = "", fg = "#eadcd1" },
+ { name = "cantorrc", text = "", fg = "#1c99f3" },
+ { name = "checkhealth", text = "󰓙", fg = "#75b4fb" },
+ { name = "cmakelists.txt", text = "", fg = "#dce3eb" },
+ { name = "code_of_conduct", text = "", fg = "#e41662" },
+ { name = "code_of_conduct.md", text = "", fg = "#e41662" },
+ { name = "commit_editmsg", text = "", fg = "#f54d27" },
+ { name = "commitlint.config.js", text = "󰜘", fg = "#2b9689" },
+ { name = "commitlint.config.ts", text = "󰜘", fg = "#2b9689" },
+ { name = "compose.yaml", text = "󰡨", fg = "#458ee6" },
+ { name = "compose.yml", text = "󰡨", fg = "#458ee6" },
+ { name = "config", text = "", fg = "#6d8086" },
+ { name = "containerfile", text = "󰡨", fg = "#458ee6" },
+ { name = "copying", text = "", fg = "#cbcb41" },
+ { name = "copying.lesser", text = "", fg = "#cbcb41" },
+ { name = "Directory.Build.props", text = "", fg = "#00a2ff" },
+ { name = "Directory.Build.targets", text = "", fg = "#00a2ff" },
+ { name = "Directory.Packages.props", text = "", fg = "#00a2ff" },
+ { name = "docker-compose.yaml", text = "󰡨", fg = "#458ee6" },
+ { name = "docker-compose.yml", text = "󰡨", fg = "#458ee6" },
+ { name = "dockerfile", text = "󰡨", fg = "#458ee6" },
+ { name = "eslint.config.cjs", text = "", fg = "#4b32c3" },
+ { name = "eslint.config.js", text = "", fg = "#4b32c3" },
+ { name = "eslint.config.mjs", text = "", fg = "#4b32c3" },
+ { name = "eslint.config.ts", text = "", fg = "#4b32c3" },
+ { name = "ext_typoscript_setup.txt", text = "", fg = "#ff8700" },
+ { name = "favicon.ico", text = "", fg = "#cbcb41" },
+ { name = "fp-info-cache", text = "", fg = "#ffffff" },
+ { name = "fp-lib-table", text = "", fg = "#ffffff" },
+ { name = "FreeCAD.conf", text = "", fg = "#cb333b" },
+ { name = "Gemfile", text = "", fg = "#701516" },
+ { name = "gnumakefile", text = "", fg = "#6d8086" },
+ { name = "go.mod", text = "", fg = "#00add8" },
+ { name = "go.sum", text = "", fg = "#00add8" },
+ { name = "go.work", text = "", fg = "#00add8" },
+ { name = "gradle-wrapper.properties", text = "", fg = "#005f87" },
+ { name = "gradle.properties", text = "", fg = "#005f87" },
+ { name = "gradlew", text = "", fg = "#005f87" },
+ { name = "groovy", text = "", fg = "#4a687c" },
+ { name = "gruntfile.babel.js", text = "", fg = "#e37933" },
+ { name = "gruntfile.coffee", text = "", fg = "#e37933" },
+ { name = "gruntfile.js", text = "", fg = "#e37933" },
+ { name = "gruntfile.ts", text = "", fg = "#e37933" },
+ { name = "gtkrc", text = "", fg = "#ffffff" },
+ { name = "gulpfile.babel.js", text = "", fg = "#cc3e44" },
+ { name = "gulpfile.coffee", text = "", fg = "#cc3e44" },
+ { name = "gulpfile.js", text = "", fg = "#cc3e44" },
+ { name = "gulpfile.ts", text = "", fg = "#cc3e44" },
+ { name = "hypridle.conf", text = "", fg = "#00aaae" },
+ { name = "hyprland.conf", text = "", fg = "#00aaae" },
+ { name = "hyprlandd.conf", text = "", fg = "#00aaae" },
+ { name = "hyprlock.conf", text = "", fg = "#00aaae" },
+ { name = "hyprpaper.conf", text = "", fg = "#00aaae" },
+ { name = "i18n.config.js", text = "󰗊", fg = "#7986cb" },
+ { name = "i18n.config.ts", text = "󰗊", fg = "#7986cb" },
+ { name = "i3blocks.conf", text = "", fg = "#e8ebee" },
+ { name = "i3status.conf", text = "", fg = "#e8ebee" },
+ { name = "index.theme", text = "", fg = "#2db96f" },
+ { name = "ionic.config.json", text = "", fg = "#4f8ff7" },
+ { name = "justfile", text = "", fg = "#6d8086" },
+ { name = "kalgebrarc", text = "", fg = "#1c99f3" },
+ { name = "kdeglobals", text = "", fg = "#1c99f3" },
+ { name = "kdenlive-layoutsrc", text = "", fg = "#83b8f2" },
+ { name = "kdenliverc", text = "", fg = "#83b8f2" },
+ { name = "kritadisplayrc", text = "", fg = "#f245fb" },
+ { name = "kritarc", text = "", fg = "#f245fb" },
+ { name = "license", text = "", fg = "#d0bf41" },
+ { name = "license.md", text = "", fg = "#d0bf41" },
+ { name = "lxde-rc.xml", text = "", fg = "#909090" },
+ { name = "lxqt.conf", text = "", fg = "#0192d3" },
+ { name = "makefile", text = "", fg = "#6d8086" },
+ { name = "mix.lock", text = "", fg = "#a074c4" },
+ { name = "mpv.conf", text = "", fg = "#3b1342" },
+ { name = "node_modules", text = "", fg = "#e8274b" },
+ { name = "nuxt.config.cjs", text = "󱄆", fg = "#00c58e" },
+ { name = "nuxt.config.js", text = "󱄆", fg = "#00c58e" },
+ { name = "nuxt.config.mjs", text = "󱄆", fg = "#00c58e" },
+ { name = "nuxt.config.ts", text = "󱄆", fg = "#00c58e" },
+ { name = "package-lock.json", text = "", fg = "#7a0d21" },
+ { name = "package.json", text = "", fg = "#e8274b" },
+ { name = "PKGBUILD", text = "", fg = "#0f94d2" },
+ { name = "platformio.ini", text = "", fg = "#f6822b" },
+ { name = "pom.xml", text = "", fg = "#7a0d21" },
+ { name = "prettier.config.cjs", text = "", fg = "#4285f4" },
+ { name = "prettier.config.js", text = "", fg = "#4285f4" },
+ { name = "prettier.config.mjs", text = "", fg = "#4285f4" },
+ { name = "prettier.config.ts", text = "", fg = "#4285f4" },
+ { name = "procfile", text = "", fg = "#a074c4" },
+ { name = "PrusaSlicer.ini", text = "", fg = "#ec6b23" },
+ { name = "PrusaSlicerGcodeViewer.ini", text = "", fg = "#ec6b23" },
+ { name = "py.typed", text = "", fg = "#ffbc03" },
+ { name = "QtProject.conf", text = "", fg = "#40cd52" },
+ { name = "rakefile", text = "", fg = "#701516" },
+ { name = "readme", text = "󰂺", fg = "#ededed" },
+ { name = "readme.md", text = "󰂺", fg = "#ededed" },
+ { name = "rmd", text = "", fg = "#519aba" },
+ { name = "robots.txt", text = "󰚩", fg = "#5d7096" },
+ { name = "security", text = "󰒃", fg = "#bec4c9" },
+ { name = "security.md", text = "󰒃", fg = "#bec4c9" },
+ { name = "settings.gradle", text = "", fg = "#005f87" },
+ { name = "svelte.config.js", text = "", fg = "#ff3e00" },
+ { name = "sxhkdrc", text = "", fg = "#2f2f2f" },
+ { name = "sym-lib-table", text = "", fg = "#ffffff" },
+ { name = "tailwind.config.js", text = "󱏿", fg = "#20c2e3" },
+ { name = "tailwind.config.mjs", text = "󱏿", fg = "#20c2e3" },
+ { name = "tailwind.config.ts", text = "󱏿", fg = "#20c2e3" },
+ { name = "tmux.conf", text = "", fg = "#14ba19" },
+ { name = "tmux.conf.local", text = "", fg = "#14ba19" },
+ { name = "tsconfig.json", text = "", fg = "#519aba" },
+ { name = "unlicense", text = "", fg = "#d0bf41" },
+ { name = "vagrantfile", text = "", fg = "#1563ff" },
+ { name = "vercel.json", text = "", fg = "#ffffff" },
+ { name = "vlcrc", text = "󰕼", fg = "#ee7a00" },
+ { name = "webpack", text = "󰜫", fg = "#519aba" },
+ { name = "weston.ini", text = "", fg = "#ffbb01" },
+ { name = "workspace", text = "", fg = "#89e051" },
+ { name = "wrangler.jsonc", text = "", fg = "#f48120" },
+ { name = "wrangler.toml", text = "", fg = "#f48120" },
+ { name = "xmobarrc", text = "", fg = "#fd4d5d" },
+ { name = "xmobarrc.hs", text = "", fg = "#fd4d5d" },
+ { name = "xmonad.hs", text = "", fg = "#fd4d5d" },
+ { name = "xorg.conf", text = "", fg = "#e54d18" },
+ { name = "xsettingsd.conf", text = "", fg = "#e54d18" },
+]
+exts = [
+ { name = "3gp", text = "", fg = "#fd971f" },
+ { name = "3mf", text = "󰆧", fg = "#888888" },
+ { name = "7z", text = "", fg = "#eca517" },
+ { name = "a", text = "", fg = "#dcddd6" },
+ { name = "aac", text = "", fg = "#00afff" },
+ { name = "ada", text = "", fg = "#599eff" },
+ { name = "adb", text = "", fg = "#599eff" },
+ { name = "ads", text = "", fg = "#a074c4" },
+ { name = "ai", text = "", fg = "#cbcb41" },
+ { name = "aif", text = "", fg = "#00afff" },
+ { name = "aiff", text = "", fg = "#00afff" },
+ { name = "android", text = "", fg = "#34a853" },
+ { name = "ape", text = "", fg = "#00afff" },
+ { name = "apk", text = "", fg = "#34a853" },
+ { name = "apl", text = "", fg = "#24a148" },
+ { name = "app", text = "", fg = "#9f0500" },
+ { name = "applescript", text = "", fg = "#6d8085" },
+ { name = "asc", text = "󰦝", fg = "#576d7f" },
+ { name = "asm", text = "", fg = "#0091bd" },
+ { name = "ass", text = "󰨖", fg = "#ffb713" },
+ { name = "astro", text = "", fg = "#e23f67" },
+ { name = "avif", text = "", fg = "#a074c4" },
+ { name = "awk", text = "", fg = "#4d5a5e" },
+ { name = "azcli", text = "", fg = "#0078d4" },
+ { name = "bak", text = "󰁯", fg = "#6d8086" },
+ { name = "bash", text = "", fg = "#89e051" },
+ { name = "bat", text = "", fg = "#c1f12e" },
+ { name = "bazel", text = "", fg = "#89e051" },
+ { name = "bib", text = "󱉟", fg = "#cbcb41" },
+ { name = "bicep", text = "", fg = "#519aba" },
+ { name = "bicepparam", text = "", fg = "#9f74b3" },
+ { name = "bin", text = "", fg = "#9f0500" },
+ { name = "blade.php", text = "", fg = "#f05340" },
+ { name = "blend", text = "󰂫", fg = "#ea7600" },
+ { name = "blp", text = "󰺾", fg = "#5796e2" },
+ { name = "bmp", text = "", fg = "#a074c4" },
+ { name = "bqn", text = "", fg = "#24a148" },
+ { name = "brep", text = "󰻫", fg = "#839463" },
+ { name = "bz", text = "", fg = "#eca517" },
+ { name = "bz2", text = "", fg = "#eca517" },
+ { name = "bz3", text = "", fg = "#eca517" },
+ { name = "bzl", text = "", fg = "#89e051" },
+ { name = "c", text = "", fg = "#599eff" },
+ { name = "c++", text = "", fg = "#f34b7d" },
+ { name = "cache", text = "", fg = "#ffffff" },
+ { name = "cast", text = "", fg = "#fd971f" },
+ { name = "cbl", text = "", fg = "#005ca5" },
+ { name = "cc", text = "", fg = "#f34b7d" },
+ { name = "ccm", text = "", fg = "#f34b7d" },
+ { name = "cfg", text = "", fg = "#6d8086" },
+ { name = "cjs", text = "", fg = "#cbcb41" },
+ { name = "clj", text = "", fg = "#8dc149" },
+ { name = "cljc", text = "", fg = "#8dc149" },
+ { name = "cljd", text = "", fg = "#519aba" },
+ { name = "cljs", text = "", fg = "#519aba" },
+ { name = "cmake", text = "", fg = "#dce3eb" },
+ { name = "cob", text = "", fg = "#005ca5" },
+ { name = "cobol", text = "", fg = "#005ca5" },
+ { name = "coffee", text = "", fg = "#cbcb41" },
+ { name = "conda", text = "", fg = "#43b02a" },
+ { name = "conf", text = "", fg = "#6d8086" },
+ { name = "config.ru", text = "", fg = "#701516" },
+ { name = "cow", text = "󰆚", fg = "#965824" },
+ { name = "cp", text = "", fg = "#519aba" },
+ { name = "cpp", text = "", fg = "#519aba" },
+ { name = "cppm", text = "", fg = "#519aba" },
+ { name = "cpy", text = "", fg = "#005ca5" },
+ { name = "cr", text = "", fg = "#c8c8c8" },
+ { name = "crdownload", text = "", fg = "#44cda8" },
+ { name = "cs", text = "󰌛", fg = "#596706" },
+ { name = "csh", text = "", fg = "#4d5a5e" },
+ { name = "cshtml", text = "󱦗", fg = "#512bd4" },
+ { name = "cson", text = "", fg = "#cbcb41" },
+ { name = "csproj", text = "󰪮", fg = "#512bd4" },
+ { name = "css", text = "", fg = "#663399" },
+ { name = "csv", text = "", fg = "#89e051" },
+ { name = "cts", text = "", fg = "#519aba" },
+ { name = "cu", text = "", fg = "#89e051" },
+ { name = "cue", text = "󰲹", fg = "#ed95ae" },
+ { name = "cuh", text = "", fg = "#a074c4" },
+ { name = "cxx", text = "", fg = "#519aba" },
+ { name = "cxxm", text = "", fg = "#519aba" },
+ { name = "d", text = "", fg = "#b03931" },
+ { name = "d.ts", text = "", fg = "#d59855" },
+ { name = "dart", text = "", fg = "#03589c" },
+ { name = "db", text = "", fg = "#dad8d8" },
+ { name = "dconf", text = "", fg = "#ffffff" },
+ { name = "desktop", text = "", fg = "#563d7c" },
+ { name = "diff", text = "", fg = "#41535b" },
+ { name = "dll", text = "", fg = "#4d2c0b" },
+ { name = "doc", text = "󰈬", fg = "#185abd" },
+ { name = "Dockerfile", text = "󰡨", fg = "#458ee6" },
+ { name = "dockerignore", text = "󰡨", fg = "#458ee6" },
+ { name = "docx", text = "󰈬", fg = "#185abd" },
+ { name = "dot", text = "󱁉", fg = "#30638e" },
+ { name = "download", text = "", fg = "#44cda8" },
+ { name = "drl", text = "", fg = "#ffafaf" },
+ { name = "dropbox", text = "", fg = "#0061fe" },
+ { name = "dump", text = "", fg = "#dad8d8" },
+ { name = "dwg", text = "󰻫", fg = "#839463" },
+ { name = "dxf", text = "󰻫", fg = "#839463" },
+ { name = "ebook", text = "", fg = "#eab16d" },
+ { name = "ebuild", text = "", fg = "#4c416e" },
+ { name = "edn", text = "", fg = "#519aba" },
+ { name = "eex", text = "", fg = "#a074c4" },
+ { name = "ejs", text = "", fg = "#cbcb41" },
+ { name = "el", text = "", fg = "#8172be" },
+ { name = "elc", text = "", fg = "#8172be" },
+ { name = "elf", text = "", fg = "#9f0500" },
+ { name = "elm", text = "", fg = "#519aba" },
+ { name = "eln", text = "", fg = "#8172be" },
+ { name = "env", text = "", fg = "#faf743" },
+ { name = "eot", text = "", fg = "#ececec" },
+ { name = "epp", text = "", fg = "#ffa61a" },
+ { name = "epub", text = "", fg = "#eab16d" },
+ { name = "erb", text = "", fg = "#701516" },
+ { name = "erl", text = "", fg = "#b83998" },
+ { name = "ex", text = "", fg = "#a074c4" },
+ { name = "exe", text = "", fg = "#9f0500" },
+ { name = "exs", text = "", fg = "#a074c4" },
+ { name = "f#", text = "", fg = "#519aba" },
+ { name = "f3d", text = "󰻫", fg = "#839463" },
+ { name = "f90", text = "󱈚", fg = "#734f96" },
+ { name = "fbx", text = "󰆧", fg = "#888888" },
+ { name = "fcbak", text = "", fg = "#cb333b" },
+ { name = "fcmacro", text = "", fg = "#cb333b" },
+ { name = "fcmat", text = "", fg = "#cb333b" },
+ { name = "fcparam", text = "", fg = "#cb333b" },
+ { name = "fcscript", text = "", fg = "#cb333b" },
+ { name = "fcstd", text = "", fg = "#cb333b" },
+ { name = "fcstd1", text = "", fg = "#cb333b" },
+ { name = "fctb", text = "", fg = "#cb333b" },
+ { name = "fctl", text = "", fg = "#cb333b" },
+ { name = "fdmdownload", text = "", fg = "#44cda8" },
+ { name = "feature", text = "", fg = "#00a818" },
+ { name = "fish", text = "", fg = "#4d5a5e" },
+ { name = "flac", text = "", fg = "#0075aa" },
+ { name = "flc", text = "", fg = "#ececec" },
+ { name = "flf", text = "", fg = "#ececec" },
+ { name = "fnl", text = "", fg = "#fff3d7" },
+ { name = "fodg", text = "", fg = "#fffb57" },
+ { name = "fodp", text = "", fg = "#fe9c45" },
+ { name = "fods", text = "", fg = "#78fc4e" },
+ { name = "fodt", text = "", fg = "#2dcbfd" },
+ { name = "fs", text = "", fg = "#519aba" },
+ { name = "fsi", text = "", fg = "#519aba" },
+ { name = "fsscript", text = "", fg = "#519aba" },
+ { name = "fsx", text = "", fg = "#519aba" },
+ { name = "gcode", text = "󰐫", fg = "#1471ad" },
+ { name = "gd", text = "", fg = "#6d8086" },
+ { name = "gemspec", text = "", fg = "#701516" },
+ { name = "gif", text = "", fg = "#a074c4" },
+ { name = "git", text = "", fg = "#f14c28" },
+ { name = "glb", text = "", fg = "#ffb13b" },
+ { name = "gleam", text = "", fg = "#ffaff3" },
+ { name = "gnumakefile", text = "", fg = "#6d8086" },
+ { name = "go", text = "", fg = "#00add8" },
+ { name = "godot", text = "", fg = "#6d8086" },
+ { name = "gpr", text = "", fg = "#6d8086" },
+ { name = "gql", text = "", fg = "#e535ab" },
+ { name = "gradle", text = "", fg = "#005f87" },
+ { name = "graphql", text = "", fg = "#e535ab" },
+ { name = "gresource", text = "", fg = "#ffffff" },
+ { name = "gv", text = "󱁉", fg = "#30638e" },
+ { name = "gz", text = "", fg = "#eca517" },
+ { name = "h", text = "", fg = "#a074c4" },
+ { name = "haml", text = "", fg = "#eaeae1" },
+ { name = "hbs", text = "", fg = "#f0772b" },
+ { name = "heex", text = "", fg = "#a074c4" },
+ { name = "hex", text = "", fg = "#2e63ff" },
+ { name = "hh", text = "", fg = "#a074c4" },
+ { name = "hpp", text = "", fg = "#a074c4" },
+ { name = "hrl", text = "", fg = "#b83998" },
+ { name = "hs", text = "", fg = "#a074c4" },
+ { name = "htm", text = "", fg = "#e34c26" },
+ { name = "html", text = "", fg = "#e44d26" },
+ { name = "http", text = "", fg = "#008ec7" },
+ { name = "huff", text = "󰡘", fg = "#4242c7" },
+ { name = "hurl", text = "", fg = "#ff0288" },
+ { name = "hx", text = "", fg = "#ea8220" },
+ { name = "hxx", text = "", fg = "#a074c4" },
+ { name = "ical", text = "", fg = "#2b2e83" },
+ { name = "icalendar", text = "", fg = "#2b2e83" },
+ { name = "ico", text = "", fg = "#cbcb41" },
+ { name = "ics", text = "", fg = "#2b2e83" },
+ { name = "ifb", text = "", fg = "#2b2e83" },
+ { name = "ifc", text = "󰻫", fg = "#839463" },
+ { name = "ige", text = "󰻫", fg = "#839463" },
+ { name = "iges", text = "󰻫", fg = "#839463" },
+ { name = "igs", text = "󰻫", fg = "#839463" },
+ { name = "image", text = "", fg = "#d0bec8" },
+ { name = "img", text = "", fg = "#d0bec8" },
+ { name = "import", text = "", fg = "#ececec" },
+ { name = "info", text = "", fg = "#ffffcd" },
+ { name = "ini", text = "", fg = "#6d8086" },
+ { name = "ino", text = "", fg = "#56b6c2" },
+ { name = "ipynb", text = "", fg = "#f57d01" },
+ { name = "iso", text = "", fg = "#d0bec8" },
+ { name = "ixx", text = "", fg = "#519aba" },
+ { name = "java", text = "", fg = "#cc3e44" },
+ { name = "jl", text = "", fg = "#a270ba" },
+ { name = "jpeg", text = "", fg = "#a074c4" },
+ { name = "jpg", text = "", fg = "#a074c4" },
+ { name = "js", text = "", fg = "#cbcb41" },
+ { name = "json", text = "", fg = "#cbcb41" },
+ { name = "json5", text = "", fg = "#cbcb41" },
+ { name = "jsonc", text = "", fg = "#cbcb41" },
+ { name = "jsx", text = "", fg = "#20c2e3" },
+ { name = "jwmrc", text = "", fg = "#0078cd" },
+ { name = "jxl", text = "", fg = "#a074c4" },
+ { name = "kbx", text = "󰯄", fg = "#737672" },
+ { name = "kdb", text = "", fg = "#529b34" },
+ { name = "kdbx", text = "", fg = "#529b34" },
+ { name = "kdenlive", text = "", fg = "#83b8f2" },
+ { name = "kdenlivetitle", text = "", fg = "#83b8f2" },
+ { name = "kicad_dru", text = "", fg = "#ffffff" },
+ { name = "kicad_mod", text = "", fg = "#ffffff" },
+ { name = "kicad_pcb", text = "", fg = "#ffffff" },
+ { name = "kicad_prl", text = "", fg = "#ffffff" },
+ { name = "kicad_pro", text = "", fg = "#ffffff" },
+ { name = "kicad_sch", text = "", fg = "#ffffff" },
+ { name = "kicad_sym", text = "", fg = "#ffffff" },
+ { name = "kicad_wks", text = "", fg = "#ffffff" },
+ { name = "ko", text = "", fg = "#dcddd6" },
+ { name = "kpp", text = "", fg = "#f245fb" },
+ { name = "kra", text = "", fg = "#f245fb" },
+ { name = "krz", text = "", fg = "#f245fb" },
+ { name = "ksh", text = "", fg = "#4d5a5e" },
+ { name = "kt", text = "", fg = "#7f52ff" },
+ { name = "kts", text = "", fg = "#7f52ff" },
+ { name = "lck", text = "", fg = "#bbbbbb" },
+ { name = "leex", text = "", fg = "#a074c4" },
+ { name = "less", text = "", fg = "#563d7c" },
+ { name = "lff", text = "", fg = "#ececec" },
+ { name = "lhs", text = "", fg = "#a074c4" },
+ { name = "lib", text = "", fg = "#4d2c0b" },
+ { name = "license", text = "", fg = "#cbcb41" },
+ { name = "liquid", text = "", fg = "#95bf47" },
+ { name = "lock", text = "", fg = "#bbbbbb" },
+ { name = "log", text = "󰌱", fg = "#dddddd" },
+ { name = "lrc", text = "󰨖", fg = "#ffb713" },
+ { name = "lua", text = "", fg = "#51a0cf" },
+ { name = "luac", text = "", fg = "#51a0cf" },
+ { name = "luau", text = "", fg = "#00a2ff" },
+ { name = "m", text = "", fg = "#599eff" },
+ { name = "m3u", text = "󰲹", fg = "#ed95ae" },
+ { name = "m3u8", text = "󰲹", fg = "#ed95ae" },
+ { name = "m4a", text = "", fg = "#00afff" },
+ { name = "m4v", text = "", fg = "#fd971f" },
+ { name = "magnet", text = "", fg = "#a51b16" },
+ { name = "makefile", text = "", fg = "#6d8086" },
+ { name = "markdown", text = "", fg = "#dddddd" },
+ { name = "material", text = "", fg = "#b83998" },
+ { name = "md", text = "", fg = "#dddddd" },
+ { name = "md5", text = "󰕥", fg = "#8c86af" },
+ { name = "mdx", text = "", fg = "#519aba" },
+ { name = "mint", text = "󰌪", fg = "#87c095" },
+ { name = "mjs", text = "", fg = "#f1e05a" },
+ { name = "mk", text = "", fg = "#6d8086" },
+ { name = "mkv", text = "", fg = "#fd971f" },
+ { name = "ml", text = "", fg = "#e37933" },
+ { name = "mli", text = "", fg = "#e37933" },
+ { name = "mm", text = "", fg = "#519aba" },
+ { name = "mo", text = "", fg = "#9772fb" },
+ { name = "mobi", text = "", fg = "#eab16d" },
+ { name = "mojo", text = "", fg = "#ff4c1f" },
+ { name = "mov", text = "", fg = "#fd971f" },
+ { name = "mp3", text = "", fg = "#00afff" },
+ { name = "mp4", text = "", fg = "#fd971f" },
+ { name = "mpp", text = "", fg = "#519aba" },
+ { name = "msf", text = "", fg = "#137be1" },
+ { name = "mts", text = "", fg = "#519aba" },
+ { name = "mustache", text = "", fg = "#e37933" },
+ { name = "nfo", text = "", fg = "#ffffcd" },
+ { name = "nim", text = "", fg = "#f3d400" },
+ { name = "nix", text = "", fg = "#7ebae4" },
+ { name = "norg", text = "", fg = "#4878be" },
+ { name = "nswag", text = "", fg = "#85ea2d" },
+ { name = "nu", text = "", fg = "#3aa675" },
+ { name = "o", text = "", fg = "#9f0500" },
+ { name = "obj", text = "󰆧", fg = "#888888" },
+ { name = "odf", text = "", fg = "#ff5a96" },
+ { name = "odg", text = "", fg = "#fffb57" },
+ { name = "odin", text = "󰟢", fg = "#3882d2" },
+ { name = "odp", text = "", fg = "#fe9c45" },
+ { name = "ods", text = "", fg = "#78fc4e" },
+ { name = "odt", text = "", fg = "#2dcbfd" },
+ { name = "oga", text = "", fg = "#0075aa" },
+ { name = "ogg", text = "", fg = "#0075aa" },
+ { name = "ogv", text = "", fg = "#fd971f" },
+ { name = "ogx", text = "", fg = "#fd971f" },
+ { name = "opus", text = "", fg = "#0075aa" },
+ { name = "org", text = "", fg = "#77aa99" },
+ { name = "otf", text = "", fg = "#ececec" },
+ { name = "out", text = "", fg = "#9f0500" },
+ { name = "part", text = "", fg = "#44cda8" },
+ { name = "patch", text = "", fg = "#41535b" },
+ { name = "pck", text = "", fg = "#6d8086" },
+ { name = "pcm", text = "", fg = "#0075aa" },
+ { name = "pdf", text = "", fg = "#b30b00" },
+ { name = "php", text = "", fg = "#a074c4" },
+ { name = "pl", text = "", fg = "#519aba" },
+ { name = "pls", text = "󰲹", fg = "#ed95ae" },
+ { name = "ply", text = "󰆧", fg = "#888888" },
+ { name = "pm", text = "", fg = "#519aba" },
+ { name = "png", text = "", fg = "#a074c4" },
+ { name = "po", text = "", fg = "#2596be" },
+ { name = "pot", text = "", fg = "#2596be" },
+ { name = "pp", text = "", fg = "#ffa61a" },
+ { name = "ppt", text = "󰈧", fg = "#cb4a32" },
+ { name = "pptx", text = "󰈧", fg = "#cb4a32" },
+ { name = "prisma", text = "", fg = "#5a67d8" },
+ { name = "pro", text = "", fg = "#e4b854" },
+ { name = "ps1", text = "󰨊", fg = "#4273ca" },
+ { name = "psb", text = "", fg = "#519aba" },
+ { name = "psd", text = "", fg = "#519aba" },
+ { name = "psd1", text = "󰨊", fg = "#6975c4" },
+ { name = "psm1", text = "󰨊", fg = "#6975c4" },
+ { name = "pub", text = "󰷖", fg = "#e3c58e" },
+ { name = "pxd", text = "", fg = "#5aa7e4" },
+ { name = "pxi", text = "", fg = "#5aa7e4" },
+ { name = "py", text = "", fg = "#ffbc03" },
+ { name = "pyc", text = "", fg = "#ffe291" },
+ { name = "pyd", text = "", fg = "#ffe291" },
+ { name = "pyi", text = "", fg = "#ffbc03" },
+ { name = "pyo", text = "", fg = "#ffe291" },
+ { name = "pyw", text = "", fg = "#5aa7e4" },
+ { name = "pyx", text = "", fg = "#5aa7e4" },
+ { name = "qm", text = "", fg = "#2596be" },
+ { name = "qml", text = "", fg = "#40cd52" },
+ { name = "qrc", text = "", fg = "#40cd52" },
+ { name = "qss", text = "", fg = "#40cd52" },
+ { name = "query", text = "", fg = "#90a850" },
+ { name = "r", text = "󰟔", fg = "#2266ba" },
+ { name = "R", text = "󰟔", fg = "#2266ba" },
+ { name = "rake", text = "", fg = "#701516" },
+ { name = "rar", text = "", fg = "#eca517" },
+ { name = "razor", text = "󱦘", fg = "#512bd4" },
+ { name = "rb", text = "", fg = "#701516" },
+ { name = "res", text = "", fg = "#cc3e44" },
+ { name = "resi", text = "", fg = "#f55385" },
+ { name = "rlib", text = "", fg = "#dea584" },
+ { name = "rmd", text = "", fg = "#519aba" },
+ { name = "rproj", text = "󰗆", fg = "#358a5b" },
+ { name = "rs", text = "", fg = "#dea584" },
+ { name = "rss", text = "", fg = "#fb9d3b" },
+ { name = "s", text = "", fg = "#0071c5" },
+ { name = "sass", text = "", fg = "#f55385" },
+ { name = "sbt", text = "", fg = "#cc3e44" },
+ { name = "sc", text = "", fg = "#cc3e44" },
+ { name = "scad", text = "", fg = "#f9d72c" },
+ { name = "scala", text = "", fg = "#cc3e44" },
+ { name = "scm", text = "󰘧", fg = "#eeeeee" },
+ { name = "scss", text = "", fg = "#f55385" },
+ { name = "sh", text = "", fg = "#4d5a5e" },
+ { name = "sha1", text = "󰕥", fg = "#8c86af" },
+ { name = "sha224", text = "󰕥", fg = "#8c86af" },
+ { name = "sha256", text = "󰕥", fg = "#8c86af" },
+ { name = "sha384", text = "󰕥", fg = "#8c86af" },
+ { name = "sha512", text = "󰕥", fg = "#8c86af" },
+ { name = "sig", text = "󰘧", fg = "#e37933" },
+ { name = "signature", text = "󰘧", fg = "#e37933" },
+ { name = "skp", text = "󰻫", fg = "#839463" },
+ { name = "sldasm", text = "󰻫", fg = "#839463" },
+ { name = "sldprt", text = "󰻫", fg = "#839463" },
+ { name = "slim", text = "", fg = "#e34c26" },
+ { name = "sln", text = "", fg = "#854cc7" },
+ { name = "slnx", text = "", fg = "#854cc7" },
+ { name = "slvs", text = "󰻫", fg = "#839463" },
+ { name = "sml", text = "󰘧", fg = "#e37933" },
+ { name = "so", text = "", fg = "#dcddd6" },
+ { name = "sol", text = "", fg = "#519aba" },
+ { name = "spec.js", text = "", fg = "#cbcb41" },
+ { name = "spec.jsx", text = "", fg = "#20c2e3" },
+ { name = "spec.ts", text = "", fg = "#519aba" },
+ { name = "spec.tsx", text = "", fg = "#1354bf" },
+ { name = "spx", text = "", fg = "#0075aa" },
+ { name = "sql", text = "", fg = "#dad8d8" },
+ { name = "sqlite", text = "", fg = "#dad8d8" },
+ { name = "sqlite3", text = "", fg = "#dad8d8" },
+ { name = "srt", text = "󰨖", fg = "#ffb713" },
+ { name = "ssa", text = "󰨖", fg = "#ffb713" },
+ { name = "ste", text = "󰻫", fg = "#839463" },
+ { name = "step", text = "󰻫", fg = "#839463" },
+ { name = "stl", text = "󰆧", fg = "#888888" },
+ { name = "stories.js", text = "", fg = "#ff4785" },
+ { name = "stories.jsx", text = "", fg = "#ff4785" },
+ { name = "stories.mjs", text = "", fg = "#ff4785" },
+ { name = "stories.svelte", text = "", fg = "#ff4785" },
+ { name = "stories.ts", text = "", fg = "#ff4785" },
+ { name = "stories.tsx", text = "", fg = "#ff4785" },
+ { name = "stories.vue", text = "", fg = "#ff4785" },
+ { name = "stp", text = "󰻫", fg = "#839463" },
+ { name = "strings", text = "", fg = "#2596be" },
+ { name = "styl", text = "", fg = "#8dc149" },
+ { name = "sub", text = "󰨖", fg = "#ffb713" },
+ { name = "sublime", text = "", fg = "#e37933" },
+ { name = "suo", text = "", fg = "#854cc7" },
+ { name = "sv", text = "󰍛", fg = "#019833" },
+ { name = "svelte", text = "", fg = "#ff3e00" },
+ { name = "svg", text = "󰜡", fg = "#ffb13b" },
+ { name = "svgz", text = "󰜡", fg = "#ffb13b" },
+ { name = "svh", text = "󰍛", fg = "#019833" },
+ { name = "swift", text = "", fg = "#e37933" },
+ { name = "t", text = "", fg = "#519aba" },
+ { name = "tbc", text = "󰛓", fg = "#1e5cb3" },
+ { name = "tcl", text = "󰛓", fg = "#1e5cb3" },
+ { name = "templ", text = "", fg = "#dbbd30" },
+ { name = "terminal", text = "", fg = "#31b53e" },
+ { name = "test.js", text = "", fg = "#cbcb41" },
+ { name = "test.jsx", text = "", fg = "#20c2e3" },
+ { name = "test.ts", text = "", fg = "#519aba" },
+ { name = "test.tsx", text = "", fg = "#1354bf" },
+ { name = "tex", text = "", fg = "#3d6117" },
+ { name = "tf", text = "", fg = "#5f43e9" },
+ { name = "tfvars", text = "", fg = "#5f43e9" },
+ { name = "tgz", text = "", fg = "#eca517" },
+ { name = "tmpl", text = "", fg = "#dbbd30" },
+ { name = "tmux", text = "", fg = "#14ba19" },
+ { name = "toml", text = "", fg = "#9c4221" },
+ { name = "torrent", text = "", fg = "#44cda8" },
+ { name = "tres", text = "", fg = "#6d8086" },
+ { name = "ts", text = "", fg = "#519aba" },
+ { name = "tscn", text = "", fg = "#6d8086" },
+ { name = "tsconfig", text = "", fg = "#ff8700" },
+ { name = "tsx", text = "", fg = "#1354bf" },
+ { name = "ttf", text = "", fg = "#ececec" },
+ { name = "twig", text = "", fg = "#8dc149" },
+ { name = "txt", text = "󰈙", fg = "#89e051" },
+ { name = "txz", text = "", fg = "#eca517" },
+ { name = "typ", text = "", fg = "#0dbcc0" },
+ { name = "typoscript", text = "", fg = "#ff8700" },
+ { name = "ui", text = "", fg = "#015bf0" },
+ { name = "v", text = "󰍛", fg = "#019833" },
+ { name = "vala", text = "", fg = "#7b3db9" },
+ { name = "vh", text = "󰍛", fg = "#019833" },
+ { name = "vhd", text = "󰍛", fg = "#019833" },
+ { name = "vhdl", text = "󰍛", fg = "#019833" },
+ { name = "vi", text = "", fg = "#fec60a" },
+ { name = "vim", text = "", fg = "#019833" },
+ { name = "vsh", text = "", fg = "#5d87bf" },
+ { name = "vsix", text = "", fg = "#854cc7" },
+ { name = "vue", text = "", fg = "#8dc149" },
+ { name = "wasm", text = "", fg = "#5c4cdb" },
+ { name = "wav", text = "", fg = "#00afff" },
+ { name = "webm", text = "", fg = "#fd971f" },
+ { name = "webmanifest", text = "", fg = "#f1e05a" },
+ { name = "webp", text = "", fg = "#a074c4" },
+ { name = "webpack", text = "󰜫", fg = "#519aba" },
+ { name = "wma", text = "", fg = "#00afff" },
+ { name = "woff", text = "", fg = "#ececec" },
+ { name = "woff2", text = "", fg = "#ececec" },
+ { name = "wrl", text = "󰆧", fg = "#888888" },
+ { name = "wrz", text = "󰆧", fg = "#888888" },
+ { name = "wv", text = "", fg = "#00afff" },
+ { name = "wvc", text = "", fg = "#00afff" },
+ { name = "x", text = "", fg = "#599eff" },
+ { name = "xaml", text = "󰙳", fg = "#512bd4" },
+ { name = "xcf", text = "", fg = "#635b46" },
+ { name = "xcplayground", text = "", fg = "#e37933" },
+ { name = "xcstrings", text = "", fg = "#2596be" },
+ { name = "xls", text = "󰈛", fg = "#207245" },
+ { name = "xlsx", text = "󰈛", fg = "#207245" },
+ { name = "xm", text = "", fg = "#519aba" },
+ { name = "xml", text = "󰗀", fg = "#e37933" },
+ { name = "xpi", text = "", fg = "#ff1b01" },
+ { name = "xul", text = "", fg = "#e37933" },
+ { name = "xz", text = "", fg = "#eca517" },
+ { name = "yaml", text = "", fg = "#6d8086" },
+ { name = "yml", text = "", fg = "#6d8086" },
+ { name = "zig", text = "", fg = "#f69a1b" },
+ { name = "zip", text = "", fg = "#eca517" },
+ { name = "zsh", text = "", fg = "#89e051" },
+ { name = "zst", text = "", fg = "#eca517" },
+ { name = "🔥", text = "", fg = "#ff4c1f" },
+]
+conds = [
+ # Special files
+ { if = "orphan", text = "" },
+ { if = "link", text = "" },
+ { if = "block", text = "" },
+ { if = "char", text = "" },
+ { if = "fifo", text = "" },
+ { if = "sock", text = "" },
+ { if = "sticky", text = "" },
+ { if = "dummy", text = "" },
+
+ # Fallback
+ { if = "dir", text = "" },
+ { if = "exec", text = "" },
+ { if = "!dir", text = "" },
+]
+
+# : }}}
diff --git a/mirenn/home/files/dotfiles/.config/yazi/yazi.toml b/mirenn/home/files/dotfiles/.config/yazi/yazi.toml
new file mode 100644
index 0000000..e7c3619
--- /dev/null
+++ b/mirenn/home/files/dotfiles/.config/yazi/yazi.toml
@@ -0,0 +1,213 @@
+# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
+# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
+"schema" = "https://yazi-rs.github.io/schemas/yazi.json"
+
+[mgr]
+ratio = [ 1, 4, 3 ]
+sort_by = "alphabetical"
+sort_sensitive = false
+sort_reverse = false
+sort_dir_first = true
+sort_translit = false
+linemode = "none"
+show_hidden = false
+show_symlink = true
+scrolloff = 5
+mouse_events = [ "click", "scroll" ]
+title_format = "Yazi: {cwd}"
+
+[preview]
+wrap = "no"
+tab_size = 2
+max_width = 600
+max_height = 900
+cache_dir = ""
+image_delay = 30
+image_filter = "triangle"
+image_quality = 75
+ueberzug_scale = 1
+ueberzug_offset = [ 0, 0, 0, 0 ]
+
+[opener]
+edit = [
+ { run = '${EDITOR} "$@"', desc = "$EDITOR", block = true, for = "unix" },
+]
+open = [
+ { run = 'xdg-open "$1"', desc = "Open", for = "linux" },
+]
+reveal = [
+ { run = 'xdg-open "$(dirname "$1")"', desc = "Reveal", for = "linux" },
+ { run = '''clear; exiftool "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show EXIF", for = "unix" },
+]
+extract = [
+ { run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" },
+]
+play = [
+ { run = 'mpv --force-window "$@"', orphan = true, for = "unix" },
+ { run = '''mediainfo "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show media info", for = "unix" },
+]
+
+[open]
+rules = [
+ # Folder
+ { name = "*/", use = [ "edit", "open", "reveal" ] },
+ # Text
+ { mime = "text/*", use = [ "edit", "reveal" ] },
+ # Image
+ { mime = "image/*", use = [ "open", "reveal" ] },
+ # Media
+ { mime = "{audio,video}/*", use = [ "play", "reveal" ] },
+ # Archive
+ { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", use = [ "extract", "reveal" ] },
+ # JSON
+ { mime = "application/{json,ndjson}", use = [ "edit", "reveal" ] },
+ { mime = "*/javascript", use = [ "edit", "reveal" ] },
+ # Empty file
+ { mime = "inode/empty", use = [ "edit", "reveal" ] },
+ # Fallback
+ { name = "*", use = [ "open", "reveal" ] },
+]
+
+[tasks]
+micro_workers = 10
+macro_workers = 10
+bizarre_retry = 3
+image_alloc = 536870912 # 512MB
+image_bound = [ 5000, 5000 ]
+suppress_preload = false
+
+[plugin]
+fetchers = [
+ # Mimetype
+ { id = "mime", name = "*", run = "mime", prio = "high" },
+]
+spotters = [
+ { name = "*/", run = "folder" },
+ # Code
+ { mime = "text/*", run = "code" },
+ { mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" },
+ # Image
+ { mime = "image/{avif,hei?,jxl}", run = "magick" },
+ { mime = "image/svg+xml", run = "svg" },
+ { mime = "image/*", run = "image" },
+ # Video
+ { mime = "video/*", run = "video" },
+ # Fallback
+ { name = "*", run = "file" },
+]
+preloaders = [
+ # Image
+ { mime = "image/{avif,hei?,jxl}", run = "magick" },
+ { mime = "image/svg+xml", run = "svg" },
+ { mime = "image/*", run = "image" },
+ # Video
+ { mime = "video/*", run = "video" },
+ # PDF
+ { mime = "application/pdf", run = "pdf" },
+ # Font
+ { mime = "font/*", run = "font" },
+ { mime = "application/ms-opentype", run = "font" },
+]
+previewers = [
+ { name = "*/", run = "folder" },
+ # Code
+ { mime = "text/*", run = "code" },
+ { mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" },
+ # JSON
+ { mime = "application/{json,ndjson}", run = "json" },
+ # Image
+ { mime = "image/{avif,hei?,jxl}", run = "magick" },
+ { mime = "image/svg+xml", run = "svg" },
+ { mime = "image/*", run = "image" },
+ # Video
+ { mime = "video/*", run = "video" },
+ # PDF
+ { mime = "application/pdf", run = "pdf" },
+ # Archive
+ { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", run = "archive" },
+ { mime = "application/{debian*-package,redhat-package-manager,rpm,android.package-archive}", run = "archive" },
+ { name = "*.{AppImage,appimage}", run = "archive" },
+ # Virtual Disk / Disk Image
+ { mime = "application/{iso9660-image,qemu-disk,ms-wim,apple-diskimage}", run = "archive" },
+ { mime = "application/virtualbox-{vhd,vhdx}", run = "archive" },
+ { name = "*.{img,fat,ext,ext2,ext3,ext4,squashfs,ntfs,hfs,hfsx}", run = "archive" },
+ # Font
+ { mime = "font/*", run = "font" },
+ { mime = "application/ms-opentype", run = "font" },
+ # Empty file
+ { mime = "inode/empty", run = "empty" },
+ # Fallback
+ { name = "*", run = "file" },
+]
+
+[input]
+cursor_blink = false
+
+# cd
+cd_title = "Change directory:"
+cd_origin = "top-center"
+cd_offset = [ 0, 2, 50, 3 ]
+
+# create
+create_title = [ "Create:", "Create (dir):" ]
+create_origin = "top-center"
+create_offset = [ 0, 2, 50, 3 ]
+
+# rename
+rename_title = "Rename:"
+rename_origin = "hovered"
+rename_offset = [ 0, 1, 50, 3 ]
+
+# filter
+filter_title = "Filter:"
+filter_origin = "top-center"
+filter_offset = [ 0, 2, 50, 3 ]
+
+# find
+find_title = [ "Find next:", "Find previous:" ]
+find_origin = "top-center"
+find_offset = [ 0, 2, 50, 3 ]
+
+# search
+search_title = "Search via {n}:"
+search_origin = "top-center"
+search_offset = [ 0, 2, 50, 3 ]
+
+# shell
+shell_title = [ "Shell:", "Shell (block):" ]
+shell_origin = "top-center"
+shell_offset = [ 0, 2, 50, 3 ]
+
+[confirm]
+# trash
+trash_title = "Trash {n} selected file{s}?"
+trash_origin = "center"
+trash_offset = [ 0, 0, 70, 20 ]
+
+# delete
+delete_title = "Permanently delete {n} selected file{s}?"
+delete_origin = "center"
+delete_offset = [ 0, 0, 70, 20 ]
+
+# overwrite
+overwrite_title = "Overwrite file?"
+overwrite_content = "Will overwrite the following file:"
+overwrite_origin = "center"
+overwrite_offset = [ 0, 0, 50, 15 ]
+
+# quit
+quit_title = "Quit?"
+quit_content = "The following tasks are still running, are you sure you want to quit?"
+quit_origin = "center"
+quit_offset = [ 0, 0, 50, 15 ]
+
+[pick]
+open_title = "Open with:"
+open_origin = "hovered"
+open_offset = [ 0, 1, 50, 7 ]
+
+[which]
+sort_by = "none"
+sort_sensitive = false
+sort_reverse = false
+sort_translit = false
diff --git a/mirenn/home/services/brightnessctl.scm b/mirenn/home/services/brightnessctl.scm
new file mode 100644
index 0000000..b71e04a
--- /dev/null
+++ b/mirenn/home/services/brightnessctl.scm
@@ -0,0 +1,37 @@
+(define-module (mirenn home services brightnessctl)
+ #:use-module (guix gexp)
+ #:use-module (gnu services)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shepherd)
+ #:use-module (gnu packages linux)
+
+ #:export (home-brightnessctl-configuration))
+
+(define-configuration/no-serialization home-brightnessctl-configuration
+ (state-file
+ (string ".local/state/brightnessctl")
+ "The file which the brightness state is stored."))
+
+(define (home-brightnessctl-shepherd-service config)
+ (list
+ (shepherd-service
+ (provision '(brightnessctl))
+ (documentation "Save and restore brightness.")
+ (start #~(make-system-constructor
+ #$(string-append "brightnessctl set $(cat \"$HOME/"
+ (home-brightnessctl-configuration-state-file config)
+ "\")")))
+ (stop #~(make-system-destructor
+ #$(string-append "brightnessctl get > \"$HOME/"
+ (home-brightnessctl-configuration-state-file config)
+ "\""))))))
+
+(define-public home-brightnessctl-service-type
+ (service-type
+ (name 'home-brightnessctl)
+ (extensions
+ (list (service-extension home-shepherd-service-type home-brightnessctl-shepherd-service)))
+ (description "Save and restore brightness.")
+ (default-value (home-brightnessctl-configuration))))
diff --git a/mirenn/home/services/timer.scm b/mirenn/home/services/timer.scm
new file mode 100644
index 0000000..59e2fc8
--- /dev/null
+++ b/mirenn/home/services/timer.scm
@@ -0,0 +1,42 @@
+(define-module (mirenn home services timer)
+ #:use-module (guix gexp)
+ #:use-module (gnu services)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shepherd)
+
+ #:export (home-timer-configuration))
+
+(define-configuration/no-serialization home-timer-configuration
+ (name
+ symbol
+ "Name of the timer.")
+ (script
+ local-file
+ "Script to run on timeout.")
+ (arguments
+ (list string)
+ "Arguments passed to the script.")
+ (delay
+ number
+ "Timer delay in seconds."))
+
+(define (home-timer-shepherd-service config)
+ (list
+ (shepherd-service
+ (documentation "Run a periodic task")
+ (provision (list (home-timer-configuration-name config)))
+ (respawn? #t)
+ (respawn-delay (home-timer-configuration-delay config))
+ (start #~(make-forkexec-constructor
+ (cons #$(home-timer-configuration-script config)
+ #$(home-timer-configuration-arguments config))))
+ (stop #~(make-kill-destructor)))))
+
+(define-public home-timer-service-type
+ (service-type
+ (name 'home-timer')
+ (extensions
+ (list (service-extension home-shepherd-service-type home-timer-shepherd-service)))
+ (description "Runs a script periodically based on a respawn delay")))
diff --git a/mirenn/packages/bluetuith.scm b/mirenn/packages/bluetuith.scm
new file mode 100644
index 0000000..1bb7a5c
--- /dev/null
+++ b/mirenn/packages/bluetuith.scm
@@ -0,0 +1,30 @@
+(define-module (mirenn packages bluetuith)
+ #:use-module (guix build-system copy)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) #:prefix license:))
+
+(define-public bluetuith
+ (package
+ (name "bluetuith")
+ (version "0.2.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/bluetuith-org/bluetuith/releases/download/v"
+ version "/bluetuith_" version "_Linux_x86_64.tar.gz"))
+ (sha256
+ (base32 "1s9lz7q1qx0jyz9wvr4ijlxz1q174cy415bk5j1jk7cmwgq8hn0l"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:install-plan
+ #~'(("bluetuith" "bin/"))))
+ (home-page "https://bluetuith-org.github.io/bluetuith")
+ (synopsis "Simple terminal UI for git commands")
+ (description
+ "bluetuith is a TUI-based bluetooth connection manager,
+which can interact with bluetooth adapters and devices.
+It aims to be a replacement to most bluetooth managers, like blueman.")
+ (license license:expat)))
diff --git a/mirenn/packages/files/ca-certs/home-internal-ca.pem b/mirenn/packages/files/ca-certs/home-internal-ca.pem
new file mode 100644
index 0000000..7faa1c9
--- /dev/null
+++ b/mirenn/packages/files/ca-certs/home-internal-ca.pem
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE-----
+MIIBojCCAUmgAwIBAgIQCESt88CJZjYX2Mdl7DkXUDAKBggqhkjOPQQDAjAwMS4w
+LAYDVQQDEyVDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSAyMDI2IEVDQyBSb290MB4X
+DTI2MDIxOTExMDQzNloXDTM1MTIyOTExMDQzNlowMDEuMCwGA1UEAxMlQ2FkZHkg
+TG9jYWwgQXV0aG9yaXR5IC0gMjAyNiBFQ0MgUm9vdDBZMBMGByqGSM49AgEGCCqG
+SM49AwEHA0IABNe3PlkW7KB/Vq2kV5EaTiNe5ahH73Ac6iI6cQeEPwKOLrxC1O+L
++ZnxBwSnoINWMzL3Nb+lAtCqRCE7McMnCXejRTBDMA4GA1UdDwEB/wQEAwIBBjAS
+BgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBR/r6QdO9cDznWgTOh8hKVRNUVh
+xTAKBggqhkjOPQQDAgNHADBEAiBWeX+279V7F8yMdiyZlrRsqNcB0fN4pn4e/TyX
+uuTRkAIgD5c5JFxiRY8D1FE3gGimBwNWsLm9dJP07wjYLMOB/dM=
+-----END CERTIFICATE-----
diff --git a/mirenn/packages/lazygit.scm b/mirenn/packages/lazygit.scm
new file mode 100644
index 0000000..f6979d0
--- /dev/null
+++ b/mirenn/packages/lazygit.scm
@@ -0,0 +1,30 @@
+(define-module (mirenn packages lazygit)
+ #:use-module (guix build-system copy)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) #:prefix license:))
+
+(define-public lazygit
+ (package
+ (name "lazygit")
+ (version "0.65.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/jesseduffield/lazygit/releases/download/v"
+ version "/lazygit_" version "_linux_x86_64.tar.gz"))
+ (sha256
+ (base32 "19h1q8lj7q4hyzay2a7vycx3a1vk2jl0nj731bjl58qgvayargh2"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:install-plan
+ #~'(("lazygit" "bin/"))))
+ (home-page "https://lazygit.dev")
+ (synopsis "Simple terminal UI for git commands")
+ (description
+ "Lazygit is a terminal UI for git that makes complex operations simple.
+ Stage individual lines, interactive rebase, cherry-pick commits;
+ all without memorizing obscure flags.")
+ (license license:expat)))
diff --git a/mirenn/packages/pki.scm b/mirenn/packages/pki.scm
new file mode 100644
index 0000000..db5588f
--- /dev/null
+++ b/mirenn/packages/pki.scm
@@ -0,0 +1,22 @@
+(define-module (mirenn packages pki)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system copy)
+ #:use-module (guix packages)
+ #:use-module (guix gexp))
+
+(define-public custom-certs
+ (package
+ (name "custom-certs")
+ (version "1.0")
+ (source (local-file "files/ca-certs" #:recursive? #t))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:install-plan
+ #~'(("./" "etc/ssl/certs/"))))
+ (home-page "")
+ (synopsis "Custom CA certificates")
+ (description
+ "This package provides a certificate store containing my own
+root and intermediate CA certificates.")
+ (license license:public-domain)))
diff --git a/mirenn/packages/tailscale.scm b/mirenn/packages/tailscale.scm
new file mode 100644
index 0000000..43a6ca5
--- /dev/null
+++ b/mirenn/packages/tailscale.scm
@@ -0,0 +1,30 @@
+(define-module (mirenn packages tailscale)
+ #:use-module (guix build-system copy)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) #:prefix license:))
+
+(define-public tailscale
+ (package
+ (name "tailscale")
+ (version "1.102.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pkgs.tailscale.com/stable/tailscale_" version "_amd64.tgz"))
+ (sha256
+ (base32 "1ffqy184ln5nass0yi4bjhcw0dnsn1b4r7zijnvbaq2y0kqqsx2h"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:install-plan
+ #~'(("tailscale" "bin/")
+ ("tailscaled" "bin/"))))
+ (home-page "https://tailscale.com")
+ (synopsis "Zero Trust identity-based connectivity platform")
+ (description
+ "Tailscale is a secure networking solution that streamlines connecting
+devices and services securely across different networks.")
+ (license license:bsd-3)))
diff --git a/mirenn/packages/tree-sitter.scm b/mirenn/packages/tree-sitter.scm
new file mode 100644
index 0000000..3669ea7
--- /dev/null
+++ b/mirenn/packages/tree-sitter.scm
@@ -0,0 +1,3748 @@
+(define-module (mirenn packages tree-sitter)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages graphviz)
+ #:use-module (gnu packages icu4c)
+ #:use-module (gnu packages node)
+ #:use-module (gnu packages python-build)
+ #:use-module (guix build-system cargo)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system pyproject)
+ #:use-module (guix build-system tree-sitter)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix i18n)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (ice-9 exceptions))
+
+(define rust-addr2line-0.26.1
+ (crate-source "addr2line" "0.26.1"
+ "0ymjl1lj3zwc5c5zbjr21c7jzpklj8l04irn76fnf3lzj9vpycar"))
+
+(define rust-aho-corasick-1.1.5
+ (crate-source "aho-corasick" "1.1.5"
+ "1fhjkp2nbs7gg4y1b68hpc8028rpax8aiscfh9b60q78m4pn90n9"))
+
+(define rust-allocator-api2-0.2.21
+ (crate-source "allocator-api2" "0.2.21"
+ "08zrzs022xwndihvzdn78yqarv2b9696y67i6h78nla3ww87jgb8"))
+
+(define rust-ansi-colours-1.2.3
+ (crate-source "ansi_colours" "1.2.3"
+ "1zimwh84gs1r0g0chy6x5lm9v0ksxxlzwy8nyj80f6cq08zc9vhl"))
+
+(define rust-anstream-1.0.0
+ (crate-source "anstream" "1.0.0"
+ "13d2bj0xfg012s4rmq44zc8zgy1q8k9yp7yhvfnarscnmwpj2jl2"))
+
+(define rust-anstyle-1.0.14
+ (crate-source "anstyle" "1.0.14"
+ "0030szmgj51fxkic1hpakxxgappxzwm6m154a3gfml83lq63l2wl"))
+
+(define rust-anstyle-parse-1.0.0
+ (crate-source "anstyle-parse" "1.0.0"
+ "03hkv2690s0crssbnmfkr76kw1k7ah2i6s5amdy9yca2n8w7zkjj"))
+
+(define rust-anstyle-query-1.1.5
+ (crate-source "anstyle-query" "1.1.5"
+ "1p6shfpnbghs6jsa0vnqd8bb8gd7pjd0jr7w0j8jikakzmr8zi20"))
+
+(define rust-anstyle-wincon-3.0.11
+ (crate-source "anstyle-wincon" "3.0.11"
+ "0zblannm70sk3xny337mz7c6d8q8i24vhbqi42ld8v7q1wjnl7i9"))
+
+(define rust-anyhow-1.0.104
+ (crate-source "anyhow" "1.0.104"
+ "0w34jjcm02p5g9kvsjr1dvpw0zs2fi7igi6nr414fkm5gz85w2ik"))
+
+(define rust-arbitrary-1.4.2
+ (crate-source "arbitrary" "1.4.2"
+ "1wcbi4x7i3lzcrkjda4810nqv03lpmvfhb0a85xrq1mbqjikdl63"))
+
+(define rust-ascii-1.1.0
+ (crate-source "ascii" "1.1.0"
+ "05nyyp39x4wzc1959kv7ckwqpkdzjd9dw4slzyjh73qbhjcfqayr"))
+
+(define rust-async-trait-0.1.92
+ (crate-source "async-trait" "0.1.92"
+ "0rqn5iga1hlv2lm8xzav1zhar46jb4dvx89i6kfv93kb53maxxl2"))
+
+(define rust-bindgen-0.72.1
+ (crate-source "bindgen" "0.72.1"
+ "15bq73y3wd3x3vxh3z3g72hy08zs8rxg1f0i1xsrrd6g16spcdwr"))
+
+(define rust-bitflags-2.13.1
+ (crate-source "bitflags" "2.13.1"
+ "1nl76mpykmwmb8rq1l5vw1azdh1wvxdrnsk4sy3rdrzx01nvg25m"))
+
+(define rust-block-buffer-0.10.4
+ (crate-source "block-buffer" "0.10.4"
+ "0w9sa2ypmrsqqvc20nhwr75wbb5cjr4kkyhpjm1z1lv2kdicfy1h"))
+
+(define rust-block2-0.6.2
+ (crate-source "block2" "0.6.2"
+ "1xcfllzx6c3jc554nmb5qy6xmlkl6l6j5ib4wd11800n0n3rvsyd"))
+
+(define rust-bstr-1.13.1
+ (crate-source "bstr" "1.13.1"
+ "0pxyrnp8nb2iwcbadzird7xr2awrbjzi2jwqx47f4i22q531pcvb"))
+
+(define rust-bumpalo-3.20.3
+ (crate-source "bumpalo" "3.20.3"
+ "0jc6va3nwcqikm7chnpdv1s87my3gs2j7g1sc7g3k91brg3arxbj"))
+
+(define rust-bytemuck-1.25.2
+ (crate-source "bytemuck" "1.25.2"
+ "15rp2m7j7kq22s76cbjwmrkd5r8lvacnm0mnrj013cnzka22x0wm"))
+
+(define rust-bytes-1.12.1
+ (crate-source "bytes" "1.12.1"
+ "017z19dpg4f942h051m7bpnzcgng042hhcpd7bmg7bjjqd42lrgw"))
+
+(define rust-cc-1.4.4
+ (crate-source "cc" "1.4.4"
+ "0wq26vvhzv5ci9gx3cfiw320skvaysf9i701wp668lks6ps39m8a"))
+
+(define rust-cexpr-0.6.0
+ (crate-source "cexpr" "0.6.0"
+ "0rl77bwhs5p979ih4r0202cn5jrfsrbgrksp40lkfz5vk1x3ib3g"))
+
+(define rust-cfg-aliases-0.2.2
+ (crate-source "cfg_aliases" "0.2.2"
+ "09rm3dv28gbsal7w6q76lg2nfyn8wp789ska9b8vr1w750xfhygh"))
+
+(define rust-cfg-if-1.0.4
+ (crate-source "cfg-if" "1.0.4"
+ "008q28ajc546z5p2hcwdnckmg0hia7rnx52fni04bwqkzyrghc4k"))
+
+(define rust-chacha20-0.10.2
+ (crate-source "chacha20" "0.10.2"
+ "01hvvbgdmqkcgs2s4f12s9wa5h2gbq05rqvypv61azlwd55mxhv5"))
+
+(define rust-chunked-transfer-1.5.0
+ (crate-source "chunked_transfer" "1.5.0"
+ "00a9h3csr1xwkqrzpz5kag4h92zdkrnxq4ppxidrhrx29syf6kbf"))
+
+(define rust-clang-sys-1.9.1
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "clang-sys" "1.9.1"
+ "12kqa3wywpxw3jk7n2dqz9fjm8p0qczx37y0yib3nwc0njkqnyhm"))
+
+(define rust-clap-4.6.6
+ (crate-source "clap" "4.6.6"
+ "1jmx5z8d6jbvxdz6dybh599s4rd7ns6sl90p2rrdga09yh3pwg27"))
+
+(define rust-clap-builder-4.6.6
+ (crate-source "clap_builder" "4.6.6"
+ "12cqg25zpjc3k82cpqa2v9h7s3vk1vydpgnwl8lfg6lfm2jzwj3v"))
+
+(define rust-clap-complete-4.6.9
+ (crate-source "clap_complete" "4.6.9"
+ "06bagfajlrnrwjcbrqcm99np0n9mdxwxv6n8bgib1fxx4c2avqiv"))
+
+(define rust-clap-complete-nushell-4.6.2
+ (crate-source "clap_complete_nushell" "4.6.2"
+ "0jayjmqzm924qp2mn626rzkjmwldhv2y42ii4wbjpjdr5v46pdpz"))
+
+(define rust-clap-derive-4.6.4
+ (crate-source "clap_derive" "4.6.4"
+ "0qd0v7pa2arwxjjinmjim6xrjy61bc28m1yryhc7zjjssswx44nh"))
+
+(define rust-clap-lex-1.1.0
+ (crate-source "clap_lex" "1.1.0"
+ "1ycqkpygnlqnndghhcxjb44lzl0nmgsia64x9581030yifxs7m68"))
+
+(define rust-cobs-0.3.0
+ (crate-source "cobs" "0.3.0"
+ "18f0kxxa1fqb8pz2dxwssnhsrvhrs5j4p8xllgin5d7h36sn3a8g"))
+
+(define rust-colorchoice-1.0.5
+ (crate-source "colorchoice" "1.0.5"
+ "0w75k89hw39p0mnnhlrwr23q50rza1yjki44qvh2mgrnj065a1qx"))
+
+(define rust-combine-4.6.8
+ (crate-source "combine" "4.6.8"
+ "0ppwzwdmszpan9ybx1myc6ldg5zih2sazf9idckdxrh9gn9j1hyg"))
+
+(define rust-console-0.16.4
+ (crate-source "console" "0.16.4"
+ "0z5sik90c39ywvkdkdc5bqrkbj441ycmvf21mn7yizpnlijz9rag"))
+
+(define rust-convert-case-0.11.0
+ (crate-source "convert_case" "0.11.0"
+ "0jfv1ajyr65bjlx533n5alfkfjdl8ks4zxfywdiz1jnj1qcz1yxg"))
+
+(define rust-cpp-demangle-0.5.1
+ (crate-source "cpp_demangle" "0.5.1"
+ "1vwx8a999mpqywx0736v54909y52x77w1myjsr6cnmpa69630rq6"))
+
+(define rust-cpufeatures-0.2.17
+ (crate-source "cpufeatures" "0.2.17"
+ "10023dnnaghhdl70xcds12fsx2b966sxbxjq5sxs49mvxqw5ivar"))
+
+(define rust-cpufeatures-0.3.1
+ (crate-source "cpufeatures" "0.3.1"
+ "0rkm1l35jy1z1yfg723fddsxc7vr0gc1hhfvc138hnqiwc58p8jw"))
+
+(define rust-cranelift-assembler-x64-0.135.1
+ (crate-source "cranelift-assembler-x64" "0.135.1"
+ "0vz5zadxrk6p0vxcvqabfxplgqb13mmrl2fya2csb58arikyf0wr"))
+
+(define rust-cranelift-assembler-x64-meta-0.135.1
+ (crate-source "cranelift-assembler-x64-meta" "0.135.1"
+ "1vxqchws63yx2zsg0b1vpjvsgc1sg7hbz3s0f7xaz7gclcp2axz7"))
+
+(define rust-cranelift-bforest-0.135.1
+ (crate-source "cranelift-bforest" "0.135.1"
+ "0i5rjgas35501kl4i2y5sl8i9qrlc96d46x6rs0p8qp66s520a3q"))
+
+(define rust-cranelift-bitset-0.135.1
+ (crate-source "cranelift-bitset" "0.135.1"
+ "00lxkwbga490ynza5ki44bnarl1a760ryrwnj329ivsrri3q9355"))
+
+(define rust-cranelift-codegen-0.135.1
+ (crate-source "cranelift-codegen" "0.135.1"
+ "1h7wi4a7mifsilkx5518sx3w3yv0czbaykjngcz5ippikn4hwlnf"))
+
+(define rust-cranelift-codegen-meta-0.135.1
+ (crate-source "cranelift-codegen-meta" "0.135.1"
+ "0js7370fjqmsynamxywhinw1rg2qr7cixbhqvaxsd3npcczb52ld"))
+
+(define rust-cranelift-codegen-shared-0.135.1
+ (crate-source "cranelift-codegen-shared" "0.135.1"
+ "04m7bsvxxjfqrzd8xqyg89db7467d343k6zniazhxx0ydfcrlc94"))
+
+(define rust-cranelift-control-0.135.1
+ (crate-source "cranelift-control" "0.135.1"
+ "0a7n2qb4597qfdyyhbswalkq9lqdc9dwbclw4a1zpkn2ikb5d66g"))
+
+(define rust-cranelift-entity-0.135.1
+ (crate-source "cranelift-entity" "0.135.1"
+ "1b96ydd8g1yi333aihgqvd0wakiql60s0pnbb09xdibrddfj5v70"))
+
+(define rust-cranelift-frontend-0.135.1
+ (crate-source "cranelift-frontend" "0.135.1"
+ "1wykgsk9g4p3rwdam3kajhz4k3s1swaymqidvzv3rgfrkfh9cfkx"))
+
+(define rust-cranelift-isle-0.135.1
+ (crate-source "cranelift-isle" "0.135.1"
+ "0gh8a0whbv7vi7rzrbqw1r9y1763csxw01bkl6ddryvaqf9zaa5x"))
+
+(define rust-cranelift-native-0.135.1
+ (crate-source "cranelift-native" "0.135.1"
+ "0pq5q7r6zkahkyx07047pz7790kzvn0gnhy63aiil9pwmx3wm1r9"))
+
+(define rust-cranelift-srcgen-0.135.1
+ (crate-source "cranelift-srcgen" "0.135.1"
+ "0s3xaisxkg7y8jqcy8irn7ch68flw3g1aydj8g54myfyr7c1shxp"))
+
+(define rust-crc32fast-1.5.1
+ (crate-source "crc32fast" "1.5.1"
+ "0l75bfakpwr86wz45gm38lylrpgbssr529fmm6m445qy2rqwi644"))
+
+(define rust-crypto-common-0.1.7
+ (crate-source "crypto-common" "0.1.7"
+ "02nn2rhfy7kvdkdjl457q2z0mklcvj9h662xrq6dzhfialh2kj3q"))
+
+(define rust-ctor-0.6.3
+ (crate-source "ctor" "0.6.3"
+ "03jrw316acxl3vld3wvl5m8jkj0mwwbssx7i06sb5blg4ww02kj2"))
+
+(define rust-ctor-proc-macro-0.0.7
+ (crate-source "ctor-proc-macro" "0.0.7"
+ "1havwah6iryn0ang09y12xxr45jsp7ff27zflz4mhgk017ghlmjj"))
+
+(define rust-ctrlc-3.5.2
+ (crate-source "ctrlc" "3.5.2"
+ "0qh1lvlr6k58dliqllx1n7mjfwp1mzr607bks3r9m0a5msrgmcg0"))
+
+(define rust-dialoguer-0.12.0
+ (crate-source "dialoguer" "0.12.0"
+ "15mdq2cp838yiq9fs1jkhvskixvlqz5p8f8dipkn88xz06sh9w95"))
+
+(define rust-diff-0.1.13
+ (crate-source "diff" "0.1.13"
+ "1j0nzjxci2zqx63hdcihkp0a4dkdmzxd7my4m7zk6cjyfy34j9an"))
+
+(define rust-digest-0.10.7
+ (crate-source "digest" "0.10.7"
+ "14p2n6ih29x81akj097lvz7wi9b6b9hvls0lwrv7b6xwyy0s5ncy"))
+
+(define rust-dispatch2-0.3.1
+ (crate-source "dispatch2" "0.3.1"
+ "0f5xmnbzpaz1g80m27kd804p75nswh0ikb6wvqh4ba3x9rz3c3hy"))
+
+(define rust-displaydoc-0.2.7
+ (crate-source "displaydoc" "0.2.7"
+ "1a42mwpgpwcqq2qqgkcc630wvsc2p2dkmgacjnclginwfz9js8y6"))
+
+(define rust-dtor-0.1.1
+ (crate-source "dtor" "0.1.1"
+ "00fkcw8zn0g10m4k8b0qgmn304g47xqwn1ihhzyjra48n3p04ka0"))
+
+(define rust-dtor-proc-macro-0.0.6
+ (crate-source "dtor-proc-macro" "0.0.6"
+ "19fg0mivy9qyvbwmqj3ysj0qm5cay0gyp5fyw1imq89cj95cyy7n"))
+
+(define rust-dunce-1.0.5
+ (crate-source "dunce" "1.0.5"
+ "04y8wwv3vvcqaqmqzssi6k0ii9gs6fpz96j5w9nky2ccsl23axwj"))
+
+(define rust-dyn-clone-1.0.20
+ (crate-source "dyn-clone" "1.0.20"
+ "0m956cxcg8v2n8kmz6xs5zl13k2fak3zkapzfzzp7pxih6hix26h"))
+
+(define rust-either-1.18.0
+ (crate-source "either" "1.18.0"
+ "0d7dx31sf8rakcgp63070ngb2vkjynrni866pnx879pawndgnai5"))
+
+(define rust-embedded-io-0.4.0
+ (crate-source "embedded-io" "0.4.0"
+ "1v9wrc5nsgaaady7i3ya394sik5251j0iq5rls7mrx7fv696h6pg"))
+
+(define rust-embedded-io-0.6.1
+ (crate-source "embedded-io" "0.6.1"
+ "0v901xykajh3zffn6x4cnn4fhgfw3c8qpjwbsk6gai3gaccg3l7d"))
+
+(define rust-encode-unicode-1.0.0
+ (crate-source "encode_unicode" "1.0.0"
+ "1h5j7j7byi289by63s3w4a8b3g6l5ccdrws7a67nn07vdxj77ail"))
+
+(define rust-encoding-rs-0.8.35
+ (crate-source "encoding_rs" "0.8.35"
+ "1wv64xdrr9v37rqqdjsyb8l8wzlcbab80ryxhrszvnj59wy0y0vm"))
+
+(define rust-equivalent-1.0.2
+ (crate-source "equivalent" "1.0.2"
+ "03swzqznragy8n0x31lqc78g2af054jwivp7lkrbrc0khz74lyl7"))
+
+(define rust-errno-0.3.14
+ (crate-source "errno" "0.3.14"
+ "1szgccmh8vgryqyadg8xd58mnwwicf39zmin3bsn63df2wbbgjir"))
+
+(define rust-etcetera-0.11.0
+ (crate-source "etcetera" "0.11.0"
+ "15myc4rl62iah8acdl1sxmrdxb8ci55zbphrv07s55qx3i6wqj6y"))
+
+(define rust-fastrand-2.5.0
+ (crate-source "fastrand" "2.5.0"
+ "08q2r30y62winysimnlpbvw9kiwn0rmdlidqlmzd6z90mv764z6s"))
+
+(define rust-file-id-0.2.3
+ (crate-source "file-id" "0.2.3"
+ "1s96rjij7gdbs4j70k1xjfqfr1zi1wbxkpaff4a89ibdgdinmz71"))
+
+(define rust-find-msvc-tools-0.1.11
+ (crate-source "find-msvc-tools" "0.1.11"
+ "145qpfb9r4ml2klr8v4byvrkikp61qyiks9n69b8z0vbscbb0pfl"))
+
+(define rust-fnv-1.0.7
+ (crate-source "fnv" "1.0.7"
+ "1hc2mcqha06aibcaza94vbi81j6pr9a1bbxrxjfhc91zin8yr7iz"))
+
+(define rust-foldhash-0.1.5
+ (crate-source "foldhash" "0.1.5"
+ "1wisr1xlc2bj7hk4rgkcjkz3j2x4dhd1h9lwk7mj8p71qpdgbi6r"))
+
+(define rust-foldhash-0.2.0
+ (crate-source "foldhash" "0.2.0"
+ "1nvgylb099s11xpfm1kn2wcsql080nqmnhj1l25bp3r2b35j9kkp"))
+
+(define rust-form-urlencoded-1.2.2
+ (crate-source "form_urlencoded" "1.2.2"
+ "1kqzb2qn608rxl3dws04zahcklpplkd5r1vpabwga5l50d2v4k6b"))
+
+(define rust-fsevent-sys-4.1.0
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "fsevent-sys" "4.1.0"
+ "1liz67v8b0gcs8r31vxkvm2jzgl9p14i78yfqx81c8sdv817mvkn"))
+
+(define rust-futures-0.3.34
+ (crate-source "futures" "0.3.34"
+ "18yhwmbdalhz2z9i1vm10hy2v0cfm82dkgcb6vr2msxazfix4ccs"))
+
+(define rust-futures-channel-0.3.34
+ (crate-source "futures-channel" "0.3.34"
+ "1i4kwcanpaphn1ax62ci3nx176kglxqx0gnhzqpqdr1rkpbf7ydi"))
+
+(define rust-futures-core-0.3.34
+ (crate-source "futures-core" "0.3.34"
+ "0pjgv4fx0np6hrs5sz5a2phabwv0z70yr51v03injbi44bjrkmlj"))
+
+(define rust-futures-io-0.3.34
+ (crate-source "futures-io" "0.3.34"
+ "1v9z6wj92ra18kpv0xig21hgpzrvcwmcr8fszyzh64yyay0zmh2k"))
+
+(define rust-futures-sink-0.3.34
+ (crate-source "futures-sink" "0.3.34"
+ "07cfvrgc3vxk6sw5g8a8dnrm1mzg6d5mwy08ywa1sgyhyxml4i0r"))
+
+(define rust-futures-task-0.3.34
+ (crate-source "futures-task" "0.3.34"
+ "1zfilqs8nwlfqz4prk7ihvpp5avvzins87ibzlxzq5fhs7ipshfd"))
+
+(define rust-futures-util-0.3.34
+ (crate-source "futures-util" "0.3.34"
+ "1g3r9ghzq7c2fh34lis43i72xavk9p84npgfwgb5vfpqcwjajl0d"))
+
+(define rust-fuzzy-matcher-0.3.7
+ (crate-source "fuzzy-matcher" "0.3.7"
+ "153csv8rsk2vxagb68kpmiknvdd3bzqj03x805khckck28rllqal"))
+
+(define rust-generic-array-0.14.7
+ (crate-source "generic-array" "0.14.7"
+ "16lyyrzrljfq424c3n8kfwkqihlimmsg5nhshbbp48np3yjrqr45"))
+
+(define rust-getrandom-0.4.3
+ (crate-source "getrandom" "0.4.3"
+ "16b0202fkdwz3p2cyll82dv24ljbn0wiyy829v4lwbkbflyqh3ih"))
+
+(define rust-gimli-0.33.0
+ (crate-source "gimli" "0.33.0"
+ "0v0jgyxdakhn8z74dvm9l38a0bwvfhrc9b3wiigq0ncmz11z1xqb"))
+
+(define rust-glob-0.3.4
+ (crate-source "glob" "0.3.4"
+ "02zby4rsidb2ksrnysyrsaap7rk6wpp7vl5chflndafhl5gaisz4"))
+
+(define rust-hashbrown-0.15.5
+ (crate-source "hashbrown" "0.15.5"
+ "189qaczmjxnikm9db748xyhiw04kpmhm9xj9k9hg0sgx7pjwyacj"))
+
+(define rust-hashbrown-0.16.1
+ (crate-source "hashbrown" "0.16.1"
+ "004i3njw38ji3bzdp9z178ba9x3k0c1pgy8x69pj7yfppv4iq7c4"))
+
+(define rust-hashbrown-0.17.1
+ (crate-source "hashbrown" "0.17.1"
+ "0jmqz7i4yl6cm7rbn0i2ffkfrmwi6xkmzkaldr2v8bcsx2v0jngd"))
+
+(define rust-heck-0.5.0
+ (crate-source "heck" "0.5.0"
+ "1sjmpsdl8czyh9ywl3qcsfsq9a307dg4ni2vnlwgnzzqhc4y0113"))
+
+(define rust-html-escape-0.2.15
+ (crate-source "html-escape" "0.2.15"
+ "1i8k6hkpvrz2d0px2rcgc7d2qyc22l760wr1lfxrf4dlnjan0df9"))
+
+(define rust-httpdate-1.0.3
+ (crate-source "httpdate" "1.0.3"
+ "1aa9rd2sac0zhjqh24c9xvir96g188zldkx0hr6dnnlx5904cfyz"))
+
+(define rust-icu-collections-2.3.0
+ (crate-source "icu_collections" "2.3.0"
+ "04x59h6vdq0cnpippim1nr471ivlsnnn470sj1d5v864h48d4s7s"))
+
+(define rust-icu-locale-core-2.3.0
+ (crate-source "icu_locale_core" "2.3.0"
+ "1sqdj16wwl7h9y6r7j394av4kpdb7zryz9h169ffwbm9imc2hvnm"))
+
+(define rust-icu-normalizer-2.3.0
+ (crate-source "icu_normalizer" "2.3.0"
+ "0vv43ixk2wmbxrx7kl33cwkhx1wdyb1q3pa18qkyshan4dgwzy8j"))
+
+(define rust-icu-normalizer-data-2.3.0
+ (crate-source "icu_normalizer_data" "2.3.0"
+ "1811h0ppb7lwq1q2492p5x6lcmlwmhbmkf69fhyvzcz0scgdlqqm"))
+
+(define rust-icu-properties-2.3.0
+ (crate-source "icu_properties" "2.3.0"
+ "0j51hi8qgf0l6a7qzvnwsc61598w2fpnsklicld6ci9immva4z3y"))
+
+(define rust-icu-properties-data-2.3.0
+ (crate-source "icu_properties_data" "2.3.0"
+ "1akw1gp5rcaiz377xzsnkx8f92qax4kh3lfn9y4rcjj6q4wg1475"))
+
+(define rust-icu-provider-2.3.1
+ (crate-source "icu_provider" "2.3.1"
+ "0wrydhwprwgyka3r3sw6276syjnlw6fpqr2zsm2srvxv7afvnyyj"))
+
+(define rust-ident-case-1.0.1
+ (crate-source "ident_case" "1.0.1"
+ "0fac21q6pwns8gh1hz3nbq15j8fi441ncl6w4vlnd1cmc55kiq5r"))
+
+(define rust-idna-1.1.0
+ (crate-source "idna" "1.1.0"
+ "1pp4n7hppm480zcx411dsv9wfibai00wbpgnjj4qj0xa7kr7a21v"))
+
+(define rust-idna-adapter-1.2.2
+ (crate-source "idna_adapter" "1.2.2"
+ "0557p76l8hj35r9zn1yv7c6x1c0qbrsffmg80n0yy8361ly3fs6b"))
+
+(define rust-indexmap-2.14.1
+ (crate-source "indexmap" "2.14.1"
+ "1sq9z90viwfw8053l32rrby563hy67xl8n6k65d92hi22i421ah7"))
+
+(define rust-indoc-2.0.7
+ (crate-source "indoc" "2.0.7"
+ "01np60qdq6lvgh8ww2caajn9j4dibx9n58rvzf7cya1jz69mrkvr"))
+
+(define rust-inotify-0.11.5
+ (crate-source "inotify" "0.11.5"
+ "14p5gkhk95yk536zncfrjywy2yxrxf06yrfsnx89bd6a0ylhxh2c"))
+
+(define rust-inotify-sys-0.1.8
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "inotify-sys" "0.1.8"
+ "0zgkxmqa7wlsc348166rr9np4560rflzlcvsmf8xyg0i5h5zhcy0"))
+
+(define rust-is-terminal-polyfill-1.70.2
+ (crate-source "is_terminal_polyfill" "1.70.2"
+ "15anlc47sbz0jfs9q8fhwf0h3vs2w4imc030shdnq54sny5i7jx6"))
+
+(define rust-itertools-0.13.0
+ (crate-source "itertools" "0.13.0"
+ "11hiy3qzl643zcigknclh446qb9zlg4dpdzfkjaa9q9fqpgyfgj1"))
+
+(define rust-itertools-0.14.0
+ (crate-source "itertools" "0.14.0"
+ "118j6l1vs2mx65dqhwyssbrxpawa90886m3mzafdvyip41w2q69b"))
+
+(define rust-itoa-1.0.18
+ (crate-source "itoa" "1.0.18"
+ "10jnd1vpfkb8kj38rlkn2a6k02afvj3qmw054dfpzagrpl6achlg"))
+
+(define rust-jni-0.22.4
+ (crate-source "jni" "0.22.4"
+ "161lza8gz071h22pgyqyx4n91ixd691z2dbb1pq2g97k5i49mzay"))
+
+(define rust-jni-macros-0.22.4
+ (crate-source "jni-macros" "0.22.4"
+ "18v02mcn5c7mb2yw6r930xg6ynsn7hwkxv8z2kdhn3qprjn0j0d0"))
+
+(define rust-jni-sys-0.4.1
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "jni-sys" "0.4.1"
+ "1wlahx6f2zhczdjqyn8mk7kshb8x5vsd927sn3lvw41rrf47ldy6"))
+
+(define rust-jni-sys-macros-0.4.1
+ (crate-source "jni-sys-macros" "0.4.1"
+ "0r32gbabrak15a7p487765b5wc0jcna2yv88mk6m1zjqyi1bkh1q"))
+
+(define rust-js-sys-0.3.104
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "js-sys" "0.3.104"
+ "0fjsgady7wbv7bbyy6c8qhrd93bnx11qbl83l1g7bb9a4601030f"))
+
+(define rust-kqueue-1.2.1
+ (crate-source "kqueue" "1.2.1"
+ "1sj11bbz5kx73m0bzkmwzfmmlxjnh4q94v6ya3gls2qj4idkwxld"))
+
+(define rust-kqueue-sys-1.1.2
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "kqueue-sys" "1.1.2"
+ "11xhzsgwc82g85072c6m8nimxxqkax4n40sikcsk9hks5573la87"))
+
+(define rust-leb128fmt-0.1.0
+ (crate-source "leb128fmt" "0.1.0"
+ "1chxm1484a0bly6anh6bd7a99sn355ymlagnwj3yajafnpldkv89"))
+
+(define rust-libc-0.2.189
+ (crate-source "libc" "0.2.189"
+ "1whjfs375vlng2q6yrbzs73cvp5lm3w1n2gfqajb2vgf7zg3xbry"))
+
+(define rust-libloading-0.8.9
+ (crate-source "libloading" "0.8.9"
+ "0mfwxwjwi2cf0plxcd685yxzavlslz7xirss3b9cbrzyk4hv1i6p"))
+
+(define rust-libloading-0.9.0
+ (crate-source "libloading" "0.9.0"
+ "0q4bvhp4kqy2v3bw4cn2bmyq73hskqd1ansa9125gfq5x0ns4k3m"))
+
+(define rust-libm-0.2.16
+ (crate-source "libm" "0.2.16"
+ "10brh0a3qjmbzkr5mf5xqi887nhs5y9layvnki89ykz9xb1wxlmn"))
+
+(define rust-linux-raw-sys-0.12.1
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "linux-raw-sys" "0.12.1"
+ "0lwasljrqxjjfk9l2j8lyib1babh2qjlnhylqzl01nihw14nk9ij"))
+
+(define rust-litemap-0.8.3
+ (crate-source "litemap" "0.8.3"
+ "1bpgpj87560hmckh3875fbahpmfxbk4g8pzns84h3ykf3nfx3na7"))
+
+(define rust-log-0.4.34
+ (crate-source "log" "0.4.34"
+ "1ihkzn0m33ab79fcl4mkb04n5iwqzbxzyw7l7hazqkffaqzbvy7r"))
+
+(define rust-mach2-0.6.0
+ (crate-source "mach2" "0.6.0"
+ "0asmmmvsvf9ipn2jszazhhlrqv8qgcglwdh0n3r470pna70hirns"))
+
+(define rust-memchr-2.8.3
+ (crate-source "memchr" "2.8.3"
+ "161xa63ipfanf8v3nb82xd5hqgydv55nzw59wyngqbz6alfaz2yg"))
+
+(define rust-memfd-0.6.5
+ (crate-source "memfd" "0.6.5"
+ "09sj2xhn592adr14mss8b433fdn8ikyq02m4dr3a0555mq9fnf5d"))
+
+(define rust-minimal-lexical-0.2.1
+ (crate-source "minimal-lexical" "0.2.1"
+ "16ppc5g84aijpri4jzv14rvcnslvlpphbszc7zzp6vfkddf4qdb8"))
+
+(define rust-mio-1.2.2
+ (crate-source "mio" "1.2.2"
+ "09y4b7gc42ymgssshh8sz6gs3y5r8bbigqaw2c4snh6fy5qmrmih"))
+
+(define rust-ndk-context-0.1.1
+ (crate-source "ndk-context" "0.1.1"
+ "12sai3dqsblsvfd1l1zab0z6xsnlha3xsfl7kagdnmj3an3jvc17"))
+
+(define rust-nix-0.31.3
+ (crate-source "nix" "0.31.3"
+ "0gbwnjfny9rq9hl5bz4ry520n9rnfknna4bg88n66f7zx3yx486g"))
+
+(define rust-nom-7.1.3
+ (crate-source "nom" "7.1.3"
+ "0jha9901wxam390jcf5pfa0qqfrgh8li787jx2ip0yk5b8y9hwyj"))
+
+(define rust-notify-8.2.0
+ (crate-source "notify" "8.2.0"
+ "1hrb83451vm5cpjw83nz5skgwjg5ara28zq8nxsqbzsif690fgad"))
+
+(define rust-notify-debouncer-full-0.7.0
+ (crate-source "notify-debouncer-full" "0.7.0"
+ "00mkvfh0z2hi8ql8fa4k6zh6vlhjk43xc14d4cr9kg7ykhbljay0"))
+
+(define rust-notify-types-2.1.0
+ (crate-source "notify-types" "2.1.0"
+ "0yj710mxd4lsaz4hq7601mh6xb02awb8hg4z6lvh76ik1vpczf22"))
+
+(define rust-objc2-0.6.4
+ (crate-source "objc2" "0.6.4"
+ "17x8qpl512frscfqbmgjr20kg3y4r0xdqxphja17dz5f0znsh4is"))
+
+(define rust-objc2-app-kit-0.3.2
+ (crate-source "objc2-app-kit" "0.3.2"
+ "132ijwni8lsi8phq7wnmialkxp46zx998fns3zq5np0ya1mr77nl"))
+
+(define rust-objc2-core-foundation-0.3.2
+ (crate-source "objc2-core-foundation" "0.3.2"
+ "0dnmg7606n4zifyjw4ff554xvjmi256cs8fpgpdmr91gckc0s61a"))
+
+(define rust-objc2-encode-4.1.0
+ (crate-source "objc2-encode" "4.1.0"
+ "0cqckp4cpf68mxyc2zgnazj8klv0z395nsgbafa61cjgsyyan9gg"))
+
+(define rust-objc2-foundation-0.3.2
+ (crate-source "objc2-foundation" "0.3.2"
+ "0wijkxzzvw2xkzssds3fj8279cbykz2rz9agxf6qh7y2agpsvq73"))
+
+(define rust-object-0.39.1
+ (crate-source "object" "0.39.1"
+ "16vkcaamik55jd9f04g73hvgsm5w636gb4w06x3nafvsih4nqnif"))
+
+(define rust-once-cell-1.21.4
+ (crate-source "once_cell" "1.21.4"
+ "0l1v676wf71kjg2khch4dphwh1jp3291ffiymr2mvy1kxd5kwz4z"))
+
+(define rust-once-cell-polyfill-1.70.2
+ (crate-source "once_cell_polyfill" "1.70.2"
+ "1zmla628f0sk3fhjdjqzgxhalr2xrfna958s632z65bjsfv8ljrq"))
+
+(define rust-pathdiff-0.2.3
+ (crate-source "pathdiff" "0.2.3"
+ "1lrqp4ip05df8dzldq6gb2c1sq2gs54gly8lcnv3rhav1qhwx56z"))
+
+(define rust-percent-encoding-2.3.2
+ (crate-source "percent-encoding" "2.3.2"
+ "083jv1ai930azvawz2khv7w73xh8mnylk7i578cifndjn5y64kwv"))
+
+(define rust-phf-0.14.0
+ (crate-source "phf" "0.14.0"
+ "1xm2nbg5c59b5wvvv4v3sd3sknrlg2z17bkzk440p2090dw7h0q1"))
+
+(define rust-phf-generator-0.14.0
+ (crate-source "phf_generator" "0.14.0"
+ "003i8qw6ghkcvs6bmxdhnq1a1kmpwbciakazjsybx8fmb44jxdmf"))
+
+(define rust-phf-shared-0.14.0
+ (crate-source "phf_shared" "0.14.0"
+ "12dalcsaq83pfydhq81195aal0ld9vdx3swz6kk9ncfrw8kr1zf6"))
+
+(define rust-pin-project-lite-0.2.17
+ (crate-source "pin-project-lite" "0.2.17"
+ "1kfmwvs271si96zay4mm8887v5khw0c27jc9srw1a75ykvgj54x8"))
+
+(define rust-postcard-1.1.3
+ (crate-source "postcard" "1.1.3"
+ "094srff139n7m8g5ssq36ag6s29ikf7fgpz660x2hkj5vnsw6r37"))
+
+(define rust-potential-utf-0.1.6
+ (crate-source "potential_utf" "0.1.6"
+ "0qbndl2fpphq7mph41m11vaixs05xrh1s451wxlgap4fdnybjgnq"))
+
+(define rust-pretty-assertions-1.4.1
+ (crate-source "pretty_assertions" "1.4.1"
+ "0v8iq35ca4rw3rza5is3wjxwsf88303ivys07anc5yviybi31q9s"))
+
+(define rust-prettyplease-0.2.37
+ (crate-source "prettyplease" "0.2.37"
+ "0azn11i1kh0byabhsgab6kqs74zyrg69xkirzgqyhz6xmjnsi727"))
+
+(define rust-proc-macro-crate-3.5.0
+ (crate-source "proc-macro-crate" "3.5.0"
+ "0kv1g1d1zjwxlgcaba2qlshzyy32j03xic8rskqlcr5mnblsfyz6"))
+
+(define rust-proc-macro2-1.0.107
+ (crate-source "proc-macro2" "1.0.107"
+ "1nb6ly8kp65f724kj73ippc7lvydss24sm2vagk6qpklpg4pwplq"))
+
+(define rust-pulley-interpreter-48.0.1
+ (crate-source "pulley-interpreter" "48.0.1"
+ "0ah1awb3i77hhidm0dx4wlfvxb9ghpmyx0287s57790911gdfmgp"))
+
+(define rust-pulley-macros-48.0.1
+ (crate-source "pulley-macros" "48.0.1"
+ "07g5dihpqihi92dq4rj27gh9w3lbz1ylm2g7h9pr8md5qjhrzrn7"))
+
+(define rust-quote-1.0.47
+ (crate-source "quote" "1.0.47"
+ "00ch0yyzvv6s671ik0kcsbw8nigdaj2g3fr61kcahwx48aqlvgqz"))
+
+(define rust-r-efi-6.0.0
+ (crate-source "r-efi" "6.0.0"
+ "1gyrl2k5fyzj9k7kchg2n296z5881lg7070msabid09asp3wkp7q"))
+
+(define rust-rand-0.10.2
+ (crate-source "rand" "0.10.2"
+ "105yqkdzqbgggd3r1yjm9jg0zvibfdsmxylvxxkmblwc0lxgmxf7"))
+
+(define rust-rand-core-0.10.1
+ (crate-source "rand_core" "0.10.1"
+ "0s9wiacxrr100icl7i41308gcj85nlcclrc5jx1jd6p10dhigf33"))
+
+(define rust-ref-cast-1.0.27
+ (crate-source "ref-cast" "1.0.27"
+ "1hv5sf0j7b65gz2g57c3wp0fzr5r3807dywf6fap455lwjs0yi3y"))
+
+(define rust-ref-cast-impl-1.0.27
+ (crate-source "ref-cast-impl" "1.0.27"
+ "0fnzgkvddgl9xs3884x5ypi9rd0dgc1p5vd1k4b74lw49ybdiv4j"))
+
+(define rust-regalloc2-0.15.2
+ (crate-source "regalloc2" "0.15.2"
+ "11bzk983566d84xpm0v76jhmm2skalvlhqymypadd40mwvl14xvm"))
+
+(define rust-regex-1.13.1
+ (crate-source "regex" "1.13.1"
+ "1391a0a4100ik8cp7l577p3ip3haqq03rd9c5vdr7vcfdixj687h"))
+
+(define rust-regex-automata-0.4.18
+ (crate-source "regex-automata" "0.4.18"
+ "1cml0rm0ssqfkibh9nh3gy4b6hbsbicj1rihpwf2a4v4nawm71dd"))
+
+(define rust-regex-syntax-0.8.11
+ (crate-source "regex-syntax" "0.8.11"
+ "1m25h5q2wp976fb9gc3dsc9l99svcvd5cri8lncb51c46ydgzxnn"))
+
+(define rust-relative-path-2.0.1
+ (crate-source "relative-path" "2.0.1"
+ "1c4jm6x0p88722c77xx53mb7zcs4xznp9d3whdsbmn1248qhm95w"))
+
+(define rust-rgb-0.8.53
+ (crate-source "rgb" "0.8.53"
+ "1i0c55whln68zs6f5qqrkbg1mzai0p3qk1mwkwzdgr9i3dw4pcs7"))
+
+(define rust-rquickjs-0.12.2
+ (crate-source "rquickjs" "0.12.2"
+ "1r34940k1wjmji7ngyyk40v0n2w9pd5698phnl1vaq5hvzpf812f"))
+
+(define rust-rquickjs-core-0.12.2
+ (crate-source "rquickjs-core" "0.12.2"
+ "1330nq8qjcfnjcbjyz8g89pl441c7kr49g3dxsbkv52vmjcz9r0n"))
+
+(define rust-rquickjs-macro-0.12.2
+ (crate-source "rquickjs-macro" "0.12.2"
+ "0l1z558spwlmhh769f8crsicnhapy53rycym12m2zvkhkchwig1w"))
+
+(define rust-rquickjs-sys-0.12.2
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "rquickjs-sys" "0.12.2"
+ "16dd3kf4qkn8ywf3p5mrnyci2b2smlq9wzpg2h414x3ap11w4fm1"))
+
+(define rust-rustc-demangle-0.1.28
+ (crate-source "rustc-demangle" "0.1.28"
+ "1sr083jamg89zcxmchia1pdn584smsy2r32kk9q30a5vm3zmcjxp"))
+
+(define rust-rustc-hash-2.1.3
+ (crate-source "rustc-hash" "2.1.3"
+ "0bbla578m87qmf3yr55q49l97gxn7z0ha1dwqlnvwwc58ad7y7kb"))
+
+(define rust-rustc-version-0.4.1
+ (crate-source "rustc_version" "0.4.1"
+ "14lvdsmr5si5qbqzrajgb6vfn69k0sfygrvfvr2mps26xwi3mjyg"))
+
+(define rust-rustix-1.1.4
+ (crate-source "rustix" "1.1.4"
+ "14511f9yjqh0ix07xjrjpllah3325774gfwi9zpq72sip5jlbzmn"))
+
+(define rust-rustversion-1.0.23
+ (crate-source "rustversion" "1.0.23"
+ "07z2a843fs80fawwflj9jwn49k9b0bd0dhhbvy0ar69vaxd72m6g"))
+
+(define rust-same-file-1.0.6
+ (crate-source "same-file" "1.0.6"
+ "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k"))
+
+(define rust-schemars-1.2.2
+ (crate-source "schemars" "1.2.2"
+ "0jng632s64njf9vghr3i1l4m15h4y85m5vhg7vkwdkdnjg978wk8"))
+
+(define rust-schemars-derive-1.2.2
+ (crate-source "schemars_derive" "1.2.2"
+ "1fp2wkdk32nv66swy7k7pz7sxygn634snlppih5jzbs6ddqng36r"))
+
+(define rust-semver-1.0.28
+ (crate-source "semver" "1.0.28"
+ "1kaimrpy876bcgi8bfj0qqfxk77zm9iz2zhn1hp9hj685z854y4a"))
+
+(define rust-serde-1.0.229
+ (crate-source "serde" "1.0.229"
+ "1fp04fq4a79bpm61xz1zy0pbz4kpc7d771zii1k3inmszq55jj21"))
+
+(define rust-serde-core-1.0.229
+ (crate-source "serde_core" "1.0.229"
+ "0j1ajiha76h3nmd976il9li6975k121xa7jb39ws8n0yqp4s5p37"))
+
+(define rust-serde-derive-1.0.229
+ (crate-source "serde_derive" "1.0.229"
+ "0j4k63i7h1bikxwz2c89ig0hrwbnl9mz1czn85xx99x5cc9dg9g7"))
+
+(define rust-serde-derive-internals-0.30.0
+ (crate-source "serde_derive_internals" "0.30.0"
+ "1gd9n45na7n79nr54ghfl79rygkbzw2ybk3wyr6nlp83rry16lpq"))
+
+(define rust-serde-json-1.0.151
+ (crate-source "serde_json" "1.0.151"
+ "051zww7lvpw147vvwss1ng6w587qyrkzg75fvj08q2dfrmgbahf8"))
+
+(define rust-sha2-0.10.9
+ (crate-source "sha2" "0.10.9"
+ "10xjj843v31ghsksd9sl9y12qfc48157j1xpb8v1ml39jy0psl57"))
+
+(define rust-shell-words-1.1.1
+ (crate-source "shell-words" "1.1.1"
+ "0xzd5p53xl0ndnk63r0by52rhdrh6pd37szfxszkg73zb6ffcvyw"))
+
+(define rust-shlex-1.3.0
+ (crate-source "shlex" "1.3.0"
+ "0r1y6bv26c1scpxvhg2cabimrmwgbp4p3wy6syj9n0c4s3q2znhg"))
+
+(define rust-shlex-2.0.1
+ (crate-source "shlex" "2.0.1"
+ "1fjsll1cd7d2bcpdij9kd6w62rpbc7qqzvydvs021vsmr1cxvypq"))
+
+(define rust-simd-cesu8-1.2.0
+ (crate-source "simd_cesu8" "1.2.0"
+ "0865mv3nmd35f1dccjcfj7dncjmmvvdij3j61z4131mz38jiw0qi"))
+
+(define rust-simdutf8-0.1.5
+ (crate-source "simdutf8" "0.1.5"
+ "0vmpf7xaa0dnaikib5jlx6y4dxd3hxqz6l830qb079g7wcsgxag3"))
+
+(define rust-similar-2.7.0
+ (crate-source "similar" "2.7.0"
+ "1aidids7ymfr96s70232s6962v5g9l4zwhkvcjp4c5hlb6b5vfxv"))
+
+(define rust-siphasher-1.0.3
+ (crate-source "siphasher" "1.0.3"
+ "0jg6l9xyzca5vy4h6gf8r6p4kk84g98fk95pzig1kq6cr4z8grcf"))
+
+(define rust-slab-0.4.12
+ (crate-source "slab" "0.4.12"
+ "1xcwik6s6zbd3lf51kkrcicdq2j4c1fw0yjdai2apy9467i0sy8c"))
+
+(define rust-smallvec-1.15.2
+ (crate-source "smallvec" "1.15.2"
+ "143wzbqf6vgapdp2z4qpl0yvlqcn17s8cnk8m28rqly808zsdmlf"))
+
+(define rust-stable-deref-trait-1.2.1
+ (crate-source "stable_deref_trait" "1.2.1"
+ "15h5h73ppqyhdhx6ywxfj88azmrpml9gl6zp3pwy2malqa6vxqkc"))
+
+(define rust-streaming-iterator-0.1.9
+ (crate-source "streaming-iterator" "0.1.9"
+ "0845zdv8qb7zwqzglpqc0830i43xh3fb6vqms155wz85qfvk28ib"))
+
+(define rust-strsim-0.11.1
+ (crate-source "strsim" "0.11.1"
+ "0kzvqlw8hxqb7y598w1s0hxlnmi84sg5vsipp3yg5na5d1rvba3x"))
+
+(define rust-syn-2.0.119
+ (crate-source "syn" "2.0.119"
+ "15vjy620l91a3q4n4f4gzhnflmdr6pnm38v2m6cpk86i8av32a47"))
+
+(define rust-syn-3.0.4
+ (crate-source "syn" "3.0.4"
+ "17v4ac61x0hvj1879ywqzlwhyzg7n9lr9zniwrsif3b1ykfmq9z6"))
+
+(define rust-synstructure-0.13.2
+ (crate-source "synstructure" "0.13.2"
+ "1lh9lx3r3jb18f8sbj29am5hm9jymvbwh6jb1izsnnxgvgrp12kj"))
+
+(define rust-target-lexicon-0.13.5
+ (crate-source "target-lexicon" "0.13.5"
+ "1jm6lmf9hsn7ri2d6v9gg6fy24lylhskh6pbxh71f82wdxd97dmd"))
+
+(define rust-tempfile-3.27.0
+ (crate-source "tempfile" "3.27.0"
+ "1gblhnyfjsbg9wjg194n89wrzah7jy3yzgnyzhp56f3v9jd7wj9j"))
+
+(define rust-termcolor-1.4.1
+ (crate-source "termcolor" "1.4.1"
+ "0mappjh3fj3p2nmrg4y7qv94rchwi9mzmgmfflr8p2awdj7lyy86"))
+
+(define rust-thiserror-2.0.20
+ (crate-source "thiserror" "2.0.20"
+ "0kxs6p295jffxhzaxpxv1dwaaf5iqlm6sx8h0djp6ancbxgj71pc"))
+
+(define rust-thiserror-impl-2.0.20
+ (crate-source "thiserror-impl" "2.0.20"
+ "1bwjc94gi0xn5jz26h1a8bjj1wdkvvr6jifamyc4mp9n28zcs15w"))
+
+(define rust-thread-local-1.1.10
+ (crate-source "thread_local" "1.1.10"
+ "0w20g2pfdcp8pz3gds0bzksv6mxk802szca8qlr3701jdm69rn8s"))
+
+(define rust-tiny-http-0.12.0
+ (crate-source "tiny_http" "0.12.0"
+ "10nw9kk2i2aq4l4csy0825qkq0l66f9mz2c1n57yg8hkckgib69q"))
+
+(define rust-tinystr-0.8.4
+ (crate-source "tinystr" "0.8.4"
+ "0hzncw8rgk4syla79qscfml46jm7ll1zdp7kdacc42cj8n8prqmi"))
+
+(define rust-toml-datetime-1.1.1+spec-1.1.0
+ (crate-source "toml_datetime" "1.1.1+spec-1.1.0"
+ "1mws2mkkf46l7inn77azhm0vdwxngv9vsbhbl0ah33p2c9gzcr9i"))
+
+(define rust-toml-edit-0.25.13+spec-1.1.0
+ (crate-source "toml_edit" "0.25.13+spec-1.1.0"
+ "16xgmjdnxssdpj7rjyimsk4fqbv29g8zl7zhdbc6dxrf9mz3cxb9"))
+
+(define rust-toml-parser-1.1.3+spec-1.1.0
+ (crate-source "toml_parser" "1.1.3+spec-1.1.0"
+ "0mjdvihdkmjd4ykh574xgii71hpxw7ns7h4n4bisqpxrz4faqf0x"))
+
+(define rust-topological-sort-0.2.2
+ (crate-source "topological-sort" "0.2.2"
+ "0gcxahg24c058izagz642vs0kfb2zja48my3qrd0kkaf2d730s7a"))
+
+(define rust-tracing-0.1.44
+ (crate-source "tracing" "0.1.44"
+ "006ilqkg1lmfdh3xhg3z762izfwmxcvz0w7m4qx2qajbz9i1drv3"))
+
+(define rust-tracing-core-0.1.36
+ (crate-source "tracing-core" "0.1.36"
+ "16mpbz6p8vd6j7sf925k9k8wzvm9vdfsjbynbmaxxyq6v7wwm5yv"))
+
+(define rust-typenum-1.20.1
+ (crate-source "typenum" "1.20.1"
+ "086s9ly0906kw5yw41249fba97w5zfxf03pyfwdkffvcprqfixdn"))
+
+(define rust-unicode-ident-1.0.24
+ (crate-source "unicode-ident" "1.0.24"
+ "0xfs8y1g7syl2iykji8zk5hgfi5jw819f5zsrbaxmlzwsly33r76"))
+
+(define rust-unicode-segmentation-1.13.3
+ (crate-source "unicode-segmentation" "1.13.3"
+ "1a47zaq83p386r3baq4m018xd5q4q0grdg56i1x042dzn71x7xf6"))
+
+(define rust-unicode-width-0.2.2
+ (crate-source "unicode-width" "0.2.2"
+ "0m7jjzlcccw716dy9423xxh0clys8pfpllc5smvfxrzdf66h9b5l"))
+
+(define rust-unindent-0.2.4
+ (crate-source "unindent" "0.2.4"
+ "1wvfh815i6wm6whpdz1viig7ib14cwfymyr1kn3sxk2kyl3y2r3j"))
+
+(define rust-url-2.5.8
+ (crate-source "url" "2.5.8"
+ "1v8f7nx3hpr1qh76if0a04sj08k86amsq4h8cvpw6wvk76jahrzz"))
+
+(define rust-utf8-iter-1.0.4
+ (crate-source "utf8_iter" "1.0.4"
+ "1gmna9flnj8dbyd8ba17zigrp9c4c3zclngf5lnb5yvz1ri41hdn"))
+
+(define rust-utf8parse-0.2.2
+ (crate-source "utf8parse" "0.2.2"
+ "088807qwjq46azicqwbhlmzwrbkz7l4hpw43sdkdyyk524vdxaq6"))
+
+(define rust-version-check-0.9.5
+ (crate-source "version_check" "0.9.5"
+ "0nhhi4i5x89gm911azqbn7avs9mdacw2i3vcz3cnmz3mv4rqz4hb"))
+
+(define rust-walkdir-2.5.0
+ (crate-source "walkdir" "2.5.0"
+ "0jsy7a710qv8gld5957ybrnc07gavppp963gs32xk4ag8130jy99"))
+
+(define rust-wasi-0.11.1+wasi-snapshot-preview1
+ (crate-source "wasi" "0.11.1+wasi-snapshot-preview1"
+ "0jx49r7nbkbhyfrfyhz0bm4817yrnxgd3jiwwwfv0zl439jyrwyc"))
+
+(define rust-wasm-bindgen-0.2.127
+ (crate-source "wasm-bindgen" "0.2.127"
+ "0w6fa1mkbb6qlkffgy4qaz0hdf496zbjkyiyvs4lvmpd8xbr6w0v"))
+
+(define rust-wasm-bindgen-macro-0.2.127
+ (crate-source "wasm-bindgen-macro" "0.2.127"
+ "1hcvlb6bv771fvgifd367wd0cm4giyar8fq5i4h705vj7y7myxvp"))
+
+(define rust-wasm-bindgen-macro-support-0.2.127
+ (crate-source "wasm-bindgen-macro-support" "0.2.127"
+ "112j4d7dv8y2sk9yy9czrl9fpjx9388ywnn7icdv2bywazw367g1"))
+
+(define rust-wasm-bindgen-shared-0.2.127
+ (crate-source "wasm-bindgen-shared" "0.2.127"
+ "1gywp6xv8a27fvm3ga9xby93xyic3hc2s626b9z9rw2xqny4vxky"))
+
+(define rust-wasm-encoder-0.254.0
+ (crate-source "wasm-encoder" "0.254.0"
+ "14vkvvm7ns46viznkkf9vf8s38zr18nq2vmh5g8zvrbqc5j0sj09"))
+
+(define rust-wasmparser-0.244.0
+ (crate-source "wasmparser" "0.244.0"
+ "1zi821hrlsxfhn39nqpmgzc0wk7ax3dv6vrs5cw6kb0v5v3hgf27"))
+
+(define rust-wasmparser-0.254.0
+ (crate-source "wasmparser" "0.254.0"
+ "09vfy6hq50vcrc6vmjbgzs9pvkc4agzb8rdgd89spywrywlrlxnm"))
+
+(define rust-wasmprinter-0.254.0
+ (crate-source "wasmprinter" "0.254.0"
+ "0fdyk38zfqs9fl3pdpjq2wis28kcnsr2kdl7ixlh9x94w08vmqv4"))
+
+(define rust-wasmtime-48.0.1
+ (crate-source "wasmtime" "48.0.1"
+ "13bav3hz454v25hcq5l096hyjsc22599vv1583p2rj4vzrw9zlqv"))
+
+(define rust-wasmtime-c-api-impl-48.0.1
+ (crate-source "wasmtime-c-api-impl" "48.0.1"
+ "0s5y3a3gp448n1mpv21xcb5zamvyzb9kxjpi5bflsc6q0vahi6w0"))
+
+(define rust-wasmtime-environ-48.0.1
+ (crate-source "wasmtime-environ" "48.0.1"
+ "1ni9xhc7l35rdy4c2g7fwq3sqcj95ka9q47cjj4h8ka8jl6hgh80"))
+
+(define rust-wasmtime-internal-c-api-macros-48.0.1
+ (crate-source "wasmtime-internal-c-api-macros" "48.0.1"
+ "0blg8y7f9fcssdw20603idmbd4ik2bxh3vy2cd2wd9zkqk9blml1"))
+
+(define rust-wasmtime-internal-component-util-48.0.1
+ (crate-source "wasmtime-internal-component-util" "48.0.1"
+ "0gv1i95y72jkmrp188xkzcgjq2vzkyp6947jfn4a1z8m44lyh3rc"))
+
+(define rust-wasmtime-internal-core-48.0.1
+ (crate-source "wasmtime-internal-core" "48.0.1"
+ "1n2g8w0i63wss1i6y9cvkgzjpv99hhv1a9gxcwlsyjzl9iwqa4w2"))
+
+(define rust-wasmtime-internal-cranelift-48.0.1
+ (crate-source "wasmtime-internal-cranelift" "48.0.1"
+ "18fzmf68s7fc2szbjing100wmq460klnp8m1p38plibk4yjv8f02"))
+
+(define rust-wasmtime-internal-fiber-48.0.1
+ (crate-source "wasmtime-internal-fiber" "48.0.1"
+ "16zw97zs30n0vj1lmsgzchr7bibia49yly4wvnd9rgvcw22isvsr"))
+
+(define rust-wasmtime-internal-jit-debug-48.0.1
+ (crate-source "wasmtime-internal-jit-debug" "48.0.1"
+ "12gnjp2wv7697g40607cr6pbmw9d6xr5iasvg0b03fr793bswprn"))
+
+(define rust-wasmtime-internal-jit-icache-coherence-48.0.1
+ (crate-source "wasmtime-internal-jit-icache-coherence" "48.0.1"
+ "0vxrqdkhpxcpi8vyf5w41ca0zpaik4hnlp1a55blkb77v6pjbkiw"))
+
+(define rust-wasmtime-internal-unwinder-48.0.1
+ (crate-source "wasmtime-internal-unwinder" "48.0.1"
+ "0bf4qg7snjk5za3fdx9m55dpwxl6fiyqm9jck1scff8ysl4ymzd1"))
+
+(define rust-wasmtime-internal-versioned-export-macros-48.0.1
+ (crate-source "wasmtime-internal-versioned-export-macros" "48.0.1"
+ "05m1dgymjj39h4w9xjhi6f6m8i8ya2rlqwj98bvw4f2ca5gqmr4p"))
+
+(define rust-web-sys-0.3.104
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "web-sys" "0.3.104"
+ "0c0acbvaqzqf21q5vdff2g74fvb7afi91xjplmclybq4d24k6df4"))
+
+(define rust-webbrowser-1.2.4
+ (crate-source "webbrowser" "1.2.4"
+ "151gb2nnp2hbn7898hh0q1vffly811lw4brnpi6j26l2f3kmphv2"))
+
+(define rust-widestring-1.2.1
+ (crate-source "widestring" "1.2.1"
+ "0wg4qdbs70xqnlbm8wb0bs4idm2mxk3b6kaqwllsncmb2cqrq1kj"))
+
+(define rust-winapi-util-0.1.11
+ (crate-source "winapi-util" "0.1.11"
+ "08hdl7mkll7pz8whg869h58c1r9y7in0w0pk8fm24qc77k0b39y2"))
+
+(define rust-windows-aarch64-gnullvm-0.53.1
+ (crate-source "windows_aarch64_gnullvm" "0.53.1"
+ "0lqvdm510mka9w26vmga7hbkmrw9glzc90l4gya5qbxlm1pl3n59"))
+
+(define rust-windows-aarch64-msvc-0.53.1
+ (crate-source "windows_aarch64_msvc" "0.53.1"
+ "01jh2adlwx043rji888b22whx4bm8alrk3khjpik5xn20kl85mxr"))
+
+(define rust-windows-i686-gnu-0.53.1
+ (crate-source "windows_i686_gnu" "0.53.1"
+ "18wkcm82ldyg4figcsidzwbg1pqd49jpm98crfz0j7nqd6h6s3ln"))
+
+(define rust-windows-i686-gnullvm-0.53.1
+ (crate-source "windows_i686_gnullvm" "0.53.1"
+ "030qaxqc4salz6l4immfb6sykc6gmhyir9wzn2w8mxj8038mjwzs"))
+
+(define rust-windows-i686-msvc-0.53.1
+ (crate-source "windows_i686_msvc" "0.53.1"
+ "1hi6scw3mn2pbdl30ji5i4y8vvspb9b66l98kkz350pig58wfyhy"))
+
+(define rust-windows-link-0.2.1
+ (crate-source "windows-link" "0.2.1"
+ "1rag186yfr3xx7piv5rg8b6im2dwcf8zldiflvb22xbzwli5507h"))
+
+(define rust-windows-sys-0.60.2
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "windows-sys" "0.60.2"
+ "1jrbc615ihqnhjhxplr2kw7rasrskv9wj3lr80hgfd42sbj01xgj"))
+
+(define rust-windows-sys-0.61.2
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "windows-sys" "0.61.2"
+ "1z7k3y9b6b5h52kid57lvmvm05362zv1v8w0gc7xyv5xphlp44xf"))
+
+(define rust-windows-targets-0.53.5
+ (crate-source "windows-targets" "0.53.5"
+ "1wv9j2gv3l6wj3gkw5j1kr6ymb5q6dfc42yvydjhv3mqa7szjia9"))
+
+(define rust-windows-x86-64-gnu-0.53.1
+ (crate-source "windows_x86_64_gnu" "0.53.1"
+ "16d4yiysmfdlsrghndr97y57gh3kljkwhfdbcs05m1jasz6l4f4w"))
+
+(define rust-windows-x86-64-gnullvm-0.53.1
+ (crate-source "windows_x86_64_gnullvm" "0.53.1"
+ "1qbspgv4g3q0vygkg8rnql5c6z3caqv38japiynyivh75ng1gyhg"))
+
+(define rust-windows-x86-64-msvc-0.53.1
+ (crate-source "windows_x86_64_msvc" "0.53.1"
+ "0l6npq76vlq4ksn4bwsncpr8508mk0gmznm6wnhjg95d19gzzfyn"))
+
+(define rust-winnow-1.0.4
+ (crate-source "winnow" "1.0.4"
+ "10fzxipa7lx16172p3aca9j60hzbqgjki2f95kqksd5qywcp7f93"))
+
+(define rust-writeable-0.6.4
+ (crate-source "writeable" "0.6.4"
+ "1p3r4s4wbf3dksfpj3xyrn7id5p0f7r74mj6qx6ngjfd6cm2vn1s"))
+
+(define rust-yansi-1.0.1
+ (crate-source "yansi" "1.0.1"
+ "0jdh55jyv0dpd38ij4qh60zglbw9aa8wafqai6m0wa7xaxk3mrfg"))
+
+(define rust-yoke-0.8.3
+ (crate-source "yoke" "0.8.3"
+ "1xgyj6c2lxj2bp891ynmhws87c6z7yyv2li1v0ss9di40hxf57vh"))
+
+(define rust-yoke-derive-0.8.2
+ (crate-source "yoke-derive" "0.8.2"
+ "13l5y5sz4lqm7rmyakjbh6vwgikxiql51xfff9hq2j485hk4r16y"))
+
+(define rust-zerofrom-0.1.8
+ (crate-source "zerofrom" "0.1.8"
+ "0wjjdj7gdmd0iq91gzkxl7dlv0nhkk80l4bmdpzh3a1yh48mmh0f"))
+
+(define rust-zerofrom-derive-0.1.7
+ (crate-source "zerofrom-derive" "0.1.7"
+ "18c4wsnznhdxx6m80piil1lbyszdiwsshgjrybqcm4b6qic22lqi"))
+
+(define rust-zeroize-1.9.0
+ (crate-source "zeroize" "1.9.0"
+ "0kpnij2v1ig6g2mhc0bnci0lrdfdhiq40afbc0fahajqc9jiag71"))
+
+(define rust-zerotrie-0.2.5
+ (crate-source "zerotrie" "0.2.5"
+ "0gss16krjzk22m57dz5hkdjg99ibj6pa41qr68na7w1jpp1nk8jf"))
+
+(define rust-zerovec-0.11.8
+ (crate-source "zerovec" "0.11.8"
+ "1n3xlvyba8riys9s8awy4xp533phqycr78nbsmvdkh86g3hn815v"))
+
+(define rust-zerovec-derive-0.11.6
+ (crate-source "zerovec-derive" "0.11.6"
+ "1ni5j8v99x3fcf3l8kp64b7aq4vf8y22jshfq74xs9mxkp1nzprl"))
+
+(define rust-zmij-1.0.23
+ (crate-source "zmij" "1.0.23"
+ "06zwri21nnrl34rwinmvbciap8yk1mrl8qfg9pff7lgspc56sri9"))
+
+(define-cargo-inputs lookup-cargo-inputs
+ (my-tree-sitter-cli =>
+ (list rust-addr2line-0.26.1
+ rust-aho-corasick-1.1.5
+ rust-allocator-api2-0.2.21
+ rust-ansi-colours-1.2.3
+ rust-anstream-1.0.0
+ rust-anstyle-1.0.14
+ rust-anstyle-parse-1.0.0
+ rust-anstyle-query-1.1.5
+ rust-anstyle-wincon-3.0.11
+ rust-anyhow-1.0.104
+ rust-arbitrary-1.4.2
+ rust-ascii-1.1.0
+ rust-async-trait-0.1.92
+ rust-bindgen-0.72.1
+ rust-bitflags-2.13.1
+ rust-block-buffer-0.10.4
+ rust-block2-0.6.2
+ rust-bstr-1.13.1
+ rust-bumpalo-3.20.3
+ rust-bytemuck-1.25.2
+ rust-bytes-1.12.1
+ rust-cc-1.4.4
+ rust-cexpr-0.6.0
+ rust-cfg-if-1.0.4
+ rust-cfg-aliases-0.2.2
+ rust-chacha20-0.10.2
+ rust-chunked-transfer-1.5.0
+ rust-clang-sys-1.9.1
+ rust-clap-4.6.6
+ rust-clap-builder-4.6.6
+ rust-clap-complete-4.6.9
+ rust-clap-complete-nushell-4.6.2
+ rust-clap-derive-4.6.4
+ rust-clap-lex-1.1.0
+ rust-cobs-0.3.0
+ rust-colorchoice-1.0.5
+ rust-combine-4.6.8
+ rust-console-0.16.4
+ rust-convert-case-0.11.0
+ rust-cpp-demangle-0.5.1
+ rust-cpufeatures-0.2.17
+ rust-cpufeatures-0.3.1
+ rust-cranelift-assembler-x64-0.135.1
+ rust-cranelift-assembler-x64-meta-0.135.1
+ rust-cranelift-bforest-0.135.1
+ rust-cranelift-bitset-0.135.1
+ rust-cranelift-codegen-0.135.1
+ rust-cranelift-codegen-meta-0.135.1
+ rust-cranelift-codegen-shared-0.135.1
+ rust-cranelift-control-0.135.1
+ rust-cranelift-entity-0.135.1
+ rust-cranelift-frontend-0.135.1
+ rust-cranelift-isle-0.135.1
+ rust-cranelift-native-0.135.1
+ rust-cranelift-srcgen-0.135.1
+ rust-crc32fast-1.5.1
+ rust-crypto-common-0.1.7
+ rust-ctor-0.6.3
+ rust-ctor-proc-macro-0.0.7
+ rust-ctrlc-3.5.2
+ rust-dialoguer-0.12.0
+ rust-diff-0.1.13
+ rust-digest-0.10.7
+ rust-dispatch2-0.3.1
+ rust-displaydoc-0.2.7
+ rust-dtor-0.1.1
+ rust-dtor-proc-macro-0.0.6
+ rust-dunce-1.0.5
+ rust-dyn-clone-1.0.20
+ rust-either-1.18.0
+ rust-embedded-io-0.4.0
+ rust-embedded-io-0.6.1
+ rust-encode-unicode-1.0.0
+ rust-encoding-rs-0.8.35
+ rust-equivalent-1.0.2
+ rust-errno-0.3.14
+ rust-etcetera-0.11.0
+ rust-fastrand-2.5.0
+ rust-file-id-0.2.3
+ rust-find-msvc-tools-0.1.11
+ rust-fnv-1.0.7
+ rust-foldhash-0.1.5
+ rust-foldhash-0.2.0
+ rust-form-urlencoded-1.2.2
+ rust-fsevent-sys-4.1.0
+ rust-futures-0.3.34
+ rust-futures-channel-0.3.34
+ rust-futures-core-0.3.34
+ rust-futures-io-0.3.34
+ rust-futures-sink-0.3.34
+ rust-futures-task-0.3.34
+ rust-futures-util-0.3.34
+ rust-fuzzy-matcher-0.3.7
+ rust-generic-array-0.14.7
+ rust-getrandom-0.4.3
+ rust-gimli-0.33.0
+ rust-glob-0.3.4
+ rust-hashbrown-0.15.5
+ rust-hashbrown-0.16.1
+ rust-hashbrown-0.17.1
+ rust-heck-0.5.0
+ rust-html-escape-0.2.15
+ rust-httpdate-1.0.3
+ rust-icu-collections-2.3.0
+ rust-icu-locale-core-2.3.0
+ rust-icu-normalizer-2.3.0
+ rust-icu-normalizer-data-2.3.0
+ rust-icu-properties-2.3.0
+ rust-icu-properties-data-2.3.0
+ rust-icu-provider-2.3.1
+ rust-ident-case-1.0.1
+ rust-idna-1.1.0
+ rust-idna-adapter-1.2.2
+ rust-indexmap-2.14.1
+ rust-indoc-2.0.7
+ rust-inotify-0.11.5
+ rust-inotify-sys-0.1.8
+ rust-is-terminal-polyfill-1.70.2
+ rust-itertools-0.13.0
+ rust-itertools-0.14.0
+ rust-itoa-1.0.18
+ rust-jni-0.22.4
+ rust-jni-macros-0.22.4
+ rust-jni-sys-0.4.1
+ rust-jni-sys-macros-0.4.1
+ rust-js-sys-0.3.104
+ rust-kqueue-1.2.1
+ rust-kqueue-sys-1.1.2
+ rust-leb128fmt-0.1.0
+ rust-libc-0.2.189
+ rust-libloading-0.8.9
+ rust-libloading-0.9.0
+ rust-libm-0.2.16
+ rust-linux-raw-sys-0.12.1
+ rust-litemap-0.8.3
+ rust-log-0.4.34
+ rust-mach2-0.6.0
+ rust-memchr-2.8.3
+ rust-memfd-0.6.5
+ rust-minimal-lexical-0.2.1
+ rust-mio-1.2.2
+ rust-ndk-context-0.1.1
+ rust-nix-0.31.3
+ rust-nom-7.1.3
+ rust-notify-8.2.0
+ rust-notify-debouncer-full-0.7.0
+ rust-notify-types-2.1.0
+ rust-objc2-0.6.4
+ rust-objc2-app-kit-0.3.2
+ rust-objc2-core-foundation-0.3.2
+ rust-objc2-encode-4.1.0
+ rust-objc2-foundation-0.3.2
+ rust-object-0.39.1
+ rust-once-cell-1.21.4
+ rust-once-cell-polyfill-1.70.2
+ rust-pathdiff-0.2.3
+ rust-percent-encoding-2.3.2
+ rust-phf-0.14.0
+ rust-phf-generator-0.14.0
+ rust-phf-shared-0.14.0
+ rust-pin-project-lite-0.2.17
+ rust-postcard-1.1.3
+ rust-potential-utf-0.1.6
+ rust-pretty-assertions-1.4.1
+ rust-prettyplease-0.2.37
+ rust-proc-macro-crate-3.5.0
+ rust-proc-macro2-1.0.107
+ rust-pulley-interpreter-48.0.1
+ rust-pulley-macros-48.0.1
+ rust-quote-1.0.47
+ rust-r-efi-6.0.0
+ rust-rand-0.10.2
+ rust-rand-core-0.10.1
+ rust-ref-cast-1.0.27
+ rust-ref-cast-impl-1.0.27
+ rust-regalloc2-0.15.2
+ rust-regex-1.13.1
+ rust-regex-automata-0.4.18
+ rust-regex-syntax-0.8.11
+ rust-relative-path-2.0.1
+ rust-rgb-0.8.53
+ rust-rquickjs-0.12.2
+ rust-rquickjs-core-0.12.2
+ rust-rquickjs-macro-0.12.2
+ rust-rquickjs-sys-0.12.2
+ rust-rustc-demangle-0.1.28
+ rust-rustc-hash-2.1.3
+ rust-rustc-version-0.4.1
+ rust-rustix-1.1.4
+ rust-rustversion-1.0.23
+ rust-same-file-1.0.6
+ rust-schemars-1.2.2
+ rust-schemars-derive-1.2.2
+ rust-semver-1.0.28
+ rust-serde-1.0.229
+ rust-serde-core-1.0.229
+ rust-serde-derive-1.0.229
+ rust-serde-derive-internals-0.30.0
+ rust-serde-json-1.0.151
+ rust-sha2-0.10.9
+ rust-shell-words-1.1.1
+ rust-shlex-1.3.0
+ rust-shlex-2.0.1
+ rust-simd-cesu8-1.2.0
+ rust-simdutf8-0.1.5
+ rust-similar-2.7.0
+ rust-siphasher-1.0.3
+ rust-slab-0.4.12
+ rust-smallvec-1.15.2
+ rust-stable-deref-trait-1.2.1
+ rust-streaming-iterator-0.1.9
+ rust-strsim-0.11.1
+ rust-syn-2.0.119
+ rust-syn-3.0.4
+ rust-synstructure-0.13.2
+ rust-target-lexicon-0.13.5
+ rust-tempfile-3.27.0
+ rust-termcolor-1.4.1
+ rust-thiserror-2.0.20
+ rust-thiserror-impl-2.0.20
+ rust-thread-local-1.1.10
+ rust-tiny-http-0.12.0
+ rust-tinystr-0.8.4
+ rust-toml-datetime-1.1.1+spec-1.1.0
+ rust-toml-edit-0.25.13+spec-1.1.0
+ rust-toml-parser-1.1.3+spec-1.1.0
+ rust-topological-sort-0.2.2
+ rust-tracing-0.1.44
+ rust-tracing-core-0.1.36
+ rust-typenum-1.20.1
+ rust-unicode-ident-1.0.24
+ rust-unicode-segmentation-1.13.3
+ rust-unicode-width-0.2.2
+ rust-unindent-0.2.4
+ rust-url-2.5.8
+ rust-utf8-iter-1.0.4
+ rust-utf8parse-0.2.2
+ rust-version-check-0.9.5
+ rust-walkdir-2.5.0
+ rust-wasi-0.11.1+wasi-snapshot-preview1
+ rust-wasm-bindgen-0.2.127
+ rust-wasm-bindgen-macro-0.2.127
+ rust-wasm-bindgen-macro-support-0.2.127
+ rust-wasm-bindgen-shared-0.2.127
+ rust-wasm-encoder-0.254.0
+ rust-wasmparser-0.244.0
+ rust-wasmparser-0.254.0
+ rust-wasmprinter-0.254.0
+ rust-wasmtime-48.0.1
+ rust-wasmtime-c-api-impl-48.0.1
+ rust-wasmtime-environ-48.0.1
+ rust-wasmtime-internal-c-api-macros-48.0.1
+ rust-wasmtime-internal-component-util-48.0.1
+ rust-wasmtime-internal-core-48.0.1
+ rust-wasmtime-internal-cranelift-48.0.1
+ rust-wasmtime-internal-fiber-48.0.1
+ rust-wasmtime-internal-jit-debug-48.0.1
+ rust-wasmtime-internal-jit-icache-coherence-48.0.1
+ rust-wasmtime-internal-unwinder-48.0.1
+ rust-wasmtime-internal-versioned-export-macros-48.0.1
+ rust-web-sys-0.3.104
+ rust-webbrowser-1.2.4
+ rust-widestring-1.2.1
+ rust-winapi-util-0.1.11
+ rust-windows-link-0.2.1
+ rust-windows-sys-0.60.2
+ rust-windows-sys-0.61.2
+ rust-windows-targets-0.53.5
+ rust-windows-aarch64-gnullvm-0.53.1
+ rust-windows-aarch64-msvc-0.53.1
+ rust-windows-i686-gnu-0.53.1
+ rust-windows-i686-gnullvm-0.53.1
+ rust-windows-i686-msvc-0.53.1
+ rust-windows-x86-64-gnu-0.53.1
+ rust-windows-x86-64-gnullvm-0.53.1
+ rust-windows-x86-64-msvc-0.53.1
+ rust-winnow-1.0.4
+ rust-writeable-0.6.4
+ rust-yansi-1.0.1
+ rust-yoke-0.8.3
+ rust-yoke-derive-0.8.2
+ rust-zerofrom-0.1.8
+ rust-zerofrom-derive-0.1.7
+ rust-zeroize-1.9.0
+ rust-zerotrie-0.2.5
+ rust-zerovec-0.11.8
+ rust-zerovec-derive-0.11.6
+ rust-zmij-1.0.23)))
+
+(define-public tree-sitter
+ (package
+ (name "tree-sitter")
+ (version "0.27.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tree-sitter/tree-sitter")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "14fyd1kvr15b59v0adpx452yrg6405aagj8fxxiirvih6z9xv4az"))
+ (modules '((guix build utils)))
+ (snippet #~(begin
+ ;; Remove bundled ICU parts
+ (delete-file-recursively "lib/src/unicode")))))
+ (build-system gnu-build-system)
+ (inputs (list icu4c))
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ ;; The library uses -fvisibility=hidden to compile, but this
+ ;; symbol is needed by the Rust bindings.
+ (add-after 'unpack 'patch-_ts_dup-visibility
+ (lambda _
+ (substitute* "lib/src/tree.c"
+ (("int _ts_dup")
+ (string-append
+ "int __attribute__ ((visibility (\"default\"))) "
+ "_ts_dup"))))))
+ #:tests? #f ; there are no tests for the runtime library
+ #:make-flags
+ #~(list (string-append "PREFIX=" #$output)
+ (string-append "CC=" #$(cc-for-target)))))
+ (home-page "https://tree-sitter.github.io/tree-sitter/")
+ (synopsis "Incremental parsing system for programming tools")
+ (description
+ "Tree-sitter is a parser generator tool and an incremental parsing
+library. It can build a concrete syntax tree for a source file and
+efficiently update the syntax tree as the source file is edited.
+
+Tree-sitter aims to be:
+
+@itemize
+@item General enough to parse any programming language
+@item Fast enough to parse on every keystroke in a text editor
+@item Robust enough to provide useful results even in the presence of syntax errors
+@item Dependency-free so that the runtime library (which is written in pure C)
+can be embedded in any application
+@end itemize
+
+This package includes the @code{libtree-sitter} runtime library.")
+ (license license:expat)))
+
+(define-public tree-sitter-cli
+ (package
+ (inherit tree-sitter)
+ (name "tree-sitter-cli")
+ (source
+ (origin
+ (inherit (package-source tree-sitter))
+ (snippet
+ #~(begin
+ ;; Remove the runtime library code and dynamically link to it
+ ;; instead.
+ (for-each delete-file-recursively
+ (find-files
+ "lib/src"
+ (lambda (file stat)
+ ;; These files are required for building the binding.
+ (not
+ (or (string-contains file "parser.h")
+ (string-contains file "imports.txt"))))))
+ (delete-file "lib/binding_rust/build.rs")
+ (with-output-to-file "lib/binding_rust/build.rs"
+ (lambda _
+ (format #t "~
+use std::{env, fs, path::{Path, PathBuf}};
+fn main() {
+ let out_dir = PathBuf::from(env::var(\"OUT_DIR\").unwrap());
+ fs::copy(\"src/wasm-stdlib/imports.txt\",
+ out_dir.join(\"stdlib-symbols.txt\")).unwrap();
+ println!(\"cargo:rustc-link-lib=tree-sitter\");
+}~%")))))))
+ (build-system cargo-build-system)
+ (inputs
+ (cons* tree-sitter graphviz node-lts (lookup-cargo-inputs 'my-tree-sitter-cli)))
+ (arguments
+ (list
+ #:cargo-test-flags
+ ''("--"
+ ;; Skip tests which rely on downloading grammar fixtures. It is
+ ;; difficult to support such tests given upstream does not encode
+ ;; which version of the grammars are expected.
+ ;; Instead, we do run some tests for each grammar in the tree-sitter
+ ;; build-system, by running `tree-sitter test'. This isn't as
+ ;; complete as running all tests from tree-sitter-cli, but it's a
+ ;; good compromise compared to maintaining two different sets of
+ ;; grammars (Guix packages vs test fixtures).
+ "--skip=tests::corpus_test"
+ "--skip=tests::highlight_test"
+ "--skip=tests::node_test"
+ "--skip=tests::parser_test"
+ "--skip=tests::pathological_test"
+ "--skip=tests::query_test"
+ "--skip=tests::tags_test"
+ "--skip=tests::test_highlight_test"
+ "--skip=tests::test_tags_test"
+ "--skip=tests::tree_test"
+ "--skip=tests::async_context_test"
+ "--skip=tests::text_provider_test"
+ "--skip=tests::detect_language"
+ "--skip=tests::language_test"
+ "--skip=tests::parser_hang_test"
+ ; I need to check if it's actually necessary to skip these new tests
+ "--skip=tests::async_boundary_test"
+ "--skip=tests::run_tests_single_passing"
+ "--skip=tests::run_tests_fail_fast")
+ ;; We're only packaging the CLI program so we do not need to install
+ ;; sources.
+ #:install-source? #f
+ #:cargo-install-paths ''("crates/cli")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-references
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "crates/generate/src/generate.rs"
+ (("(js_runtime\\.unwrap_or\\(\")node(\"\\))" _ prefix suffix)
+ (string-append
+ prefix
+ (search-input-file inputs "bin/node")
+ suffix)))
+ (substitute* "crates/cli/src/util.rs"
+ (("Command::new\\(\"dot\"\\)")
+ (string-append
+ "Command::new(\""
+ (search-input-file inputs "bin/dot")
+ "\")"))))))))
+ (description "Tree-sitter is a parser generator tool and an incremental
+parsing library. It can build a concrete syntax tree for a source file and
+efficiently update the syntax tree as the source file is edited.
+
+Tree-sitter aims to be:
+
+@enumerate
+@item General enough to parse any programming language.
+@item Fast enough to parse on every keystroke in a text editor.
+@item Robust enough to provide useful results even in the presence of syntax
+errors.
+@item Dependency-free so that the runtime library (which is written in pure C)
+can be embedded in any application.
+@end enumerate
+
+This package includes the @command{tree-sitter} command-line tool.")
+ (license license:expat)))
+
+(define (tree-sitter-delete-generated-files grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (define (delete-file-if-exists file)
+ ;; Not every package has all files that we want to delete.
+ (catch 'system-error
+ (lambda () (delete-file-recursively file))
+ (lambda args
+ (unless (= ENOENT (system-error-errno args))
+ (apply throw args)))))
+ (delete-file-if-exists "binding.gyp")
+ (delete-file-if-exists "bindings")
+ (for-each
+ (lambda (lang)
+ (with-directory-excursion lang
+ (delete-file-if-exists "src/grammar.json")
+ (delete-file-if-exists "src/node-types.json")
+ (delete-file-if-exists "src/parser.c")
+ (delete-file-if-exists "src/tree_sitter")))
+ '#$grammar-directories)))
+
+(define* (tree-sitter-grammar
+ name text hash version
+ #:key
+ (commit (string-append "v" version))
+ (repository-url
+ (format #f "https://github.com/tree-sitter/tree-sitter-~a" name))
+ (grammar-directories '("."))
+ (article "a")
+ (inputs '())
+ (get-cleanup-snippet tree-sitter-delete-generated-files)
+ (license license:expat))
+ "Returns a package for Tree-sitter grammar. NAME will be used with
+tree-sitter- prefix to generate package name and also for generating
+REPOSITORY-URL value if it's not specified explicitly, TEXT is a string which
+will be used in description and synopsis. GET-CLEANUP-SNIPPET is a function,
+it receives GRAMMAR-DIRECTORIES as an argument and should return a G-exp,
+which will be used as a snippet in origin."
+ (let* ((multiple? (> (length grammar-directories) 1))
+ (grammar-names (string-append text " grammar" (if multiple? "s" "")))
+ (synopsis (string-append "Tree-sitter " grammar-names))
+ (description
+ (string-append "This package provides "
+ (if multiple? "" article) (if multiple? "" " ")
+ grammar-names " for the Tree-sitter library."))
+ (name (string-append "tree-sitter-" name)))
+ (package
+ (name name)
+ (version version)
+ (home-page repository-url)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url repository-url)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256 (base32 hash))
+ (snippet
+ (get-cleanup-snippet grammar-directories))))
+ (build-system tree-sitter-build-system)
+ (arguments (list #:grammar-directories grammar-directories))
+ (inputs (if (promise? inputs)
+ (force inputs)
+ inputs))
+ (synopsis synopsis)
+ (description description)
+ (license license))))
+
+;;; Language grammars (sort alphabetically)
+
+(define-public tree-sitter-actionscript
+ (let ((commit "24919034fc78fdf9bedaac6616b6a60af20ab9b5")
+ (revision "0"))
+ (tree-sitter-grammar
+ "actionscript" "ActionScript"
+ "0gdkb7hi6nc6d3rza247c66nzi04m471b6fv32adxqjw76w5bg1d"
+ (git-version "0.1.0" revision commit)
+ #:repository-url "https://github.com/Rileran/tree-sitter-actionscript"
+ #:commit commit
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (substitute* "grammar.js"
+ (("u\\{\\[0-9a-fA-F\\]\\+\\}")
+ "u\\{[0-9a-fA-F]+\\}"))
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-ada
+ (let ((version "0.1.0") ; In package.json, but untagged.
+ (commit "b23672d313b4c994ab96fd54f1b7ff15eac68a55")
+ (revision "0"))
+ (tree-sitter-grammar
+ "ada" "Ada"
+ "0ly6zd2hbng5gbs14yq6riqw2mbzvh0shc7lp2smzbv9ran6chjy"
+ (git-version version revision commit)
+ #:repository-url "https://github.com/briot/tree-sitter-ada"
+ #:commit commit)))
+
+(define-public tree-sitter-agda
+ ;; Use a later commit because some tests fail with the v1.3.1 tag.
+ (let ((commit "e8d47a6987effe34d5595baf321d82d3519a8527")
+ (revision "0"))
+ (tree-sitter-grammar
+ "agda" "Agda"
+ "1x06a1c7k5lyw4803h514yibmzizszg8dc6r4wj9gjnr1vw7l7p6"
+ (git-version "1.3.1" revision commit)
+ #:commit commit)))
+
+(define-public tree-sitter-arduino
+ (tree-sitter-grammar
+ "arduino" "Arduino"
+ "1h0h61xhs511l6ahv0isj9v59ndz8q3948dw9mi9lc7cp24jshdp"
+ "0.24.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-arduino"
+ #:inputs (delay (list tree-sitter-c tree-sitter-cpp))
+ #:article "an"))
+
+(define-public tree-sitter-asm
+ (tree-sitter-grammar
+ "asm" "ASM"
+ "0i5wxrwavhxqj04g6ix76q8vsggl9sq8jazasl9k53mag3rnchi5"
+ "0.24.0"
+ #:repository-url "https://github.com/RubixDev/tree-sitter-asm"))
+
+(define-public tree-sitter-astro
+ (let ((commit "213f6e6973d9b456c6e50e86f19f66877e7ef0ee")
+ (revision "0"))
+ (tree-sitter-grammar
+ "astro" "Astro"
+ "18asz2dsgkq4zj5frxigpzac00pgs4kvbp8l3x27z7yq6vgfr5af"
+ (git-version "0.0.1" revision commit)
+ #:repository-url "https://github.com/virchau13/tree-sitter-astro"
+ #:commit commit
+ #:inputs (delay (list tree-sitter-html))
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (mkdir-p "test/corpus")
+ (copy-recursively "corpus" "test/corpus")
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-awk
+ (tree-sitter-grammar
+ "awk" "AWK"
+ "1bglimp46cggq9kx92h943wnq2r6ymp7anwynjnl42wrdssc0drh"
+ "0.7.2"
+ #:repository-url "https://github.com/Beaglefoot/tree-sitter-awk"))
+
+(define-public tree-sitter-bash
+ (tree-sitter-grammar
+ "bash" "Bash"
+ "1smlcfkxxknhya1b1h72zj3ccg35szbg9mii2xwh7iq9acnlzpgc"
+ "0.23.3"))
+
+(define-public tree-sitter-beancount
+ (tree-sitter-grammar
+ "beancount" "Beancount"
+ "0r2ql0n4wkwbcdjpklxhsk91xm8q8dl9n9rdlqk585xagmxf1w4b"
+ "2.4.1"
+ #:repository-url "https://github.com/polarmutex/tree-sitter-beancount"))
+
+(define-public tree-sitter-bibtex
+ (let ((commit "ccfd77db0ed799b6c22c214fe9d2937f47bc8b34")
+ (revision "0"))
+ (tree-sitter-grammar
+ "bibtex" "Bibtex"
+ "0m7f3dkqbmy8x1bhl11m8f4p6n76wfvh99rp46zrqv39355nw1y2"
+ (git-version "0.1.0" revision commit)
+ #:repository-url "https://github.com/latex-lsp/tree-sitter-bibtex"
+ #:commit commit
+ #:license license:expat)))
+
+(define-public tree-sitter-bicep
+ (tree-sitter-grammar
+ "bicep" "Bicep"
+ "0ydz1vf6n8ky0vcgcmihr6ddfdlswnz8xa59zjiwdcra0qkf3azs"
+ "1.1.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-bicep"))
+
+(define-public tree-sitter-bitbake
+ (tree-sitter-grammar
+ "bitbake" "BitBake"
+ "1pfma482nyc88x56v6l6rmhdy44qbwibrqri38wkkh66a1fka8ix"
+ "1.1.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-bitbake"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Invalid node type INHERIT.
+ (substitute* "queries/highlights.scm"
+ (("^.*\"INHERIT\".*") ""))
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-blueprint
+ (let ((commit "329699d55f3e3955091e13756563c3f320a561fc")
+ (revision "0"))
+ (tree-sitter-grammar
+ "blueprint" "Blueprint"
+ "0pdjka1sdw9dwilw3vjl3k3cn7pcyv7m57cmxqibashg316dygxm"
+ (git-version "0.0.0" revision commit) ; Upstream has not tagged any releases
+ #:repository-url "https://github.com/huanie/tree-sitter-blueprint"
+ #:commit commit
+ #:license license:expat)))
+
+(define-public tree-sitter-c
+ (tree-sitter-grammar
+ "c" "C"
+ "19yc4g5fdibfqbn49ggywk9k2by78s8lrsjp1cx2lagb1dvxnv42"
+ "0.24.1"))
+
+(define-public tree-sitter-cairo
+ (tree-sitter-grammar
+ "cairo" "Cairo"
+ "08ig80mqs0p00p09rfygrdfarqnn29xsgnlbqvnfdll4jlj5ilid"
+ "1.0.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-cairo"))
+
+(define-public tree-sitter-capnp
+ (let ((commit "7b0883c03e5edd34ef7bcf703194204299d7099f")
+ (revision "0"))
+ (tree-sitter-grammar
+ "capnp" "Cap'n Proto"
+ "0ww98b15n9hr6afbnl0ckxs4q8y0c31cnga2pnjx369iwfwdkajq"
+ (git-version "1.5.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-capnp")))
+
+(define-public tree-sitter-chatito
+ (tree-sitter-grammar
+ "chatito" "Chatito"
+ "16pfm7s9zxdskmn1vg5ba6ni91zm5xncbri9pm0cd8pmld5w37wz"
+ "0.5.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-chatito"))
+
+(define-public tree-sitter-clarity
+ (tree-sitter-grammar
+ "clarity" "Clarity"
+ "14qprf98199rnlr6hrjmzvn6d3ch9z8yxgjxva6m6gk9hcyyfy84"
+ "0.0.5"
+ #:repository-url
+ "https://github.com/xlittlerag/tree-sitter-clarity"))
+
+(define-public tree-sitter-clisp
+ (tree-sitter-grammar
+ "clisp" "Common Lisp"
+ "0xg3ay8l62h7s35abkxi4gjfvndzdvvrpgh1z980q1ib5935sxf0"
+ "0.4.1"
+ #:inputs (delay (list tree-sitter-clojure))
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-commonlisp"))
+
+(define-public tree-sitter-clojure
+ (tree-sitter-grammar
+ "clojure" "Clojure"
+ "1j41ba48sid6blnfzn6s9vsl829qxd86lr6yyrnl95m42x8q5cx4"
+ "0.0.13"
+ #:repository-url "https://github.com/sogaiu/tree-sitter-clojure"))
+
+(define-public tree-sitter-cmake
+ (tree-sitter-grammar
+ "cmake" "CMake"
+ "0b30ci696iabk3hm03rm4c3qi72d7xsbipc6g0ixxxj2qihdl2fy"
+ "0.7.0"
+ #:repository-url "https://github.com/uyha/tree-sitter-cmake"))
+
+(define-public tree-sitter-comment
+ (tree-sitter-grammar
+ "comment" "comment tags (like TODO, FIXME)"
+ "1x0l8phr4x07n739z0ax8faxq0l6irmpkdprrv1z088zqdr43l1v"
+ "0.3.0"
+ #:repository-url "https://github.com/stsewd/tree-sitter-comment"))
+
+(define-public tree-sitter-cpon
+ (let ((commit "594289eadfec719198e560f9d7fd243c4db678d5")
+ (revision "0"))
+ (tree-sitter-grammar
+ "cpon" "ChainPack Object Notation (CPON)"
+ "0kzs3i62vrckwadp2z2gdfzj3mjparh1di0zcawy94635brvvgrn"
+ (git-version "1.0.0" revision commit)
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-cpon"
+ #:commit commit
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Language not found.
+ (delete-file-recursively "test/highlight")
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-cpp
+ (tree-sitter-grammar
+ "cpp" "C++"
+ "0sbvvfa718qrjmfr53p8x3q2c19i4vhw0n20106c8mrvpsxm7zml"
+ "0.23.4"
+ #:inputs (list tree-sitter-c)))
+
+(define-public tree-sitter-c-sharp
+ (tree-sitter-grammar
+ "c-sharp" "C#"
+ "0w6xdb8m38brhin0bmqsdqggdl95xqs3lbwq7azm5gg94agz9qf1"
+ "0.23.1"))
+
+(define-public tree-sitter-css
+ (tree-sitter-grammar
+ "css" "CSS"
+ "0c5j9zyjcykmraix1agbc0gdk85zs2v379q0aykr10fi9w2r9z9c"
+ "0.23.2"))
+
+(define-public tree-sitter-csv
+ (tree-sitter-grammar
+ "csv" "CSV"
+ "0a1giyifli78chnshzzw4q6y7gqlfkg6mlmvb7kzbw9ss9hlx2rb"
+ "1.2.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-csv"
+ #:grammar-directories '("csv" "psv" "tsv")))
+
+(define-public tree-sitter-cuda
+ (tree-sitter-grammar
+ "cuda" "Cuda"
+ "116fa26bjh6a88kdshqq5hp6fq4ik95dpaiidw8rn90xxwwl0zxi"
+ "0.21.1"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-cuda"
+ #:inputs (list tree-sitter-c
+ tree-sitter-cpp)))
+
+(define-public tree-sitter-cypher
+ (let ((commit "7553c0d18cd41237a64653bb91a09d70988f7300")
+ (revision "0"))
+ (tree-sitter-grammar
+ "cypher" "Cypher"
+ "14acb8rn9s1ps7gnw0vsacy6dn0qq1qvpblakcdgf598w316p4xa"
+ "M23"
+ #:repository-url "https://github.com/taekwombo/tree-sitter-cypher"
+ #:commit commit)))
+
+(define-public tree-sitter-d
+ (let ((commit "45e5f1e9d6de2c68591bc8e5ec662cf18e950b4a")
+ (revision "0"))
+ (tree-sitter-grammar
+ "d" "D"
+ "1y0kczf4yvk5qbvl5dcc8vf5xjjf2md44v0h3iv8lcmbjn093pmb"
+ (git-version "0.8.2" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/gdamore/tree-sitter-d"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Language not found.
+ (delete-file-recursively "test/highlight")
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-dart
+ (let ((version "1.0.0")
+ (commit "d4d8f3e337d8be23be27ffc35a0aef972343cd54")
+ (revision "0"))
+ (tree-sitter-grammar
+ "dart" "Dart"
+ "09k4nclfvclwcz6lza4p2rkm25dpdasj800dn47hvm1b5al5iyym"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/UserNobody14/tree-sitter-dart")))
+
+(define-public tree-sitter-devicetree
+ (tree-sitter-grammar
+ "devicetree" "Devicetree"
+ "13rm15p9mrdklys0d720xy386pnvirxxjswg0wi1m87hs8i49qns"
+ "0.11.1"
+ #:repository-url "https://github.com/joelspadin/tree-sitter-devicetree"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (for-each delete-file '("parser.exp" "parser.lib"))
+ #$(tree-sitter-delete-generated-files grammar-directories)))
+ #:license license:expat))
+
+(define-public tree-sitter-dockerfile
+ (tree-sitter-grammar
+ "dockerfile" "Dockerfile"
+ "09iw9mqlpgsi6ak4mxrv16anvmbyap6vf61r2pi2lqdp9h1mp7g0"
+ "0.2.0"
+ #:repository-url "https://github.com/camdencheek/tree-sitter-dockerfile"))
+
+(define-public tree-sitter-dot
+ ;; 0.1.6 is taken from Cargo.toml. The package.json has 0.1.5.
+ (let ((version "0.1.6")
+ (commit "9ab85550c896d8b294d9b9ca1e30698736f08cea")
+ (revision "0"))
+ (tree-sitter-grammar
+ "dot" "Dot"
+ "013brrljrhgpnks1r0cdvj93l303kb68prm18gpl96pvhjfci063"
+ (git-version version revision commit)
+ #:repository-url "https://github.com/rydesun/tree-sitter-dot"
+ #:commit commit)))
+
+(define-public tree-sitter-doxygen
+ (let ((version "1.1.0")
+ (commit "1e28054cb5be80d5febac082706225e42eff14e6")
+ (revision "0"))
+ (tree-sitter-grammar
+ "doxygen" "Doxygen"
+ "11xflk40xp7x7f4h9knhy997k79psrw3ik9m0xkc2vzqi57l9by2"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-doxygen")))
+
+(define-public tree-sitter-elisp
+ (tree-sitter-grammar
+ "elisp" "Emacs Lisp"
+ "0xymhprxa7kamc9cvlprg8s2rm61qcvbfazggny9kw45yj8rqvak"
+ "1.5.0"
+ #:commit "1.5.0"
+ #:repository-url "https://github.com/Wilfred/tree-sitter-elisp"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Language not found.
+ (delete-file-recursively "test/highlight")
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-elixir
+ (tree-sitter-grammar
+ "elixir" "Elixir"
+ "12i0z8afdzcznn5dzrssr7b7jx4h7wss4xvbh3nz12j6makc7kzl"
+ "0.3.4"
+ #:article "an"
+ #:repository-url "https://github.com/elixir-lang/tree-sitter-elixir"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ ;; FIXME: Failure - row: 18, column: 4, expected highlight
+ ;; 'comment.doc', actual highlights: none.
+ (delete-file "test/highlight/module.ex")
+ #$(tree-sitter-delete-generated-files grammar-directories)))
+ #:license (list license:asl2.0 license:expat)))
+
+(define-public tree-sitter-elm
+ (let ((commit "3b373a3ccb48f31aa4b7ddc9092e2f5e24ab7aed")
+ (revision "0"))
+ (tree-sitter-grammar
+ "elm" "Elm"
+ "1cfkqi1vgxg7bkdda1vy9wqz6ap61fwjcdv9qzkcfzxaqr5z8dbw"
+ (git-version "5.7.0" revision commit)
+ #:article "an"
+ #:repository-url "https://github.com/elm-tooling/tree-sitter-elm"
+ #:commit commit
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (for-each
+ delete-file
+ '("docs/js/tree-sitter-elm.wasm" "docs/js/tree-sitter.wasm"))
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-embedded-template
+ (tree-sitter-grammar
+ "embedded-template" "embedded template (like ERB and EJS)"
+ "1vq9dywd9vcy59f6i5mk5n7vwk67g8j5x77czg7avpznskgfhqhb"
+ "0.23.2"
+ #:article "an"))
+
+(define-public tree-sitter-erlang
+ (let ((commit "364e323b32d098ad0e7b29e7adb4005c2bb5cf34")
+ (revision "0"))
+ (tree-sitter-grammar
+ "erlang" "Erlang"
+ "17dkvygqrx4v3y568jg72q6rdli5bp55l3zfqxvq6b5ibw48kilq"
+ (git-version "0.14.0" revision commit)
+ #:repository-url "https://github.com/WhatsApp/tree-sitter-erlang"
+ #:commit commit
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Language not found.
+ (delete-file-recursively "test/highlight")
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-firrtl
+ (let ((version "0.8.0")
+ (commit "8503d3a0fe0f9e427863cb0055699ff2d29ae5f5")
+ (revision "0"))
+ (tree-sitter-grammar
+ "firrtl" "FIRRTL"
+ "0mmnsks3b21b1dixi85jds31ykgrmzl3hkkc1r7c8k4vdrr0qq93"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-firrtl"
+ #:license license:asl2.0)))
+
+(define-public tree-sitter-fish
+ (tree-sitter-grammar
+ "fish" "Fish"
+ "1l8qmmligfcpf4amqghdv9c4nvs5wbhiifhl7016l7793rfzl235"
+ "3.6.0"
+ #:commit "3.6.0"
+ #:repository-url
+ "https://github.com/ram02z/tree-sitter-fish"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Language not found.
+ (delete-file-recursively "test/highlight")
+ #$(tree-sitter-delete-generated-files grammar-directories)))
+ #:license license:unlicense))
+
+(define-public tree-sitter-fortran
+ (let ((version "0.5.1")
+ ;; Can't use the tag above directly; the build at that tag is
+ ;; non‑deterministic, so pin to a later commit.
+ (commit "8334abca785db3a041292e3b3b818a82a55b238f")
+ (revision "0"))
+ (tree-sitter-grammar
+ "fortran" "Fortran"
+ "0iwjz7ks0barg6na966jbkvzi8whgys8qh6arxlaygr9b6mhq39i"
+ (git-version version revision commit)
+ #:repository-url
+ "https://github.com/stadelmanma/tree-sitter-fortran"
+ #:commit commit)))
+
+(define-public tree-sitter-f-sharp
+ (let ((commit "5141851c278a99958469eb1736c7afc4ec738e47")
+ (revision "0"))
+ (tree-sitter-grammar
+ "f-sharp" "F#"
+ "1mk3adn7q6zwrdxpzkvzmvpsqg5a6ijb50qhw5pd46p3scxmp6kh"
+ (git-version "0.1.0" revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/ionide/tree-sitter-fsharp"
+ #:grammar-directories '("fsharp" "fsharp_signature"))))
+
+(define-public tree-sitter-func
+ (let ((version "1.0.0")
+ (commit "c1d2cc41b39760127a8cd5d4f4923e27114c373b")
+ (revision "0"))
+ (tree-sitter-grammar
+ "func" "FunC"
+ "066g8jn2snmcxwm74wqyxxz2nz2vsjlwhdc455l389czddnncf2j"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-func")))
+
+(define-public tree-sitter-gdscript
+ (let ((version "6.0.0")
+ ;; Can't use the tag above directly; the build at that tag is
+ ;; non‑deterministic, so pin to a later commit.
+ (commit "839cd921c8aa8b79c9afe2eb71a6a7bfa809e995")
+ (revision "0"))
+ (tree-sitter-grammar
+ "gdscript" "GDScript"
+ "00icy0dpdmhz2lfa35npvj26y0m37f0l73asxn7f2prmpm2jsm8c"
+ (git-version version revision commit)
+ #:repository-url
+ "https://github.com/PrestonKnopp/tree-sitter-gdscript"
+ #:commit commit)))
+
+(define-public tree-sitter-gitattributes
+ (let ((commit "1b7af09d45b579f9f288453b95ad555f1f431645")
+ (revision "0"))
+ (tree-sitter-grammar
+ "gitattributes" "Git .gitattributes"
+ "1mmcxw3aqx7skgihl8mman5spjz4cmc0k06jca7fjng904kdqw3q"
+ (git-version "0.1.6" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-gitattributes")))
+
+(define-public tree-sitter-gitcommit
+ (let ((commit "a716678c0f00645fed1e6f1d0eb221481dbd6f6d")
+ (revision "0"))
+ (tree-sitter-grammar
+ "gitcommit" "Git commit"
+ "0syrmx6icp5n2iyawzwmz7nvpzi5iabrvn138vs7dlv9vyrxr1r9"
+ (git-version "0.3.3" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/gbprod/tree-sitter-gitcommit"
+ #:license license:wtfpl2)))
+
+(define-public tree-sitter-gitignore
+ (let ((version "0.1.0")
+ (commit "f4685bf11ac466dd278449bcfe5fd014e94aa504")
+ (revision "0"))
+ (tree-sitter-grammar
+ "gitignore" "Git .gitignore"
+ "17rar33y4dngmx69kjiw6wgrsd6kc0c8w4xa4rx06rjmv7b1hfij"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/shunsambongi/tree-sitter-gitignore")))
+
+(define-public tree-sitter-gleam
+ (tree-sitter-grammar
+ "gleam" "Gleam"
+ "0d7z5bk6x0qi3wy4d8174a69wxsc4287c7fcdfabkn8dixpa920q"
+ "1.1.0"
+ #:repository-url
+ "https://github.com/gleam-lang/tree-sitter-gleam"
+ #:license license:asl2.0))
+
+(define-public tree-sitter-glsl
+ (tree-sitter-grammar
+ "glsl" "OpenGL Shading Language (GLSL)"
+ "0d0ymklms4a91b310f0vwl80yy50sji4qq9sdgly5qh42kyjnijb"
+ "0.2.0"
+ #:inputs (list tree-sitter-c)
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-glsl"))
+
+(define-public tree-sitter-gn
+ (let ((version "1.0.0")
+ (commit "bc06955bc1e3c9ff8e9b2b2a55b38b94da923c05")
+ (revision "0"))
+ (tree-sitter-grammar
+ "gn" "GN"
+ "0i6f0kar3c734ag5bli519ah3rmamsk8kihbw5ga5b0ihrxqfzja"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-gn")))
+
+(define-public tree-sitter-go
+ (tree-sitter-grammar
+ "go" "Go"
+ "0yi8if9mqzzcs4qflflz90hhaxkzlq54wia3s0iiqzfqxk24a61g"
+ "0.23.4"))
+
+(define-public tree-sitter-gomod
+ (tree-sitter-grammar
+ "gomod" "Go .mod"
+ "1vbg4fn54a7lbwcrvjdx3nrwgw5y925chbbb7sd6kwms1434yyhb"
+ "1.1.0"
+ #:repository-url "https://github.com/camdencheek/tree-sitter-go-mod"))
+
+(define-public tree-sitter-gosum
+ (let ((version "1.0.0")
+ (commit "27816eb6b7315746ae9fcf711e4e1396dc1cf237")
+ (revision "0"))
+ (tree-sitter-grammar
+ "gosum" "Go .sum"
+ "13h690k9q8kf7mldcps10h0kj0bdnlkfml9zkcawdswx8r7wblzn"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-go-sum")))
+
+(define-public tree-sitter-gpr
+ (let ((version "0.1.0") ; In package.json, but untagged
+ (commit "cea857d3c18d1385d1f5b66cd09ea1e44173945c")
+ (revision "0"))
+ (tree-sitter-grammar
+ "gpr" "GNAT Project"
+ "0mf6ghqdyn0qbani9hg67yr6a68cbbbvhn734ndygxm30vqdz9xn"
+ (git-version version revision commit)
+ #:repository-url "https://github.com/brownts/tree-sitter-gpr"
+ #:commit commit
+ ;; binding.gyp & bindings is not part of this grammar.
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (for-each
+ (lambda (lang)
+ (with-directory-excursion lang
+ (delete-file "src/grammar.json")
+ (delete-file "src/node-types.json")
+ (delete-file "src/parser.c")
+ (delete-file-recursively "src/tree_sitter")))
+ '#$grammar-directories))))))
+
+(define-public tree-sitter-graphql
+ (let ((commit "5e66e961eee421786bdda8495ed1db045e06b5fe")
+ (revision "0"))
+ (tree-sitter-grammar
+ "graphql" "GraphQL"
+ "0xvrd6p9rxdjpqfq575ap6hpl2f7dad5i4d4m05w1qk9jx33vw9n"
+ (git-version "0.0.1" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/bkegley/tree-sitter-graphql"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (mkdir-p "test/corpus")
+ (copy-recursively "corpus" "test/corpus")
+ ;; FIXME: Impossible pattern.
+ (substitute* "queries/graphql/formatter.scm"
+ (("(\\(input_value_definition(.*@name)?\\))" all value _)
+ (string-append "(input_fields_definition " value ")")))
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-groovy
+ (let ((version "0.0.1")
+ (commit "86911590a8e46d71301c66468e5620d9faa5b6af")
+ (revision "0"))
+ (tree-sitter-grammar
+ "groovy" "Groovy"
+ "0vbsg5xkdja6xyp8nm7g9fs4ndaq3qz6lq8vk9c7l2znw6bb17gb"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/murtaza64/tree-sitter-groovy")))
+
+(define-public tree-sitter-gstlaunch
+ (let ((version "0.1.0")
+ (commit "cf696c7f5e7265a7f6bd0cd1cc8864edd917a3de")
+ (revision "0"))
+ (tree-sitter-grammar
+ "gstlaunch" "gst-launch-1.0"
+ "0kd2pmh5jq0vc9mdzf2w12hn8qrcg3jybys1q4j2dnhqcalzmppa"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-gstlaunch")))
+
+(define-public tree-sitter-hack
+ (let ((version "0.0.4")
+ (commit "bc5b3a10d6d27e8220a113a9a7fe9bec0a1574b0")
+ (revision "0"))
+ (tree-sitter-grammar
+ "hack" "Hack"
+ "08rmlbxhb79d4zb0rb5wwkm4cqgy4a2l8zh37p2kx9gr352wjl3m"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/slackhq/tree-sitter-hack")))
+
+(define-public tree-sitter-hare
+ (let ((version "0.0.1")
+ (commit "fb6ea01461441ec7c312e64e326649f5e9011a64")
+ (revision "0"))
+ (tree-sitter-grammar
+ "hare" "Hare"
+ "0c1zswqig2x0qxg5svd5r17vrwi282x6is9irll2vadkfpfm83r9"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://git.sr.ht/~ecs/tree-sitter-hare"
+ #:license license:expat)))
+
+(define-public tree-sitter-haskell
+ (tree-sitter-grammar
+ "haskell" "Haskell"
+ "08qzkvyc830k56j5lglfzmlp03ygixf9vlrpazbndqvqk20n56xa"
+ "0.15.0"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (delete-file "test/highlight/Basic.hs") ;FIXME: Language not found.
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-haxe
+ (let ((commit "a55f3e2cf1e4449200fd089a80d3af642bcf5f94")
+ (revision "0"))
+ (tree-sitter-grammar
+ "haxe" "Haxe"
+ "0wyrc7l3xav805xmypfp9clgxacm080is598lr3raa2sb31rwdl3"
+ (git-version "0.13.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/vantreeseba/tree-sitter-haxe"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: No language found.
+ (delete-file "queries/highlights.scm")
+ (delete-file-recursively "test/highlight")
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-hcl
+ (let ((commit "de10d494dbd6b71cdf07a678fecbf404dbfe4398")
+ (revision "0"))
+ (tree-sitter-grammar
+ "hcl" "HCL"
+ "0dpxrr7m1k4kjasgz6v8kj7ldp0k6jcxlzcrr09qv7209v24s4x1"
+ (git-version "1.1.0" revision commit)
+ #:article "an"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-hcl"
+ #:commit commit
+ #:license license:asl2.0)))
+
+(define-public tree-sitter-heex
+ (tree-sitter-grammar
+ "heex" "Heex"
+ "0d0ljmxrvmr8k1wc0hd3qrjzwb31f1jaw6f1glamw1r948dxh9xf"
+ "0.8.0"
+ #:repository-url "https://github.com/phoenixframework/tree-sitter-heex"))
+
+(define-public tree-sitter-hlsl
+ (tree-sitter-grammar
+ "hlsl" "HLSL"
+ "0d850bxzxmbxgxjdh219ag2k3qvbphly1y0hdbs2zsqdsdgf0s05"
+ "0.2.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-hlsl"
+ #:inputs (list tree-sitter-c
+ tree-sitter-cpp)
+ #:article "an"))
+
+(define-public tree-sitter-html
+ (tree-sitter-grammar
+ "html" "HTML"
+ "0slhrmwcw2xax4ylyaykx4libkzlaz2lis8x8jmn6b3hbdxlrpix"
+ "0.23.2"))
+
+(define-public tree-sitter-hyprlang
+ (tree-sitter-grammar
+ "hyprlang" "Hyprlang"
+ "171p3hj36a1jqflg9xv138445j4m4m16na6bgpm1km3l67jhvl54"
+ "3.1.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-hyprlang"))
+
+(define-public tree-sitter-ini
+ (let ((version "1.3.0")
+ (commit "32b31863f222bf22eb43b07d4e9be8017e36fb31")
+ (revision "0"))
+ (tree-sitter-grammar
+ "ini" "INI"
+ "0sp9075fllimy6zrw2gx5mij0igl9zvcrakh23wn7m5wh0w9lq4i"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/justinmk/tree-sitter-ini"
+ #:article "an"
+ #:license license:asl2.0)))
+
+(define-public tree-sitter-janet
+ (tree-sitter-grammar
+ "janet" "Janet"
+ "1sg862gqxn5y86sqa4habyicsr1ax70i7w8ibnn2yyx1bzn99jqn"
+ "0.1.0"
+ #:repository-url "https://github.com/GrayJack/tree-sitter-janet"
+ #:license license:bsd-3))
+
+(define-public tree-sitter-java
+ (tree-sitter-grammar
+ "java" "Java"
+ "11j4ifhl5hsmb2sa651cp5xds9cjgjynl86yivvk6bnr2ba0xw9s"
+ "0.23.5"))
+
+(define-public tree-sitter-java-properties
+ (tree-sitter-grammar
+ "java-properties" "Java properties"
+ "0y2w3szzmn4y6m0fh0zi4xqfwr9lm849abrpsi3i3dlz9rnhcs71"
+ "0.3.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-properties"))
+
+(define-public tree-sitter-javascript
+ (tree-sitter-grammar
+ "javascript" "JavaScript(JSX)"
+ "03v1gpr5lnifrk4lns690fviid8p02wn7hfdwp3ynp7lh1cid63a"
+ "0.23.1"))
+
+(define-public tree-sitter-jsdoc
+ (tree-sitter-grammar
+ "jsdoc" "JSDoc"
+ "1qrgan1xpj717qmwdbgb3lqjgffyhsw0qxhjwhdhqfv2lgkw4cn6"
+ "0.25.0"))
+
+(define-public tree-sitter-json
+ (tree-sitter-grammar
+ "json" "JSON"
+ "0p0fiqi5imxm13s1fs6bhqw6v11n79ri1af3d072zm7jqkcl5mhc"
+ "0.24.8"))
+
+(define-public tree-sitter-jsonnet
+ (let ((version "0.0.1")
+ (commit "ddd075f1939aed8147b7aa67f042eda3fce22790")
+ (revision "0"))
+ (tree-sitter-grammar
+ "jsonnet" "JSONNET"
+ "1bfdjxp0h95d124bzlhlvc9b5q19cdj716aym41nyl6z5a992c9q"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/sourcegraph/tree-sitter-jsonnet")))
+
+(define-public tree-sitter-julia
+ (tree-sitter-grammar
+ "julia" "Julia"
+ "0xi04a48ly438gar25bkkvvr8by4dd013cnafbjdysqjfs04q2wg"
+ "0.23.1"))
+
+(define-public tree-sitter-just
+ (tree-sitter-grammar
+ "just" "Just"
+ "0zkdr09myjzp75cmyndzi70kzkbkr3l2hglyb79b1an8w49vkdcn"
+ "0.2.0"
+ #:repository-url
+ "https://github.com/casey/tree-sitter-just"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: test/highlight/statements.just fails
+ (with-directory-excursion "test/highlight"
+ (delete-file "statements.just"))
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-kconfig
+ (tree-sitter-grammar
+ "kconfig" "Kconfig"
+ "1gjh5pz2hwccfcljz3qlg66b6rgv3wsv1bdml1gzrphca9xxz66a"
+ "1.3.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-kconfig"))
+
+(define-public tree-sitter-kdl
+ (tree-sitter-grammar
+ "kdl" "KDL"
+ "1015x24ffrvzb0m0wbqdzmaqavpnjw0gvcagxi9b6vj3n1ynm0ps"
+ "1.1.0"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-kdl"))
+
+(define-public tree-sitter-kotlin
+ (tree-sitter-grammar
+ "kotlin" "Kotlin"
+ "0bv21rcypi9dx87kgfr89mg8qfc7ik1g1fcb8am7ss17by8badwk"
+ "0.3.8"
+ #:repository-url "https://github.com/fwcd/tree-sitter-kotlin"
+ #:commit "0.3.8"))
+
+(define-public tree-sitter-latex
+ (tree-sitter-grammar
+ "latex" "LaTeX"
+ "18dyda7299imb6i2jnjpr7z2jdrjn804c3958nkkpxzzfhbq39h7"
+ "0.4.0"
+ #:repository-url "https://github.com/latex-lsp/tree-sitter-latex"))
+
+(define-public tree-sitter-linkerscript
+ (let ((version "1.0.0")
+ (commit "f99011a3554213b654985a4b0a65b3b032ec4621")
+ (revision "0"))
+ (tree-sitter-grammar
+ "linkerscript" "Linker script"
+ "004irhiaj5n4sgr0fqwqxnijsbalvn3ahc2ys4s9l33rr4hhr3qf"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-linkerscript")))
+
+(define-public tree-sitter-llvm
+ (let ((commit "2914786ae6774d4c4e25a230f4afe16aa68fe1c1")
+ (revision "0"))
+ (tree-sitter-grammar
+ "llvm" "LLVM"
+ "0k02dak264y57ng0mxdg9z9hcb4b0jgyd1xm88h4f1bcq6sah54c"
+ (git-version "1.1.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/benwilliamgraham/tree-sitter-llvm")))
+
+(define-public tree-sitter-lua-0.4
+ (tree-sitter-grammar
+ "lua" "Lua"
+ "082hc274h96sa98n3vxicjmjvnbdhrpjaimxsh002xl69rdl80jm"
+ "0.4.0"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-lua"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (delete-file-recursively "test/highlight") ;FIXME
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-lua
+ (tree-sitter-grammar
+ "lua" "Lua"
+ "1mhlwpj4ajqajgjw99l9xhiqnyg9hwn7zdgvdw037vk3k8vrldjp"
+ "0.5.0"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-lua"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (delete-file-recursively "test/highlight") ;FIXME
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-luadoc
+ (let ((version "1.1.0")
+ (commit "818acda56809f994274de64a42f97f509b3c0ad2")
+ (revision "0"))
+ (tree-sitter-grammar
+ "luadoc" "Luadoc/LuaCATS"
+ "1sb0zgd2gk0x18c45f5y9pz5fr8mil9adsspa9q7kbd2hwrf14gi"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-luadoc")))
+
+(define-public tree-sitter-lua-patterns
+ (let ((version "1.0.1")
+ (commit "31461ae9bd0866cb5117cfe5de71189854fd0f3e")
+ (revision "0"))
+ (tree-sitter-grammar
+ "lua-patterns" "Lua patterns"
+ "1wfsfh44jn7m9kx0lfsbrf0hqavad142wl2pffab3mvpmrnawva9"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-luap")))
+
+(define-public tree-sitter-luau
+ (tree-sitter-grammar
+ "luau" "Luau"
+ "00j60425gp0pzrfds0wzr0k1wynbp0zq1saagpnglkmid41xk9p6"
+ "1.2.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-luau"
+ #:inputs (list tree-sitter-lua-0.4)
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (substitute* "grammar.js"
+ (("@muniftanjim/") "@tree-sitter-grammars/"))
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-magik
+ (let ((version "0.0.1")
+ (commit "1fd4c5502fd375c157bbe0916834f697c97704bb")
+ (revision "0"))
+ (tree-sitter-grammar
+ "magik" "Magik"
+ "07zdsilaa97c4hq1pj0qiyhrkbzhawnqc7sbsvr0nsz6n5jj3gwx"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/krn-robin/tree-sitter-magik")))
+
+(define-public tree-sitter-make
+ (tree-sitter-grammar
+ "make" "Makefile"
+ "0g8k9rfmc979lza2cx5xwla1ic2p9hpvm0h2sgfs4r29kw1a2ass"
+ "1.1.1"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-make"))
+
+(define-public tree-sitter-markdown
+ (tree-sitter-grammar
+ "markdown" "Markdown (CommonMark Spec v0.30)"
+ "0vz9r1dbbdj8vwf45izmbajhjbl98ww2dvlk1faqy33kx7plsiar"
+ "0.5.3"
+ #:repository-url "https://github.com/MDeiml/tree-sitter-markdown"
+ #:grammar-directories '("tree-sitter-markdown"
+ "tree-sitter-markdown-inline")
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME
+ (with-directory-excursion "tree-sitter-markdown-inline/test/corpus"
+ (for-each delete-file
+ '("extension_wikilink.txt" "spec.txt" "tags.txt")))
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-matlab
+ (tree-sitter-grammar
+ "matlab" "Matlab"
+ "1kcg16aa9swk4a73klp72rib15ljz7zjlr97rr134laym4x0fnvl"
+ "1.0.4"
+ #:repository-url "https://github.com/acristoffers/tree-sitter-matlab"
+ #:license license:expat))
+
+(define-public tree-sitter-mermaid
+ (let ((version "0.0.2") ; In package.json, but untagged
+ (commit "90ae195b31933ceb9d079abfa8a3ad0a36fee4cc")
+ (revision "0"))
+ (tree-sitter-grammar
+ "mermaid" "Mermaid"
+ "1wfdsz3ikdbpym14aljgy80jhr06cgwhhg72rr8d3rsbm8z5ppaf"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/monaqa/tree-sitter-mermaid")))
+
+(define-public tree-sitter-meson
+ (tree-sitter-grammar
+ "meson" "Meson"
+ "10v1d22wgkc9m33b7zfl712q7zrpn17l1xyprj4wwasqjvg29l03"
+ "1.3.0"
+ #:repository-url "https://github.com/Decodetalkers/tree-sitter-meson"
+ #:license license:expat))
+
+(define-public tree-sitter-netlinx
+ (tree-sitter-grammar
+ "netlinx" "NetLinx"
+ "09q2w9g4bb8v603b4ykxn5g8ndqjfhrgskslsmzhy095r3jysb2q"
+ "1.0.4"
+ #:repository-url "https://github.com/Norgate-AV/tree-sitter-netlinx"))
+
+(define-public tree-sitter-nim
+ (let ((version "0.6.2")
+ (commit "4ad352773688deb84a95eeaa9872acda5b466439")
+ (revision "0"))
+ (tree-sitter-grammar
+ "nim" "Nim"
+ "17wgv8lv6v3wgsjhwcmrqpvdj0bj69ldmr62j588vsppn2cwqabn"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/alaviss/tree-sitter-nim"
+ #:license license:mpl2.0)))
+
+(define-public tree-sitter-ninja
+ (let ((version "0.1.0")
+ (commit "0a95cfdc0745b6ae82f60d3a339b37f19b7b9267")
+ (revision "0"))
+ (tree-sitter-grammar
+ "ninja" "Ninja"
+ "1vmfx2k6bxfwcz319vskjhyszc6hz3j32bw4lgj72l7p890ykwkv"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/alemuller/tree-sitter-ninja")))
+
+(define-public tree-sitter-nix
+ (tree-sitter-grammar
+ "nix" "Nix"
+ "0rkvr64fvawblpg39rr0mrigf1rhsk30vng2vxviwb7fk50iww0i"
+ "0.0.2"
+ #:repository-url "https://github.com/nix-community/tree-sitter-nix"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Language not found.
+ (delete-file-recursively "test/highlight")
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-nqc
+ (let ((commit "14e6da1627aaef21d2b2aa0c37d04269766dcc1d")
+ (revision "0"))
+ (tree-sitter-grammar
+ "nqc" "NQC"
+ "0gpai34vlcdbkyj4a7j2wm36g14p84aj0vldh1146b0n8zbvizhr"
+ (git-version "1.0.0" revision commit)
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-nqc"
+ #:commit commit
+ #:inputs (list tree-sitter-c)
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; Adjust to the change in tree-sitter-c
+ (substitute* "grammar.js"
+ (("\\$\\._statement") "$.statement")
+ (("\\$\\._expression") "$.expression"))
+ (delete-file "queries/highlights.scm") ;FIXME
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-objc
+ (tree-sitter-grammar
+ "objc" "Objective-C"
+ "1fryxjjxjq7lz93vvcm3lswshb4drywf64knbvjxrr3lq5zh5bv8"
+ "3.0.2"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-objc"
+ #:inputs (list tree-sitter-c)
+ #:article "an"))
+
+(define-public tree-sitter-ocaml
+ (tree-sitter-grammar
+ "ocaml" "OCaml (.ml and .mli)"
+ "17g2ynqhjf1nyhdidz9j9s0s12iys3b2vbywxkygwyccj7rb8zdi"
+ "0.24.0"
+ #:grammar-directories '("grammars/interface" "grammars/ocaml" "grammars/type")))
+
+(define-public tree-sitter-odin
+ (tree-sitter-grammar
+ "odin" "Odin"
+ "05ljga1gqhx8hr7ldpcbrz79ixni5qyz6ckyyh7chxnkl5fkjp5y"
+ "1.3.0"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-odin"
+ #:article "an"))
+
+(define-public tree-sitter-org
+ ;; There are a lot of additions, the last tag was placed a while ago
+ (let ((commit "64cfbc213f5a83da17632c95382a5a0a2f3357c1")
+ (revision "1"))
+ (tree-sitter-grammar
+ "org" "Org"
+ "1l62p4a3b22pa7b5mzmy497pk5b8w01hx6zinfwpbnzg2rjdwkgz"
+ (git-version "1.3.1" revision commit)
+ #:repository-url "https://github.com/milisims/tree-sitter-org"
+ #:commit commit)))
+
+(define-public tree-sitter-pascal
+ (tree-sitter-grammar
+ "pascal" "Pascal"
+ "0wxg6k1vvp32c5grvrw1xihb1zr0idfmc4p07rmv99f7f472djhj"
+ "0.10.0"
+ #:repository-url "https://github.com/Isopod/tree-sitter-pascal"))
+
+(define-public tree-sitter-pem
+ (let ((version "0.1.1")
+ (commit "e525b177a229b1154fd81bc0691f943028d9e685")
+ (revision "0"))
+ (tree-sitter-grammar
+ "pem" "PEM"
+ "02g17ki5da7iams576qxyc01r1c95y5ycd7yhap9fhyxc8a6my6r"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-pem")))
+
+(define-public tree-sitter-perl
+ (let ((commit "ad74e6db234c35d537de9358799a8e0cc4f5dee0")
+ (revision "0"))
+ (tree-sitter-grammar
+ "perl" "Perl"
+ "0k6p3hij98vqa6b6iyswlyij69cggbnzgwi2zh64mj3faisblgzj"
+ (git-version "1.0.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-perl/tree-sitter-perl"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME
+ (delete-file "test/highlight/literals.pm")
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-pgn
+ (tree-sitter-grammar
+ "pgn" "Chess Portable Game Notation (PGN)"
+ "0mazy9y80pd20a3a76b0nfxswh7xxdsnya0y0lzl86sh4w95f52p"
+ "1.2.12"
+ #:repository-url "https://github.com/rolandwalker/tree-sitter-pgn"
+ #:license license:bsd-2))
+
+(define-public tree-sitter-php
+ (tree-sitter-grammar
+ "php" "PHP"
+ "05qhz14vvqgwpxgdfr1skwgrv041zwc3wxjyx6y679965nn0lrji"
+ "0.23.12"
+ #:grammar-directories '("php" "php_only")))
+
+(define-public tree-sitter-phpdoc
+ (tree-sitter-grammar
+ "phpdoc" "PHPDoc"
+ "1m5fsbl4zv44rjxv21jzcv64mz9gs702m9s6qjkb0c0rill2bqaz"
+ "0.1.8"
+ #:repository-url "https://github.com/claytonrcarter/tree-sitter-phpdoc"
+ #:inputs (list tree-sitter-php)))
+
+(define-public tree-sitter-plantuml
+ ;; No tags
+ (let ((commit "c7361a1d481dc1ff6700b14ea1d5efc549b72713")
+ (revision "1"))
+ (tree-sitter-grammar
+ "plantuml" "PlantUML"
+ "0apmv0dad58ixhxhzxkwlm9wgbphj7lxilbh427rpxy1y5hrml0f"
+ (git-version "1.0.0" revision commit)
+ #:repository-url "https://github.com/Decodetalkers/tree_sitter_plantuml"
+ #:commit commit
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (substitute* "grammar.js"
+ (("u\\{\\[0-9a-fA-F\\]\\+\\}")
+ "u\\{[0-9a-fA-F]+\\}"))
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-po
+ (let ((version "0.0.1")
+ (commit "bd860a0f57f697162bf28e576674be9c1500db5e")
+ (revision "0"))
+ (tree-sitter-grammar
+ "po" "GNU gettext translation file (PO/POT)"
+ "1d28lyg0sx9xs09y68618cxnhi5sacfschcrv4xmy06k21bp8azx"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-po")))
+
+(define-public tree-sitter-pony
+ (let ((commit "73ff874ae4c9e9b45462673cbc0a1e350e2522a7")
+ (revision "0"))
+ (tree-sitter-grammar
+ "pony" "Pony"
+ "0fm47by0z6vzihnk4py7lx1qbiwqbbgpxpi8ibl740bnx9nx7mpz"
+ (git-version "1.0.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-pony")))
+
+(define-public tree-sitter-powershell
+ (tree-sitter-grammar
+ "powershell" "Powershell"
+ "1wz34js891sx6j2s128sdcbxj1k2zi300fg5a4vf5acaz82jcs8q"
+ "0.25.8"
+ #:repository-url
+ "https://github.com/airbus-cert/tree-sitter-powershell"))
+
+(define-public tree-sitter-printf
+ (tree-sitter-grammar
+ "printf" "printf"
+ "15p5fr1dhmf54aic9mszrb7859q2adcq66mnivzpfvzvh4xnpmr5"
+ "0.5.1"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-printf"
+ #:license license:isc))
+
+(define-public tree-sitter-prisma
+ (tree-sitter-grammar
+ "prisma" "Prisma"
+ "144l2w7ky5imd7yvp1n6lgbyy5kq6kx4c2ja43yk15k3258pf52v"
+ "1.5.1"
+ #:repository-url "https://github.com/victorhqc/tree-sitter-prisma"
+ #:license license:expat))
+
+(define-public tree-sitter-proto
+ (let ((version "0.1.0")
+ (commit "e9f6b43f6844bd2189b50a422d4e2094313f6aa3")
+ (revision "0"))
+ (tree-sitter-grammar
+ "proto" "Protocol Buffers"
+ "1r8g28rp852f1qj4bhnkf4fzfir1r5blq2p0nz4x9y5jfplb1vji"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/treywood/tree-sitter-proto")))
+
+(define-public tree-sitter-puppet
+ (tree-sitter-grammar
+ "puppet" "Puppet"
+ "19032dhb60vxij6b6xvgnigwhhbm4y89dr11vxsr1kk10zj61vkc"
+ "1.3.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-puppet"))
+
+(define-public tree-sitter-purescript
+ (tree-sitter-grammar
+ "purescript" "PureScript"
+ "11c57k50kppc560a6qr3wpxppl9p4w7a7yn9g51ybzd28vc55qxl"
+ "0.3.0"
+ #:repository-url
+ "https://github.com/postsolar/tree-sitter-purescript"))
+
+(define-public tree-sitter-python
+ (tree-sitter-grammar
+ "python" "Python"
+ "05kk1wlm5fgpgwqxw3m68sipkinw0gf2jq19cgq9cgp3agdwg58p"
+ "0.25.0"))
+
+(define-public tree-sitter-python-manifest
+ (tree-sitter-grammar
+ "python-manifest" "PyPA manifest"
+ "16k9izgwg2f8yyz1vlzyw9qw4np5fjy3nxr3ksq499a0bz8a59cd"
+ "0.6.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-pymanifest"))
+
+(define-public tree-sitter-python-requirements
+ (tree-sitter-grammar
+ "python-requirements" "Python requirements.txt"
+ "1gwp1cwsyr67qclfm9f8ilakaq747qzqmj3bgy0jacjjjs0xgk32"
+ "0.5.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-requirements"))
+
+(define-public tree-sitter-qml
+ (let ((version "0.2.0") ; Tagged, but we use a more recent commit
+ (commit "0889da4632bba3ec6f39ef4102625654890c15c1")
+ (revision "0"))
+ (tree-sitter-grammar
+ "qml" "Qml"
+ "1qdfwbqjnw7vcvq2dcx19c159b12kv2hvwrvbp7m9i5vl6szc22g"
+ (git-version version revision commit)
+ #:repository-url "https://github.com/yuja/tree-sitter-qmljs"
+ #:commit commit
+ #:inputs (delay (list tree-sitter-javascript tree-sitter-typescript))
+ #:license license:expat)))
+
+(define-public tree-sitter-qmldir
+ (let ((version "0.2.2")
+ (commit "fbf29ddf1ebb01e0c389dde2a51e874f688a2327")
+ (revision "0"))
+ (tree-sitter-grammar
+ "qmldir" "Qmldir"
+ "07wmr7vsqqv77m69inrhdk3qmlwivwkdpppcjwc326b2r8a88y7j"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-qmldir")))
+
+(define-public tree-sitter-qmljs
+ (tree-sitter-grammar
+ "qmljs" "QML"
+ "1a1fxm73ag51qsi0wfg36jzcm6am9n1mwvhjv3f57fyjwcwigqp0"
+ "0.2.0"
+ #:commit "0.2.0"
+ #:repository-url "https://github.com/yuja/tree-sitter-qmljs"
+ #:inputs (delay (list tree-sitter-javascript
+ tree-sitter-typescript))))
+
+(define-public tree-sitter-query
+ (package
+ (inherit (tree-sitter-grammar "query"
+ "Query"
+ "1m7w05228ky26ph4k9vfwjwkhghppnpvci2i45iwncjanrni6byk"
+ "0.8.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-query"))
+ (synopsis "Tree-sitter grammar for Tree-sitter's query language")
+ (description "This package provides Tree-sitter's query grammar.")))
+
+(define-public tree-sitter-r
+ (tree-sitter-grammar
+ "r" "R"
+ "1jf14nvrfcznsnmxmlkbnn59bdykpsawxm5grph65p8vghi4fik7"
+ "1.1.0"
+ #:repository-url "https://github.com/r-lib/tree-sitter-r"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Language not found.
+ (for-each delete-file-recursively '("test/highlight" "test/tags"))
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-racket
+ (tree-sitter-grammar
+ "racket" "Racket"
+ "1x9x6pn7l578xlm1cmg5w0cy2zk34qywsn0jzf1j8phwf7k66bxg"
+ "0.23.0-1"
+ #:repository-url "https://github.com/6cdh/tree-sitter-racket"))
+
+(define-public tree-sitter-readline
+ (let ((version "1.1.1")
+ (commit "74addc90fc539d31d413c0c7cf7581997a7fa46e")
+ (revision "0"))
+ (tree-sitter-grammar
+ "readline" "GNU Readline init"
+ "0qmnmzab9qn6chsdh2sfa9v2yrpik3ng9j14shw70ck0zc02gd3i"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-readline")))
+
+(define-public tree-sitter-re2c
+ (let ((commit "c18a3c2f4b6665e35b7e50d6048ea3cff770c572")
+ (revision "0"))
+ (tree-sitter-grammar
+ "re2c" "Regular Expressions to Code (re2c)"
+ "0h6vvbns5xdi47pfgl2xf4hlwzawrsqbm16jv07d0z7lppimf6ys"
+ (git-version "0.1.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-re2c"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Invalid node type labelprefix.
+ (substitute* "grammar.js"
+ (("( *)\\$\\.set_condenumprefix,\n" all tabs)
+ (string-append all tabs "$.set_labelprefix,\n")))
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-rego
+ (let ((version "1.0.0")
+ (commit "20b5a5958c837bc9f74b231022a68a594a313f6d")
+ (revision "0"))
+ (tree-sitter-grammar
+ "rego" "Rego"
+ "0cmja3gd5nbmi251qc14hh1cbfd7i0mydx74qxs30qvix6q5a2az"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/FallenAngel97/tree-sitter-rego")))
+
+(define-public tree-sitter-ron
+ (let ((commit "78938553b93075e638035f624973083451b29055")
+ (revision "0"))
+ (tree-sitter-grammar
+ "ron" "RON"
+ "13f8a5sfvyrizkl0szh2yaslmvjk91s97yb2abrdh74a0pl217aa"
+ (git-version "0.2.0" revision commit)
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-ron"
+ #:commit commit
+ #:license (list license:asl2.0 license:expat))))
+
+(define-public tree-sitter-rst
+ (tree-sitter-grammar
+ "rst" "ReStructuredText"
+ "1lrdyhgda2f66biq7dk4s0llk4fcxn23rf5zrhi17nnl8zmjg18i"
+ "0.2.0"
+ #:repository-url "https://github.com/stsewd/tree-sitter-rst"))
+
+(define-public tree-sitter-ruby
+ (tree-sitter-grammar
+ "ruby" "Ruby"
+ "0c1vs63ydcb3q2wnif18l5irbj6chkcvd3p6dg0vyhklk5acrvca"
+ "0.23.1"))
+
+(define-public tree-sitter-rust
+ (tree-sitter-grammar
+ "rust" "Rust"
+ "0x7xqxspdfnbgn9nvrsl2rsnrjbs01i5hy8k8p5wwk2j358hjyyb"
+ "0.24.0"))
+
+(define-public tree-sitter-scala
+ (tree-sitter-grammar
+ "scala" "Scala"
+ "02awiraj5mmgyi31yzxyxarkkl41qksm3lm41pq9c6bmyqpir2y6"
+ "0.23.4"))
+
+(define-public tree-sitter-scheme
+ (tree-sitter-grammar
+ "scheme" "Scheme (R5RS, R6RS, R7RS)"
+ "108ln1j2fcsrphy6jp9bq3qravp42w4hqb4cvpzx6a3dslkpv116"
+ "0.24.7-1"
+ #:repository-url "https://github.com/6cdh/tree-sitter-scheme"))
+
+(define-public tree-sitter-scss
+ (let ((commit "bca847c1410f7dd97e13fbe7838b3c2c203fb473")
+ (revision "0"))
+ (tree-sitter-grammar
+ "scss" "SCSS"
+ "0v5vrgwp2fln1pypff5pr329mghm5naahpn3sr7mkrja2n8gyy6a"
+ (git-version "1.0.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-scss"
+ #:inputs (list tree-sitter-css)
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: 10/56 fail
+ (with-directory-excursion "test/corpus"
+ (for-each
+ delete-file
+ '("declarations.txt" "examples.txt" "statements.txt")))
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-sfapex
+ ;; Use a later commit because some tests fail with the v2.3 tag.
+ (let ((commit "3597575a429766dd7ecce9f5bb97f6fec4419d5d")
+ (revision "0"))
+ (tree-sitter-grammar
+ "sfapex" "Sfapex"
+ "1kcv8g7smh76nb46np5yqmjma1c4zna74nkhc11xa1g3gwysvv2c"
+ (git-version "2.3" revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/aheber/tree-sitter-sfapex"
+ #:grammar-directories '("apex" "sflog" "soql" "sosl"))))
+
+(define-public tree-sitter-smali
+ (let ((commit "fdfa6a1febc43c7467aa7e937b87b607956f2346")
+ (revision "0"))
+ (tree-sitter-grammar
+ "smali" "Smali"
+ "0b7b6vziwj2c3ngrpz439gnsxh5v22illc4nms1mxkzdx5g3liab"
+ (git-version "1.0.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-smali")))
+
+(define-public tree-sitter-smithy
+ (let ((commit "ec4fe14586f2b0a1bc65d6db17f8d8acd8a90433")
+ (revision "0"))
+ (tree-sitter-grammar
+ "smithy" "Smithy"
+ "12gs5baabvm6v7js0g0siy98v1w69cmfxc72sikylr6y4wfvhjf0"
+ (git-version "0.2.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/indoorvivants/tree-sitter-smithy")))
+
+(define-public tree-sitter-solidity
+ (tree-sitter-grammar
+ "solidity" "Solidity"
+ "0vbxghnihnmfdgg4a5j2g5s7fcff8axqmqa2y8yci434n35wgq3g"
+ "1.2.13"
+ #:repository-url
+ "https://github.com/JoranHonig/tree-sitter-solidity"))
+
+(define-public tree-sitter-sparql
+ (let* ((commit "1ef52d35a73a2a5f2e433ecfd1c751c1360a923b")
+ (revision "0"))
+ (tree-sitter-grammar
+ "sparql" "SPARQL"
+ "19s63n9kbijmbaprffvkxqmdr8a1jc3f371mzrxh2wv4czbradpl"
+ (git-version "0.1.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/GordianDziwis/tree-sitter-sparql")))
+
+(define-public tree-sitter-sql
+ (let ((commit "7b51ecda191d36b92f5a90a8d1bc3faef1c7b8b8")
+ (revision "0"))
+ (tree-sitter-grammar
+ "sql" "SQL"
+ "1lvm4x24ac9r4fy4ghpypyz1q771bafwkjvn0ma5zh82900q7xvr"
+ (git-version "0.3.11" revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/DerekStride/tree-sitter-sql")))
+
+(define-public tree-sitter-squirrel
+ (let ((commit "072c969749e66f000dba35a33c387650e203e96e")
+ (revision "0"))
+ (tree-sitter-grammar
+ "squirrel" "Squirrel"
+ "01gwmjgbyq7byxs0hsy4kkinijdszq2vh13kqmrjz1pq632nd45l"
+ (git-version "1.0.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-squirrel")))
+
+(define-public tree-sitter-starlark
+ (tree-sitter-grammar
+ "starlark" "Starlark"
+ "1qlvk67fqd49138nxl81l4gx833271mns36g3lm884sdmw3225w8"
+ "1.3.0"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-starlark"
+ #:inputs (list tree-sitter-python)
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: This grammar was built with tree-sitter-python@0.23.5.
+ ;; https://github.com/tree-sitter-grammars/tree-sitter-starlark/issues/9
+ (substitute* "grammar.js"
+ (("rules: \\{" rules)
+ "\
+ reserved: {global: _ => [],},
+ supertypes: $ => [
+ $._simple_statement,
+ $._compound_statement,
+ $.expression,
+ $.primary_expression,
+ $.pattern,
+ $.parameter,
+ ],
+ rules: {
+"))
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-svelte
+ (let ((commit "ae5199db47757f785e43a14b332118a5474de1a2")
+ (revision "0"))
+ (tree-sitter-grammar
+ "svelte" "Svelte"
+ "0pm5hillspaj4xvqz3j5sxvn78sljw75abjp58xnq8lc5vp62zvh"
+ (git-version "1.0.2" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-svelte"
+ #:inputs (list tree-sitter-html))))
+
+(define-public tree-sitter-sway
+ (let ((commit "f9e53e922496dd47208a141fa7ac315625a1874f")
+ (revision "0"))
+ (tree-sitter-grammar
+ "sway" "Sway"
+ "1bgr3153wwzgkrnk5w9mv7kskw3ygdxaihrpiljcw0bhciqsnkk8"
+ (git-version "1.0.0" revision commit)
+ #:repository-url "https://github.com/FuelLabs/tree-sitter-sway"
+ #:commit commit)))
+
+(define-public tree-sitter-swift
+ (let ((commit "7c2f26b5dce12e82ef2bd932a883ef514ae566b8")
+ (revision "0"))
+ (tree-sitter-grammar
+ "swift" "Swift"
+ "15rcld2k5h7m4c66msxx7zcmn9bmpqsz907pdr3ikhvcvx3w085g"
+ (git-version "0.7.1" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/alex-pinkus/tree-sitter-swift"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (delete-file-recursively "test-npm-package")
+ (delete-file-recursively "test/outline")
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-systemverilog
+ (tree-sitter-grammar
+ "systemverilog" "SystemVerilog"
+ "1qmdhd0ln6zhrwj1zpc96ws0x2gdb9fkfk7fwp1zjvkz6fkjc3la"
+ "0.4.0"
+ #:repository-url "https://github.com/gmlarumbe/tree-sitter-systemverilog"))
+
+(define-public tree-sitter-tablegen
+ (let ((version "1.0.0")
+ (commit "3e9c4822ab5cdcccf4f8aa9dcd42117f736d51d9")
+ (revision "0"))
+ (tree-sitter-grammar
+ "tablegen" "LLVM TableGen"
+ "02anzjxk30323jmbvn2l7fwarq59zix84g7rdcgx8s7z7c5zyagk"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/Flakebi/tree-sitter-tablegen")))
+
+(define-public tree-sitter-tcl
+ (let ((version "1.1.0")
+ (commit "8f11ac7206a54ed11210491cee1e0657e2962c47")
+ (revision "0"))
+ (tree-sitter-grammar
+ "tcl" "TCL"
+ "0dkxh6bn0kqn1gbyd5qwkg21fm634mxvas3w4ahv6zr5d8f95c96"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-tcl")))
+
+(define-public tree-sitter-test
+ (package
+ ;; Similar to the tree-sitter-query.
+ (inherit (tree-sitter-grammar
+ "test" "corpus test"
+ "0n61mhi2244x3xv1zvwypcih9x65qqgrlz0sz4766h5v68mc58zg"
+ "0.3.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-test"))
+ (synopsis "Tree-sitter grammar for Tree-sitter's corpus test files")
+ (description "This package provides Tree-sitter's grammar for corpus test
+files.")))
+
+(define-public tree-sitter-thrift
+ (let ((commit "68fd0d80943a828d9e6f49c58a74be1e9ca142cf")
+ (revision "0"))
+ (tree-sitter-grammar
+ "thrift" "Thrift"
+ "1ijp9x1vylc8bgplnj9d898qhv04cvrl67qg9kmam33drfrmn1m3"
+ (git-version "0.5.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-thrift")))
+
+(define-public tree-sitter-tlaplus
+ (tree-sitter-grammar
+ "tlaplus" "TLA+"
+ "11073rjg9n9hnr88193mmb8ff5xlcv6isgqc0g2fbfbl0y820zlk"
+ "1.5.0"
+ #:repository-url "https://github.com/tlaplus-community/tree-sitter-tlaplus"
+ #:commit "1.5.0"))
+
+(define-public tree-sitter-toml
+ (tree-sitter-grammar
+ "toml" "TOML"
+ "1j9fgy1hlsq6xqqnpjl65a2mmydlx91p8ss36k7vyf7284d6bm4v"
+ "0.7.0"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-toml"))
+
+(define-public tree-sitter-twig
+ (let ((version "0.7.0")
+ (commit "40d17f0eb990215e12531abe29ee7691d7ca99a5")
+ (revision "0"))
+ (tree-sitter-grammar
+ "twig" "Twig"
+ "06a6rfgh9mmzqvs7bp8y92axa4fni4c72s82bdin7j3a0x5mxwi6"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/kaermorchen/tree-sitter-twig"
+ #:license license:mpl2.0)))
+
+(define-public tree-sitter-typescript
+ (tree-sitter-grammar
+ "typescript" "TypeScript and TSX"
+ "0rlhhqp9dv6y0iljb4bf90d89f07zkfnsrxjb6rvw985ibwpjkh9"
+ "0.23.2"
+ #:inputs (list tree-sitter-javascript)
+ #:grammar-directories '("typescript" "tsx")))
+
+(define-public tree-sitter-typst
+ (tree-sitter-grammar
+ "typst" "Typst"
+ "198rn8wdcqq51nz6hj1zxk7mplplr2z8vc36z6h1zpjjq925794z"
+ "0.11.0"
+ #:repository-url "https://github.com/uben0/tree-sitter-typst"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ ;; These tests are supposed to fail, but they don't fail the way the
+ ;; suite expects anymore.
+ (delete-file "test/corpus/negative.scm")
+ #$(tree-sitter-delete-generated-files grammar-directories)))))
+
+(define-public tree-sitter-udev
+ (let ((version "0.2.1")
+ (commit "2fcb563a4d56a6b8e8c129252325fc6335e4acbf")
+ (revision "0"))
+ (tree-sitter-grammar
+ "udev" "udev rules"
+ "0azs4q43bdg0an4f5s8ac7jqxikwi1rnqhl4g0l58ghf2g51i70i"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-udev")))
+
+(define-public tree-sitter-ungrammar
+ ;; No releases yet.
+ (let ((commit "debd26fed283d80456ebafa33a06957b0c52e451")
+ (revision "0"))
+ (tree-sitter-grammar
+ "ungrammar" "Ungrammar"
+ "09bbml1v1m6a9s9y9q1p2264ghf3fhb6kca1vj3qm19yq87xrnvy"
+ (git-version "0.0.2" revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-ungrammar"
+ #:article "an")))
+
+(define-public tree-sitter-uxntal
+ (let ((version "1.0.0")
+ (commit "bd6cc0cf5c97bb25ee65b39132768d1a1f70ffa9")
+ (revision "0"))
+ (tree-sitter-grammar
+ "uxntal" "Uxntal"
+ "0sbwwr6d6yiq0ddhjkcafi0k61rcp6l1fa6vpmkykr3kh7znq9pn"
+ (git-version version revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-uxntal")))
+
+(define-public tree-sitter-v
+ (let ((commit "532bebd50742ef15949bdd67c36d46697c847628")
+ (revision "0"))
+ (tree-sitter-grammar
+ "v" "V"
+ "1chkirgmbfrjy9p81qm5gi5qdqf9az98zfv9zgmd0q91gvkdf6ll"
+ (git-version "0.0.6" revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/vlang/v-analyzer"
+ #:grammar-directories '("tree_sitter_v")
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ (delete-file-recursively "src")
+ (delete-file-recursively "editors")
+ (rename-file "tree_sitter_v/package.json" "package.json")
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-verilog
+ (tree-sitter-grammar
+ "verilog" "Verilog"
+ "1mk8waij5lbj1wbayvqs0cxk003dssdic13h14gd5fi1ckfvflja"
+ "1.0.3"))
+
+(define-public tree-sitter-vhdl
+ (tree-sitter-grammar
+ "vhdl" "VHDL"
+ "11q2sxac26mn00a7k4vy1wgd6bhh0v0p8arj9r8zb9phn3sqwwjm"
+ "2.0.0"
+ #:repository-url "https://github.com/jpt13653903/tree-sitter-vhdl"))
+
+;;; TODO: Remove this package when emacs-vhdl-ts-mode switches to jpt13653903.
+;;; We keep old one as alemuller is still required by emacs-vhdl-ts-mode.
+;;; See:
+;;; https://github.com/gmlarumbe/vhdl-ts-mode/issues/17
+(define-public tree-sitter-vhdl-0
+ (let ((version "0.1.1") ; In package.json, but untagged
+ (commit "a3b2d84990527c7f8f4ae219c332c00c33d2d8e5")
+ (revision "0"))
+ (tree-sitter-grammar
+ "vhdl" "VHDL"
+ "0gz2b0qg1jzi2q6wgj6k6g35kmni3pqglq4f5kblkxx909463n8a"
+ (git-version version revision commit)
+ #:repository-url "https://github.com/alemuller/tree-sitter-vhdl"
+ #:commit commit
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Language not found.
+ (delete-file-recursively "test/highlight")
+ ;; Fix a query error in the highlight.scm query test. This would be
+ ;; easier with a patch, but this works too, and we still get to use
+ ;; tree-sitter-grammar. The fix is taken from here:
+ ;; https://github.com/n8tlarsen/tree-sitter-vhdl/commit/dabf157c6bb7220d72d3ceba0ce1abd90bf62187
+ ;; This is a documented issue that has not been resolved for nearly 2
+ ;; years.
+ ;; https://github.com/alemuller/tree-sitter-vhdl/issues/2
+ (substitute* "queries/highlights.scm"
+ (("\\(integer_decimal\n") "(integer_decimal)\n")
+ (("\\(integer\\)") "")
+ (("\"0\")") "\"0\""))
+ #$(tree-sitter-delete-generated-files grammar-directories))))))
+
+(define-public tree-sitter-vim
+ (tree-sitter-grammar "vim"
+ "Vimscript"
+ "1myz19yimx179gzd6w64zyshfb4hbxp7qfrdf6nvf9a2w8bc2wij"
+ "0.8.1"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-vim"))
+
+(define-public tree-sitter-vimdoc
+ (tree-sitter-grammar "vimdoc"
+ "Vimdoc"
+ "18f1dr3j79axg6yqrvm0fc2w4cil403al9xifc4h4vkkp6hg6y9b"
+ "4.1.0"
+ #:repository-url
+ "https://github.com/neovim/tree-sitter-vimdoc"
+ #:license license:expat))
+
+(define-public tree-sitter-vue
+ (let ((commit "22bdfa6c9fc0f5ffa44c6e938ec46869ac8a99ff")
+ (revision "0"))
+ (tree-sitter-grammar
+ "vue" "Vue.js"
+ "1mi18x54g8rxz98jrpzh2gi7ii93sq743aws9i7qc139jas98y9f"
+ (git-version "0.1.0" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-vue"
+ #:inputs (list tree-sitter-html))))
+
+(define-public tree-sitter-wast
+ (let ((commit "2ca28a9f9d709847bf7a3de0942a84e912f59088")
+ (revision "0"))
+ (tree-sitter-grammar
+ "wast" "WebAssembly"
+ "02v08hs9wirdzfx9a7c3kpn0cpc9i867pw28qka0fid9q537hnbb"
+ (git-version "0.0.0" revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/wasm-lsp/tree-sitter-wasm"
+ #:grammar-directories '("wast" "wat")
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME
+ (substitute* '("wat/grammar.js" "wast/grammar.js")
+ (("u\\{\\[0-9a-fA-F\\]\\+\\}")
+ "u\\{[0-9a-fA-F]+\\}"))
+ (for-each (lambda (lang)
+ (with-directory-excursion lang
+ ;; incompatible type of tests
+ (delete-file-recursively "corpus")
+ (delete-file "index.js")
+ (delete-file "src/binding.cc")))
+ '("wat" "wast"))
+ (for-each delete-file '("wat/tree-sitter-wat.wasm"
+ "wast/tree-sitter-wast.wasm"))
+ #$(tree-sitter-delete-generated-files grammar-directories)))
+ ;; Apache-2.0 with LLVM-exception
+ #:license license:asl2.0)))
+
+(define-public tree-sitter-wgsl
+ (let ((commit "809fe422b879021afb65a1899093fa87bc6e02df")
+ (revision "0"))
+ (tree-sitter-grammar
+ "wgsl" "WebGPU Shading Language (WGSL)"
+ "05a7yas33y4jfj1ac1n49xll0kmpsic4y5hffqavhm2zffpwmqbc"
+ (git-version "0.0.9" revision commit)
+ #:commit commit
+ #:repository-url "https://github.com/gpuweb/tree-sitter-wgsl"
+ #:get-cleanup-snippet
+ (lambda (grammar-directories)
+ #~(begin
+ (use-modules (guix build utils))
+ ;; FIXME: Invalid node type const_assert_statement.
+ (delete-file "queries/highlights.scm")
+ #$(tree-sitter-delete-generated-files grammar-directories)))
+ #:license license:w3c)))
+
+(define-public tree-sitter-xcompose
+ (tree-sitter-grammar
+ "xcompose" "XCompose"
+ "03c0ycwrxafxvbhzi6pzcq8md40frh7ybwkhcsd4s1hmg6arwpyx"
+ "0.4.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-xcompose"
+ #:article "an"))
+
+(define-public tree-sitter-xml
+ (tree-sitter-grammar
+ "xml" "XML and DTD"
+ "0ghfjjhw1rvd98xd1c3mq3bffrl3wg5dmp22ksb0659g76qi0hpz"
+ "0.7.0"
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-xml"
+ #:grammar-directories '("xml" "dtd")
+ #:article "an"))
+
+(define-public tree-sitter-yaml
+ (tree-sitter-grammar
+ "yaml" "YAML"
+ "0z5fz9hiafzapi0ijhyz8np6rksq6c1pb16xv1vhnlfh75rg6zyv"
+ "0.7.0"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-yaml"))
+
+(define-public tree-sitter-yuck
+ (let ((commit "e877f6ade4b77d5ef8787075141053631ba12318")
+ (revision "0"))
+ (tree-sitter-grammar
+ "yuck" "Yuck"
+ "00l009xmjpr2fgrbibhgkymk1kw2al2m8zi93civyjxwpbzkbiwp"
+ (git-version "0.0.2" revision commit)
+ #:commit commit
+ #:repository-url
+ "https://github.com/tree-sitter-grammars/tree-sitter-yuck")))
+
+(define-public tree-sitter-zig
+ (tree-sitter-grammar
+ "zig" "Zig"
+ "1r9p7hhnc1zagwxzdxhs4p6rnqs9naddkgbfymi6pbw6cyg2ccwl"
+ "1.1.2"
+ #:repository-url "https://github.com/tree-sitter-grammars/tree-sitter-zig"))
+
+;;; Python Bindings
+
+(define-public python-tree-sitter
+ (package
+ (name "python-tree-sitter")
+ (version "0.25.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tree-sitter/py-tree-sitter")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "15j6gxc6ps6zdrmqfmmz22p7p5gz37cyihzzwbjggy7mc4vwm5fj"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-backend #~'unittest
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-tree-sitter-lib-path
+ (lambda _
+ (let ((tree-sitter #$(this-package-input "tree-sitter")))
+ (substitute* "setup.py"
+ ((".*\"tree_sitter/core.*") "")
+ (("( *)sources=" all tabs)
+ (string-append
+ tabs "library_dirs=[\"" tree-sitter "/lib\"],\n"
+ tabs "libraries=[\"tree-sitter\"],\n"
+ all))
+ (("include_dirs=\\[" all)
+ (string-append all "\"" tree-sitter "/include\","))))))
+ ;; XXX: See https://codeberg.org/guix/guix/issues/2108
+ (add-before 'check 'remove-uninstalled-package
+ (lambda _
+ (delete-file-recursively "tree_sitter"))))))
+ (inputs (list tree-sitter))
+ (native-inputs
+ (list python-setuptools
+ (python-tree-sitter-grammar tree-sitter-html #:tests? #f)
+ (python-tree-sitter-grammar tree-sitter-javascript #:tests? #f)
+ (python-tree-sitter-grammar tree-sitter-json #:tests? #f)
+ (python-tree-sitter-grammar tree-sitter-python #:tests? #f)
+ (python-tree-sitter-grammar tree-sitter-rust #:tests? #f)))
+ (home-page "https://github.com/tree-sitter/py-tree-sitter")
+ (synopsis "Python bindings to the Tree-sitter parsing library")
+ (description "This package provides Python bindings to the
+Tree-sitter parsing library.")
+ (license license:expat)))
+
+(define* (python-tree-sitter-grammar pkg #:key (tests? #t))
+ "Returns a package for Python bindings of a Tree-sitter grammar. PKG is a
+package for a Tree-sitter grammar; its name will be used with python- prefix
+to generate the package name. When TESTS? is true, tests are enabled."
+ (package
+ (inherit pkg)
+ (name (string-append "python-" (package-name pkg)))
+ (source (origin (inherit (package-source pkg))
+ (snippet #f) (patches '())))
+ (build-system pyproject-build-system)
+ (arguments (list #:tests? tests?))
+ (build-system pyproject-build-system)
+ (native-inputs (append (if tests?
+ (list python-pytest
+ python-tree-sitter)
+ '())
+ (list python-setuptools)))
+ (description
+ (string-append (package-description pkg)
+ (P_ "\n\nThis variant provides Python bindings.")))))
+
+(define-public python-tree-sitter-html
+ (python-tree-sitter-grammar
+ tree-sitter-html))
+
+(define-public python-tree-sitter-javascript
+ (python-tree-sitter-grammar
+ tree-sitter-javascript))
+
+(define-public python-tree-sitter-json
+ (python-tree-sitter-grammar
+ tree-sitter-json))
+
+(define-public python-tree-sitter-python
+ (python-tree-sitter-grammar
+ tree-sitter-python))
+
+(define-public python-tree-sitter-rust
+ (python-tree-sitter-grammar
+ tree-sitter-rust))
diff --git a/mirenn/packages/wallust.scm b/mirenn/packages/wallust.scm
new file mode 100644
index 0000000..9710372
--- /dev/null
+++ b/mirenn/packages/wallust.scm
@@ -0,0 +1,1486 @@
+(define-module (mirenn packages wallust)
+ #:use-module (guix build-system cargo)
+ #:use-module (guix build-system copy)
+ #:use-module (guix git-download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) #:prefix license:))
+
+(define rust-adler2-2.0.1
+ (crate-source "adler2" "2.0.1"
+ "1ymy18s9hs7ya1pjc9864l30wk8p2qfqdi7mhhcc5nfakxbij09j"))
+
+(define rust-aho-corasick-1.1.4
+ (crate-source "aho-corasick" "1.1.4"
+ "00a32wb2h07im3skkikc495jvncf62jl6s96vwc7bhi70h9imlyx"))
+
+(define rust-aligned-0.4.3
+ (crate-source "aligned" "0.4.3"
+ "1186lhb3gb4x6spzw7ff0zcraa8cr9zqk4ldpm5g1vb2ijc0higf"))
+
+(define rust-aligned-vec-0.6.4
+ (crate-source "aligned-vec" "0.6.4"
+ "16vnf78hvfix5cwzd5xs5a2g6afmgb4h7n6yfsc36bv0r22072fw"))
+
+(define rust-alloca-0.4.0
+ (crate-source "alloca" "0.4.0"
+ "1x6p4387rz6j7h342kp3b7bgvqzyl9mibf959pkfk9xflrgd19z5"))
+
+(define rust-anes-0.1.6
+ (crate-source "anes" "0.1.6"
+ "16bj1ww1xkwzbckk32j2pnbn5vk6wgsl3q4p3j9551xbcarwnijb"))
+
+(define rust-anstream-0.6.21
+ (crate-source "anstream" "0.6.21"
+ "0jjgixms4qjj58dzr846h2s29p8w7ynwr9b9x6246m1pwy0v5ma3"))
+
+(define rust-anstyle-1.0.13
+ (crate-source "anstyle" "1.0.13"
+ "0y2ynjqajpny6q0amvfzzgw0gfw3l47z85km4gvx87vg02lcr4ji"))
+
+(define rust-anstyle-parse-0.2.7
+ (crate-source "anstyle-parse" "0.2.7"
+ "1hhmkkfr95d462b3zf6yl2vfzdqfy5726ya572wwg8ha9y148xjf"))
+
+(define rust-anstyle-query-1.1.5
+ (crate-source "anstyle-query" "1.1.5"
+ "1p6shfpnbghs6jsa0vnqd8bb8gd7pjd0jr7w0j8jikakzmr8zi20"))
+
+(define rust-anstyle-wincon-3.0.11
+ (crate-source "anstyle-wincon" "3.0.11"
+ "0zblannm70sk3xny337mz7c6d8q8i24vhbqi42ld8v7q1wjnl7i9"))
+
+(define rust-anyhow-1.0.100
+ (crate-source "anyhow" "1.0.100"
+ "0qbfmw4hhv2ampza1csyvf1jqjs2dgrj29cv3h3sh623c6qvcgm2"))
+
+(define rust-approx-0.5.1
+ (crate-source "approx" "0.5.1"
+ "1ilpv3dgd58rasslss0labarq7jawxmivk17wsh8wmkdm3q15cfa"))
+
+(define rust-arbitrary-1.4.2
+ (crate-source "arbitrary" "1.4.2"
+ "1wcbi4x7i3lzcrkjda4810nqv03lpmvfhb0a85xrq1mbqjikdl63"))
+
+(define rust-arg-enum-proc-macro-0.3.4
+ (crate-source "arg_enum_proc_macro" "0.3.4"
+ "1sjdfd5a8j6r99cf0bpqrd6b160x9vz97y5rysycsjda358jms8a"))
+
+(define rust-arrayvec-0.7.6
+ (crate-source "arrayvec" "0.7.6"
+ "0l1fz4ccgv6pm609rif37sl5nv5k6lbzi7kkppgzqzh1vwix20kw"))
+
+(define rust-as-slice-0.2.1
+ (crate-source "as-slice" "0.2.1"
+ "05j52y1ws8kir5zjxnl48ann0if79sb56p9nm76hvma01r7nnssi"))
+
+(define rust-autocfg-1.5.0
+ (crate-source "autocfg" "1.5.0"
+ "1s77f98id9l4af4alklmzq46f21c980v13z2r1pcxx6bqgw0d1n0"))
+
+(define rust-av-scenechange-0.14.1
+ (crate-source "av-scenechange" "0.14.1"
+ "1543y7riwcy4mmsgcalxcm3bnb41hvwiqiz774nbj68fq9vischg"))
+
+(define rust-av1-grain-0.2.5
+ (crate-source "av1-grain" "0.2.5"
+ "1y3p43i5xncbny0pfh8kw09am3l3mgyg82ln65r3f434443xpzcc"))
+
+(define rust-avif-serialize-0.8.6
+ (crate-source "avif-serialize" "0.8.6"
+ "0gx2yqlh0j5063vk70hv0f1yq40lm6kvc45qx2gm3x1iz30gpj27"))
+
+(define rust-bit-field-0.10.3
+ (crate-source "bit_field" "0.10.3"
+ "1ikhbph4ap4w692c33r8bbv6yd2qxm1q3f64845grp1s6b3l0jqy"))
+
+(define rust-bitflags-2.10.0
+ (crate-source "bitflags" "2.10.0"
+ "1lqxwc3625lcjrjm5vygban9v8a6dlxisp1aqylibiaw52si4bl1"))
+
+(define rust-bitstream-io-4.9.0
+ (crate-source "bitstream-io" "4.9.0"
+ "0mqpwqy8cqnaqr4wkpk7qy7fjp4x6vxaf8z2hprbvimj3nfvvm30"))
+
+(define rust-built-0.8.0
+ (crate-source "built" "0.8.0"
+ "0r5f08lpjsr6j5ajkbmd0ymfmajpq8ddbfvi8ji8rx48y88qzbgl"))
+
+(define rust-bumpalo-3.19.1
+ (crate-source "bumpalo" "3.19.1"
+ "044555i277xcinmqs7nnv8n5y4fqfi4l4lp1mp3i30vsidrxrnax"))
+
+(define rust-by-address-1.2.1
+ (crate-source "by_address" "1.2.1"
+ "01idmag3lcwnnqrnnyik2gmbrr34drsi97q15ihvcbbidf2kryk4"))
+
+(define rust-bytemuck-1.24.0
+ (crate-source "bytemuck" "1.24.0"
+ "1x65wc9kwf0dfnmglkl8r46d29pfl7yilll5wh9bcf0g6a0gbg8z"))
+
+(define rust-byteorder-lite-0.1.0
+ (crate-source "byteorder-lite" "0.1.0"
+ "15alafmz4b9az56z6x7glcbcb6a8bfgyd109qc3bvx07zx4fj7wg"))
+
+(define rust-camino-1.2.2
+ (crate-source "camino" "1.2.2"
+ "0j0ayqfbbl8bxg0795ssk1hzkjix3dvl2kk63hdgzf9cd5nscag6"))
+
+(define rust-cargo-metadata-0.23.1
+ (crate-source "cargo_metadata" "0.23.1"
+ "1sddycfscjy47av3ykzykqgz8zjds0i00gcxs76vw4x1n0bpv67g"))
+
+(define rust-cargo-platform-0.3.2
+ (crate-source "cargo-platform" "0.3.2"
+ "10k0bvf5lnsndqgd92qxx3a2lask5nh2w2k568gz04cg2kkc1847"))
+
+(define rust-cast-0.3.0
+ (crate-source "cast" "0.3.0"
+ "1dbyngbyz2qkk0jn2sxil8vrz3rnpcj142y184p9l4nbl9radcip"))
+
+(define rust-cc-1.2.53
+ (crate-source "cc" "1.2.53"
+ "0cjrx2nzlz8l93p4sfymjgsv0jicvfphd6hyhk5gyxbi2z72ypbm"))
+
+(define rust-cfg-if-1.0.4
+ (crate-source "cfg-if" "1.0.4"
+ "008q28ajc546z5p2hcwdnckmg0hia7rnx52fni04bwqkzyrghc4k"))
+
+(define rust-ciborium-0.2.2
+ (crate-source "ciborium" "0.2.2"
+ "03hgfw4674im1pdqblcp77m7rc8x2v828si5570ga5q9dzyrzrj2"))
+
+(define rust-ciborium-io-0.2.2
+ (crate-source "ciborium-io" "0.2.2"
+ "0my7s5g24hvp1rs1zd1cxapz94inrvqpdf1rslrvxj8618gfmbq5"))
+
+(define rust-ciborium-ll-0.2.2
+ (crate-source "ciborium-ll" "0.2.2"
+ "1n8g4j5rwkfs3rzfi6g1p7ngmz6m5yxsksryzf5k72ll7mjknrjp"))
+
+(define rust-clap-4.5.54
+ (crate-source "clap" "4.5.54"
+ "15737jmai272j6jh4ha4dq4ap14ysx2sa5wsjv6zbkvrrnfzzrn6"))
+
+(define rust-clap-builder-4.5.54
+ (crate-source "clap_builder" "4.5.54"
+ "001cnl5ccva6z3x5nw3m72zs3bzb650anz1scs7vqhbs5d6wyhps"))
+
+(define rust-clap-complete-4.5.65
+ (crate-source "clap_complete" "4.5.65"
+ "0pdf33fgil55x8a3l5x5gln39wy9xlmpnqkrvr41i1p3np14s2s3"))
+
+(define rust-clap-derive-4.5.49
+ (crate-source "clap_derive" "4.5.49"
+ "0wbngw649138v3jwx8pm5x9sq0qsml3sh0sfzyrdxcpamy3m82ra"))
+
+(define rust-clap-lex-0.7.7
+ (crate-source "clap_lex" "0.7.7"
+ "0cibsbziyzw2ywar2yh6zllsamhwkblfly565zgi56s3q064prn3"))
+
+(define rust-clap-mangen-0.2.31
+ (crate-source "clap_mangen" "0.2.31"
+ "00b3r0nym6wvgfas1crmsn3205149ynj2hhnjcwgjv88j8xad7j3"))
+
+(define rust-color-quant-1.1.0
+ (crate-source "color_quant" "1.1.0"
+ "12q1n427h2bbmmm1mnglr57jaz2dj9apk0plcxw7nwqiai7qjyrx"))
+
+(define rust-colorchoice-1.0.4
+ (crate-source "colorchoice" "1.0.4"
+ "0x8ymkz1xr77rcj1cfanhf416pc4v681gmkc9dzb3jqja7f62nxh"))
+
+(define rust-convert-case-0.8.0
+ (crate-source "convert_case" "0.8.0"
+ "17zqy79xlr1n7nc0n1mlnw5qpp8l2nbxrk13jixrhlavrbna1ams"))
+
+(define rust-core2-0.4.0
+ (crate-source "core2" "0.4.0"
+ "01f5xv0kf3ds3xm7byg78hycbanb8zlpvsfv4j47y46n3bpsg6xl"))
+
+(define rust-crc32fast-1.5.0
+ (crate-source "crc32fast" "1.5.0"
+ "04d51liy8rbssra92p0qnwjw8i9rm9c4m3bwy19wjamz1k4w30cl"))
+
+(define rust-criterion-0.8.1
+ (crate-source "criterion" "0.8.1"
+ "1gw6v0qw8kr7gdl6if6912akmnc4xcidrs9ky93fxc3vfm3k922d"))
+
+(define rust-criterion-plot-0.8.1
+ (crate-source "criterion-plot" "0.8.1"
+ "1r5jhzih1cv32s3jfsn9zrd5apgrmij039dzrg78vaigxa0kz57d"))
+
+(define rust-crossbeam-deque-0.8.6
+ (crate-source "crossbeam-deque" "0.8.6"
+ "0l9f1saqp1gn5qy0rxvkmz4m6n7fc0b3dbm6q1r5pmgpnyvi3lcx"))
+
+(define rust-crossbeam-epoch-0.9.18
+ (crate-source "crossbeam-epoch" "0.9.18"
+ "03j2np8llwf376m3fxqx859mgp9f83hj1w34153c7a9c7i5ar0jv"))
+
+(define rust-crossbeam-utils-0.8.21
+ (crate-source "crossbeam-utils" "0.8.21"
+ "0a3aa2bmc8q35fb67432w16wvi54sfmb69rk9h5bhd18vw0c99fh"))
+
+(define rust-crunchy-0.2.4
+ (crate-source "crunchy" "0.2.4"
+ "1mbp5navim2qr3x48lyvadqblcxc1dm0lqr0swrkkwy2qblvw3s6"))
+
+(define rust-darling-0.20.11
+ (crate-source "darling" "0.20.11"
+ "1vmlphlrlw4f50z16p4bc9p5qwdni1ba95qmxfrrmzs6dh8lczzw"))
+
+(define rust-darling-core-0.20.11
+ (crate-source "darling_core" "0.20.11"
+ "0bj1af6xl4ablnqbgn827m43b8fiicgv180749f5cphqdmcvj00d"))
+
+(define rust-darling-macro-0.20.11
+ (crate-source "darling_macro" "0.20.11"
+ "1bbfbc2px6sj1pqqq97bgqn6c8xdnb2fmz66f7f40nrqrcybjd7w"))
+
+(define rust-deranged-0.5.5
+ (crate-source "deranged" "0.5.5"
+ "11z5939gv2klp1r1lgrp4w5fnlkj18jqqf0h9zxmia3vkrjwpv7c"))
+
+(define rust-derive-builder-0.20.2
+ (crate-source "derive_builder" "0.20.2"
+ "0is9z7v3kznziqsxa5jqji3ja6ay9wzravppzhcaczwbx84znzah"))
+
+(define rust-derive-builder-core-0.20.2
+ (crate-source "derive_builder_core" "0.20.2"
+ "1s640r6q46c2iiz25sgvxw3lk6b6v5y8hwylng7kas2d09xwynrd"))
+
+(define rust-derive-builder-macro-0.20.2
+ (crate-source "derive_builder_macro" "0.20.2"
+ "0g1zznpqrmvjlp2w7p0jzsjvpmw5rvdag0rfyypjhnadpzib0qxb"))
+
+(define rust-dirs-6.0.0
+ (crate-source "dirs" "6.0.0"
+ "0knfikii29761g22pwfrb8d0nqpbgw77sni9h2224haisyaams63"))
+
+(define rust-dirs-sys-0.5.0
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "dirs-sys" "0.5.0"
+ "1aqzpgq6ampza6v012gm2dppx9k35cdycbj54808ksbys9k366p0"))
+
+(define rust-displaydoc-0.2.5
+ (crate-source "displaydoc" "0.2.5"
+ "1q0alair462j21iiqwrr21iabkfnb13d6x5w95lkdg21q2xrqdlp"))
+
+(define rust-document-features-0.2.12
+ (crate-source "document-features" "0.2.12"
+ "0qcgpialq3zgvjmsvar9n6v10rfbv6mk6ajl46dd4pj5hn3aif6l"))
+
+(define rust-documented-0.9.2
+ (crate-source "documented" "0.9.2"
+ "0d6frja10byyi9s74y88r57kdj3i83caw4a9nz8sr1qy4lqkwszd"))
+
+(define rust-documented-macros-0.9.2
+ (crate-source "documented-macros" "0.9.2"
+ "03rpr6nbxhwmjcqlrq4mzaxr4l05z6qxapy0lcbrxrz5c9scyj8i"))
+
+(define rust-dunce-1.0.5
+ (crate-source "dunce" "1.0.5"
+ "04y8wwv3vvcqaqmqzssi6k0ii9gs6fpz96j5w9nky2ccsl23axwj"))
+
+(define rust-dyn-clone-1.0.20
+ (crate-source "dyn-clone" "1.0.20"
+ "0m956cxcg8v2n8kmz6xs5zl13k2fak3zkapzfzzp7pxih6hix26h"))
+
+(define rust-either-1.15.0
+ (crate-source "either" "1.15.0"
+ "069p1fknsmzn9llaizh77kip0pqmcwpdsykv2x30xpjyija5gis8"))
+
+(define rust-equator-0.4.2
+ (crate-source "equator" "0.4.2"
+ "1z760z5r0haxjyakbqxvswrz9mq7c29arrivgq8y1zldhc9v44a7"))
+
+(define rust-equator-macro-0.4.2
+ (crate-source "equator-macro" "0.4.2"
+ "1cqzx3cqn9rxln3a607xr54wippzff56zs5chqdf3z2bnks3rwj4"))
+
+(define rust-equivalent-1.0.2
+ (crate-source "equivalent" "1.0.2"
+ "03swzqznragy8n0x31lqc78g2af054jwivp7lkrbrc0khz74lyl7"))
+
+(define rust-errno-0.3.14
+ (crate-source "errno" "0.3.14"
+ "1szgccmh8vgryqyadg8xd58mnwwicf39zmin3bsn63df2wbbgjir"))
+
+(define rust-exr-1.74.0
+ (crate-source "exr" "1.74.0"
+ "1gk3cc2qkfm0jqw4v1d7g4c356k9iz583bq17iiwp8kalm1y0023"))
+
+(define rust-fast-image-resize-6.0.0
+ (crate-source "fast_image_resize" "6.0.0"
+ "0x118h9h3aqz4bbva3mr5wl6hp7cl9bhsni1lc8q938y07jl7p8j"))
+
+(define rust-fast-srgb8-1.0.0
+ (crate-source "fast-srgb8" "1.0.0"
+ "18g6xwwh4gnkyx1352hnvwagpv0n4y98yp2llm8vyvwxh487abnx"))
+
+(define rust-fastrand-2.3.0
+ (crate-source "fastrand" "2.3.0"
+ "1ghiahsw1jd68df895cy5h3gzwk30hndidn3b682zmshpgmrx41p"))
+
+(define rust-fax-0.2.6
+ (crate-source "fax" "0.2.6"
+ "1ax0jmvsszxd03hj6ga1kyl7gaqcfw0akg2wf0q6gk9pizaffpgh"))
+
+(define rust-fax-derive-0.2.0
+ (crate-source "fax_derive" "0.2.0"
+ "0zap434zz4xvi5rnysmwzzivig593b4ng15vwzwl7js2nw7s3b50"))
+
+(define rust-fdeflate-0.3.7
+ (crate-source "fdeflate" "0.3.7"
+ "130ga18vyxbb5idbgi07njymdaavvk6j08yh1dfarm294ssm6s0y"))
+
+(define rust-find-msvc-tools-0.1.8
+ (crate-source "find-msvc-tools" "0.1.8"
+ "1nv8hn78xphg04l6w7iq1v8lsmmqx6ripbig18qn92m9r2yb14c5"))
+
+(define rust-flate2-1.1.8
+ (crate-source "flate2" "1.1.8"
+ "0sgkq8z9ldz06qxl704sm9akfy2r70zp1ixi4mghl2cqbd3dcxdk"))
+
+(define rust-fnv-1.0.7
+ (crate-source "fnv" "1.0.7"
+ "1hc2mcqha06aibcaza94vbi81j6pr9a1bbxrxjfhc91zin8yr7iz"))
+
+(define rust-foldhash-0.2.0
+ (crate-source "foldhash" "0.2.0"
+ "1nvgylb099s11xpfm1kn2wcsql080nqmnhj1l25bp3r2b35j9kkp"))
+
+(define rust-form-urlencoded-1.2.2
+ (crate-source "form_urlencoded" "1.2.2"
+ "1kqzb2qn608rxl3dws04zahcklpplkd5r1vpabwga5l50d2v4k6b"))
+
+(define rust-getrandom-0.2.17
+ (crate-source "getrandom" "0.2.17"
+ "1l2ac6jfj9xhpjjgmcx6s1x89bbnw9x6j9258yy6xjkzpq0bqapz"))
+
+(define rust-getrandom-0.3.4
+ (crate-source "getrandom" "0.3.4"
+ "1zbpvpicry9lrbjmkd4msgj3ihff1q92i334chk7pzf46xffz7c9"))
+
+(define rust-gif-0.14.1
+ (crate-source "gif" "0.14.1"
+ "0pn3ldqjk0ng1vbc3r3zqqrnjkn6s3f3ndk96lhhrn0q82l2ppzm"))
+
+(define rust-git2-0.20.3
+ (crate-source "git2" "0.20.3"
+ "131hmxb2iq9328wrwqgw56fcd0z3dwxnn3hzl6nwsa97yvi3fary"))
+
+(define rust-glob-0.3.3
+ (crate-source "glob" "0.3.3"
+ "106jpd3syfzjfj2k70mwm0v436qbx96wig98m4q8x071yrq35hhc"))
+
+(define rust-half-2.7.1
+ (crate-source "half" "2.7.1"
+ "0jyq42xfa6sghc397mx84av7fayd4xfxr4jahsqv90lmjr5xi8kf"))
+
+(define rust-hashbrown-0.16.1
+ (crate-source "hashbrown" "0.16.1"
+ "004i3njw38ji3bzdp9z178ba9x3k0c1pgy8x69pj7yfppv4iq7c4"))
+
+(define rust-heck-0.4.1
+ (crate-source "heck" "0.4.1"
+ "1a7mqsnycv5z4z5vnv1k34548jzmc0ajic7c1j8jsaspnhw5ql4m"))
+
+(define rust-heck-0.5.0
+ (crate-source "heck" "0.5.0"
+ "1sjmpsdl8czyh9ywl3qcsfsq9a307dg4ni2vnlwgnzzqhc4y0113"))
+
+(define rust-icu-collections-2.1.1
+ (crate-source "icu_collections" "2.1.1"
+ "0hsblchsdl64q21qwrs4hvc2672jrf466zivbj1bwyv606bn8ssc"))
+
+(define rust-icu-locale-core-2.1.1
+ (crate-source "icu_locale_core" "2.1.1"
+ "1djvdc2f5ylmp1ymzv4gcnmq1s4hqfim9nxlcm173lsd01hpifpd"))
+
+(define rust-icu-normalizer-2.1.1
+ (crate-source "icu_normalizer" "2.1.1"
+ "16dmn5596la2qm0r3vih0bzjfi0vx9a20yqjha6r1y3vnql8hv2z"))
+
+(define rust-icu-normalizer-data-2.1.1
+ (crate-source "icu_normalizer_data" "2.1.1"
+ "02jnzizg6q75m41l6c13xc7nkc5q8yr1b728dcgfhpzw076wrvbs"))
+
+(define rust-icu-properties-2.1.2
+ (crate-source "icu_properties" "2.1.2"
+ "1v3lbmhhi7i6jgw51ikjb1p50qh5rb67grlkdnkc63l7zq1gq2q2"))
+
+(define rust-icu-properties-data-2.1.2
+ (crate-source "icu_properties_data" "2.1.2"
+ "1bvpkh939rgzrjfdb7hz47v4wijngk0snmcgrnpwc9fpz162jv31"))
+
+(define rust-icu-provider-2.1.1
+ (crate-source "icu_provider" "2.1.1"
+ "0576b7dizgyhpfa74kacv86y4g1p7v5ffd6c56kf1q82rvq2r5l5"))
+
+(define rust-ident-case-1.0.1
+ (crate-source "ident_case" "1.0.1"
+ "0fac21q6pwns8gh1hz3nbq15j8fi441ncl6w4vlnd1cmc55kiq5r"))
+
+(define rust-idna-1.1.0
+ (crate-source "idna" "1.1.0"
+ "1pp4n7hppm480zcx411dsv9wfibai00wbpgnjj4qj0xa7kr7a21v"))
+
+(define rust-idna-adapter-1.2.1
+ (crate-source "idna_adapter" "1.2.1"
+ "0i0339pxig6mv786nkqcxnwqa87v4m94b2653f6k3aj0jmhfkjis"))
+
+(define rust-image-0.25.9
+ (crate-source "image" "0.25.9"
+ "06lwa4ag3zcmjzivl356q0qhgxxqpkp7qwda7x0mjrkq21n6ql76"))
+
+(define rust-image-webp-0.2.4
+ (crate-source "image-webp" "0.2.4"
+ "1hz814csyi9283vinzlkix6qpnd6hs3fkw7xl6z2zgm4w7rrypjj"))
+
+(define rust-imgref-1.12.0
+ (crate-source "imgref" "1.12.0"
+ "1j3iwdal9mdkmyrsms3lz4n1bxxxjxss2jvbmh662fns63fcxig7"))
+
+(define rust-indexmap-2.13.0
+ (crate-source "indexmap" "2.13.0"
+ "05qh5c4h2hrnyypphxpwflk45syqbzvqsvvyxg43mp576w2ff53p"))
+
+(define rust-interpolate-name-0.2.4
+ (crate-source "interpolate_name" "0.2.4"
+ "0q7s5mrfkx4p56dl8q9zq71y1ysdj4shh6f28qf9gly35l21jj63"))
+
+(define rust-is-terminal-polyfill-1.70.2
+ (crate-source "is_terminal_polyfill" "1.70.2"
+ "15anlc47sbz0jfs9q8fhwf0h3vs2w4imc030shdnq54sny5i7jx6"))
+
+(define rust-itertools-0.13.0
+ (crate-source "itertools" "0.13.0"
+ "11hiy3qzl643zcigknclh446qb9zlg4dpdzfkjaa9q9fqpgyfgj1"))
+
+(define rust-itertools-0.14.0
+ (crate-source "itertools" "0.14.0"
+ "118j6l1vs2mx65dqhwyssbrxpawa90886m3mzafdvyip41w2q69b"))
+
+(define rust-itoa-1.0.17
+ (crate-source "itoa" "1.0.17"
+ "1lh93xydrdn1g9x547bd05g0d3hra7pd1k4jfd2z1pl1h5hwdv4j"))
+
+(define rust-jobserver-0.1.34
+ (crate-source "jobserver" "0.1.34"
+ "0cwx0fllqzdycqn4d6nb277qx5qwnmjdxdl0lxkkwssx77j3vyws"))
+
+(define rust-js-sys-0.3.85
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "js-sys" "0.3.85"
+ "1csmb42fxjmzjdgc790bgw77sf1cb9ydm5rdsnh5qj4miszjx54c"))
+
+(define rust-kmeans-colors-0.7.1
+ (crate-source "kmeans_colors" "0.7.1"
+ "0ap8w84kx3ibik56a2q66vwss67pirs035gswpcbcavng5mv5c3a"))
+
+(define rust-lazy-static-1.5.0
+ (crate-source "lazy_static" "1.5.0"
+ "1zk6dqqni0193xg6iijh7i3i44sryglwgvx20spdvwk3r6sbrlmv"))
+
+(define rust-lebe-0.5.3
+ (crate-source "lebe" "0.5.3"
+ "1f459clndzzm35nyd15vj5dlasyagfasp7hcgl6lh2b658rs6ybs"))
+
+(define rust-libc-0.2.180
+ (crate-source "libc" "0.2.180"
+ "1z2n7hl10fnk1xnv19ahhqxwnb4qi9aclnl6gigim2aaahw5mhxw"))
+
+(define rust-libfuzzer-sys-0.4.10
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "libfuzzer-sys" "0.4.10"
+ "0124z86582vyzl8gbadqscjgf9i94jcpa9mxcpsyxjvh3w71jdsh"))
+
+(define rust-libgit2-sys-0.18.3+1.9.2
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "libgit2-sys" "0.18.3+1.9.2"
+ "11rlbyihj3k35mnkxxz4yvsnlx33a4r9srl66c5vp08pp72arcy9"))
+
+(define rust-libredox-0.1.12
+ (crate-source "libredox" "0.1.12"
+ "05h6fb2y05h74zwaafmnf7gv3bxilzp7syqlfzw524w55kh9a2rx"))
+
+(define rust-libz-sys-1.1.23
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "libz-sys" "1.1.23"
+ "1xy0l46gmhfyk28r9pm7njl0h7dh8l2vpiqw67kn043pyfxiil8m"))
+
+(define rust-linux-raw-sys-0.11.0
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "linux-raw-sys" "0.11.0"
+ "0fghx0nn8nvbz5yzgizfcwd6ap2pislp68j8c1bwyr6sacxkq7fz"))
+
+(define rust-litemap-0.8.1
+ (crate-source "litemap" "0.8.1"
+ "0xsy8pfp9s802rsj1bq2ys2kbk1g36w5dr3gkfip7gphb5x60wv3"))
+
+(define rust-litrs-1.0.0
+ (crate-source "litrs" "1.0.0"
+ "14p0kzzkavnngvybl88nvfwv031cc2qx4vaxpfwsiifm8grdglqi"))
+
+(define rust-log-0.4.29
+ (crate-source "log" "0.4.29"
+ "15q8j9c8g5zpkcw0hnd6cf2z7fxqnvsjh3rw5mv5q10r83i34l2y"))
+
+(define rust-loop9-0.1.5
+ (crate-source "loop9" "0.1.5"
+ "0qphc1c0cbbx43pwm6isnwzwbg6nsxjh7jah04n1sg5h4p0qgbhg"))
+
+(define rust-maplit-1.0.2
+ (crate-source "maplit" "1.0.2"
+ "07b5kjnhrrmfhgqm9wprjw8adx6i225lqp49gasgqg74lahnabiy"))
+
+(define rust-maybe-rayon-0.1.1
+ (crate-source "maybe-rayon" "0.1.1"
+ "06cmvhj4n36459g327ng5dnj8d58qs472pv5ahlhm7ynxl6g78cf"))
+
+(define rust-memchr-2.7.6
+ (crate-source "memchr" "2.7.6"
+ "0wy29kf6pb4fbhfksjbs05jy2f32r2f3r1ga6qkmpz31k79h0azm"))
+
+(define rust-memo-map-0.3.3
+ (crate-source "memo-map" "0.3.3"
+ "0yw5ria5j6kd8z0p2yiji1vc2x53zg348dv1fgip822n0x813l9q"))
+
+(define rust-minijinja-2.14.0
+ (crate-source "minijinja" "2.14.0"
+ "1ah6k177jxp1i9p9wala12mnc0zry3yn15890wk13d8zlp09mshj"))
+
+(define rust-miniz-oxide-0.8.9
+ (crate-source "miniz_oxide" "0.8.9"
+ "05k3pdg8bjjzayq3rf0qhpirq9k37pxnasfn4arbs17phqn6m9qz"))
+
+(define rust-moxcms-0.7.11
+ (crate-source "moxcms" "0.7.11"
+ "15qa5znj029i7677l0hdv0lwmjggrg920bhjgs3cjvydb72mg5dc"))
+
+(define rust-new-debug-unreachable-1.0.6
+ (crate-source "new_debug_unreachable" "1.0.6"
+ "11phpf1mjxq6khk91yzcbd3ympm78m3ivl7xg6lg2c0lf66fy3k5"))
+
+(define rust-nom-8.0.0
+ (crate-source "nom" "8.0.0"
+ "01cl5xng9d0gxf26h39m0l8lprgpa00fcc75ps1yzgbib1vn35yz"))
+
+(define rust-noop-proc-macro-0.3.0
+ (crate-source "noop_proc_macro" "0.3.0"
+ "1j2v1c6ric4w9v12h34jghzmngcwmn0hll1ywly4h6lcm4rbnxh6"))
+
+(define rust-num-bigint-0.4.6
+ (crate-source "num-bigint" "0.4.6"
+ "1f903zd33i6hkjpsgwhqwi2wffnvkxbn6rv4mkgcjcqi7xr4zr55"))
+
+(define rust-num-conv-0.1.0
+ (crate-source "num-conv" "0.1.0"
+ "1ndiyg82q73783jq18isi71a7mjh56wxrk52rlvyx0mi5z9ibmai"))
+
+(define rust-num-derive-0.4.2
+ (crate-source "num-derive" "0.4.2"
+ "00p2am9ma8jgd2v6xpsz621wc7wbn1yqi71g15gc3h67m7qmafgd"))
+
+(define rust-num-integer-0.1.46
+ (crate-source "num-integer" "0.1.46"
+ "13w5g54a9184cqlbsq80rnxw4jj4s0d8wv75jsq5r2lms8gncsbr"))
+
+(define rust-num-rational-0.4.2
+ (crate-source "num-rational" "0.4.2"
+ "093qndy02817vpgcqjnj139im3jl7vkq4h68kykdqqh577d18ggq"))
+
+(define rust-num-threads-0.1.7
+ (crate-source "num_threads" "0.1.7"
+ "1ngajbmhrgyhzrlc4d5ga9ych1vrfcvfsiqz6zv0h2dpr2wrhwsw"))
+
+(define rust-num-traits-0.2.19
+ (crate-source "num-traits" "0.2.19"
+ "0h984rhdkkqd4ny9cif7y2azl3xdfb7768hb9irhpsch4q3gq787"))
+
+(define rust-once-cell-1.21.3
+ (crate-source "once_cell" "1.21.3"
+ "0b9x77lb9f1j6nqgf5aka4s2qj0nly176bpbrv6f9iakk5ff3xa2"))
+
+(define rust-once-cell-polyfill-1.70.2
+ (crate-source "once_cell_polyfill" "1.70.2"
+ "1zmla628f0sk3fhjdjqzgxhalr2xrfna958s632z65bjsfv8ljrq"))
+
+(define rust-oorandom-11.1.5
+ (crate-source "oorandom" "11.1.5"
+ "07mlf13z453fq01qff38big1lh83j8l6aaglf63ksqzzqxc0yyfn"))
+
+(define rust-optfield-0.4.0
+ (crate-source "optfield" "0.4.0"
+ "04lpdwapksfbjlrdyzk2knfxi7awgl82i8iis5di1yy4zylcr74n"))
+
+(define rust-option-ext-0.2.0
+ (crate-source "option-ext" "0.2.0"
+ "0zbf7cx8ib99frnlanpyikm1bx8qn8x602sw1n7bg6p9x94lyx04"))
+
+(define rust-owo-colors-4.2.3
+ (crate-source "owo-colors" "4.2.3"
+ "0ljavh4hfxmlyjr67hyii5875p55kjg24crkj6h937m7kxr02scw"))
+
+(define rust-page-size-0.6.0
+ (crate-source "page_size" "0.6.0"
+ "1nj0rrwpvagagssljbm29ww1iyrrg15p1q4sk70r2cfi9qcv5m9h"))
+
+(define rust-palette-0.7.6
+ (crate-source "palette" "0.7.6"
+ "1rmn02mv6cb112504qyg7pyfa83c08hxpk5sw7jc5v659hc73gsc"))
+
+(define rust-palette-derive-0.7.6
+ (crate-source "palette_derive" "0.7.6"
+ "0c0xhpk1nqyq4jr2m8xnka7w47vqzc7m2vq9ih8wxyjv02phs0zm"))
+
+(define rust-paste-1.0.15
+ (crate-source "paste" "1.0.15"
+ "02pxffpdqkapy292harq6asfjvadgp1s005fip9ljfsn9fvxgh2p"))
+
+(define rust-pastey-0.1.1
+ (crate-source "pastey" "0.1.1"
+ "1v389jkifv757903flrrps67dvc6q6giwlyx3xi33hcfjmgjxyrm"))
+
+(define rust-percent-encoding-2.3.2
+ (crate-source "percent-encoding" "2.3.2"
+ "083jv1ai930azvawz2khv7w73xh8mnylk7i578cifndjn5y64kwv"))
+
+(define rust-phf-0.12.1
+ (crate-source "phf" "0.12.1"
+ "1dz85g1wshfca83mrq3va9rm9n8qcdjlpv1i3908y5zc9j4p6cli"))
+
+(define rust-phf-generator-0.12.1
+ (crate-source "phf_generator" "0.12.1"
+ "0nvcdbc2j7pznjin4qhw360c8zgfn5isx3bld1ixsqgdmwk13frc"))
+
+(define rust-phf-macros-0.12.1
+ (crate-source "phf_macros" "0.12.1"
+ "0s230ikydi4n2vi9s03d49k5fznkg6kpq12jmlg0jbx8jf1ja4yp"))
+
+(define rust-phf-shared-0.12.1
+ (crate-source "phf_shared" "0.12.1"
+ "10cr16wpmbjxd7w6k98sxw9yw3zxnzscybl9jzyq3digi045a006"))
+
+(define rust-pkg-config-0.3.32
+ (crate-source "pkg-config" "0.3.32"
+ "0k4h3gnzs94sjb2ix6jyksacs52cf1fanpwsmlhjnwrdnp8dppby"))
+
+(define rust-plotters-0.3.7
+ (crate-source "plotters" "0.3.7"
+ "0ixpy9svpmr2rkzkxvvdpysjjky4gw104d73n7pi2jbs7m06zsss"))
+
+(define rust-plotters-backend-0.3.7
+ (crate-source "plotters-backend" "0.3.7"
+ "0ahpliim4hrrf7d4ispc2hwr7rzkn6d6nf7lyyrid2lm28yf2hnz"))
+
+(define rust-plotters-svg-0.3.7
+ (crate-source "plotters-svg" "0.3.7"
+ "0w56sxaa2crpasa1zj0bhxzihlapqfkncggavyngg0w86anf5fji"))
+
+(define rust-png-0.18.0
+ (crate-source "png" "0.18.0"
+ "187jf0m873qn5biix8z7gjdsyf8r6vj3yr495pa0jja6i39wxflp"))
+
+(define rust-potential-utf-0.1.4
+ (crate-source "potential_utf" "0.1.4"
+ "0xxg0pkfpq299wvwln409z4fk80rbv55phh3f1jhjajy5x1ljfdp"))
+
+(define rust-powerfmt-0.2.0
+ (crate-source "powerfmt" "0.2.0"
+ "14ckj2xdpkhv3h6l5sdmb9f1d57z8hbfpdldjc2vl5givq2y77j3"))
+
+(define rust-ppv-lite86-0.2.21
+ (crate-source "ppv-lite86" "0.2.21"
+ "1abxx6qz5qnd43br1dd9b2savpihzjza8gb4fbzdql1gxp2f7sl5"))
+
+(define rust-proc-macro2-1.0.105
+ (crate-source "proc-macro2" "1.0.105"
+ "1rvgs5qdznlrqrgicmv24nybnrnv8kyvk2vi7s52ddna1q71hpak"))
+
+(define rust-profiling-1.0.17
+ (crate-source "profiling" "1.0.17"
+ "0wqp6i1bl7azy9270dp92srbbr55mgdh9qnk5b1y44lyarmlif1y"))
+
+(define rust-profiling-procmacros-1.0.17
+ (crate-source "profiling-procmacros" "1.0.17"
+ "0nrxdh5r723raxbs136jmjx46p0c5qgai8jwz4j555mn0ad7ywaj"))
+
+(define rust-pxfm-0.1.27
+ (crate-source "pxfm" "0.1.27"
+ "1a76ydn3wpl2dvyzplv3c6fkx4mkjc9ns60xas9l7alk4n1d71ki"))
+
+(define rust-qoi-0.4.1
+ (crate-source "qoi" "0.4.1"
+ "00c0wkb112annn2wl72ixyd78mf56p4lxkhlmsggx65l3v3n8vbz"))
+
+(define rust-quick-error-2.0.1
+ (crate-source "quick-error" "2.0.1"
+ "18z6r2rcjvvf8cn92xjhm2qc3jpd1ljvcbf12zv0k9p565gmb4x9"))
+
+(define rust-quote-1.0.43
+ (crate-source "quote" "1.0.43"
+ "02n41mlr81qmczac7m5kjy51y8b7yrb8ym4ncmjycampjjjxjx6w"))
+
+(define rust-r-efi-5.3.0
+ (crate-source "r-efi" "5.3.0"
+ "03sbfm3g7myvzyylff6qaxk4z6fy76yv860yy66jiswc2m6b7kb9"))
+
+(define rust-rand-0.9.2
+ (crate-source "rand" "0.9.2"
+ "1lah73ainvrgl7brcxx0pwhpnqa3sm3qaj672034jz8i0q7pgckd"))
+
+(define rust-rand-chacha-0.9.0
+ (crate-source "rand_chacha" "0.9.0"
+ "1jr5ygix7r60pz0s1cv3ms1f6pd1i9pcdmnxzzhjc3zn3mgjn0nk"))
+
+(define rust-rand-core-0.9.5
+ (crate-source "rand_core" "0.9.5"
+ "0g6qc5r3f0hdmz9b11nripyp9qqrzb0xqk9piip8w8qlvqkcibvn"))
+
+(define rust-rav1e-0.8.1
+ (crate-source "rav1e" "0.8.1"
+ "0axk3ji3jmlr81svmsy5zvj8shmhpp8lz5nyghkq752xx1bdvdj3"))
+
+(define rust-ravif-0.12.0
+ (crate-source "ravif" "0.12.0"
+ "11dj99rsrdjp12yn4xchxsb78prsg5s8x4smd08qmwgf1jcw2sgg"))
+
+(define rust-rayon-1.11.0
+ (crate-source "rayon" "1.11.0"
+ "13x5fxb7rn4j2yw0cr26n7782jkc7rjzmdkg42qxk3xz0p8033rn"))
+
+(define rust-rayon-core-1.13.0
+ (crate-source "rayon-core" "1.13.0"
+ "14dbr0sq83a6lf1rfjq5xdpk5r6zgzvmzs5j6110vlv2007qpq92"))
+
+(define rust-redox-users-0.5.2
+ (crate-source "redox_users" "0.5.2"
+ "1b17q7gf7w8b1vvl53bxna24xl983yn7bd00gfbii74bcg30irm4"))
+
+(define rust-ref-cast-1.0.25
+ (crate-source "ref-cast" "1.0.25"
+ "0zdzc34qjva9xxgs889z5iz787g81hznk12zbk4g2xkgwq530m7k"))
+
+(define rust-ref-cast-impl-1.0.25
+ (crate-source "ref-cast-impl" "1.0.25"
+ "1nkhn1fklmn342z5c4mzfzlxddv3x8yhxwwk02cj06djvh36065p"))
+
+(define rust-regex-1.12.2
+ (crate-source "regex" "1.12.2"
+ "1m14zkg6xmkb0q5ah3y39cmggclsjdr1wpxfa4kf5wvm3wcw0fw4"))
+
+(define rust-regex-automata-0.4.13
+ (crate-source "regex-automata" "0.4.13"
+ "070z0j23pjfidqz0z89id1fca4p572wxpcr20a0qsv68bbrclxjj"))
+
+(define rust-regex-syntax-0.8.8
+ (crate-source "regex-syntax" "0.8.8"
+ "0n7ggnpk0r32rzgnycy5xrc1yp2kq19m6pz98ch3c6dkaxw9hbbs"))
+
+(define rust-rgb-0.8.52
+ (crate-source "rgb" "0.8.52"
+ "1km115a9lblf9pldvx51dmmg30y8ms4ka67hvas2ndcq556qhshc"))
+
+(define rust-roff-0.2.2
+ (crate-source "roff" "0.2.2"
+ "1wyqz6m0pm4p6wzhwhahvcidfm7nwb38zl4q7ha940pn3w66dy48"))
+
+(define rust-rustix-1.1.3
+ (crate-source "rustix" "1.1.3"
+ "0d0z2zcw4rwzni1hm8snw8xdxwwrij336m31c4ghq66cghj9wv0l"))
+
+(define rust-rustversion-1.0.22
+ (crate-source "rustversion" "1.0.22"
+ "0vfl70jhv72scd9rfqgr2n11m5i9l1acnk684m2w83w0zbqdx75k"))
+
+(define rust-same-file-1.0.6
+ (crate-source "same-file" "1.0.6"
+ "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k"))
+
+(define rust-schemars-1.2.0
+ (crate-source "schemars" "1.2.0"
+ "1lk7qb6797dmixnb0qfkmlpsa5p2kgwk29s91xvpmia2hw811sal"))
+
+(define rust-schemars-derive-1.2.0
+ (crate-source "schemars_derive" "1.2.0"
+ "0ibwb8amvy70xrgbfqp1iqk0mvqd4x4hvpyg2bmshdahihlas229"))
+
+(define rust-self-cell-1.2.2
+ (crate-source "self_cell" "1.2.2"
+ "12cdmh9p2h72rmw923kj841jji4k0vrykihvx19fn059az8pcbmi"))
+
+(define rust-semver-1.0.27
+ (crate-source "semver" "1.0.27"
+ "1qmi3akfrnqc2hfkdgcxhld5bv961wbk8my3ascv5068mc5fnryp"))
+
+(define rust-serde-1.0.228
+ (crate-source "serde" "1.0.228"
+ "17mf4hhjxv5m90g42wmlbc61hdhlm6j9hwfkpcnd72rpgzm993ls"))
+
+(define rust-serde-core-1.0.228
+ (crate-source "serde_core" "1.0.228"
+ "1bb7id2xwx8izq50098s5j2sqrrvk31jbbrjqygyan6ask3qbls1"))
+
+(define rust-serde-derive-1.0.228
+ (crate-source "serde_derive" "1.0.228"
+ "0y8xm7fvmr2kjcd029g9fijpndh8csv5m20g4bd76w8qschg4h6m"))
+
+(define rust-serde-derive-internals-0.29.1
+ (crate-source "serde_derive_internals" "0.29.1"
+ "04g7macx819vbnxhi52cx0nhxi56xlhrybgwybyy7fb9m4h6mlhq"))
+
+(define rust-serde-json-1.0.149
+ (crate-source "serde_json" "1.0.149"
+ "11jdx4vilzrjjd1dpgy67x5lgzr0laplz30dhv75lnf5ffa07z43"))
+
+(define rust-serde-spanned-1.0.4
+ (crate-source "serde_spanned" "1.0.4"
+ "0xkp0qdzams5sqwndbw3xrhf4c0bb5r46w2ywkp1aqsdb8ggkfzq"))
+
+(define rust-shellexpand-3.1.1
+ (crate-source "shellexpand" "3.1.1"
+ "1fwhid2r117rbis2f6lj8mpfjf0w6lq6nqfxjha86cb3vmjxy7wb"))
+
+(define rust-shlex-1.3.0
+ (crate-source "shlex" "1.3.0"
+ "0r1y6bv26c1scpxvhg2cabimrmwgbp4p3wy6syj9n0c4s3q2znhg"))
+
+(define rust-simd-adler32-0.3.8
+ (crate-source "simd-adler32" "0.3.8"
+ "18lx2gdgislabbvlgw5q3j5ssrr77v8kmkrxaanp3liimp2sc873"))
+
+(define rust-simd-helpers-0.1.0
+ (crate-source "simd_helpers" "0.1.0"
+ "19idqicn9k4vhd04ifh2ff41wvna79zphdf2c81rlmpc7f3hz2cm"))
+
+(define rust-siphasher-1.0.1
+ (crate-source "siphasher" "1.0.1"
+ "17f35782ma3fn6sh21c027kjmd227xyrx06ffi8gw4xzv9yry6an"))
+
+(define rust-smallvec-1.15.1
+ (crate-source "smallvec" "1.15.1"
+ "00xxdxxpgyq5vjnpljvkmy99xij5rxgh913ii1v16kzynnivgcb7"))
+
+(define rust-spinners-4.1.1
+ (crate-source "spinners" "4.1.1"
+ "10jgzdy6x79ipnfhavn46zbg4hlx98mcfr7p4f4j774b6mzr9vx0"))
+
+(define rust-stable-deref-trait-1.2.1
+ (crate-source "stable_deref_trait" "1.2.1"
+ "15h5h73ppqyhdhx6ywxfj88azmrpml9gl6zp3pwy2malqa6vxqkc"))
+
+(define rust-strsim-0.11.1
+ (crate-source "strsim" "0.11.1"
+ "0kzvqlw8hxqb7y598w1s0hxlnmi84sg5vsipp3yg5na5d1rvba3x"))
+
+(define rust-strum-0.24.1
+ (crate-source "strum" "0.24.1"
+ "0gz6cjhlps5idwasznklxdh2zsas6mxf99vr0n27j876q12n0gh6"))
+
+(define rust-strum-0.27.2
+ (crate-source "strum" "0.27.2"
+ "1ksb9jssw4bg9kmv9nlgp2jqa4vnsa3y4q9zkppvl952q7vdc8xg"))
+
+(define rust-strum-macros-0.24.3
+ (crate-source "strum_macros" "0.24.3"
+ "0naxz2y38kwq5wgirmia64vvf6qhwy8j367rw966n62gsbh5nf0y"))
+
+(define rust-strum-macros-0.27.2
+ (crate-source "strum_macros" "0.27.2"
+ "19xwikxma0yi70fxkcy1yxcv0ica8gf3jnh5gj936jza8lwcx5bn"))
+
+(define rust-syn-1.0.109
+ (crate-source "syn" "1.0.109"
+ "0ds2if4600bd59wsv7jjgfkayfzy3hnazs394kz6zdkmna8l3dkj"))
+
+(define rust-syn-2.0.114
+ (crate-source "syn" "2.0.114"
+ "0akw62dizhyrkf3ym1jsys0gy1nphzgv0y8qkgpi6c1s4vghglfl"))
+
+(define rust-synstructure-0.13.2
+ (crate-source "synstructure" "0.13.2"
+ "1lh9lx3r3jb18f8sbj29am5hm9jymvbwh6jb1izsnnxgvgrp12kj"))
+
+(define rust-tempfile-3.24.0
+ (crate-source "tempfile" "3.24.0"
+ "171fz3h6rj676miq15fyv1hnv69p426mlp8489bwa1b3xg3sjpb5"))
+
+(define rust-thiserror-2.0.18
+ (crate-source "thiserror" "2.0.18"
+ "1i7vcmw9900bvsmay7mww04ahahab7wmr8s925xc083rpjybb222"))
+
+(define rust-thiserror-impl-2.0.18
+ (crate-source "thiserror-impl" "2.0.18"
+ "1mf1vrbbimj1g6dvhdgzjmn6q09yflz2b92zs1j9n3k7cxzyxi7b"))
+
+(define rust-tiff-0.10.3
+ (crate-source "tiff" "0.10.3"
+ "0vrkdk9cdk07rh7iifcxpn6m8zv3wz695mizhr8rb3gfgzg0b5mg"))
+
+(define rust-time-0.3.45
+ (crate-source "time" "0.3.45"
+ "1gdag88agck220k6fxbgb7gsnr2r14n33sxzm5db9zfp6gy45r7r"))
+
+(define rust-time-core-0.1.7
+ (crate-source "time-core" "0.1.7"
+ "1jilglvr6m6h2iidnvdp3zfahck9wa7kw64rslk79v1izncfwdlb"))
+
+(define rust-time-macros-0.2.25
+ (crate-source "time-macros" "0.2.25"
+ "1pg3zrqyvjcy1nh470mdw7qxwwq6zmwq3f1dlp11mxlv4k8m5rbi"))
+
+(define rust-tinystr-0.8.2
+ (crate-source "tinystr" "0.8.2"
+ "0sa8z88axdsf088hgw5p4xcyi6g3w3sgbb6qdp81bph9bk2fkls2"))
+
+(define rust-tinytemplate-1.2.1
+ (crate-source "tinytemplate" "1.2.1"
+ "1g5n77cqkdh9hy75zdb01adxn45mkh9y40wdr7l68xpz35gnnkdy"))
+
+(define rust-toml-0.9.11+spec-1.1.0
+ (crate-source "toml" "0.9.11+spec-1.1.0"
+ "0ikwmd5s9ndg6afxijaxjcgxw53sd9af3mmfzymf37rh92lckbzk"))
+
+(define rust-toml-datetime-0.7.5+spec-1.1.0
+ (crate-source "toml_datetime" "0.7.5+spec-1.1.0"
+ "0iqkgvgsxmszpai53dbip7sf2igic39s4dby29dbqf1h9bnwzqcj"))
+
+(define rust-toml-edit-0.24.0+spec-1.1.0
+ (crate-source "toml_edit" "0.24.0+spec-1.1.0"
+ "17phsw24qy7npya4b0m3f1ibs43hxypjq4lij5nhl5r0b4c0nx4c"))
+
+(define rust-toml-parser-1.0.6+spec-1.1.0
+ (crate-source "toml_parser" "1.0.6+spec-1.1.0"
+ "0i5zxv5y3z9g6r3gm6ly4q0hhkahh013q4rys2fz04cf195qn6d3"))
+
+(define rust-toml-writer-1.0.6+spec-1.1.0
+ (crate-source "toml_writer" "1.0.6+spec-1.1.0"
+ "01r6x42d1p8p5kzfsi1fm4dakm3w53vi69f2ivyqpvi1xm5g25mb"))
+
+(define rust-unicode-ident-1.0.22
+ (crate-source "unicode-ident" "1.0.22"
+ "1x8xrz17vqi6qmkkcqr8cyf0an76ig7390j9cnqnk47zyv2gf4lk"))
+
+(define rust-unicode-segmentation-1.12.0
+ (crate-source "unicode-segmentation" "1.12.0"
+ "14qla2jfx74yyb9ds3d2mpwpa4l4lzb9z57c6d2ba511458z5k7n"))
+
+(define rust-url-2.5.8
+ (crate-source "url" "2.5.8"
+ "1v8f7nx3hpr1qh76if0a04sj08k86amsq4h8cvpw6wvk76jahrzz"))
+
+(define rust-utf8-iter-1.0.4
+ (crate-source "utf8_iter" "1.0.4"
+ "1gmna9flnj8dbyd8ba17zigrp9c4c3zclngf5lnb5yvz1ri41hdn"))
+
+(define rust-utf8parse-0.2.2
+ (crate-source "utf8parse" "0.2.2"
+ "088807qwjq46azicqwbhlmzwrbkz7l4hpw43sdkdyyk524vdxaq6"))
+
+(define rust-v-frame-0.3.9
+ (crate-source "v_frame" "0.3.9"
+ "1qkvb4ks33zck931vzqckjn36hkngj6l2cwmvfsnlpc7r0kpfsv6"))
+
+(define rust-vcpkg-0.2.15
+ (crate-source "vcpkg" "0.2.15"
+ "09i4nf5y8lig6xgj3f7fyrvzd3nlaw4znrihw8psidvv5yk4xkdc"))
+
+(define rust-vergen-9.1.0
+ (crate-source "vergen" "9.1.0"
+ "0xdgrs146p81vbhg5y8svch3cghyi3yf07p8c7i8v7k3v3va2jdq"))
+
+(define rust-vergen-git2-1.0.7
+ (crate-source "vergen-git2" "1.0.7"
+ "1hfam6z3c4wicg2n14rdzgkp3ipffq77b878mnmqw2a5xh8yavjg"))
+
+(define rust-vergen-lib-0.1.6
+ (crate-source "vergen-lib" "0.1.6"
+ "0rn1x40xwx4zlj62nkl63y6sczar6hw1dq34n7y5jghg1h0yc1wv"))
+
+(define rust-vergen-lib-9.1.0
+ (crate-source "vergen-lib" "9.1.0"
+ "0sd5b5d5ygwi86k1b4n9vipqmyxqn4pr7qcs48pycncwgsx2jjmk"))
+
+(define rust-walkdir-2.5.0
+ (crate-source "walkdir" "2.5.0"
+ "0jsy7a710qv8gld5957ybrnc07gavppp963gs32xk4ag8130jy99"))
+
+(define rust-wallust-themes-1.1.0
+ (crate-source "wallust_themes" "1.1.0"
+ "1f27r2xd4gn5af5g8f2yws7ph7807cyg0d12ycmsvjhmk15pr6cf"))
+
+(define rust-wasi-0.11.1+wasi-snapshot-preview1
+ (crate-source "wasi" "0.11.1+wasi-snapshot-preview1"
+ "0jx49r7nbkbhyfrfyhz0bm4817yrnxgd3jiwwwfv0zl439jyrwyc"))
+
+(define rust-wasip2-1.0.2+wasi-0.2.9
+ (crate-source "wasip2" "1.0.2+wasi-0.2.9"
+ "1xdw7v08jpfjdg94sp4lbdgzwa587m5ifpz6fpdnkh02kwizj5wm"))
+
+(define rust-wasm-bindgen-0.2.108
+ (crate-source "wasm-bindgen" "0.2.108"
+ "0rl5pn80sdhj2p2r28lp3k50a8mpppzgwzssz2f3jdqyxhq4l0k4"))
+
+(define rust-wasm-bindgen-macro-0.2.108
+ (crate-source "wasm-bindgen-macro" "0.2.108"
+ "026nnvakp0w6j3ghpcxn31shj9wx8bv8x7nk3gkk40klkjfj72q0"))
+
+(define rust-wasm-bindgen-macro-support-0.2.108
+ (crate-source "wasm-bindgen-macro-support" "0.2.108"
+ "0m9sj475ypgifbkvksjsqs2gy3bq96f87ychch784m4gspiblmjj"))
+
+(define rust-wasm-bindgen-shared-0.2.108
+ (crate-source "wasm-bindgen-shared" "0.2.108"
+ "04ix7v99rvj5730553j58pqsrwpf9sqazr60y3cchx5cr60ba08z"))
+
+(define rust-web-sys-0.3.85
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "web-sys" "0.3.85"
+ "1645c202gyw21m6kxw4ya81vrapl40hlb8m9iqhjj8fra7jk4bii"))
+
+(define rust-weezl-0.1.12
+ (crate-source "weezl" "0.1.12"
+ "122a1dhha6cib5az4ihcqlh60ns2bi6rskdv875p94lbvj6wk2m2"))
+
+(define rust-winapi-0.3.9
+ (crate-source "winapi" "0.3.9"
+ "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw"))
+
+(define rust-winapi-i686-pc-windows-gnu-0.4.0
+ (crate-source "winapi-i686-pc-windows-gnu" "0.4.0"
+ "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"))
+
+(define rust-winapi-util-0.1.11
+ (crate-source "winapi-util" "0.1.11"
+ "08hdl7mkll7pz8whg869h58c1r9y7in0w0pk8fm24qc77k0b39y2"))
+
+(define rust-winapi-x86-64-pc-windows-gnu-0.4.0
+ (crate-source "winapi-x86_64-pc-windows-gnu" "0.4.0"
+ "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"))
+
+(define rust-windows-link-0.2.1
+ (crate-source "windows-link" "0.2.1"
+ "1rag186yfr3xx7piv5rg8b6im2dwcf8zldiflvb22xbzwli5507h"))
+
+(define rust-windows-sys-0.61.2
+ ;; TODO REVIEW: Check bundled sources.
+ (crate-source "windows-sys" "0.61.2"
+ "1z7k3y9b6b5h52kid57lvmvm05362zv1v8w0gc7xyv5xphlp44xf"))
+
+(define rust-winnow-0.7.14
+ (crate-source "winnow" "0.7.14"
+ "0a88ahjqhyn2ln1yplq2xsigm09kxqkdkkk2c2mfxkbzszln8lss"))
+
+(define rust-wit-bindgen-0.51.0
+ (crate-source "wit-bindgen" "0.51.0"
+ "19fazgch8sq5cvjv3ynhhfh5d5x08jq2pkw8jfb05vbcyqcr496p"))
+
+(define rust-writeable-0.6.2
+ (crate-source "writeable" "0.6.2"
+ "1fg08y97n6vk7l0rnjggw3xyrii6dcqg54wqaxldrlk98zdy1pcy"))
+
+(define rust-y4m-0.8.0
+ (crate-source "y4m" "0.8.0"
+ "0j24y2zf60lpxwd7kyg737hqfyqx16y32s0fjyi6fax6w4hlnnks"))
+
+(define rust-yoke-0.8.1
+ (crate-source "yoke" "0.8.1"
+ "0m29dm0bf5iakxgma0bj6dbmc3b8qi9b1vaw9sa76kdqmz3fbmkj"))
+
+(define rust-yoke-derive-0.8.1
+ (crate-source "yoke-derive" "0.8.1"
+ "0pbyja133jnng4mrhimzdq4a0y26421g734ybgz8wsgbfhl0andn"))
+
+(define rust-zerocopy-0.8.33
+ (crate-source "zerocopy" "0.8.33"
+ "1z9d6z8p1ndf0yrvw99jr5zcjnd4270kv4rivqqyi7hbs5l533v6"))
+
+(define rust-zerocopy-derive-0.8.33
+ (crate-source "zerocopy-derive" "0.8.33"
+ "1wbh4bil3kqfmiwxlpzhxba6fyh09nsy87k7idk8b1hadfr64y9c"))
+
+(define rust-zerofrom-0.1.6
+ (crate-source "zerofrom" "0.1.6"
+ "19dyky67zkjichsb7ykhv0aqws3q0jfvzww76l66c19y6gh45k2h"))
+
+(define rust-zerofrom-derive-0.1.6
+ (crate-source "zerofrom-derive" "0.1.6"
+ "00l5niw7c1b0lf1vhvajpjmcnbdp2vn96jg4nmkhq2db0rp5s7np"))
+
+(define rust-zerotrie-0.2.3
+ (crate-source "zerotrie" "0.2.3"
+ "0lbqznlqazmrwwzslw0ci7p3pqxykrbfhq29npj0gmb2amxc2n9a"))
+
+(define rust-zerovec-0.11.5
+ (crate-source "zerovec" "0.11.5"
+ "00m0p47k2g9mkv505hky5xh3r6ps7v8qc0dy4pspg542jj972a3c"))
+
+(define rust-zerovec-derive-0.11.2
+ (crate-source "zerovec-derive" "0.11.2"
+ "1wsig4h5j7a1scd5hrlnragnazjny9qjc44hancb6p6a76ay7p7a"))
+
+(define rust-zmij-1.0.15
+ (crate-source "zmij" "1.0.15"
+ "1lh3l2yqwdylg4mkn9y9pmpmng34g2k328d6km8c3qsg3w2krxll"))
+
+(define rust-zune-core-0.4.12
+ (crate-source "zune-core" "0.4.12"
+ "0jj1ra86klzlcj9aha9als9d1dzs7pqv3azs1j3n96822wn3lhiz"))
+
+(define rust-zune-core-0.5.1
+ (crate-source "zune-core" "0.5.1"
+ "1ya0zdqxlr5v57791j7bvm408ri2cfx81a4v6z85f560yw3hi2nb"))
+
+(define rust-zune-inflate-0.2.54
+ (crate-source "zune-inflate" "0.2.54"
+ "00kg24jh3zqa3i6rg6yksnb71bch9yi1casqydl00s7nw8pk7avk"))
+
+(define rust-zune-jpeg-0.4.21
+ (crate-source "zune-jpeg" "0.4.21"
+ "04r7g6y9jp7d4c9bq23rz3gwzlr1dsl7vdk4yly35bc4jf52rki9"))
+
+(define rust-zune-jpeg-0.5.10
+ (crate-source "zune-jpeg" "0.5.10"
+ "0ljpjxzz2rsq1x8pqdhvd40r1ny8mlzny10jf2md2shadhcbjbga"))
+
+(define-cargo-inputs lookup-cargo-inputs
+ (my-wallust =>
+ (list rust-adler2-2.0.1
+ rust-aho-corasick-1.1.4
+ rust-aligned-0.4.3
+ rust-aligned-vec-0.6.4
+ rust-alloca-0.4.0
+ rust-anes-0.1.6
+ rust-anstream-0.6.21
+ rust-anstyle-1.0.13
+ rust-anstyle-parse-0.2.7
+ rust-anstyle-query-1.1.5
+ rust-anstyle-wincon-3.0.11
+ rust-anyhow-1.0.100
+ rust-approx-0.5.1
+ rust-arbitrary-1.4.2
+ rust-arg-enum-proc-macro-0.3.4
+ rust-arrayvec-0.7.6
+ rust-as-slice-0.2.1
+ rust-autocfg-1.5.0
+ rust-av-scenechange-0.14.1
+ rust-av1-grain-0.2.5
+ rust-avif-serialize-0.8.6
+ rust-bit-field-0.10.3
+ rust-bitflags-2.10.0
+ rust-bitstream-io-4.9.0
+ rust-built-0.8.0
+ rust-bumpalo-3.19.1
+ rust-by-address-1.2.1
+ rust-bytemuck-1.24.0
+ rust-byteorder-lite-0.1.0
+ rust-camino-1.2.2
+ rust-cargo-platform-0.3.2
+ rust-cargo-metadata-0.23.1
+ rust-cast-0.3.0
+ rust-cc-1.2.53
+ rust-cfg-if-1.0.4
+ rust-ciborium-0.2.2
+ rust-ciborium-io-0.2.2
+ rust-ciborium-ll-0.2.2
+ rust-clap-4.5.54
+ rust-clap-builder-4.5.54
+ rust-clap-complete-4.5.65
+ rust-clap-derive-4.5.49
+ rust-clap-lex-0.7.7
+ rust-clap-mangen-0.2.31
+ rust-color-quant-1.1.0
+ rust-colorchoice-1.0.4
+ rust-convert-case-0.8.0
+ rust-core2-0.4.0
+ rust-crc32fast-1.5.0
+ rust-criterion-0.8.1
+ rust-criterion-plot-0.8.1
+ rust-crossbeam-deque-0.8.6
+ rust-crossbeam-epoch-0.9.18
+ rust-crossbeam-utils-0.8.21
+ rust-crunchy-0.2.4
+ rust-darling-0.20.11
+ rust-darling-core-0.20.11
+ rust-darling-macro-0.20.11
+ rust-deranged-0.5.5
+ rust-derive-builder-0.20.2
+ rust-derive-builder-core-0.20.2
+ rust-derive-builder-macro-0.20.2
+ rust-dirs-6.0.0
+ rust-dirs-sys-0.5.0
+ rust-displaydoc-0.2.5
+ rust-document-features-0.2.12
+ rust-documented-0.9.2
+ rust-documented-macros-0.9.2
+ rust-dunce-1.0.5
+ rust-dyn-clone-1.0.20
+ rust-either-1.15.0
+ rust-equator-0.4.2
+ rust-equator-macro-0.4.2
+ rust-equivalent-1.0.2
+ rust-errno-0.3.14
+ rust-exr-1.74.0
+ rust-fast-srgb8-1.0.0
+ rust-fast-image-resize-6.0.0
+ rust-fastrand-2.3.0
+ rust-fax-0.2.6
+ rust-fax-derive-0.2.0
+ rust-fdeflate-0.3.7
+ rust-find-msvc-tools-0.1.8
+ rust-flate2-1.1.8
+ rust-fnv-1.0.7
+ rust-foldhash-0.2.0
+ rust-form-urlencoded-1.2.2
+ rust-getrandom-0.2.17
+ rust-getrandom-0.3.4
+ rust-gif-0.14.1
+ rust-git2-0.20.3
+ rust-glob-0.3.3
+ rust-half-2.7.1
+ rust-hashbrown-0.16.1
+ rust-heck-0.4.1
+ rust-heck-0.5.0
+ rust-icu-collections-2.1.1
+ rust-icu-locale-core-2.1.1
+ rust-icu-normalizer-2.1.1
+ rust-icu-normalizer-data-2.1.1
+ rust-icu-properties-2.1.2
+ rust-icu-properties-data-2.1.2
+ rust-icu-provider-2.1.1
+ rust-ident-case-1.0.1
+ rust-idna-1.1.0
+ rust-idna-adapter-1.2.1
+ rust-image-0.25.9
+ rust-image-webp-0.2.4
+ rust-imgref-1.12.0
+ rust-indexmap-2.13.0
+ rust-interpolate-name-0.2.4
+ rust-is-terminal-polyfill-1.70.2
+ rust-itertools-0.13.0
+ rust-itertools-0.14.0
+ rust-itoa-1.0.17
+ rust-jobserver-0.1.34
+ rust-js-sys-0.3.85
+ rust-kmeans-colors-0.7.1
+ rust-lazy-static-1.5.0
+ rust-lebe-0.5.3
+ rust-libc-0.2.180
+ rust-libfuzzer-sys-0.4.10
+ rust-libgit2-sys-0.18.3+1.9.2
+ rust-libredox-0.1.12
+ rust-libz-sys-1.1.23
+ rust-linux-raw-sys-0.11.0
+ rust-litemap-0.8.1
+ rust-litrs-1.0.0
+ rust-log-0.4.29
+ rust-loop9-0.1.5
+ rust-maplit-1.0.2
+ rust-maybe-rayon-0.1.1
+ rust-memchr-2.7.6
+ rust-memo-map-0.3.3
+ rust-minijinja-2.14.0
+ rust-miniz-oxide-0.8.9
+ rust-moxcms-0.7.11
+ rust-new-debug-unreachable-1.0.6
+ rust-nom-8.0.0
+ rust-noop-proc-macro-0.3.0
+ rust-num-bigint-0.4.6
+ rust-num-conv-0.1.0
+ rust-num-derive-0.4.2
+ rust-num-integer-0.1.46
+ rust-num-rational-0.4.2
+ rust-num-traits-0.2.19
+ rust-num-threads-0.1.7
+ rust-once-cell-1.21.3
+ rust-once-cell-polyfill-1.70.2
+ rust-oorandom-11.1.5
+ rust-optfield-0.4.0
+ rust-option-ext-0.2.0
+ rust-owo-colors-4.2.3
+ rust-page-size-0.6.0
+ rust-palette-0.7.6
+ rust-palette-derive-0.7.6
+ rust-paste-1.0.15
+ rust-pastey-0.1.1
+ rust-percent-encoding-2.3.2
+ rust-phf-0.12.1
+ rust-phf-generator-0.12.1
+ rust-phf-macros-0.12.1
+ rust-phf-shared-0.12.1
+ rust-pkg-config-0.3.32
+ rust-plotters-0.3.7
+ rust-plotters-backend-0.3.7
+ rust-plotters-svg-0.3.7
+ rust-png-0.18.0
+ rust-potential-utf-0.1.4
+ rust-powerfmt-0.2.0
+ rust-ppv-lite86-0.2.21
+ rust-proc-macro2-1.0.105
+ rust-profiling-1.0.17
+ rust-profiling-procmacros-1.0.17
+ rust-pxfm-0.1.27
+ rust-qoi-0.4.1
+ rust-quick-error-2.0.1
+ rust-quote-1.0.43
+ rust-r-efi-5.3.0
+ rust-rand-0.9.2
+ rust-rand-chacha-0.9.0
+ rust-rand-core-0.9.5
+ rust-rav1e-0.8.1
+ rust-ravif-0.12.0
+ rust-rayon-1.11.0
+ rust-rayon-core-1.13.0
+ rust-redox-users-0.5.2
+ rust-ref-cast-1.0.25
+ rust-ref-cast-impl-1.0.25
+ rust-regex-1.12.2
+ rust-regex-automata-0.4.13
+ rust-regex-syntax-0.8.8
+ rust-rgb-0.8.52
+ rust-roff-0.2.2
+ rust-rustix-1.1.3
+ rust-rustversion-1.0.22
+ rust-same-file-1.0.6
+ rust-schemars-1.2.0
+ rust-schemars-derive-1.2.0
+ rust-self-cell-1.2.2
+ rust-semver-1.0.27
+ rust-serde-1.0.228
+ rust-serde-core-1.0.228
+ rust-serde-derive-1.0.228
+ rust-serde-derive-internals-0.29.1
+ rust-serde-json-1.0.149
+ rust-serde-spanned-1.0.4
+ rust-shellexpand-3.1.1
+ rust-shlex-1.3.0
+ rust-simd-adler32-0.3.8
+ rust-simd-helpers-0.1.0
+ rust-siphasher-1.0.1
+ rust-smallvec-1.15.1
+ rust-spinners-4.1.1
+ rust-stable-deref-trait-1.2.1
+ rust-strsim-0.11.1
+ rust-strum-0.24.1
+ rust-strum-0.27.2
+ rust-strum-macros-0.24.3
+ rust-strum-macros-0.27.2
+ rust-syn-1.0.109
+ rust-syn-2.0.114
+ rust-synstructure-0.13.2
+ rust-tempfile-3.24.0
+ rust-thiserror-2.0.18
+ rust-thiserror-impl-2.0.18
+ rust-tiff-0.10.3
+ rust-time-0.3.45
+ rust-time-core-0.1.7
+ rust-time-macros-0.2.25
+ rust-tinystr-0.8.2
+ rust-tinytemplate-1.2.1
+ rust-toml-0.9.11+spec-1.1.0
+ rust-toml-datetime-0.7.5+spec-1.1.0
+ rust-toml-edit-0.24.0+spec-1.1.0
+ rust-toml-parser-1.0.6+spec-1.1.0
+ rust-toml-writer-1.0.6+spec-1.1.0
+ rust-unicode-ident-1.0.22
+ rust-unicode-segmentation-1.12.0
+ rust-url-2.5.8
+ rust-utf8-iter-1.0.4
+ rust-utf8parse-0.2.2
+ rust-v-frame-0.3.9
+ rust-vcpkg-0.2.15
+ rust-vergen-9.1.0
+ rust-vergen-git2-1.0.7
+ rust-vergen-lib-0.1.6
+ rust-vergen-lib-9.1.0
+ rust-walkdir-2.5.0
+ rust-wallust-themes-1.1.0
+ rust-wasi-0.11.1+wasi-snapshot-preview1
+ rust-wasip2-1.0.2+wasi-0.2.9
+ rust-wasm-bindgen-0.2.108
+ rust-wasm-bindgen-macro-0.2.108
+ rust-wasm-bindgen-macro-support-0.2.108
+ rust-wasm-bindgen-shared-0.2.108
+ rust-web-sys-0.3.85
+ rust-weezl-0.1.12
+ rust-winapi-0.3.9
+ rust-winapi-i686-pc-windows-gnu-0.4.0
+ rust-winapi-util-0.1.11
+ rust-winapi-x86-64-pc-windows-gnu-0.4.0
+ rust-windows-link-0.2.1
+ rust-windows-sys-0.61.2
+ rust-winnow-0.7.14
+ rust-wit-bindgen-0.51.0
+ rust-writeable-0.6.2
+ rust-y4m-0.8.0
+ rust-yoke-0.8.1
+ rust-yoke-derive-0.8.1
+ rust-zerocopy-0.8.33
+ rust-zerocopy-derive-0.8.33
+ rust-zerofrom-0.1.6
+ rust-zerofrom-derive-0.1.6
+ rust-zerotrie-0.2.3
+ rust-zerovec-0.11.5
+ rust-zerovec-derive-0.11.2
+ rust-zmij-1.0.15
+ rust-zune-core-0.4.12
+ rust-zune-core-0.5.1
+ rust-zune-inflate-0.2.54
+ rust-zune-jpeg-0.4.21
+ rust-zune-jpeg-0.5.10)))
+
+(define-public wallust
+ (package
+ (name "wallust")
+ (version "3.5.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://codeberg.org/explosion-mental/wallust")
+ (commit version)))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0n4nc1zn626y4i2mabcvbqxqg4ks84ncfznlwk0x9hqcv0riw2b6"))))
+ (build-system cargo-build-system)
+ (arguments
+ (list
+ #:features '(list "buildgen")
+ #:imported-modules (append %copy-build-system-modules
+ %cargo-build-system-modules)
+ #:modules '((guix build cargo-build-system)
+ ((guix build copy-build-system) #:prefix copy:)
+ (guix build utils))
+ #:install-source? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'install-extras
+ (lambda args
+ (apply (assoc-ref copy:%standard-phases 'install)
+ #:install-plan
+ '(("completions/wallust.bash"
+ "share/bash-completion/completions/wallust")
+ ("completions/wallust.elv"
+ "share/elvish/lib/wallust")
+ ("completions/wallust.fish"
+ "share/fish/vendor_completions.d/")
+ ("completions/_wallust"
+ "share/zsh/site-functions/")
+ ("man/" "share/man/man1/" #:include-regexp ("\\.1$"))
+ ("man/" "share/man/man5/" #:include-regexp ("\\.5$")))
+ args))))))
+ (inputs (lookup-cargo-inputs 'my-wallust))
+ (home-page "https://explosion-mental.codeberg.page/wallust")
+ (synopsis "Generate themes from images with advanced templating")
+ (description
+ "Wallust is a rust-based successor to \"pywal\" which generates color
+themes from images with advanced templating and generation options.
+Templates are made using either a subset of Jinja2 or pywal syntax.
+Color generation may be constrained to obey ANSI color standards, meet
+minimum contrast levels, and more.")
+ (license license:expat)))
+wallust
+
diff --git a/mirenn/services/tailscale.scm b/mirenn/services/tailscale.scm
new file mode 100644
index 0000000..b227b19
--- /dev/null
+++ b/mirenn/services/tailscale.scm
@@ -0,0 +1,34 @@
+(define-module (mirenn services tailscale)
+ #:use-module (guix gexp)
+ #:use-module (gnu services)
+ #:use-module (gnu services shepherd)
+ #:use-module (mirenn packages tailscale))
+
+(define (tailscale-shepherd-service config)
+ (list
+ (shepherd-service
+ (documentation "Run the tailscale daemon")
+ (provision '(tailscale tailscaled))
+ (requirement '(user-processes NetworkManager))
+ (start #~(make-forkexec-constructor
+ ;; (mkdir-p "/var/lib/tailscale")
+ ;; (mkdir-p "/run/tailscale")
+ (list #$(file-append tailscale "/bin/tailscaled"))))
+ ;; "--state=/var/lib/tailscale/tailscaled.state"
+ ;; "--socket=/run/tailscale/tailscaled.sock"
+ ;; "--port=41641")
+ ;; #:preserve-environment? #t
+ ;; #:directory "/var/lib/tailscale"))
+ (stop #~(make-kill-destructor)))))
+ ;; (list #(file-append tailscale "bin/tailscaled")
+ ;; "--cleanup")))))
+
+(define-public tailscale-service-type
+ (service-type
+ (name 'tailscale)
+ (extensions
+ (list (service-extension shepherd-root-service-type tailscale-shepherd-service)
+ (service-extension profile-service-type (lambda _
+ (list tailscale)))))
+ (default-value #f)
+ (description "Run and connect to tailscale")))
diff --git a/mirenn/system.scm b/mirenn/system.scm
new file mode 100644
index 0000000..0a112f7
--- /dev/null
+++ b/mirenn/system.scm
@@ -0,0 +1,84 @@
+(define-module (mirenn system))
+
+(use-modules (gnu)
+ (nongnu packages linux)
+ (nongnu system linux-initrd)
+ (mirenn packages pki)
+ (mirenn services tailscale))
+(use-package-modules shells fonts linux finance)
+(use-service-modules xorg desktop ssh pm base)
+
+(operating-system
+ (locale "en_US.utf8")
+ (timezone "Europe/Rome")
+ (keyboard-layout (keyboard-layout "it"))
+ (host-name "zenbook")
+
+ (kernel linux)
+ (kernel-arguments (cons* "mem_sleep_default=s2idle"
+ "resume=c3e1bb45-fc45-4934-853b-e5cd5a1688d7"
+ %default-kernel-arguments))
+ (initrd microcode-initrd)
+ (firmware (cons* linux-firmware
+ sof-firmware
+ %base-firmware))
+
+ (bootloader (bootloader-configuration
+ (bootloader grub-efi-bootloader)
+ (targets (list "/boot/efi"))
+ (keyboard-layout keyboard-layout)))
+ (swap-devices (list (swap-space
+ (target (uuid
+ "c3e1bb45-fc45-4934-853b-e5cd5a1688d7")))))
+ (file-systems (cons* (file-system
+ (mount-point "/boot/efi")
+ (device (uuid
+ "9FAB-A387"
+ 'fat32))
+ (type "vfat"))
+ (file-system
+ (mount-point "/")
+ (device (uuid
+ "372783f2-fa50-400e-8a9a-53bbaabc1566"
+ 'ext4))
+ (type "ext4"))
+ %base-file-systems))
+
+ (users (cons* (user-account
+ (name "mirenn")
+ (group "users")
+ (home-directory "/home/mirenn")
+ (shell (file-append fish "/bin/fish"))
+ (supplementary-groups '("wheel" "netdev" "audio" "video" "input")))
+ %base-user-accounts))
+
+ (packages (cons* alsa-ucm-conf
+ custom-certs
+ %base-packages))
+
+ (services (cons* (service openssh-service-type)
+ (service bluetooth-service-type)
+ (service tlp-service-type)
+ (service tailscale-service-type)
+ (service console-font-service-type
+ `(("tty1" . ,(file-append font-terminus "share/consolefonts/ter-v24n"))
+ ("tty2" . ,(file-append font-terminus "share/consolefonts/ter-v24n"))
+ ("tty3" . ,(file-append font-terminus "share/consolefonts/ter-v24n"))
+ ("tty4" . ,(file-append font-terminus "share/consolefonts/ter-v24n"))
+ ("tty5" . ,(file-append font-terminus "share/consolefonts/ter-v24n"))
+ ("tty6" . ,(file-append font-terminus "share/consolefonts/ter-v24n"))))
+ (udev-rules-service 'trezor trezord-udev-rules)
+ (simple-service 'swaylock-pam-service
+ pam-root-service-type
+ (list (unix-pam-service "swaylock")))
+ (modify-services %desktop-services
+ (delete gdm-service-type)
+ (delete console-font-service-type)
+ (guix-service-type config => (guix-configuration
+ (inherit config)
+ (substitute-urls
+ (cons* "https://substitutes.nonguix.org"
+ %default-substitute-urls))
+ (authorized-keys
+ (cons* (local-file "/etc/guix/nonguix-signing-key.pub")
+ %default-authorized-guix-keys))))))))