summary refs log tree commit diff
path: root/gnu/packages/rust-apps.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/rust-apps.scm')
-rw-r--r--gnu/packages/rust-apps.scm1602
1 files changed, 984 insertions, 618 deletions
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index ab8534f64a..01e01ecba3 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
-;;; Copyright © 2019-2023 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019-2024 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
@@ -25,8 +25,11 @@
 ;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2023 Arnav Andrew Jose <arnav.jose@gmail.com>
 ;;; Copyright © 2023 Wilko Meyer <w@wmeyer.eu>
-;;; Copyright © 2023 Jaeme Sifat <jaeme@runbox.com>
+;;; Copyright © 2023, 2024 Jaeme Sifat <jaeme@runbox.com>
 ;;; Copyright © 2023 Steve George <steve@futurile.net>
+;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com>
+;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
+;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -58,8 +61,14 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crates-apple)
+  #:use-module (gnu packages crates-crypto)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages crates-graphics)
+  #:use-module (gnu packages crates-tls)
+  #:use-module (gnu packages crates-vcs)
+  #:use-module (gnu packages crates-web)
+  #:use-module (gnu packages crates-windows)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
@@ -74,10 +83,12 @@
   #:use-module (gnu packages kde)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages shells)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
@@ -91,31 +102,35 @@
 (define-public agate
   (package
     (name "agate")
-    (version "2.5.2")
+    (version "3.2.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "agate" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1mhrl4j5r6wzsnwpqsbgzny5vqschyjm3gnk4y88har7skk7j19v"))))
+        (base32 "1wvbhzm4k3hdy8x7aq8rj3galhgfizdwf5fi419hzvg3kmvbawh1"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
-       (("rust-configparser" ,rust-configparser-2)
-        ("rust-env-logger" ,rust-env-logger-0.8)
+     `(#:install-source? #f
+       #:cargo-inputs
+       (("rust-configparser" ,rust-configparser-3)
+        ("rust-env-logger" ,rust-env-logger-0.9)
+        ("rust-futures-util" ,rust-futures-util-0.3)
         ("rust-getopts" ,rust-getopts-0.2)
         ("rust-glob" ,rust-glob-0.3)
         ("rust-log" ,rust-log-0.4)
         ("rust-mime-guess" ,rust-mime-guess-2)
         ("rust-once-cell" ,rust-once-cell-1)
         ("rust-percent-encoding" ,rust-percent-encoding-2)
-        ("rust-rustls" ,rust-rustls-0.19)
+        ("rust-rcgen" ,rust-rcgen-0.9)
+        ("rust-rustls" ,rust-rustls-0.20)
         ("rust-tokio" ,rust-tokio-1)
-        ("rust-tokio-rustls" ,rust-tokio-rustls-0.22)
-        ("rust-url" ,rust-url-2))))
-    (native-inputs
-     (list perl))
+        ("rust-tokio-rustls" ,rust-tokio-rustls-0.23)
+        ("rust-url" ,rust-url-2)
+        ("rust-webpki" ,rust-webpki-0.22))
+       #:cargo-development-inputs (("rust-anyhow" ,rust-anyhow-1)
+                                   ("rust-gemini-fetch" ,rust-gemini-fetch-0.2))))
     (home-page "https://github.com/mbrubeck/agate")
     (synopsis "Very simple server for the Gemini hypertext protocol")
     (description
@@ -192,7 +207,7 @@ low-end hardware and serving many concurrent requests.")
        (("rust-serde-bytes" ,rust-serde-bytes-0.11)
         ("rust-serde-derive" ,rust-serde-derive-1))))
     (native-inputs
-     (list perl pkg-config))
+     (list pkg-config))
     (inputs
      (list at-spi2-core
            gtk
@@ -211,57 +226,91 @@ alternative zones.")
 (define-public bat
   (package
     (name "bat")
-    (version "0.20.0")
+    (version "0.24.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "bat" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "05sj0chxpai26fhk1k7p5m54v3j7n1x64ayx53mcimsj1skdr77m"))))
+        (base32 "11nc2iv2qhd1bs16yijqq934864ybnmg485rny70scy26xb9xk4x"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin (substitute* "Cargo.toml"
+                  (("\"~([[:digit:]]+(\\.[[:digit:]]+)*)" _ version)
+                   (string-append "\"^" version)))))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
-       (("rust-ansi-colours" ,rust-ansi-colours-1)
-        ("rust-ansi-term" ,rust-ansi-term-0.12)
-        ("rust-atty" ,rust-atty-0.2)
+     (list
+      #:install-source? #f
+      #:cargo-inputs
+      `(("rust-ansi-colours" ,rust-ansi-colours-1)
         ("rust-bincode" ,rust-bincode-1)
-        ("rust-bugreport" ,rust-bugreport-0.4)
+        ("rust-bugreport" ,rust-bugreport-0.5)
         ("rust-bytesize" ,rust-bytesize-1)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-clircle" ,rust-clircle-0.3)
+        ("rust-clap" ,rust-clap-4)
+        ("rust-clircle" ,rust-clircle-0.4)
         ("rust-console" ,rust-console-0.15)
         ("rust-content-inspector" ,rust-content-inspector-0.2)
-        ("rust-dirs-next" ,rust-dirs-next-2)
-        ("rust-encoding" ,rust-encoding-0.2)
+        ("rust-encoding-rs" ,rust-encoding-rs-0.8)
+        ("rust-etcetera" ,rust-etcetera-0.8)
         ("rust-flate2" ,rust-flate2-1)
-        ("rust-git2" ,rust-git2-0.13)
+        ("rust-git2" ,rust-git2-0.18)
         ("rust-globset" ,rust-globset-0.4)
         ("rust-grep-cli" ,rust-grep-cli-0.1)
+        ("rust-home" ,rust-home-0.5)
+        ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.49)
         ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-os-str-bytes" ,rust-os-str-bytes-6)
         ("rust-path-abs" ,rust-path-abs-0.5)
+        ("rust-plist" ,rust-plist-1)
         ("rust-regex" ,rust-regex-1)
+        ("rust-run-script" ,rust-run-script-0.10)
         ("rust-semver" ,rust-semver-1)
         ("rust-serde" ,rust-serde-1)
-        ("rust-serde-yaml" ,rust-serde-yaml-0.8)
+        ("rust-serde-yaml" ,rust-serde-yaml-0.9)
         ("rust-shell-words" ,rust-shell-words-1)
-        ("rust-syntect" ,rust-syntect-4)
+        ("rust-syntect" ,rust-syntect-5)
         ("rust-thiserror" ,rust-thiserror-1)
         ("rust-unicode-width" ,rust-unicode-width-0.1)
         ("rust-walkdir" ,rust-walkdir-2)
         ("rust-wild" ,rust-wild-2))
-       #:cargo-development-inputs
-       (("rust-assert-cmd" ,rust-assert-cmd-2)
-        ("rust-nix" ,rust-nix-0.23)
-        ("rust-predicates" ,rust-predicates-2)
-        ("rust-serial-test" ,rust-serial-test-0.5)
+      #:cargo-development-inputs
+      `(("rust-assert-cmd" ,rust-assert-cmd-2)
+        ("rust-expect-test" ,rust-expect-test-1)
+        ("rust-nix" ,rust-nix-0.26)
+        ("rust-predicates" ,rust-predicates-3)
+        ("rust-serial-test" ,rust-serial-test-2)
         ("rust-tempfile" ,rust-tempfile-3)
-        ("rust-wait-timeout" ,rust-wait-timeout-0.2))))
-    (native-inputs
-     (list pkg-config))
-    (inputs
-     (list libgit2 zlib))
+        ("rust-wait-timeout" ,rust-wait-timeout-0.2))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'pre-build
+            (lambda _
+              (setenv "BAT_ASSETS_GEN_DIR" "target")))
+          (add-after 'install 'install-extras
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (share (string-append out "/share"))
+                     (bash-completions-dir
+                      (string-append share "/bash-completion/completions"))
+                     (zsh-completions-dir
+                      (string-append share "/zsh/site-functions"))
+                     (fish-completions-dir
+                      (string-append share "/fish/vendor_completions.d"))
+                     (man1 (string-append share "/man/man1")))
+                (mkdir-p bash-completions-dir)
+                (mkdir-p zsh-completions-dir)
+                (mkdir-p fish-completions-dir)
+                (copy-file "target/assets/completions/bat.bash"
+                           (string-append bash-completions-dir "/bat"))
+                (copy-file "target/assets/completions/bat.zsh"
+                           (string-append zsh-completions-dir "/_bat"))
+                (install-file "target/assets/completions/bat.fish"
+                              fish-completions-dir)
+                (install-file "target/assets/manual/bat.1" man1)))))))
+    (native-inputs (list pkg-config))
+    (inputs (list libgit2-1.7 zlib))
     (home-page "https://github.com/sharkdp/bat")
     (synopsis "@command{cat} clone with syntax highlighting and git integration")
     (description
@@ -270,38 +319,67 @@ highlighting for a large number of languages, git integration, and automatic
 paging.")
     (license (list license:expat license:asl2.0))))
 
+(define-public cargo-machete
+  (package
+    (name "cargo-machete")
+    (version "0.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri name version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0lbymfxgcizmj1c1ydpzinjbjhc7c9j0wb5y1xq33j80s5hzayaz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f ;Error: No such file or directory (os error 2)
+       #:cargo-inputs (("rust-anyhow" ,rust-anyhow-1)
+                       ("rust-argh" ,rust-argh-0.1)
+                       ("rust-cargo-metadata" ,rust-cargo-metadata-0.18)
+                       ("rust-cargo-toml" ,rust-cargo-toml-0.16)
+                       ("rust-grep" ,rust-grep-0.2)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.5)
+                       ("rust-rayon" ,rust-rayon-1)
+                       ("rust-serde" ,rust-serde-1)
+                       ("rust-toml-edit" ,rust-toml-edit-0.20)
+                       ("rust-walkdir" ,rust-walkdir-2))))
+    (home-page "https://github.com/est31/cargo-udeps")
+    (synopsis "Find unused dependencies in Cargo.toml")
+    (description "@code{cargo-machete} finds unused dependencies in Cargo.toml.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public diffr
   (package
     (name "diffr")
-    (version "0.1.4")
+    (version "0.1.5")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "diffr" version))
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
-          (base32 "1b0mz1ki2ksxni6g49x5l5j9ijpyhc11mywvxr9i9h3nr098nc5l"))))
+          (base32 "1kdngd5g1ssdiq7d10jr3jwg0sx740x3vmhq3j594a5kd467ikib"))))
     (build-system cargo-build-system)
     (arguments
      `(#:install-source? #f
        ;; https://github.com/mookid/diffr/issues/79
        #:cargo-test-flags
        '("--release" "--"
-         "--skip=tests::success"
-         "--skip=test_cli::color_invalid_attribute_name"
-         "--skip=test_cli::color_invalid_color_not_done"
-         "--skip=test_cli::color_invalid_color_value_ansi"
-         "--skip=test_cli::color_invalid_color_value_name"
-         "--skip=test_cli::color_invalid_color_value_rgb"
-         "--skip=test_cli::color_invalid_face_name"
-         "--skip=test_cli::color_ok"
-         "--skip=test_cli::color_ok_multiple"
-         "--skip=test_cli::color_only_face_name"
-         "--skip=test_cli::debug_flag")
+         "--skip=tests_cli::color_invalid_attribute_name"
+         "--skip=tests_cli::color_invalid_color_not_done"
+         "--skip=tests_cli::color_invalid_color_value_ansi"
+         "--skip=tests_cli::color_invalid_color_value_name"
+         "--skip=tests_cli::color_invalid_color_value_rgb"
+         "--skip=tests_cli::color_invalid_face_name"
+         "--skip=tests_cli::color_ok"
+         "--skip=tests_cli::color_ok_multiple"
+         "--skip=tests_cli::color_only_face_name"
+         "--skip=tests_cli::debug_flag"
+         "--skip=tests_cli::line_numbers_style"
+         "--skip=tests_cli::test_bad_argument")
        #:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-diffr-lib" ,rust-diffr-lib-0.1)
         ("rust-termcolor" ,rust-termcolor-1))))
     (home-page "https://github.com/mookid/diffr")
     (synopsis "Longest Common Sequence based diff highlighting tool")
@@ -313,31 +391,34 @@ highlighting tool to ease code review from your terminal.")
 (define-public drill
   (package
     (name "drill")
-    (version "0.7.1")
+    (version "0.8.2")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "drill" version))
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
-          (base32 "1m73d7rzi0p5c1hn0081d2235kcyapdza7h0vqf5jhnirpnjn793"))))
+          (base32 "0jp9r19zc9m3hgxc7a98fhyi1ga0qwjprxjsqaxiykmjpb86bxf3"))))
     (build-system cargo-build-system)
     (arguments
-      `(#:cargo-inputs
+      `(#:install-source? #f
+        #:cargo-inputs
         (("rust-async-trait" ,rust-async-trait-0.1)
          ("rust-clap" ,rust-clap-2)
-         ("rust-colored" ,rust-colored-1)
+         ("rust-colored" ,rust-colored-2)
          ("rust-csv" ,rust-csv-1)
          ("rust-futures" ,rust-futures-0.3)
+         ("rust-hdrhistogram" ,rust-hdrhistogram-7)
          ("rust-lazy-static" ,rust-lazy-static-1)
          ("rust-linked-hash-map" ,rust-linked-hash-map-0.5)
          ("rust-num-cpus" ,rust-num-cpus-1)
-         ("rust-rand" ,rust-rand-0.7)
+         ("rust-openssl-sys" ,rust-openssl-sys-0.9)
+         ("rust-rand" ,rust-rand-0.8)
          ("rust-regex" ,rust-regex-1)
-         ("rust-reqwest" ,rust-reqwest-0.10)
+         ("rust-reqwest" ,rust-reqwest-0.11)
          ("rust-serde" ,rust-serde-1)
          ("rust-serde-json" ,rust-serde-json-1)
-         ("rust-tokio" ,rust-tokio-0.2)
+         ("rust-tokio" ,rust-tokio-1)
          ("rust-url" ,rust-url-2)
          ("rust-yaml-rust" ,rust-yaml-rust-0.4))))
     (native-inputs
@@ -347,7 +428,7 @@ highlighting tool to ease code review from your terminal.")
     (home-page "https://github.com/fcsonline/drill")
     (synopsis "HTTP load testing application")
     (description
-      "Drill is a HTTP load testing application written in Rust inspired by
+     "Drill is a HTTP load testing application written in Rust inspired by
 Ansible syntax.  Benchmark files can be written in YAML.")
     (license license:gpl3)))
 
@@ -387,103 +468,17 @@ Features include:
 @end enumerate\n")
     (license license:gpl3)))
 
-(define-public exa
-  (package
-    (name "exa")
-    (version "0.10.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "exa" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1dd7waq2bnxc1xwygqphi8k1g2qzykr6fk0q4rgrhhxp2jd09f04"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:install-source? #f
-       #:cargo-inputs
-       (("rust-ansi-term" ,rust-ansi-term-0.12)
-        ("rust-datetime" ,rust-datetime-0.5)
-        ("rust-env-logger" ,rust-env-logger-0.6)
-        ("rust-git2" ,rust-git2-0.13)
-        ("rust-glob" ,rust-glob-0.3)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-locale" ,rust-locale-0.2)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-natord" ,rust-natord-1)
-        ("rust-num-cpus" ,rust-num-cpus-1)
-        ("rust-number-prefix" ,rust-number-prefix-0.4)
-        ("rust-scoped-threadpool" ,rust-scoped-threadpool-0.1)
-        ("rust-term-grid" ,rust-term-grid-0.1)
-        ("rust-term-size" ,rust-term-size-0.3)
-        ("rust-unicode-width" ,rust-unicode-width-0.1)
-        ("rust-users" ,rust-users-0.11)
-        ("rust-zoneinfo-compiled" ,rust-zoneinfo-compiled-0.5))
-       #:cargo-development-inputs
-       (("rust-datetime" ,rust-datetime-0.5))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'build 'build-manual
-           (lambda* (#:key inputs #:allow-other-keys)
-             (when (assoc-ref inputs "pandoc")
-               (map (lambda (page)
-                      (with-output-to-file page
-                        (lambda _
-                          (invoke "pandoc" "--standalone"
-                                  "-f" "markdown"
-                                  "-t" "man"
-                                  (string-append "man/" page ".md")))))
-                    (list "exa.1" "exa_colors.5")))))
-         (add-after 'install 'install-extras
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out   (assoc-ref outputs "out"))
-                    (share (string-append out "/share"))
-                    (man1  (string-append share "/man/man1"))
-                    (man5  (string-append share "/man/man5")))
-               (when (file-exists? "exa.1")
-                 (install-file "exa.1" man1))
-               (when (file-exists? "exa_colors.5")
-                 (install-file "exa_colors.5" man5))
-               (mkdir-p (string-append out "/etc/bash_completion.d"))
-               (mkdir-p (string-append share "/fish/vendor_completions.d"))
-               (mkdir-p (string-append share "/zsh/site-functions"))
-               (copy-file "completions/completions.bash"
-                          (string-append out "/etc/bash_completion.d/exa"))
-               (copy-file "completions/completions.fish"
-                          (string-append
-                            share "/fish/vendor_completions.d/exa.fish"))
-               (copy-file "completions/completions.zsh"
-                          (string-append
-                            share "/zsh/site-functions/_exa"))))))))
-    (inputs (list libgit2 zlib))
-    (native-inputs
-     (append
-       (list pkg-config)
-       (if (member (%current-system)
-                   (package-transitive-supported-systems pandoc))
-         (list pandoc)
-         '())))
-    (home-page "https://the.exa.website/")
-    (synopsis "Modern replacement for ls")
-    (description "@code{exa} is a modern replacement for the command-line
-program @code{ls}.  It uses colours to distinguish file types and metadata.  It
-also knows about symlinks, extended attributes, and Git.")
-    (license license:expat)))
-
 (define-public eza
   (package
     (name "eza")
-    (version "0.15.2")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "eza" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "14qapnxc1rwqsq6c13b35wgaiypn23niajk39c44i1w3if91rd85"))))
+        (base32 "026xagh42nrdy2yg9197mmb2bhm5mdvbf9vd9fk9iysrj1iay63r"))))
     (build-system cargo-build-system)
     (arguments
      (list
@@ -499,8 +494,10 @@ also knows about symlinks, extended attributes, and Git.")
                        ("rust-num-cpus" ,rust-num-cpus-1)
                        ("rust-number-prefix" ,rust-number-prefix-0.4)
                        ("rust-once-cell" ,rust-once-cell-1)
+                       ("rust-palette" ,rust-palette-0.7)
                        ("rust-percent-encoding" ,rust-percent-encoding-2)
                        ("rust-phf" ,rust-phf-0.11)
+                       ("rust-plist" ,rust-plist-1)
                        ("rust-proc-mounts" ,rust-proc-mounts-0.3)
                        ("rust-scoped-threadpool" ,rust-scoped-threadpool-0.1)
                        ("rust-terminal-size" ,rust-terminal-size-0.3)
@@ -508,7 +505,7 @@ also knows about symlinks, extended attributes, and Git.")
                        ("rust-unicode-width" ,rust-unicode-width-0.1)
                        ("rust-uutils-term-grid" ,rust-uutils-term-grid-0.3)
                        ("rust-uzers" ,rust-uzers-0.11)
-                       ("rust-windows-sys" ,rust-windows-sys-0.48)
+                       ("rust-windows-sys" ,rust-windows-sys-0.52)
                        ("rust-zoneinfo-compiled" ,rust-zoneinfo-compiled-0.5))
       #:cargo-development-inputs `(("rust-criterion" ,rust-criterion-0.5)
                                    ("rust-trycmd" ,rust-trycmd-0.14))
@@ -528,31 +525,33 @@ also knows about symlinks, extended attributes, and Git.")
                      (lambda* (#:key outputs #:allow-other-keys)
                        (let* ((out (assoc-ref outputs "out"))
                               (share (string-append out "/share"))
+                              (bash-completions-dir (string-append share
+                                                     "/bash-completion/completions"))
+                              (zsh-completions-dir (string-append share
+                                                    "/zsh/site-functions"))
+                              (fish-completions-dir (string-append share
+                                                     "/fish/vendor_completions.d"))
                               (man1 (string-append share "/man/man1"))
                               (man5 (string-append share "/man/man5")))
                          (when (file-exists? "eza.1")
                            (install-file "eza.1" man1))
                          (when (file-exists? "eza_colors.5")
                            (install-file "eza_colors.5" man5))
-                         (mkdir-p (string-append out "/etc/bash_completion.d"))
-                         (mkdir-p (string-append
-                                    share "/fish/vendor_completions.d"))
-                         (mkdir-p (string-append share "/zsh/site-functions"))
+                         (mkdir-p bash-completions-dir)
+                         (mkdir-p zsh-completions-dir)
+                         (mkdir-p fish-completions-dir)
                          (copy-file "completions/bash/eza"
-                                    (string-append
-                                      out "/etc/bash_completion.d/eza"))
-                         (copy-file "completions/fish/eza.fish"
-                                    (string-append
-                                      share "/fish/vendor_completions.d/eza.fish"))
+                                    (string-append bash-completions-dir "/eza"))
                          (copy-file "completions/zsh/_eza"
-                                    (string-append
-                                      share "/zsh/site-functions/_eza"))))))))
+                                    (string-append zsh-completions-dir "/_eza"))
+                         (copy-file "completions/fish/eza.fish"
+                                    (string-append fish-completions-dir
+                                                   "/eza.fish"))))))))
     (native-inputs
-     (append
-       (list pkg-config)
-       (if (supported-package? pandoc)
-         (list pandoc)
-         '())))
+     (append (list pkg-config)
+             (if (supported-package? pandoc)
+                 (list pandoc)
+                 '())))
     (inputs (list libgit2-1.7 zlib))
     (home-page "https://github.com/eza-community/eza")
     (synopsis "Modern replacement for ls")
@@ -563,10 +562,13 @@ metadata.  It also knows about symlinks, extended attributes, and Git.
 This package is the community maintained fork of @code{exa}.")
     (license license:expat)))
 
+(define-public exa
+  (deprecated-package "exa" eza))
+
 (define-public fd
   (package
     (name "fd")
-    (version "8.7.0")
+    (version "9.0.0")
     (source
      (origin
        (method url-fetch)
@@ -575,106 +577,127 @@ This package is the community maintained fork of @code{exa}.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "186217yyb0znfn4jcc9l3i51fhfyb23lhbm3gg084sdrbj6bdnbg"))))
+         "1is6xrsnbiy4la3lrmxzl3pzzkygnx9mp8h5k8gfrc29bq8m7891"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-test-flags
-       '("--release"
-         "--"
-         ;; No user 'root' in the build environment.
-         "--skip=test_owner_root")
-       #:install-source? #f
-       #:cargo-inputs
-       (("rust-anyhow" ,rust-anyhow-1)
+     (list
+      #:cargo-test-flags
+      ;; No user 'root' in the build environment.
+      '(list "--release" "--"
+             "--skip=test_owner_root")
+      #:install-source? #f
+      #:cargo-inputs
+      `(("rust-aho-corasick" ,rust-aho-corasick-1)
+        ("rust-anyhow" ,rust-anyhow-1)
         ("rust-argmax" ,rust-argmax-0.3)
-        ("rust-atty" ,rust-atty-0.2)
         ("rust-chrono" ,rust-chrono-0.4)
         ("rust-clap" ,rust-clap-4)
         ("rust-clap-complete" ,rust-clap-complete-4)
         ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
         ("rust-ctrlc" ,rust-ctrlc-3)
-        ("rust-dirs-next" ,rust-dirs-next-2)
+        ("rust-etcetera" ,rust-etcetera-0.8)
         ("rust-faccess" ,rust-faccess-0.2)
         ("rust-globset" ,rust-globset-0.4)
         ("rust-humantime" ,rust-humantime-2)
         ("rust-ignore" ,rust-ignore-0.4)
         ("rust-jemallocator" ,rust-jemallocator-0.5)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-lscolors" ,rust-lscolors-0.13)
-        ("rust-nix" ,rust-nix-0.26)
-        ("rust-normpath" ,rust-normpath-0.3)
-        ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.46)
-        ("rust-num-cpus" ,rust-num-cpus-1)
-        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-lscolors" ,rust-lscolors-0.16)
+        ("rust-nix" ,rust-nix-0.27)
+        ("rust-normpath" ,rust-normpath-1)
+        ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.49)
         ("rust-regex" ,rust-regex-1)
-        ("rust-regex-syntax" ,rust-regex-syntax-0.6)
-        ("rust-users" ,rust-users-0.11)
+        ("rust-regex-syntax" ,rust-regex-syntax-0.8)
         ("rust-version-check" ,rust-version-check-0.9))
-       #:cargo-development-inputs
-       (("rust-diff" ,rust-diff-0.1)
+      #:cargo-development-inputs
+      `(("rust-diff" ,rust-diff-0.1)
         ("rust-filetime" ,rust-filetime-0.2)
         ("rust-tempfile" ,rust-tempfile-3)
-        ("rust-test-case" ,rust-test-case-2))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-jemalloc
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((jemalloc (assoc-ref inputs "jemalloc")))
-               ;; This flag is needed when not using the bundled jemalloc.
-               ;; https://github.com/tikv/jemallocator/issues/19
-               (setenv "CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS" "1")
-               (setenv "JEMALLOC_OVERRIDE"
-                       (string-append jemalloc "/lib/libjemalloc.so")))))
-         (add-after 'unpack 'adjust-feature-flags
-           (lambda _
-             ;; unstable-grouped was stablized in rust-clap 4.2.0
-             (substitute* "Cargo.toml"
-               ((".*unstable-grouped.*") ""))))
-         (add-after 'install 'install-extra
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               ;; Manpages
-               (install-file "doc/fd.1" (string-append out "/share/man/man1"))
-               ;; Completions require running the built binary.
-               (unless ,(%current-target-system)
-                 (invoke "make" "completions")
-                 (install-file "autocomplete/fd.bash"
-                               (string-append out "/etc/bash_completion.d"))
-                 (install-file "autocomplete/fd.fish"
-                               (string-append out "/share/fish/vendor_completions.d"))
-                 (install-file "autocomplete/_fd"
-                               (string-append out "/share/zsh/site-functions"))
-                 (rename-file (string-append out "/etc/bash_completion.d/fd.bash")
-                              (string-append out "/etc/bash_completion.d/fd")))))))))
-    (inputs (list jemalloc))
-    (home-page "https://github.com/sharkdp/fd")
-    (synopsis "Simple, fast and user-friendly alternative to find")
-    (description
-     "@code{fd} is a simple, fast and user-friendly alternative to @code{find}.
-While it does not seek to mirror all of find's powerful functionality, it
-provides defaults for 80% of the use cases.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-test-case" ,rust-test-case-3))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'override-jemalloc
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((jemalloc (assoc-ref inputs "jemalloc")))
+                ;; This flag is needed when not using the bundled jemalloc.
+                ;; https://github.com/tikv/jemallocator/issues/19
+                (setenv "CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS" "1")
+                (setenv "JEMALLOC_OVERRIDE"
+                        (string-append jemalloc "/lib/libjemalloc.so")))))
+          (add-after 'install 'install-extras
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                ;; Manpages
+                (install-file "doc/fd.1" (string-append out "/share/man/man1"))
+                ;; Completions require running the built binary.
+                (unless #$(%current-target-system)
+                  (invoke "make" "completions")
+                  (install-file "autocomplete/fd.bash"
+                                (string-append out "/etc/bash_completion.d"))
+                  (install-file "autocomplete/fd.fish"
+                                (string-append out "/share/fish/vendor_completions.d"))
+                  (install-file "autocomplete/_fd"
+                                (string-append out "/share/zsh/site-functions"))
+                  (rename-file (string-append out "/etc/bash_completion.d/fd.bash")
+                               (string-append out "/etc/bash_completion.d/fd")))))))))
+     (inputs (list jemalloc))
+     (home-page "https://github.com/sharkdp/fd")
+     (synopsis "Simple, fast and user-friendly alternative to find")
+     (description
+      "@code{fd} is a simple, fast and user-friendly alternative to @code{find}.
+While it does not seek to mirror all of find's powerful functionality, it provides
+defaults for 80% of the use cases.")
+     (license (list license:expat license:asl2.0))))
 
 (define-public hexyl
   (package
     (name "hexyl")
-    (version "0.8.0")
+    (version "0.14.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "hexyl" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".tar.gz"))
         (sha256
-         (base32
-          "0sipag77196467idbznbk5q5lwhqz85zw7y1pwg9b27jxqyk04rp"))))
+         (base32 "0fhbc4ibpbbgcgx2v6wzxcn63jz76cvdp2f8jdg747h65hvp5bcm"))
+        (snippet
+         #~(begin (use-modules (guix build utils))
+                  (substitute* "doc/hexyl.1.md"
+                    (("0\\.12\\.0") "0.14.0"))))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
-       (("rust-ansi-term" ,rust-ansi-term-0.12)
-        ("rust-atty" ,rust-atty-0.2)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-libc" ,rust-libc-0.2))))
+     `(#:install-source? #f
+       #:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-clap" ,rust-clap-4)
+        ("rust-const-format" ,rust-const-format-0.2)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-owo-colors" ,rust-owo-colors-3)
+        ("rust-supports-color" ,rust-supports-color-2)
+        ("rust-terminal-size" ,rust-terminal-size-0.2)
+        ("rust-thiserror" ,rust-thiserror-1))
+       #:cargo-development-inputs
+       (("rust-assert-cmd" ,rust-assert-cmd-2)
+        ("rust-predicates" ,rust-predicates-3)
+        ("rust-pretty-assertions" ,rust-pretty-assertions-1))
+      #:phases
+      (modify-phases %standard-phases
+        (add-after 'install 'install-manual
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (let ((man1 (string-append (assoc-ref outputs "out")
+                                       "/share/man/man1")))
+              (when (assoc-ref inputs "pandoc")
+                (mkdir-p man1)
+                (with-output-to-file (string-append man1 "/hexyl.1")
+                  (lambda _
+                    (invoke "pandoc" "--standalone"
+                            "--from" "markdown"
+                            "--to" "man"
+                            "doc/hexyl.1.md"))))))))))
+    (native-inputs
+     (if (supported-package? pandoc)
+         (list pandoc)
+         '()))
     (home-page "https://github.com/sharkdp/hexyl")
     (synopsis "Command-line hex viewer")
     (description
@@ -747,7 +770,7 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
 (define-public i3status-rust
   (package
     (name "i3status-rust")
-    (version "0.20.1")
+    (version "0.32.3")
     (source
      (origin
        (method git-fetch)
@@ -755,48 +778,99 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
              (url "https://github.com/greshake/i3status-rust")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
-       (patches (search-patches "i3status-rust-enable-unstable-features.patch"))
        (sha256
-        (base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s"))))
+        (base32 "11n32kkfwlv38mj9018hp5rbg4w3d1vq9f6x8rhqahs19mm5amqa"))
+       (snippet
+        #~(begin
+            (use-modules (guix build utils))
+            ;; This comes a few commits after the 0.32.3 tag.
+            (substitute* "Cargo.toml"
+               (("^(wayrs-client = \\{ version = \")0\\.12\"" all most)
+                (string-append most "1.0\""))
+               (("^(wayrs-protocols = \\{ version = \")0\\.12\"" all most)
+                (string-append most "0.13\"")))))))
     (build-system cargo-build-system)
     (arguments
-     `(#:features '("pulseaudio" "libpulse-binding")
-       #:install-source? #f
+     `(#:install-source? #f
        #:cargo-inputs
-       (("rust-chrono" ,rust-chrono-0.4)
-        ("rust-chrono-tz" ,rust-chrono-tz-0.5)
-        ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
-        ("rust-curl" ,rust-curl-0.4)
-        ("rust-dbus" ,rust-dbus-0.9)
-        ("rust-dbus-tree" ,rust-dbus-tree-0.9)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-nix" ,rust-nix-0.20)
-        ("rust-nl80211" ,rust-nl80211-0.0.2)
+       (("rust-anyhow" ,rust-anyhow-1)              ; Dependency of xtask.
+        ("rust-async-once-cell" ,rust-async-once-cell-0.5)
+        ("rust-async-trait" ,rust-async-trait-0.1)
+        ("rust-backon" ,rust-backon-0.4)
+        ("rust-calibright" ,rust-calibright-0.1)
+        ("rust-chrono" ,rust-chrono-0.4)
+        ("rust-chrono-tz" ,rust-chrono-tz-0.8)
+        ("rust-clap" ,rust-clap-4)                  ; Dependency of xtask also.
+        ("rust-clap-mangen" ,rust-clap-mangen-0.2)  ; Dependency of xtask.
+        ("rust-dirs" ,rust-dirs-5)
+        ("rust-env-logger" ,rust-env-logger-0.10)
+        ("rust-futures" ,rust-futures-0.3)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-hyper" ,rust-hyper-0.14)
+        ("rust-inotify" ,rust-inotify-0.10)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-libpulse-binding" ,rust-libpulse-binding-2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-maildir" ,rust-maildir-0.6)
+        ("rust-neli" ,rust-neli-0.6)
+        ("rust-neli-wifi" ,rust-neli-wifi-0.6)
+        ("rust-nix" ,rust-nix-0.27)
+        ("rust-nom" ,rust-nom-7)
+        ("rust-notmuch" ,rust-notmuch-0.8)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-pandoc" ,rust-pandoc-0.8)            ; Dependency of xtask.
+        ("rust-regex" ,rust-regex-1)
+        ("rust-reqwest" ,rust-reqwest-0.11)
+        ("rust-sensors" ,rust-sensors-0.2)
         ("rust-serde" ,rust-serde-1)
-        ("rust-serde-derive" ,rust-serde-derive-1)
         ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-serde-with" ,rust-serde-with-3)
+        ("rust-shellexpand" ,rust-shellexpand-3)
         ("rust-signal-hook" ,rust-signal-hook-0.3)
-        ("rust-swayipc" ,rust-swayipc-2)
-        ("rust-toml" ,rust-toml-0.5)
-        ("rust-cpuprofiler" ,rust-cpuprofiler-0.0)
-        ("rust-inotify" ,rust-inotify-0.9)
-        ("rust-libpulse-binding" ,rust-libpulse-binding-2)
-        ("rust-maildir" ,rust-maildir-0.5)
-        ("rust-notmuch" ,rust-notmuch-0.6)
-        ("rust-progress" ,rust-progress-0.2))
-       #:cargo-development-inputs
-       (("rust-assert-fs" ,rust-assert-fs-1))
+        ("rust-signal-hook-tokio" ,rust-signal-hook-tokio-0.3)
+        ("rust-smart-default" ,rust-smart-default-0.7)
+        ("rust-swayipc-async" ,rust-swayipc-async-2)
+        ("rust-thiserror" ,rust-thiserror-1)
+        ("rust-tokio" ,rust-tokio-1)
+        ("rust-toml" ,rust-toml-0.8)
+        ("rust-unicode-segmentation" ,rust-unicode-segmentation-1)
+        ("rust-wayrs-client" ,rust-wayrs-client-1)
+        ("rust-wayrs-protocols" ,rust-wayrs-protocols-0.13)
+        ("rust-zbus" ,rust-zbus-3))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'enable-unstable-features
+         (add-after 'unpack 'remove-optional-icu-deps
            (lambda _
-             (setenv "RUSTC_BOOTSTRAP" "1")))
+             (substitute* "Cargo.toml"
+               (("^icu_calendar.*") "")
+               (("^icu_datetime.*") "")
+               (("^icu_locid.*") ""))))
          (add-after 'unpack 'fix-resources-path
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (share (string-append out "/share")))
                (substitute* "src/util.rs"
                  (("/usr/share/i3status-rust") share)))))
+         (add-after 'unpack 'substitute-package-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define* (substitute-command-block* file command full-command)
+               (substitute* file
+                 (((string-append "Command::new\\(\"" command "\"\\)"))
+                  (string-append "Command::new(\"" full-command "\")"))))
+             (substitute-command-block* "src/blocks/keyboard_layout/set_xkb_map.rs"
+               "setxkbmap" (search-input-file inputs "/bin/setxkbmap"))
+             (substitute-command-block* "src/blocks/sound/alsa.rs"
+               "alsactl" (search-input-file inputs "/sbin/alsactl"))
+             (substitute-command-block* "src/blocks/sound/alsa.rs"
+               "amixer" (search-input-file inputs "/bin/amixer"))
+             (substitute-command-block* "src/blocks/speedtest.rs"
+               "speedtest-cli" (search-input-file inputs "/bin/speedtest-cli"))
+             (substitute-command-block* "src/blocks/xrandr.rs"
+               "xrandr" (search-input-file inputs "/bin/xrandr"))
+             (substitute-command-block* "src/util.rs"
+               "sh" (search-input-file inputs "/bin/sh"))
+             (substitute-command-block* "src/subprocess.rs"
+               "sh" (search-input-file inputs "/bin/sh"))))
          (add-after 'install 'install-resources
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
@@ -806,35 +880,27 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
              (let ((out (assoc-ref outputs "out"))
                    (paths (map
                            (lambda (input)
-                             (string-append (assoc-ref inputs input) "/bin"))
-                           '("alsa-utils" "coreutils" "curl" "dbus" "ibus" "iproute"
-                             "kdeconnect" "lm-sensors" "pulseaudio"
-                             "openssl"
-                             "setxkbmap" "speedtest-cli" "xdg-utils" "xrandr"
-                             "zlib"))))
+                             (string-append
+                               (assoc-ref inputs input) "/bin"))
+                           '("iproute2" "kdeconnect"))))
                (wrap-program (string-append out "/bin/i3status-rs")
                  `("PATH" prefix ,paths))))))))
     (native-inputs
      (list pkg-config))
     (inputs
-     `(("alsa-utils" ,alsa-utils)
-       ("bash-minimal" ,bash-minimal)
-       ("coreutils" ,coreutils)
-       ("curl" ,curl)
-       ("dbus" ,dbus)
-       ("ibus" ,ibus)
-       ("iproute" ,iproute)
-       ("kdeconnect" ,kdeconnect)
-       ("lm-sensors" ,lm-sensors)
-       ("pulseaudio" ,pulseaudio)
-       ("openssl" ,openssl)
-       ("setxkbmap" ,setxkbmap)
-       ("speedtest-cli" ,speedtest-cli)
-       ("xdg-utils" ,xdg-utils)
-       ("xrandr" ,xrandr)
-       ("zlib" ,zlib)))
-    (home-page "https://github.com/greshake/i3status-rust")
-    (synopsis "i3status, written in pure Rust")
+     (list alsa-utils
+           bash-minimal
+           dbus
+           iproute
+           kdeconnect
+           (list lm-sensors "lib")
+           pulseaudio
+           openssl
+           setxkbmap
+           speedtest-cli
+           xrandr))
+    (home-page "https://github.com/greshake/i3status-rust/")
+    (synopsis "Replacement for i3status, written in Rust")
     (description "@code{i3status-rs} is a feature-rich and resource-friendly
 replacement for i3status, written in pure Rust.  It provides a way to display
 @code{blocks} of system information (time, battery status, volume, etc) on the i3
@@ -844,13 +910,13 @@ bar.  It is also compatible with sway.")
 (define-public just
   (package
     (name "just")
-    (version "1.14.0")
+    (version "1.23.0")
     (source (origin
               (method url-fetch)
               (uri (crate-uri "just" version))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
-               (base32 "0kafd87zmjf7wswyiqakqd2r5b8q3a761ipsihmrg9wr57k5zlis"))))
+               (base32 "0wpjv098a2yymsb41h6104cdia4gb6hwwh05pkwj5fx7b7g41a2q"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-test-flags
@@ -865,6 +931,7 @@ bar.  It is also compatible with sway.")
         ("rust-clap" ,rust-clap-2)
         ("rust-ctrlc" ,rust-ctrlc-3)
         ("rust-derivative" ,rust-derivative-2)
+        ("rust-dirs" ,rust-dirs-5)
         ("rust-dotenvy" ,rust-dotenvy-0.15)
         ("rust-edit-distance" ,rust-edit-distance-2)
         ("rust-env-logger" ,rust-env-logger-0.10)
@@ -872,13 +939,15 @@ bar.  It is also compatible with sway.")
         ("rust-lexiclean" ,rust-lexiclean-0.0.1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-regex" ,rust-regex-1)
+        ("rust-semver" ,rust-semver-1)
         ("rust-serde" ,rust-serde-1)
         ("rust-serde-json" ,rust-serde-json-1)
         ("rust-sha2" ,rust-sha2-0.10)
         ("rust-similar" ,rust-similar-2)
-        ("rust-snafu" ,rust-snafu-0.7)
-        ("rust-strum" ,rust-strum-0.24)
+        ("rust-snafu" ,rust-snafu-0.8)
+        ("rust-strum" ,rust-strum-0.25)
         ("rust-target" ,rust-target-2)
         ("rust-tempfile" ,rust-tempfile-3)
         ("rust-typed-arena" ,rust-typed-arena-2)
@@ -889,7 +958,7 @@ bar.  It is also compatible with sway.")
         ("rust-executable-path" ,rust-executable-path-1)
         ("rust-pretty-assertions" ,rust-pretty-assertions-1)
         ("rust-temptree" ,rust-temptree-0.2)
-        ("rust-which" ,rust-which-4)
+        ("rust-which" ,rust-which-5)
         ("rust-yaml-rust" ,rust-yaml-rust-0.4))
        #:phases
        (modify-phases %standard-phases
@@ -905,32 +974,42 @@ bar.  It is also compatible with sway.")
                 (search-input-file inputs "/bin/env"))
                (("/bin/echo")
                 (search-input-file inputs "/bin/echo")))))
-         (add-after 'install 'install-manpage
-           (lambda* (#:key outputs #:allow-other-keys)
-             (install-file "man/just.1"
-                           (string-append (assoc-ref outputs "out")
-                                          "/share/man/man1"))))
-         (add-after 'install 'install-completions
-           (lambda* (#:key outputs #:allow-other-keys)
+         (add-after 'install 'install-extras
+           (lambda* (#:key native-inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (share (string-append out "/share"))
-                    (just (string-append out "/bin/just")))
-               (mkdir-p (string-append share "/bash-completion/completions"))
+                    (man1 (string-append share "/man/man1"))
+                    (bash-completions-dir
+                     (string-append share "/bash-completion/completions"))
+                    (zsh-completions-dir
+                     (string-append share "/zsh/site-functions"))
+                    (fish-completions-dir
+                     (string-append share "/fish/vendor_completions.d"))
+                    (elvish-completions-dir
+                     (string-append share "/elvish/lib"))
+                    (just (if ,(%current-target-system)
+                          (search-input-file native-inputs "/bin/just")
+                          (string-append out "/bin/just"))))
+               (install-file "man/just.1" man1)
+               (mkdir-p bash-completions-dir)
                (with-output-to-file
-                 (string-append share "/bash-completion/completions/just")
+                 (string-append bash-completions-dir "/just")
                  (lambda _ (invoke just "--completions" "bash")))
-               (mkdir-p (string-append share "/fish/vendor_completions.d"))
+               (mkdir-p zsh-completions-dir)
                (with-output-to-file
-                 (string-append share "/fish/vendor_completions.d/just.fish")
-                 (lambda _ (invoke just "--completions" "fish")))
-               (mkdir-p (string-append share "/zsh/site-functions"))
-               (with-output-to-file
-                 (string-append share "/zsh/site-functions/_just")
+                 (string-append zsh-completions-dir "/_just")
                  (lambda _ (invoke just "--completions" "zsh")))
-               (mkdir-p (string-append share "/elvish/lib"))
+               (mkdir-p fish-completions-dir)
+               (with-output-to-file
+                 (string-append fish-completions-dir "/just.fish")
+                 (lambda _ (invoke just "--completions" "fish")))
+               (mkdir-p elvish-completions-dir)
                (with-output-to-file
-                 (string-append share "/elvish/lib/just")
+                 (string-append elvish-completions-dir "/just")
                  (lambda _ (invoke just "--completions" "elvish")))))))))
+    (native-inputs (if (%current-target-system)
+                       (list this-package)
+                       '()))
     (inputs (list bash-minimal coreutils-minimal))
     (home-page "https://github.com/casey/just")
     (synopsis "Just a command runner")
@@ -983,18 +1062,75 @@ editor in less than 1024 lines of code with syntax higlighting, search and
 more.")
     (license (list license:expat license:asl2.0))))
 
+(define-public macchina
+  (package
+    (name "macchina")
+    (version "6.1.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "macchina" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "044bygdazv8l1d5sf7pxn2xp26pmnx2b65122qzb37m1ylb1ksg6"))))
+    (build-system cargo-build-system)
+    (arguments
+     (list
+      #:install-source? #f
+      #:cargo-inputs `(("rust-ansi-to-tui" ,rust-ansi-to-tui-2)
+                       ("rust-atty" ,rust-atty-0.2)
+                       ("rust-bytesize" ,rust-bytesize-1)
+                       ("rust-clap" ,rust-clap-4)
+                       ("rust-color-to-tui" ,rust-color-to-tui-0.2)
+                       ("rust-colored" ,rust-colored-2)
+                       ("rust-dirs" ,rust-dirs-4)
+                       ("rust-lazy-static" ,rust-lazy-static-1)
+                       ("rust-libmacchina" ,rust-libmacchina-6)
+                       ("rust-rand" ,rust-rand-0.8)
+                       ("rust-serde" ,rust-serde-1)
+                       ("rust-serde-json" ,rust-serde-json-1)
+                       ("rust-shellexpand" ,rust-shellexpand-3)
+                       ("rust-thiserror" ,rust-thiserror-1)
+                       ("rust-toml" ,rust-toml-0.5)
+                       ("rust-tui" ,rust-tui-0.19)
+                       ("rust-unicode-width" ,rust-unicode-width-0.1)
+                       ("rust-vergen" ,rust-vergen-7))
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'install 'install-extras
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (let* ((out (assoc-ref outputs "out"))
+                              (share (string-append out "/share"))
+                              (contrib (string-append share "/contrib")))
+                         (mkdir-p contrib)
+                         (copy-recursively "contrib" contrib)))))))
+    (native-inputs (list pkg-config))
+    (inputs (list libgit2 sqlite zlib))
+    (home-page "https://github.com/Macchina-CLI/macchina")
+    (synopsis "System information fetcher with an emphasis on performance")
+    (description
+     "This package provides a system information fetcher with an emphasis on
+performance.  Similar to neofetch, this package prints out system information
+on the terminal in a visually appealing way.")
+    (license license:expat)))
+
 (define-public maturin
   (package
     (name "maturin")
-    (version "1.1.0")
+    (version "1.4.0")
     (source (origin
               (method url-fetch)
               (uri (crate-uri "maturin" version))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0asdljd396kdsvnx9kbsr5s0x6w73b59kdpx732333dhm13qgn03"))
-              (patches (search-patches "maturin-no-cross-compile.patch"))))
+                "1ia5xziazpcpc1wwg8jlz5nmza87cz7nb039gg38jgw3704p4dls"))
+              (patches (search-patches "maturin-no-cross-compile.patch"))
+              (snippet
+               #~(begin (use-modules (guix build utils))
+                        ;; Remove support for x86_64h-apple-darwin.
+                        ;; This target causes maturin to fail to build.
+                        (substitute* "src/target.rs"
+                          (("\\| Architecture::X86_64h ") ""))))))
     (build-system cargo-build-system)
     (arguments
      `(#:modules ((guix build cargo-build-system)
@@ -1022,44 +1158,44 @@ more.")
         ("rust-base64" ,rust-base64-0.21)
         ("rust-bytesize" ,rust-bytesize-1)
         ("rust-cargo-config2" ,rust-cargo-config2-0.1)
-        ("rust-cargo-options" ,rust-cargo-options-0.6)
-        ;("rust-cargo-xwin" ,rust-cargo-xwin-0.14)
-        ;("rust-cargo-zigbuild" ,rust-cargo-zigbuild-0.16)
-        ("rust-cargo-metadata" ,rust-cargo-metadata-0.15)
-        ("rust-cbindgen" ,rust-cbindgen-0.24)
+        ("rust-cargo-options" ,rust-cargo-options-0.7)
+        ;("rust-cargo-xwin" ,rust-cargo-xwin-0.16)
+        ;("rust-cargo-zigbuild" ,rust-cargo-zigbuild-0.18)
+        ("rust-cargo-metadata" ,rust-cargo-metadata-0.18)
+        ("rust-cbindgen" ,rust-cbindgen-0.26)
         ("rust-cc" ,rust-cc-1)
         ("rust-clap" ,rust-clap-4)
         ("rust-clap-complete-command" ,rust-clap-complete-command-0.5)
         ("rust-configparser" ,rust-configparser-3)
         ("rust-console" ,rust-console-0.15)
-        ("rust-dialoguer" ,rust-dialoguer-0.10)
+        ("rust-dialoguer" ,rust-dialoguer-0.11)
         ("rust-dirs" ,rust-dirs-5)
         ("rust-dunce" ,rust-dunce-1)
         ("rust-fat-macho" ,rust-fat-macho-0.4)
         ("rust-flate2" ,rust-flate2-1)
         ("rust-fs-err" ,rust-fs-err-2)
         ("rust-glob" ,rust-glob-0.3)
-        ("rust-goblin" ,rust-goblin-0.6)
+        ("rust-goblin" ,rust-goblin-0.7)
         ("rust-ignore" ,rust-ignore-0.4)
-        ("rust-indexmap" ,rust-indexmap-1)
-        ("rust-itertools" ,rust-itertools-0.10)
+        ("rust-indexmap" ,rust-indexmap-2)
+        ("rust-itertools" ,rust-itertools-0.12)
         ("rust-keyring" ,rust-keyring-2)
         ("rust-lddtree" ,rust-lddtree-0.3)
-        ("rust-minijinja" ,rust-minijinja-0.34)
+        ("rust-minijinja" ,rust-minijinja-1)
         ("rust-multipart" ,rust-multipart-0.18)
         ("rust-native-tls" ,rust-native-tls-0.2)
         ("rust-normpath" ,rust-normpath-1)
         ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-path-slash" ,rust-path-slash-0.2)
         ("rust-pep440-rs" ,rust-pep440-rs-0.3)
         ("rust-pep508-rs" ,rust-pep508-rs-0.2)
         ("rust-platform-info" ,rust-platform-info-2)
-        ("rust-pyproject-toml" ,rust-pyproject-toml-0.6)
-        ("rust-python-pkginfo" ,rust-python-pkginfo-0.5)
+        ("rust-pyproject-toml" ,rust-pyproject-toml-0.8)
+        ("rust-python-pkginfo" ,rust-python-pkginfo-0.6)
         ("rust-regex" ,rust-regex-1)
         ("rust-rustc-version" ,rust-rustc-version-0.4)
-        ("rust-rustls" ,rust-rustls-0.20)
-        ("rust-rustls-pemfile" ,rust-rustls-pemfile-1)
-        ("rust-same-file" ,rust-same-file-1)
+        ("rust-rustls" ,rust-rustls-0.21)
+        ("rust-rustls-pemfile" ,rust-rustls-pemfile-2)
         ("rust-semver" ,rust-semver-1)
         ("rust-serde" ,rust-serde-1)
         ("rust-serde-json" ,rust-serde-json-1)
@@ -1070,8 +1206,8 @@ more.")
         ("rust-textwrap" ,rust-textwrap-0.16)
         ("rust-thiserror" ,rust-thiserror-1)
         ("rust-time" ,rust-time-0.3)
-        ("rust-toml" ,rust-toml-0.7)
-        ("rust-toml-edit" ,rust-toml-edit-0.19)
+        ("rust-toml" ,rust-toml-0.8)
+        ("rust-toml-edit" ,rust-toml-edit-0.21)
         ("rust-tracing" ,rust-tracing-0.1)
         ("rust-tracing-subscriber" ,rust-tracing-subscriber-0.3)
         ("rust-ureq" ,rust-ureq-2)
@@ -1079,12 +1215,13 @@ more.")
         ("rust-wild" ,rust-wild-2)
         ("rust-zip" ,rust-zip-0.6))
        #:cargo-development-inputs
-       (("rust-indoc" ,rust-indoc-2)
+       (("rust-expect-test" ,rust-expect-test-1)
+        ("rust-indoc" ,rust-indoc-2)
         ("rust-pretty-assertions" ,rust-pretty-assertions-1)
         ("rust-rustversion" ,rust-rustversion-1)
         ("rust-time" ,rust-time-0.3)
         ("rust-trycmd" ,rust-trycmd-0.14)
-        ("rust-which" ,rust-which-4))
+        ("rust-which" ,rust-which-5))
        #:phases
        (modify-phases %standard-phases
          (add-after 'build 'build-python-module
@@ -1135,8 +1272,7 @@ more.")
      (list python-tomli))
     (inputs (list bzip2))
     (native-inputs
-     (list perl
-           python-wheel
+     (list python-wheel
            python-wrapper
            python-setuptools-rust))
     (home-page "https://github.com/pyo3/maturin")
@@ -1146,84 +1282,164 @@ more.")
 @code{cffi} bindings as well as rust binaries as python packages.")
     (license (list license:expat license:asl2.0))))
 
+(define-public netavark
+  (package
+    (name "netavark")
+    (version "1.10.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "netavark" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1viyj9xqq9hkcsghrfx7wjmky3hkxfr96952f9favd4zg9ih64yw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:install-source? #f
+       #:cargo-inputs (("rust-anyhow" ,rust-anyhow-1)
+                       ("rust-chrono" ,rust-chrono-0.4)
+                       ("rust-clap" ,rust-clap-4)
+                       ("rust-env-logger" ,rust-env-logger-0.11)
+                       ("rust-fs2" ,rust-fs2-0.4)
+                       ("rust-futures-channel" ,rust-futures-channel-0.3)
+                       ("rust-futures-core" ,rust-futures-core-0.3)
+                       ("rust-futures-util" ,rust-futures-util-0.3)
+                       ("rust-ipnet" ,rust-ipnet-2)
+                       ("rust-iptables" ,rust-iptables-0.5)
+                       ("rust-libc" ,rust-libc-0.2)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-mozim" ,rust-mozim-0.2)
+                       ("rust-netlink-packet-core" ,rust-netlink-packet-core-0.7)
+                       ("rust-netlink-packet-route" ,rust-netlink-packet-route-0.18)
+                       ("rust-netlink-packet-utils" ,rust-netlink-packet-utils-0.5)
+                       ("rust-netlink-sys" ,rust-netlink-sys-0.8)
+                       ("rust-nftables" ,rust-nftables-0.3)
+                       ("rust-nispor" ,rust-nispor-1)
+                       ("rust-nix" ,rust-nix-0.27)
+                       ("rust-prost" ,rust-prost-0.12)
+                       ("rust-rand" ,rust-rand-0.8)
+                       ("rust-serde" ,rust-serde-1)
+                       ("rust-serde-value" ,rust-serde-value-0.7)
+                       ("rust-serde-json" ,rust-serde-json-1)
+                       ("rust-sha2" ,rust-sha2-0.10)
+                       ("rust-sysctl" ,rust-sysctl-0.5)
+                       ("rust-tokio" ,rust-tokio-1)
+                       ("rust-tokio-stream" ,rust-tokio-stream-0.1)
+                       ("rust-tonic" ,rust-tonic-0.10)
+                       ("rust-tonic-build" ,rust-tonic-build-0.10)
+                       ("rust-tower" ,rust-tower-0.4)
+                       ("rust-url" ,rust-url-2)
+                       ("rust-zbus" ,rust-zbus-3))
+       #:cargo-development-inputs (("rust-once-cell" ,rust-once-cell-1)
+                                   ("rust-rand" ,rust-rand-0.8)
+                                   ("rust-tempfile" ,rust-tempfile-3))))
+    (native-inputs (list protobuf))
+    (home-page "https://github.com/containers/netavark")
+    (synopsis "Container network stack")
+    (description "Netavark is a rust based network stack for containers.  It
+is being designed to work with Podman but is also applicable for other OCI
+container management applications.")
+    (license license:asl2.0)))
+
 (define-public ripgrep
   (package
     (name "ripgrep")
-    (version "13.0.0")
+    (version "14.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "ripgrep" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32
-         "1gv4imhjgxmyxaa996yshcjlakmrjw9pf4rycp90pq675cn9sz7k"))))
+        (base32 "1n3zb5jfb8pv65jm4zmrcxlgpppkpd9pmcpg1ifvv13sqhxbrg6p"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
-       (("rust-bstr" ,rust-bstr-0.2)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-grep" ,rust-grep-0.2)
-        ("rust-ignore" ,rust-ignore-0.4)
-        ("rust-jemallocator" ,rust-jemallocator-0.3)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-num-cpus" ,rust-num-cpus-1)
-        ("rust-regex" ,rust-regex-1)
-        ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-termcolor" ,rust-termcolor-1))
-       #:cargo-development-inputs
-       (("rust-serde" ,rust-serde-1)
-        ("rust-serde-derive" ,rust-serde-derive-1)
-        ("rust-walkdir" ,rust-walkdir-2))
-       #:modules ((ice-9 match)
-                  (guix build cargo-build-system)
-                  (guix build utils))
-       #:install-source? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'build 'install-manpage
-           ;; NOTE: This is done before 'check so that there's only one output
-           ;; directory with the man page.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (match (find-files "target" "^rg\\.1$")
-               ((manpage)
-                (install-file manpage (string-append
-                                       (assoc-ref outputs "out")
-                                       "/share/man/man1"))))
-             #t)))
-       #:features '("pcre2")))
-    (inputs
-     (list pcre2))
-    (native-inputs
-     (list asciidoc pkg-config))
+     (list
+      #:cargo-inputs `(("rust-anyhow" ,rust-anyhow-1)
+                       ("rust-bstr" ,rust-bstr-1)
+                       ("rust-grep" ,rust-grep-0.3)
+                       ("rust-ignore" ,rust-ignore-0.4)
+                       ("rust-jemallocator" ,rust-jemallocator-0.5)
+                       ("rust-lexopt" ,rust-lexopt-0.3)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-serde-json" ,rust-serde-json-1)
+                       ("rust-termcolor" ,rust-termcolor-1)
+                       ("rust-textwrap" ,rust-textwrap-0.16))
+      #:cargo-development-inputs `(("rust-serde" ,rust-serde-1)
+                                   ("rust-serde-derive" ,rust-serde-derive-1)
+                                   ("rust-walkdir" ,rust-walkdir-2))
+      #:install-source? #f
+      ;; Note: the built target 'rg' binary is required for 'install-extras
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'install 'install-extras
+                     (lambda* (#:key native-inputs outputs #:allow-other-keys)
+                       (let* ((out (assoc-ref outputs "out"))
+                              (share (string-append out "/share"))
+                              (bash-completions-dir
+                                (string-append share "/bash-completion/completions"))
+                              (zsh-completions-dir
+                                (string-append share "/zsh/site-functions"))
+                              (fish-completions-dir
+                                (string-append share "/fish/vendor_completions.d"))
+                              (man1 (string-append share "/man/man1"))
+                              (rg (if #$(%current-target-system)
+                                    (search-input-file native-inputs "/bin/rg")
+                                    (string-append out "/bin/rg"))))
+                           (mkdir-p man1)
+                           (with-output-to-file (string-append man1 "/rg.1")
+                             (lambda _
+                               (invoke rg "--generate" "man")))
+                           (mkdir-p bash-completions-dir)
+                           (with-output-to-file (string-append
+                                                  bash-completions-dir "/rg")
+                             (lambda _
+                               (invoke rg "--generate" "complete-bash")))
+                           (mkdir-p zsh-completions-dir)
+                           (with-output-to-file (string-append
+                                                  zsh-completions-dir "/_rg")
+                             (lambda _
+                               (invoke rg "--generate" "complete-zsh")))
+                           (mkdir-p fish-completions-dir)
+                           (with-output-to-file
+                             (string-append fish-completions-dir "/rg.fish")
+                             (lambda _
+                               (invoke rg "--generate" "complete-fish")))))))
+      #:features '(list "pcre2")))
+    (inputs (list pcre2))
+    (native-inputs (cons* pkg-config (if (%current-target-system)
+                                         (list this-package)
+                                         '())))
     (home-page "https://github.com/BurntSushi/ripgrep")
-    (synopsis "Line-oriented search tool")
+    (synopsis "Line-oriented search tool and Rust successor to @command{grep}")
     (description
-     "ripgrep is a line-oriented search tool that recursively searches
-your current directory for a regex pattern while respecting your
-gitignore rules.")
+     "@code{ripgrep} (@command{rg}) is a line-oriented search tool that
+recursively searches your current directory for a regex pattern while
+respecting your gitignore rules. @code{ripgrep} is similar to other popular
+search tools like The Silver Searcher, @command{ack} and @command{grep}.")
     (license (list license:unlicense license:expat))))
 
 (define-public rot8
   (package
     (name "rot8")
-    (version "0.1.4")
+    (version "1.0.0")
     (source (origin
               (method url-fetch)
               (uri (crate-uri "rot8" version))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1m5kzpqq9pgc19lbnh20iaq654lzlmc1m5fc9f73w2vpwqdiw1qf"))))
+                "1bvb87sr9pkf6sj5ghgmga4nrp5kwiqnllzi672da5vs915xh8li"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs (("rust-clap" ,rust-clap-2)
-                       ("rust-glob" ,rust-glob-0.3)
-                       ("rust-regex" ,rust-regex-1)
-                       ("rust-serde" ,rust-serde-1)
-                       ("rust-serde-json" ,rust-serde-json-1))))
+     `(#:install-source? #f
+       #:cargo-inputs
+       (("rust-clap" ,rust-clap-3)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-wayland-client" ,rust-wayland-client-0.31)
+        ("rust-wayland-protocols-wlr" ,rust-wayland-protocols-wlr-0.2))))
     (home-page "https://github.com/efernau/rot8/")
     (synopsis "Automatic display rotation using built-in accelerometer")
     (description "@command{rot8} is a daemon that automates rotating screen and
@@ -1378,14 +1594,15 @@ browsers.")
 (define-public rust-cargo-edit
   (package
     (name "rust-cargo-edit")
-    (version "0.10.4")
+    (version "0.12.2")
     (source (origin
               (method url-fetch)
               (uri (crate-uri "cargo-edit" version))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "19wfjz7z4kqjfjmnq1bl6dhsvskjy6r656fqmbha9dfdspbsnmd0"))))
+                "03lxi7z1n9xq287lqvqnhzg5r0yv1fi3569ryw3jqcrvv8nqs0c2"))
+              (patches (search-patches "rust-cargo-edit-remove-ureq.patch"))))
     (build-system cargo-build-system)
     (arguments
      `(#:install-source? #f
@@ -1394,14 +1611,15 @@ browsers.")
        #:cargo-inputs
        (("rust-anyhow" ,rust-anyhow-1)
         ("rust-cargo-metadata" ,rust-cargo-metadata-0.15)
-        ("rust-clap" ,rust-clap-3)
+        ("rust-clap" ,rust-clap-4)
+        ("rust-clap-cargo" ,rust-clap-cargo-0.12)
         ("rust-concolor-control" ,rust-concolor-control-0.0.7)
-        ("rust-crates-index" ,rust-crates-index-0.18)
-        ("rust-dirs-next" ,rust-dirs-next-2)
+        ("rust-crates-index" ,rust-crates-index-0.19)
         ("rust-dunce" ,rust-dunce-1)
         ("rust-env-proxy" ,rust-env-proxy-0.4)
-        ("rust-git2" ,rust-git2-0.14)
+        ("rust-git2" ,rust-git2-0.17)
         ("rust-hex" ,rust-hex-0.4)
+        ("rust-home" ,rust-home-0.5)
         ("rust-indexmap" ,rust-indexmap-1)
         ("rust-native-tls" ,rust-native-tls-0.2)
         ("rust-pathdiff" ,rust-pathdiff-0.2)
@@ -1412,15 +1630,15 @@ browsers.")
         ("rust-serde-json" ,rust-serde-json-1)
         ("rust-subprocess" ,rust-subprocess-0.2)
         ("rust-termcolor" ,rust-termcolor-1)
-        ("rust-toml-edit" ,rust-toml-edit-0.14)
-        ("rust-ureq" ,rust-ureq-2)
+        ("rust-toml" ,rust-toml-0.7)
+        ("rust-toml-edit" ,rust-toml-edit-0.19)
         ("rust-url" ,rust-url-2))
        #:cargo-development-inputs
        (("rust-assert-cmd" ,rust-assert-cmd-2)
         ("rust-assert-fs" ,rust-assert-fs-1)
-        ("rust-predicates" ,rust-predicates-2)
-        ("rust-snapbox" ,rust-snapbox-0.2)
-        ("rust-trycmd" ,rust-trycmd-0.13)
+        ("rust-predicates" ,rust-predicates-3)
+        ("rust-snapbox" ,rust-snapbox-0.4)
+        ("rust-trycmd" ,rust-trycmd-0.14)
         ("rust-url" ,rust-url-2))
        #:phases
        (modify-phases %standard-phases
@@ -1429,9 +1647,9 @@ browsers.")
              (substitute* "Cargo.toml"
                ((".*\"vendored-libgit2\".*") "")))))))
     (native-inputs
-     (list perl pkg-config))
+     (list pkg-config))
     (inputs
-     (list libgit2-1.4
+     (list libgit2-1.6
            libssh2
            openssl
            zlib))
@@ -1552,14 +1770,14 @@ rebase.")
   (package
     (inherit rust-cbindgen-0.26)
     (name "rust-cbindgen")
-    (version "0.24.3")
+    (version "0.24.5")
     (source (origin
               (method url-fetch)
               (uri (crate-uri "cbindgen" version))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1yqxqsz2d0cppd8zwihk2139g5gy38wqgl9snj6rnk8gyvnqsdd6"))))))
+                "13g1k2zljdp326b0cv1nhyh7jsacd364fh0cr2g828hiyfm2z4jb"))))))
 
 (define-public rust-cbindgen-0.23
   (package
@@ -1577,31 +1795,33 @@ rebase.")
 (define-public sniffglue
   (package
     (name "sniffglue")
-    (version "0.15.0")
+    (version "0.16.0")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "sniffglue" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "038wcjiiay825wc8inmn62flklc1adxskg5fmjhmxqnhwmj1k5gn"))))
+         "0q63dysxzzqyknm3kqk0dff1vm8j6g05dkjwn7kqaglmf9ksd7v3"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
+     `(#:install-source? #f
+       #:cargo-inputs
        (("rust-ansi-term" ,rust-ansi-term-0.12)
         ("rust-anyhow" ,rust-anyhow-1)
-        ("rust-atty" ,rust-atty-0.2)
-        ("rust-base64" ,rust-base64-0.13)
-        ("rust-bstr" ,rust-bstr-0.2)
+        ("rust-bstr" ,rust-bstr-1)
+        ("rust-clap" ,rust-clap-4)
+        ("rust-clap-complete" ,rust-clap-complete-4)
+        ("rust-data-encoding" ,rust-data-encoding-2)
         ("rust-dhcp4r" ,rust-dhcp4r-0.2)
         ("rust-dirs-next" ,rust-dirs-next-2)
         ("rust-dns-parser" ,rust-dns-parser-0.8)
-        ("rust-env-logger" ,rust-env-logger-0.9)
+        ("rust-env-logger" ,rust-env-logger-0.10)
+        ("rust-httparse" ,rust-httparse-1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
-        ("rust-nix" ,rust-nix-0.23)
+        ("rust-nix" ,rust-nix-0.27)
         ("rust-nom" ,rust-nom-7)
         ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-pcap-sys" ,rust-pcap-sys-0.1)
@@ -1611,17 +1831,14 @@ rebase.")
         ("rust-serde-derive" ,rust-serde-derive-1)
         ("rust-serde-json" ,rust-serde-json-1)
         ("rust-sha2" ,rust-sha2-0.10)
-        ("rust-structopt" ,rust-structopt-0.3)
-        ("rust-syscallz" ,rust-syscallz-0.16)
+        ("rust-syscallz" ,rust-syscallz-0.17)
         ("rust-tls-parser" ,rust-tls-parser-0.11)
-        ("rust-toml" ,rust-toml-0.5)
-        ("rust-users" ,rust-users-0.11))
+        ("rust-toml" ,rust-toml-0.8)
+        ("rust-uzers" ,rust-uzers-0.11))
        #:cargo-development-inputs
-       (("rust-boxxy" ,rust-boxxy-0.12))))
+       (("rust-boxxy" ,rust-boxxy-0.13))))
     (inputs
      (list libpcap libseccomp))
-    (native-inputs
-     (list perl))
     (home-page "https://github.com/kpcyrd/sniffglue")
     (synopsis "Secure multithreaded packet sniffer")
     (description
@@ -1770,26 +1987,38 @@ revert and check changes.
 (define-public hex
   (package
     (name "hex")
-    (version "0.4.2")
+    (version "0.6.0")
     (source
      (origin
        ;; crates.io does not provide the test data.
+       ;; Not all releases are pushed to crates.io.
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/sitkevij/hex")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "03x27nixdlnkkrh85gy4152arp02kpjwq0i9dn9p73lyr24s64lv"))))
+        (base32 "0kv07ghibifs6rnskg1na6a0hdb0f8vqfbpv5k8g09lc2075gjv1"))
+       (snippet
+        #~(begin (use-modules (guix build utils))
+                 (substitute* "Cargo.toml"
+                   ;; rusty-hook provides a git hook for CI.
+                   ((".*rusty-hook.*") ""))))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
+     `(#:install-source? #f
+       #:cargo-inputs
        (("rust-ansi-term" ,rust-ansi-term-0.12)
-        ("rust-atty" ,rust-atty-0.2)
-        ("rust-clap" ,rust-clap-2)
+        ("rust-clap" ,rust-clap-4)
         ("rust-no-color" ,rust-no-color-0.1))
        #:cargo-development-inputs
-       (("rust-assert-cmd" ,rust-assert-cmd-1))))
+       (("rust-assert-cmd" ,rust-assert-cmd-2))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-more
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (install-file "hx.1" (string-append out "/share/man/man1"))))))))
     (home-page "https://github.com/sitkevij/hex")
     (synopsis "Hexadecimal colorized view of a file")
     (description
@@ -1930,72 +2159,124 @@ runs a command whenever it detects modifications.")
 (define-public rbw
   (package
     (name "rbw")
-    (version "1.4.1")
+    (version "1.9.0")
+    (outputs '("out" "scripts"))
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "rbw" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0zszp9hvilpikbd66b5zbvspks0spv8dh0yry0sxnc5yqvl2ixnf"))))
+        (base32 "0rlp55kcac9k0rz1zfhyslkfgsim1ka6bkllfzqrayvdfyxqq51i"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin (substitute* "Cargo.toml"
+                  (("\"=([[:digit:]]+(\\.[[:digit:]]+)*)" _ version)
+                   (string-append "\"^" version)))))))
     (build-system cargo-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'relax-requirements
-           (lambda _
-             (substitute*
-                 "guix-vendor/rust-password-hash-0.3.2.tar.gz/Cargo.toml"
-               (("version = \">=1, <1.1.0\"") "version = \">=1\""))
-             (substitute*
-                 "guix-vendor/rust-rsa-0.5.0.tar.gz/Cargo.toml"
-               (("version = \">=1, <1.5\"") "version = \"^1\""))
-             (substitute*
-                 "Cargo.toml"
-               (("version = \"1.4\"") "version = \"^1\"")))))
+     `(#:install-source? #f
        #:cargo-inputs
-       (("rust-aes" ,rust-aes-0.7)
+       (("rust-aes" ,rust-aes-0.8)
         ("rust-anyhow" ,rust-anyhow-1)
+        ("rust-argon2" ,rust-argon2-0.5)
         ("rust-arrayvec" ,rust-arrayvec-0.7)
         ("rust-async-trait" ,rust-async-trait-0.1)
         ("rust-base32" ,rust-base32-0.4)
-        ("rust-base64" ,rust-base64-0.13)
-        ("rust-block-modes" ,rust-block-modes-0.8)
-        ("rust-block-padding" ,rust-block-padding-0.2)
-        ("rust-daemonize" ,rust-daemonize-0.4)
-        ("rust-directories" ,rust-directories-4)
-        ("rust-env-logger" ,rust-env-logger-0.9)
-        ("rust-hkdf" ,rust-hkdf-0.11)
-        ("rust-hmac" ,rust-hmac-0.11)
+        ("rust-base64" ,rust-base64-0.21)
+        ("rust-block-padding" ,rust-block-padding-0.3)
+        ("rust-cbc" ,rust-cbc-0.1)
+        ("rust-clap" ,rust-clap-4)
+        ("rust-clap-complete" ,rust-clap-complete-4)
+        ("rust-copypasta" ,rust-copypasta-0.10)
+        ("rust-daemonize" ,rust-daemonize-0.5)
+        ("rust-directories" ,rust-directories-5)
+        ("rust-env-logger" ,rust-env-logger-0.10)
+        ("rust-futures" ,rust-futures-0.3)
+        ("rust-futures-channel" ,rust-futures-channel-0.3)
+        ("rust-futures-util" ,rust-futures-util-0.3)
+        ("rust-hkdf" ,rust-hkdf-0.12)
+        ("rust-hmac" ,rust-hmac-0.12)
         ("rust-humantime" ,rust-humantime-2)
+        ("rust-is-terminal" ,rust-is-terminal-0.4)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
-        ("rust-nix" ,rust-nix-0.23)
-        ("rust-paw" ,rust-paw-1)
-        ("rust-pbkdf2" ,rust-pbkdf2-0.9)
+        ("rust-nix" ,rust-nix-0.26)
+        ("rust-pbkdf2" ,rust-pbkdf2-0.12)
         ("rust-percent-encoding" ,rust-percent-encoding-2)
+        ("rust-pkcs8" ,rust-pkcs8-0.10)
         ("rust-rand" ,rust-rand-0.8)
         ("rust-region" ,rust-region-3)
         ("rust-reqwest" ,rust-reqwest-0.11)
-        ("rust-rsa" ,rust-rsa-0.5)
+        ("rust-rmpv" ,rust-rmpv-1)
+        ("rust-rsa" ,rust-rsa-0.9)
         ("rust-serde" ,rust-serde-1)
         ("rust-serde-json" ,rust-serde-json-1)
         ("rust-serde-path-to-error" ,rust-serde-path-to-error-0.1)
         ("rust-serde-repr" ,rust-serde-repr-0.1)
-        ("rust-sha-1" ,rust-sha-1-0.9)
-        ("rust-sha2" ,rust-sha2-0.9)
-        ("rust-structopt" ,rust-structopt-0.3)
+        ("rust-sha1" ,rust-sha1-0.10)
+        ("rust-sha2" ,rust-sha2-0.10)
         ("rust-tempfile" ,rust-tempfile-3)
-        ("rust-term-size" ,rust-term-size-0.3)
-        ("rust-textwrap" ,rust-textwrap-0.11)
+        ("rust-terminal-size" ,rust-terminal-size-0.3)
+        ("rust-textwrap" ,rust-textwrap-0.16)
         ("rust-thiserror" ,rust-thiserror-1)
         ("rust-tokio" ,rust-tokio-1)
-        ("rust-totp-lite" ,rust-totp-lite-1)
+        ("rust-tokio-stream" ,rust-tokio-stream-0.1)
+        ("rust-tokio-tungstenite" ,rust-tokio-tungstenite-0.20)
+        ("rust-totp-lite" ,rust-totp-lite-2)
         ("rust-url" ,rust-url-2)
-        ("rust-uuid" ,rust-uuid-0.8)
-        ("rust-zeroize" ,rust-zeroize-1))))
+        ("rust-uuid" ,rust-uuid-1)
+        ("rust-zeroize" ,rust-zeroize-1))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-completions
+           (lambda* (#:key native-inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (rbw (if ,(%current-target-system)
+                          (search-input-file native-inputs "/bin/rbw")
+                          (string-append out "/bin/rbw"))))
+               (mkdir-p (string-append share "/bash-completion/completions"))
+               (with-output-to-file
+                 (string-append share "/bash-completion/completions/rbw")
+                 (lambda _ (invoke rbw "gen-completions" "bash")))
+               (mkdir-p (string-append share "/fish/vendor_completions.d"))
+               (with-output-to-file
+                 (string-append share "/fish/vendor_completions.d/rbw.fish")
+                 (lambda _ (invoke rbw "gen-completions" "fish")))
+               (mkdir-p (string-append share "/zsh/site-functions"))
+               (with-output-to-file
+                 (string-append share "/zsh/site-functions/_rbw")
+                 (lambda _ (invoke rbw "gen-completions" "zsh")))
+               (mkdir-p (string-append share "/elvish/lib"))
+               (with-output-to-file
+                 (string-append share "/elvish/lib/rbw")
+                 (lambda _ (invoke rbw "gen-completions" "elvish"))))))
+         (add-after 'install 'install-scripts
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (scripts (assoc-ref outputs "scripts")))
+               (for-each (lambda (file)
+                           (install-file file (string-append scripts "/bin")))
+                         (find-files "bin"))
+               (for-each (lambda (file)
+                           (wrap-script file
+                             ;; TODO: Do we want to wrap these with more programs?
+                             ;; pass git fzf libsecret xclip rofi
+                             `("PATH" prefix
+                                (,(string-append out "/bin")
+                                 ,(dirname (search-input-file inputs "/bin/grep"))
+                                 ,(dirname (search-input-file inputs "/bin/sed"))
+                                 ,(dirname (search-input-file inputs "/bin/perl"))
+                                 ,(dirname (search-input-file inputs "/bin/xargs"))
+                                 ,(dirname (search-input-file inputs "/bin/sort"))))))
+                         (find-files (string-append scripts "/bin")))))))))
     (native-inputs
-     (list perl))
+     (cons* perl (if (%current-target-system)
+                   (list this-package)
+                   '())))
+    (inputs
+     (list coreutils-minimal findutils grep perl sed))
     (home-page "https://git.tozt.net/rbw")
     (synopsis "Unofficial Bitwarden CLI")
     (description "This package is an unofficial command line client for
@@ -2011,25 +2292,25 @@ background agent taking care of maintaining the necessary state.")
 (define-public rust-cargo-c
   (package
     (name "rust-cargo-c")
-    (version "0.9.27+cargo-0.74.0")
+    (version "0.9.29+cargo-0.76.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "cargo-c" version))
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
-         (base32 "1xsw17zcxzlg7d7pg40anm9w8g95kvnxfp7ln9sbgv3zhsc9wggq"))))
+         (base32 "03ks9rl2skvf5j93sbmbz6l72k5cgvf4hc0nhnp7aadrvb05v5sr"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-anyhow" ,rust-anyhow-1)
-        ("rust-cargo" ,rust-cargo-0.74)
+        ("rust-cargo" ,rust-cargo-0.76)
         ("rust-cargo-util" ,rust-cargo-util-0.2)
         ("rust-cbindgen" ,rust-cbindgen-0.26)
         ("rust-cc" ,rust-cc-1)
         ("rust-clap" ,rust-clap-4)
         ("rust-glob" ,rust-glob-0.3)
-        ("rust-itertools" ,rust-itertools-0.11)
+        ("rust-itertools" ,rust-itertools-0.12)
         ("rust-log" ,rust-log-0.4)
         ("rust-regex" ,rust-regex-1)
         ("rust-semver" ,rust-semver-1)
@@ -2037,11 +2318,11 @@ background agent taking care of maintaining the necessary state.")
         ("rust-serde-derive" ,rust-serde-derive-1)
         ("rust-serde-json" ,rust-serde-json-1)
         ("rust-toml" ,rust-toml-0.7)
-        ("rust-windows-sys" ,rust-windows-sys-0.48))))
+        ("rust-windows-sys" ,rust-windows-sys-0.52))))
     (native-inputs
      (list pkg-config))
     (inputs
-     (list curl libgit2-1.6 libssh2 openssl zlib))
+     (list curl libgit2-1.7 libssh2 openssl zlib))
     (home-page "https://github.com/lu-zero/cargo-c")
     (synopsis "Build and install C-compatible libraries")
     (description
@@ -2075,126 +2356,85 @@ consecutive lines and since program start.")
 (define-public skim
   (package
     (name "skim")
-    (version "0.9.4")
+    (version "0.10.4")
     (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "skim" version))
-        (file-name
-          (string-append name "-" version ".tar.gz"))
-        (sha256
-          (base32
-            "1d5v9vq8frkdjm7bnw3455h6xf3c277d51il2qasn7r20kwik7ab"))))
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "skim" version))
+       ;; Keep the same file name as the crate in crates-io
+       (file-name (string-append "rust-skim-" version ".tar.gz"))
+       (sha256
+        (base32 "0chgv9nr8cmlf2mg2k94igh3m5svjsfxxwbnl21xsb6blvh8vlp5"))))
     (build-system cargo-build-system)
     (arguments
-      `(#:cargo-inputs
-        (("rust-atty-0.2" ,rust-atty-0.2)
-         ("rust-beef" ,rust-beef-0.5)
-         ("rust-bitflags" ,rust-bitflags-1)
-         ("rust-chrono" ,rust-chrono-0.4)
-         ("rust-clap" ,rust-clap-2)
-         ("rust-crossbeam" ,rust-crossbeam-0.8)
-         ("rust-defer-drop" ,rust-defer-drop-1)
-         ("rust-derive-builder" ,rust-derive-builder-0.9)
-         ("rust-env-logger" ,rust-env-logger-0.8)
-         ("rust-fuzzy-matcher" ,rust-fuzzy-matcher-0.3)
-         ("rust-lazy-static" ,rust-lazy-static-1)
-         ("rust-log" ,rust-log-0.4)
-         ("rust-nix" ,rust-nix-0.19)
-         ("rust-rayon" ,rust-rayon-1)
-         ("rust-regex" ,rust-regex-1)
-         ("rust-shlex" ,rust-shlex-0.1)
-         ("rust-time" ,rust-time-0.2)
-         ("rust-timer" ,rust-timer-0.2)
-         ("rust-tuikit" ,rust-tuikit-0.4)
-         ("rust-unicode-width" ,rust-unicode-width-0.1)
-         ("rust-vte" ,rust-vte-0.9))
-        #:phases
-        (modify-phases %standard-phases
-          (add-after 'install 'install-extras
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (bin (string-append out "/bin"))
-                     (share (string-append out "/share"))
-                     (man (string-append out "/share/man"))
-                     (vimfiles (string-append
-                                 share "/vim/vimfiles/pack/guix/start/skim/plugin"))
-                     (bash-completion
-                      (string-append share "/bash-completions/completions"))
-                     (zsh-site (string-append share "/zsh/site-functions"))
-                     (fish-vendor
-                      (string-append share "/fish/vendor-completions.d")))
-                ;; Binaries
-                (for-each
-                 (lambda (binary) (install-file binary bin))
-                 (find-files "bin"))
-                (mkdir-p share)
-                ;; Manpages
-                (copy-recursively "man" man)
-                ;; Vim plugins
-                (mkdir-p vimfiles)
-                (copy-recursively "plugin" vimfiles)
-                ;; Completions
-                (mkdir-p bash-completion)
-                (copy-file
-                 "shell/completion.bash"
-                 (string-append bash-completion "/skim"))
-                (copy-file
-                 "shell/key-bindings.bash"
-                 (string-append bash-completion "/skim-bindings"))
-                (mkdir-p zsh-site)
-                (copy-file
-                 "shell/completion.zsh"
-                 (string-append zsh-site "/_skim"))
-                (copy-file
-                 "shell/key-bindings.zsh"
-                 (string-append zsh-site "/_skim-bindings"))
-                (mkdir-p fish-vendor)
-                (copy-file
-                 "shell/key-bindings.fish"
-                 (string-append fish-vendor "/skim-bindings.fish"))))))))
+     `(#:install-source? #f
+       #:cargo-inputs (("rust-atty" ,rust-atty-0.2)
+                       ("rust-beef" ,rust-beef-0.5)
+                       ("rust-bitflags" ,rust-bitflags-1)
+                       ("rust-chrono" ,rust-chrono-0.4)
+                       ("rust-clap" ,rust-clap-3)
+                       ("rust-crossbeam" ,rust-crossbeam-0.8)
+                       ("rust-defer-drop" ,rust-defer-drop-1)
+                       ("rust-derive-builder" ,rust-derive-builder-0.11)
+                       ("rust-env-logger" ,rust-env-logger-0.9)
+                       ("rust-fuzzy-matcher" ,rust-fuzzy-matcher-0.3)
+                       ("rust-lazy-static" ,rust-lazy-static-1)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-nix" ,rust-nix-0.25)
+                       ("rust-rayon" ,rust-rayon-1)
+                       ("rust-regex" ,rust-regex-1)
+                       ("rust-shlex" ,rust-shlex-1)
+                       ("rust-time" ,rust-time-0.3)
+                       ("rust-timer" ,rust-timer-0.2)
+                       ("rust-tuikit" ,rust-tuikit-0.5)
+                       ("rust-unicode-width" ,rust-unicode-width-0.1)
+                       ("rust-vte" ,rust-vte-0.11))
+       #:phases (modify-phases %standard-phases
+                  (add-after 'install 'install-extras
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (bin (string-append out "/bin"))
+                             (share (string-append out "/share"))
+                             (man (string-append out "/share/man"))
+                             (vimfiles (string-append share
+                                        "/vim/vimfiles/pack/guix/start/skim/plugin"))
+                             (bash-completion (string-append share
+                                               "/bash-completions/completions"))
+                             (zsh-site (string-append share
+                                                      "/zsh/site-functions"))
+                             (fish-vendor (string-append share
+                                           "/fish/vendor-completions.d")))
+                        ;; Binaries
+                        (for-each (lambda (binary)
+                                    (install-file binary bin))
+                                  (find-files "bin"))
+                        (mkdir-p share)
+                        ;; Manpages
+                        (copy-recursively "man" man)
+                        ;; Vim plugins
+                        (mkdir-p vimfiles)
+                        (copy-recursively "plugin" vimfiles)
+                        ;; Completions
+                        (mkdir-p bash-completion)
+                        (copy-file "shell/completion.bash"
+                                   (string-append bash-completion "/skim"))
+                        (copy-file "shell/key-bindings.bash"
+                                   (string-append bash-completion
+                                                  "/skim-bindings"))
+                        (mkdir-p zsh-site)
+                        (copy-file "shell/completion.zsh"
+                                   (string-append zsh-site "/_skim"))
+                        (copy-file "shell/key-bindings.zsh"
+                                   (string-append zsh-site "/_skim-bindings"))
+                        (mkdir-p fish-vendor)
+                        (copy-file "shell/key-bindings.fish"
+                                   (string-append fish-vendor
+                                                  "/skim-bindings.fish"))))))))
     (home-page "https://github.com/lotabout/skim")
     (synopsis "Fuzzy Finder in Rust")
     (description "This package provides a fuzzy finder in Rust.")
     (license license:expat)))
 
-(define-public skim-0.7
-  (package
-    (inherit skim)
-    (name "skim")
-    (version "0.7.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "skim" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "1yiyd6fml5hd2l811sckkzmiiq9bd7018ajk4qk3ai4wyvqnw8mv"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-chrono" ,rust-chrono-0.4)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-derive-builder" ,rust-derive-builder-0.9)
-        ("rust-env-logger" ,rust-env-logger-0.6)
-        ("rust-fuzzy-matcher" ,rust-fuzzy-matcher-0.3)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-nix" ,rust-nix-0.14)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-regex" ,rust-regex-1)
-        ("rust-shlex" ,rust-shlex-0.1)
-        ("rust-time" ,rust-time-0.1)
-        ("rust-timer" ,rust-timer-0.2)
-        ("rust-tuikit" ,rust-tuikit-0.2)
-        ("rust-unicode-width" ,rust-unicode-width-0.1)
-        ("rust-vte" ,rust-vte-0.3))))))
-
-(define-public rust-skim-0.7
-  (deprecated-package "rust-skim-0.7" skim-0.7))
-
 (define-public spotifyd
   (package
     (name "spotifyd")
@@ -2245,7 +2485,7 @@ consecutive lines and since program start.")
                         ;"dbus_mpris"   ; Conflicts with rust-chrono-0.4 version.
                         "pulseaudio_backend"
                         "rodio_backend")))
-    (native-inputs (list perl pkg-config))
+    (native-inputs (list pkg-config))
     (inputs (list alsa-lib dbus pulseaudio))
     (home-page "https://github.com/Spotifyd/spotifyd")
     (synopsis "Spotify streaming daemon with Spotify Connect support")
@@ -2319,37 +2559,41 @@ terminal won't have to take up any space.")
 (define-public swayr
   (package
    (name "swayr")
-   (version "0.18.0")
+   (version "0.27.3")
    (source
     (origin
      (method url-fetch)
      (uri (crate-uri "swayr" version))
      (file-name (string-append name "-" version ".tar.gz"))
      (sha256
-      (base32 "1m443lwbs3lm20kkviw60db56w9i59dm393z1sn6llpfi2xihh3h"))))
+      (base32 "1akmq1qa3v8jxn7qgwmr70dhgamb1mvn2jkqdawc6i8accz33gca"))))
    (build-system cargo-build-system)
    (arguments
-    `(#:tests? #f
+    `(#:cargo-test-flags
+      '("--release" "--"
+        "--skip=config::test_load_swayr_config")
+      #:install-source? #f
       #:cargo-inputs
-      (("rust-clap" ,rust-clap-3)
-       ("rust-directories" ,rust-directories-4)
-       ("rust-env-logger" ,rust-env-logger-0.9)
+      (("rust-clap" ,rust-clap-4)
+       ("rust-directories" ,rust-directories-5)
+       ("rust-env-logger" ,rust-env-logger-0.10)
        ("rust-log" ,rust-log-0.4)
        ("rust-once-cell" ,rust-once-cell-1)
+       ("rust-peg" ,rust-peg-0.8)
        ("rust-rand" ,rust-rand-0.8)
        ("rust-regex" ,rust-regex-1)
        ("rust-rt-format" ,rust-rt-format-0.3)
        ("rust-serde" ,rust-serde-1)
        ("rust-serde-json" ,rust-serde-json-1)
        ("rust-swayipc" ,rust-swayipc-3)
-       ("rust-toml" ,rust-toml-0.5))))
+       ("rust-toml" ,rust-toml-0.8))))
    (home-page "https://sr.ht/~tsdh/swayr/")
    (synopsis "Window-switcher for the sway window manager")
    (description
     "This package provides a last-recently-used window-switcher for the sway
-window manager. Swayr consists of a daemon, and a client. The swayrd daemon
+window manager.  Swayr consists of a daemon, and a client.  The swayrd daemon
 records window/workspace creations, deletions, and focus changes using sway's
-JSON IPC interface. The swayr client offers subcommands, and sends them to the
+JSON IPC interface.  The swayr client offers subcommands, and sends them to the
 daemon which executes them.")
    (license license:gpl3+)))
 
@@ -2422,7 +2666,7 @@ daemon which executes them.")
         ("rust-predicates" ,rust-predicates-2)
         ("rust-tempfile" ,rust-tempfile-3))))
     (native-inputs
-     (list perl pkg-config))
+     (list pkg-config))
     (inputs
      (list openssl))
     (home-page "https://github.com/dbrgn/tealdeer/")
@@ -2435,7 +2679,7 @@ Full featured offline client with caching support.")
 (define-public git-absorb
   (package
     (name "git-absorb")
-    (version "0.6.6")
+    (version "0.6.11")
     (source
      (origin
        ;; crates.io does not include the manual page.
@@ -2445,13 +2689,19 @@ Full featured offline client with caching support.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "04v10bn24acify34vh5ayymsr1flcyb05f3az9k1s2m6nlxy5gb9"))))
+        (base32 "1mgqmbk2rz87blas86k340nshiy0zbw9pq76b8nqknpgghm4k029"))
+       (snippet
+        #~(begin (use-modules (guix build utils))
+                 (substitute* "Cargo.toml"
+                   (("\"~") "\""))
+                 (delete-file "Documentation/git-absorb.1")))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
+     `(#:install-source? #f
+       #:cargo-inputs
        (("rust-anyhow" ,rust-anyhow-1)
         ("rust-clap" ,rust-clap-2)
-        ("rust-git2" ,rust-git2-0.13)
+        ("rust-git2" ,rust-git2-0.18)
         ("rust-memchr" ,rust-memchr-2)
         ("rust-slog" ,rust-slog-2)
         ("rust-slog-async" ,rust-slog-async-2)
@@ -2460,19 +2710,17 @@ Full featured offline client with caching support.")
        (("rust-tempfile" ,rust-tempfile-3))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'relax-version-requirements
-           (lambda _
-             (substitute* "Cargo.toml"
-               (("\"~") "\""))))
          (add-after 'install 'install-manual-page
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out   (assoc-ref outputs "out"))
                     (man   (string-append out "/share/man/man1")))
+               (with-directory-excursion "Documentation"
+                 (invoke "a2x" "-L" "-d" "manpage" "-f" "manpage" "git-absorb.txt"))
                (install-file "Documentation/git-absorb.1" man)))))))
     (native-inputs
-     (list pkg-config))
+     (list asciidoc pkg-config))
     (inputs
-     (list libgit2-1.3 zlib))
+     (list libgit2-1.7 zlib))
     (home-page "https://github.com/tummychow/git-absorb")
     (synopsis "Git tool for making automatic fixup commits")
     (description
@@ -2482,10 +2730,94 @@ are safe to modify, and which staged changes belong to each of those commits.
 It will then write @code{fixup!} commits for each of those changes.")
     (license license:bsd-3)))
 
+(define-public git-delta
+  (package
+    (name "git-delta")
+    (version "0.16.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "git-delta" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1pvy5jcpj3xzf2b8k9d5xwwamwlv9pzsx6p2yq61am38igafg9qb"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin (substitute* "Cargo.toml"
+                  (("\"=([[:digit:]]+(\\.[[:digit:]]+)*)" _ version)
+                   (string-append "\"^" version)))))))
+    (build-system cargo-build-system)
+    (arguments
+     (list
+      #:install-source? #f
+      #:cargo-inputs
+      `(("rust-ansi-colours" ,rust-ansi-colours-1)
+        ("rust-ansi-term" ,rust-ansi-term-0.12)
+        ("rust-anyhow" ,rust-anyhow-1)
+        ("rust-atty" ,rust-atty-0.2)
+        ("rust-bat" ,rust-bat-0.22)
+        ("rust-bitflags" ,rust-bitflags-2)
+        ("rust-box-drawing" ,rust-box-drawing-0.1)
+        ("rust-bytelines" ,rust-bytelines-2)
+        ("rust-chrono" ,rust-chrono-0.4)
+        ("rust-chrono-humanize" ,rust-chrono-humanize-0.2)
+        ("rust-clap" ,rust-clap-4)
+        ("rust-console" ,rust-console-0.15)
+        ("rust-ctrlc" ,rust-ctrlc-3)
+        ("rust-dirs" ,rust-dirs-4)
+        ("rust-git2" ,rust-git2-0.16)
+        ("rust-grep-cli" ,rust-grep-cli-0.1)
+        ("rust-itertools" ,rust-itertools-0.10)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-palette" ,rust-palette-0.6)
+        ("rust-pathdiff" ,rust-pathdiff-0.2)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-shell-words" ,rust-shell-words-1)
+        ("rust-smol-str" ,rust-smol-str-0.1)
+        ("rust-syntect" ,rust-syntect-5)
+        ("rust-sysinfo" ,rust-sysinfo-0.28)
+        ("rust-unicode-segmentation" ,rust-unicode-segmentation-1)
+        ("rust-unicode-width" ,rust-unicode-width-0.1)
+        ("rust-vte" ,rust-vte-0.11)
+        ("rust-xdg" ,rust-xdg-2))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'install-extras
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (share (string-append out "/share"))
+                     (bash-completions-dir
+                      (string-append share "/bash-completion/completions"))
+                     (zsh-completions-dir
+                      (string-append share "/zsh/site-functions"))
+                     (fish-completions-dir
+                      (string-append share "/fish/vendor_completions.d")))
+                (mkdir-p bash-completions-dir)
+                (mkdir-p zsh-completions-dir)
+                (mkdir-p fish-completions-dir)
+                (copy-file "etc/completion/completion.bash"
+                           (string-append bash-completions-dir "/delta"))
+                (copy-file "etc/completion/completion.zsh"
+                           (string-append zsh-completions-dir "/_delta"))
+                (copy-file "etc/completion/completion.fish"
+                           (string-append fish-completions-dir "/delta.fish"))))))))
+    (native-inputs (list git-minimal pkg-config))
+    (inputs (list libgit2 openssl zlib))
+    (home-page "https://github.com/dandavison/delta")
+    (synopsis "Syntax-highlighting pager for git")
+    (description
+     "This package provides a syntax-highlighting pager for @command{git}.  It
+uses @command{bat} for syntax highlighting and provides many features such as
+advanced keybindings, word-level diff highlighting, syntax highlighting for
+@command{grep} and a stylized box presentation.")
+    (license license:expat)))
+
 (define-public rust-xremap
   (package
     (name "rust-xremap")
-    (version "0.8.9")
+    (version "0.8.14")
     (source
      (origin
        (method url-fetch)
@@ -2493,7 +2825,7 @@ It will then write @code{fixup!} commits for each of those changes.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1815hz1a93brj6v9102xypds1qslf6gxgk9vcvxhxlhy1c2pfxvj"))))
+         "1691clzqbwcywz66k0lf5wjz3q5cpbks0l090bfv42idzr5a0ghl"))))
     (build-system cargo-build-system)
     (arguments
      `(#:features '()
@@ -2517,9 +2849,10 @@ It will then write @code{fixup!} commits for each of those changes.")
         ("rust-serde-with" ,rust-serde-with-3)
         ("rust-serde-yaml" ,rust-serde-yaml-0.9)
         ("rust-swayipc" ,rust-swayipc-3)
+        ("rust-toml" ,rust-toml-0.8)
         ("rust-wayland-client" ,rust-wayland-client-0.30)
         ("rust-wayland-protocols-wlr" ,rust-wayland-protocols-wlr-0.1)
-        ("rust-x11rb" ,rust-x11rb-0.12)
+        ("rust-x11rb" ,rust-x11rb-0.13)
         ("rust-zbus" ,rust-zbus-1))
        #:phases
        (modify-phases %standard-phases
@@ -2621,36 +2954,69 @@ It will then write @code{fixup!} commits for each of those changes.")
 (define-public zoxide
   (package
     (name "zoxide")
-    (version "0.8.3")
+    (version "0.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "zoxide" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0y5v2vgl9f3n0n0w4b3iddbfyxv0hls0vw5406ry0hcvnnjyy2l3"))))
+        (base32 "1dqndbxpnv0g82d52jaszsgh62y9cv9hq8rgypsimgkk9yxhn4rw"))))
     (build-system cargo-build-system)
     (arguments
      (list #:install-source? #f
            #:cargo-inputs
            `(("rust-anyhow" ,rust-anyhow-1)
-             ("rust-askama" ,rust-askama-0.11)
+             ("rust-askama" ,rust-askama-0.12)
              ("rust-bincode" ,rust-bincode-1)
-             ("rust-clap" ,rust-clap-3)
-             ("rust-clap-complete" ,rust-clap-complete-3)
-             ("rust-clap-complete-fig" ,rust-clap-complete-fig-3)
-             ("rust-dirs" ,rust-dirs-4)
+             ("rust-clap" ,rust-clap-4)
+             ("rust-clap-complete" ,rust-clap-complete-4)
+             ("rust-clap-complete-fig" ,rust-clap-complete-fig-4)
+             ("rust-color-print" ,rust-color-print-0.3)
+             ("rust-dirs" ,rust-dirs-5)
              ("rust-dunce" ,rust-dunce-1)
-             ("rust-fastrand" ,rust-fastrand-1)
+             ("rust-fastrand" ,rust-fastrand-2)
              ("rust-glob" ,rust-glob-0.3)
-             ("rust-nix" ,rust-nix-0.24)
+             ("rust-nix" ,rust-nix-0.26)
+             ("rust-ouroboros" ,rust-ouroboros-0.17)
              ("rust-serde" ,rust-serde-1)
              ("rust-which" ,rust-which-4))
            #:cargo-development-inputs
            `(("rust-assert-cmd" ,rust-assert-cmd-2)
-             ("rust-rstest" ,rust-rstest-0.15)
-             ("rust-rstest-reuse" ,rust-rstest-reuse-0.4)
-             ("rust-tempfile" ,rust-tempfile-3))))
+             ("rust-rstest" ,rust-rstest-0.18)
+             ("rust-rstest-reuse" ,rust-rstest-reuse-0.6)
+             ("rust-tempfile" ,rust-tempfile-3))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'install-more
+                 (lambda _
+                   (let* ((out #$output)
+                          (share (string-append out "/share"))
+                          (man1 (string-append share "/man/man1"))
+                          (bash-completions-dir
+                            (string-append out "/etc/bash-completion.d"))
+                          (zsh-completions-dir
+                            (string-append share "/zsh/site-functions"))
+                          (fish-completions-dir
+                            (string-append share "/fish/vendor_completions.d"))
+                          (elvish-completions-dir
+                            (string-append share "/elvish/lib")))
+                     ;; The completions are generated in build.rs.
+                     (mkdir-p man1)
+                     (mkdir-p bash-completions-dir)
+                     (mkdir-p elvish-completions-dir)
+                     (for-each (lambda (file)
+                                 (install-file file man1))
+                               (find-files "man/man1"))
+                     (copy-file "contrib/completions/zoxide.bash"
+                                (string-append bash-completions-dir "/zoxide"))
+                     (install-file "contrib/completions/zoxide.fish"
+                                   fish-completions-dir)
+                     (install-file "contrib/completions/_zoxide"
+                                   zsh-completions-dir)
+                     (copy-file "contrib/completions/zoxide.elv"
+                                (string-append elvish-completions-dir
+                                               "/zoxide"))))))))
     (home-page "https://github.com/ajeetdsouza/zoxide/")
     (synopsis "Fast way to navigate your file system")
     (description