summary refs log tree commit diff
path: root/gnu/packages/rust-apps.scm
diff options
context:
space:
mode:
authorLiliana Marie Prikler <liliana.prikler@gmail.com>2023-12-20 00:05:21 +0100
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2023-12-20 00:05:21 +0100
commit24d4d6fdd67561e0de4b1cea6380e43e63d69646 (patch)
tree9c3f946b6e7c3d67af44cdcd9710ad8320e90080 /gnu/packages/rust-apps.scm
parent92982ecca4efe857666d8b94ad95d2cc7d2ab54b (diff)
parenta512bbd23a2e129cf3d8e71255d504ce8bac77d3 (diff)
downloadguix-24d4d6fdd67561e0de4b1cea6380e43e63d69646.tar.gz
Merge branch 'master' into gnome-team
Diffstat (limited to 'gnu/packages/rust-apps.scm')
-rw-r--r--gnu/packages/rust-apps.scm558
1 files changed, 252 insertions, 306 deletions
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index eb5214f534..ab8534f64a 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -25,6 +25,8 @@
 ;;; 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 Steve George <steve@futurile.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -80,7 +82,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages rust)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages webkit)
@@ -126,7 +128,7 @@ low-end hardware and serving many concurrent requests.")
 (define-public alfis
   (package
     (name "alfis")
-    (version "0.6.10")
+    (version "0.8.4")
     (source
      (origin
        (method git-fetch)
@@ -135,7 +137,12 @@ low-end hardware and serving many concurrent requests.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1kgzz92mkyzn7mbsdpik1q21kl38i4almn01k99nww3p0vgx9514"))))
+        (base32 "1zqszjyiab0b76m2b8zfzpndg393hn311whq1fs9syfn53hp7nh4"))
+       (snippet
+        #~(begin (use-modules (guix build utils))
+                 ;; Use a packaged version of web-view.
+                 (substitute* "Cargo.toml"
+                   (("git = .*,") "version = \"0.7.3\","))))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-test-flags
@@ -145,15 +152,15 @@ low-end hardware and serving many concurrent requests.")
        #:cargo-inputs
        (("rust-getopts" ,rust-getopts-0.2)
         ("rust-log" ,rust-log-0.4)
-        ("rust-simplelog" ,rust-simplelog-0.11)
-        ("rust-toml" ,rust-toml-0.5)
+        ("rust-simplelog" ,rust-simplelog-0.12)
+        ("rust-toml" ,rust-toml-0.7)
         ("rust-digest" ,rust-digest-0.10)
         ("rust-sha2" ,rust-sha2-0.10)
         ("rust-ed25519-dalek" ,rust-ed25519-dalek-1)
         ("rust-x25519-dalek" ,rust-x25519-dalek-1)
         ("rust-ecies-ed25519" ,rust-ecies-ed25519-0.5)
         ("rust-chacha20poly1305" ,rust-chacha20poly1305-0.9)
-        ("rust-signature" ,rust-signature-1)
+        ("rust-signature" ,rust-signature-2)
         ("rust-blakeout" ,rust-blakeout-0.3)
         ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-byteorder" ,rust-byteorder-1)
@@ -161,23 +168,25 @@ low-end hardware and serving many concurrent requests.")
         ("rust-serde-json" ,rust-serde-json-1)
         ("rust-bincode" ,rust-bincode-1)
         ("rust-serde-cbor" ,rust-serde-cbor-0.11)
-        ("rust-base64" ,rust-base64-0.13)
+        ("rust-base64" ,rust-base64-0.21)
         ("rust-num-bigint" ,rust-num-bigint-0.4)
         ("rust-num-traits" ,rust-num-traits-0.2)
         ("rust-chrono" ,rust-chrono-0.4)
         ("rust-rand" ,rust-rand-0.8)
         ("rust-rand-0.7" ,rust-rand-0.7) ;For ed25519-dalek
-        ("rust-sqlite" ,rust-sqlite-0.26)
-        ("rust-uuid" ,rust-uuid-0.8)
+        ("rust-sqlite" ,rust-sqlite-0.30)
+        ("rust-uuid" ,rust-uuid-1)
         ("rust-mio" ,rust-mio-0.8)
         ("rust-ureq" ,rust-ureq-2)
-        ("rust-lru" ,rust-lru-0.7)
+        ("rust-lru" ,rust-lru-0.9)
         ("rust-derive-more" ,rust-derive-more-0.99)
         ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-spmc" ,rust-spmc-0.3)
         ("rust-tinyfiledialogs" ,rust-tinyfiledialogs-3)
         ("rust-web-view" ,rust-web-view-0.7)
-        ("rust-open" ,rust-open-2)
-        ("rust-thread-priority" ,rust-thread-priority-0.4)
+        ("rust-open" ,rust-open-3)
+        ("rust-winapi" ,rust-winapi-0.3)
+        ("rust-thread-priority" ,rust-thread-priority-0.10)
         ("rust-winres" ,rust-winres-0.1))
        #:cargo-development-inputs
        (("rust-serde-bytes" ,rust-serde-bytes-0.11)
@@ -189,6 +198,7 @@ low-end hardware and serving many concurrent requests.")
            gtk
            glib
            pango
+           sqlite
            webkitgtk-with-libsoup2))
     (home-page "https://github.com/Revertron/Alfis")
     (synopsis "Alternative Free Identity System")
@@ -463,6 +473,96 @@ 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")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "eza" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "14qapnxc1rwqsq6c13b35wgaiypn23niajk39c44i1w3if91rd85"))))
+    (build-system cargo-build-system)
+    (arguments
+     (list
+      #:install-source? #f
+      #:cargo-inputs `(("rust-ansiterm" ,rust-ansiterm-0.12)
+                       ("rust-chrono" ,rust-chrono-0.4)
+                       ("rust-git2" ,rust-git2-0.18)
+                       ("rust-glob" ,rust-glob-0.3)
+                       ("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-once-cell" ,rust-once-cell-1)
+                       ("rust-percent-encoding" ,rust-percent-encoding-2)
+                       ("rust-phf" ,rust-phf-0.11)
+                       ("rust-proc-mounts" ,rust-proc-mounts-0.3)
+                       ("rust-scoped-threadpool" ,rust-scoped-threadpool-0.1)
+                       ("rust-terminal-size" ,rust-terminal-size-0.3)
+                       ("rust-timeago" ,rust-timeago-0.4)
+                       ("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-zoneinfo-compiled" ,rust-zoneinfo-compiled-0.5))
+      #:cargo-development-inputs `(("rust-criterion" ,rust-criterion-0.5)
+                                   ("rust-trycmd" ,rust-trycmd-0.14))
+      #: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 "eza.1" "eza_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? "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"))
+                         (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"))
+                         (copy-file "completions/zsh/_eza"
+                                    (string-append
+                                      share "/zsh/site-functions/_eza"))))))))
+    (native-inputs
+     (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")
+    (description
+     "@code{eza} 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.
+This package is the community maintained fork of @code{exa}.")
+    (license license:expat)))
+
 (define-public fd
   (package
     (name "fd")
@@ -533,18 +633,19 @@ also knows about symlinks, extended attributes, and Git.")
          (add-after 'install 'install-extra
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
-               (invoke "make" "completions")
                ;; Manpages
                (install-file "doc/fd.1" (string-append out "/share/man/man1"))
-               ;; 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"))))))))
+               ;; 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")
@@ -600,6 +701,7 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
      `(#:modules ((guix build cargo-build-system)
                   (guix build utils)
                   (srfi srfi-26))
+       #:install-source? #f
        #:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
         ("rust-cfg-if" ,rust-cfg-if-0.1)
@@ -629,13 +731,13 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
                    (zsh   (string-append share "zsh/site-functions")))
               (install-file "doc/hyperfine.1" man)
               (for-each (cut install-file <> bash)
-                        (find-files "target/release/build" "^hyperfine.bash$"))
+                        (find-files "target" "^hyperfine.bash$"))
               (rename-file (string-append bash "/hyperfine.bash")
                            (string-append bash "/hyperfine"))
               (for-each (cut install-file <> fish)
-                        (find-files "target/release/build" "^hyperfine.fish$"))
+                        (find-files "target" "^hyperfine.fish$"))
               (for-each (cut install-file <> zsh)
-                        (find-files "target/release/build" "^_hyperfine$"))))))))
+                        (find-files "target" "^_hyperfine$"))))))))
     (home-page "https://github.com/sharkdp/hyperfine")
     (synopsis "Command-line benchmarking tool")
     (description
@@ -829,12 +931,58 @@ bar.  It is also compatible with sway.")
                (with-output-to-file
                  (string-append share "/elvish/lib/just")
                  (lambda _ (invoke just "--completions" "elvish")))))))))
+    (inputs (list bash-minimal coreutils-minimal))
     (home-page "https://github.com/casey/just")
     (synopsis "Just a command runner")
     (description "This package provides @code{just}, a command runner.
 @code{just} is a handy way to save and run project-specific commands.")
     (license license:cc0)))
 
+(define-public kibi
+  (package
+    (name "kibi")
+    (version "0.2.2")
+    (source
+     (origin
+       ;; crates.io doesn't have the config files
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ilai-deutel/kibi")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1s9ka3pfhpssms2y5707f33n59ljnqqwp7jarh2l55a9dhlnl7d3"))))
+    (build-system cargo-build-system)
+    (arguments
+     (list
+      #:install-source? #f
+      #:cargo-test-flags `(list "--release" "--"
+                                "--skip=syntax::tests::syntax_d_files")
+      #:cargo-inputs `(("rust-libc" ,rust-libc-0.2)
+                       ("rust-unicode-width" ,rust-unicode-width-0.1)
+                       ("rust-winapi" ,rust-winapi-0.3)
+                       ("rust-winapi-util" ,rust-winapi-util-0.1))
+      #:cargo-development-inputs `(("rust-serial-test" ,rust-serial-test-0.5)
+                                   ("rust-tempfile" ,rust-tempfile-3))
+      #: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"))
+                              (syntax.d (string-append share "/syntax.d"))
+                              (etc (string-append out "/etc")))
+                         (mkdir-p syntax.d)
+                         (copy-recursively "syntax.d" syntax.d)
+                         (rename-file "config_example.ini" "config.ini")
+                         (install-file "config.ini" etc)))))))
+    (home-page "https://github.com/ilai-deutel/kibi")
+    (synopsis "Featureful text editor in less than 1024 lines of code")
+    (description
+     "Inspired by the kilo text editor in C, this package provides a text
+editor in less than 1024 lines of code with syntax higlighting, search and
+more.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public maturin
   (package
     (name "maturin")
@@ -985,6 +1133,7 @@ bar.  It is also compatible with sway.")
                  (lambda _ (invoke maturin "completions" "elvish")))))))))
     (propagated-inputs
      (list python-tomli))
+    (inputs (list bzip2))
     (native-inputs
      (list perl
            python-wheel
@@ -1031,6 +1180,7 @@ bar.  It is also compatible with sway.")
        #: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
@@ -1211,8 +1361,9 @@ touchscreen devices.")
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin")))
-               (install-file "target/release/swc" bin)))))))
+                    (bin (string-append out "/bin"))
+                    (swc (car (find-files "target" "^swc$"))))
+               (install-file swc bin)))))))
     (home-page "https://swc.rs/")
     (synopsis "Typescript/javascript compiler")
     (description "@code{rust-swc} is a typescript/javascript compiler.  It
@@ -1423,67 +1574,6 @@ rebase.")
               (base32
                "006rn3fn4njayjxr2vd24g1awssr9i3894nbmfzkybx07j728vav"))))))
 
-(define-public rust-cbindgen-0.19
-  (package
-    (inherit rust-cbindgen)
-    (name "rust-cbindgen")
-    (version "0.19.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "cbindgen" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1yld9fni9g9mzg4r42zfk79aq9mzm2sfzzjrrx4vir4lp4qqqwiq"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-clap" ,rust-clap-2)
-        ("rust-heck" ,rust-heck-0.3)
-        ("rust-indexmap" ,rust-indexmap-1)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-proc-macro2" ,rust-proc-macro2-1)
-        ("rust-quote" ,rust-quote-1)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-syn" ,rust-syn-1)
-        ("rust-tempfile" ,rust-tempfile-3)
-        ("rust-toml" ,rust-toml-0.5))
-       #:cargo-development-inputs
-       (("rust-serial-test" ,rust-serial-test-0.5))))
-    (native-inputs
-     (list python-cython))))
-
-(define-public rust-cbindgen-0.16
-  (package
-    (inherit rust-cbindgen)
-    (name "rust-cbindgen")
-    (version "0.16.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "cbindgen" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "049cai626nzw0km03parx4sxwaxgbr7i5ifjbjwnfxkqkj5k2i4k"))))
-    (arguments
-     `(#:tests? #false                  ;missing files
-       #:cargo-inputs
-       (("rust-clap" ,rust-clap-2)
-        ("rust-heck" ,rust-heck-0.3)
-        ("rust-indexmap" ,rust-indexmap-1)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-proc-macro2" ,rust-proc-macro2-1)
-        ("rust-quote" ,rust-quote-1)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-syn" ,rust-syn-1)
-        ("rust-tempfile" ,rust-tempfile-3)
-        ("rust-toml" ,rust-toml-0.5))
-       #:cargo-development-inputs
-       (("rust-serial-test" ,rust-serial-test-0.5))))))
-
 (define-public sniffglue
   (package
     (name "sniffglue")
@@ -1553,7 +1643,7 @@ of the project is to be runnable on untrusted networks without crashing.")
         (base32 "1q4mz2c32gfypx33zlzgd1q9h4322jrk13fzvsf8h676ylclqzpc"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-build-flags '("--release" "--features" "external-harfbuzz")
+     `(#:install-source? #f
        #:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
         ("rust-byte-unit" ,rust-byte-unit-4)
@@ -1917,220 +2007,41 @@ work.  This allows the client to be used in a much simpler way, with the
 background agent taking care of maintaining the necessary state.")
     (license license:expat)))
 
-(define-public rust-analyzer
-  (package
-    (name "rust-analyzer")
-    (version "2022-01-10")
-    (source
-     (origin
-       ;; The crate at "crates.io" is empty.
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/rust-analyzer/rust-analyzer")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "1ci85bp8xwqrk8nqr8sh6yj8njgd98nhgnhaks2g00c77wwyra41"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:rust ,rust-1.64
-       #:install-source? #f             ; virtual manifest
-       #:cargo-test-flags
-       '("--release" "--lib" "--tests" "--"
-         "--skip=tests::test_version_check" ;it need rustc's version
-         ;; FIXME: Guix's rust does not install source in
-         ;; %out/lib/rustlib/src/rust so "can't load standard library from
-         ;; sysroot"
-         "--skip=tests::test_loading_rust_analyzer"
-         ;; Failed to run rustfmt from toolchain 'stable'.  Please run `rustup
-         ;; component add rustfmt --toolchain stable` to install it
-         "--skip=tests::sourcegen::sourcegen_assists_docs" ;need rustfmt
-         "--skip=tests::sourcegen_ast::sourcegen_ast"      ;same
-
-         "--skip=tidy::check_licenses"          ;it runs cargo metadata
-         "--skip=tidy::check_merge_commits"     ;it runs git rev-list
-         "--skip=tidy::check_code_formatting"   ;need rustfmt as cargo fmt
-
-         ;; These tests require rust <= 1.60 and too many packages
-         ;; has as dependency rust-serde-json-1 that use indexmap2
-         ;; and it need rust >= 1.64
-         "--skip=tests::list_test_macros"
-         "--skip=tests::test_derive_empty"
-         "--skip=tests::test_attr_macro"
-         "--skip=tests::test_fn_like_macro"
-         "--skip=tests::test_fn_like_macro2"
-         "--skip=tests::test_derive_error")
-       #:cargo-development-inputs
-       (("rust-arbitrary" ,rust-arbitrary-1)
-        ("rust-derive-arbitrary" ,rust-derive-arbitrary-1)
-        ("rust-expect-test" ,rust-expect-test-1)
-        ("rust-oorandom" ,rust-oorandom-11)
-        ("rust-quote" ,rust-quote-1.0.10)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-tracing" ,rust-tracing-0.1)
-        ("rust-tracing-subscriber" ,rust-tracing-subscriber-0.3)
-        ("rust-tracing-tree" ,rust-tracing-tree-0.2)
-        ("rust-ungrammar" ,rust-ungrammar-1))
-       #:cargo-inputs
-       (("rust-always-assert" ,rust-always-assert-0.1)
-        ("rust-anyhow" ,rust-anyhow-1)
-        ("rust-anymap" ,rust-anymap-0.12)
-        ("rust-arrayvec" ,rust-arrayvec-0.7)
-        ("rust-cargo-metadata" ,rust-cargo-metadata-0.14)
-        ("rust-cfg-if" ,rust-cfg-if-1)
-        ("rust-chalk-ir" ,rust-chalk-ir-0.75)
-        ("rust-chalk-recursive" ,rust-chalk-recursive-0.75)
-        ("rust-chalk-solve" ,rust-chalk-solve-0.75)
-        ("rust-countme" ,rust-countme-3)
-        ("rust-cov-mark" ,rust-cov-mark-2)
-        ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
-        ("rust-dissimilar" ,rust-dissimilar-1)
-        ("rust-dot" ,rust-dot-0.1)
-        ("rust-drop-bomb" ,rust-drop-bomb-0.1)
-        ("rust-either" ,rust-either-1.6.0)
-        ("rust-ena" ,rust-ena-0.14)
-        ("rust-env-logger" ,rust-env-logger-0.8)
-        ("rust-flate2" ,rust-flate2-1)
-        ("rust-fst" ,rust-fst-0.4)
-        ("rust-home" ,rust-home-0.5)
-        ("rust-indexmap" ,rust-indexmap-1.7)
-        ("rust-itertools" ,rust-itertools-0.10)
-        ("rust-jod-thread" ,rust-jod-thread-0.1)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-libloading" ,rust-libloading-0.7)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-lsp-server" ,rust-lsp-server-0.5)
-        ("rust-lsp-types" ,rust-lsp-types-0.91)
-        ("rust-memmap2" ,rust-memmap2-0.5)
-        ("rust-mimalloc" ,rust-mimalloc-0.1)
-        ("rust-miow" ,rust-miow-0.4)
-        ("rust-notify" ,rust-notify-5-pre.13)
-        ("rust-object" ,rust-object-0.28)
-        ("rust-once-cell" ,rust-once-cell-1)
-        ("rust-parking-lot" ,rust-parking-lot-0.11)
-        ("rust-perf-event" ,rust-perf-event-0.4)
-        ("rust-proc-macro2" ,rust-proc-macro2-1.0.34)
-        ("rust-pulldown-cmark" ,rust-pulldown-cmark-0.8)
-        ("rust-pulldown-cmark-to-cmark" ,rust-pulldown-cmark-to-cmark-7)
-        ("rust-rowan" ,rust-rowan-0.15)
-        ("rust-rustc-ap-rustc-lexer" ,rust-rustc-ap-rustc-lexer-725)
-        ("rust-rustc-hash" ,rust-rustc-hash-1)
-        ("rust-salsa" ,rust-salsa-0.17)
-        ("rust-scoped-tls" ,rust-scoped-tls-1)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-serde-json" ,rust-serde-json-1.0.73)
-        ("rust-serde-path-to-error" ,rust-serde-path-to-error-0.1)
-        ("rust-typed-arena" ,rust-typed-arena-2)
-        ("rust-smallvec" ,rust-smallvec-1)
-        ("rust-smol-str" ,rust-smol-str-0.1)
-        ("rust-snap" ,rust-snap-1)
-        ("rust-text-size" ,rust-text-size-1)
-        ("rust-threadpool" ,rust-threadpool-1)
-        ("rust-tikv-jemalloc-ctl" ,rust-tikv-jemalloc-ctl-0.4)
-        ("rust-tikv-jemallocator" ,rust-tikv-jemallocator-0.4)
-        ("rust-url" ,rust-url-2)
-        ("rust-walkdir" ,rust-walkdir-2)
-        ("rust-winapi" ,rust-winapi-0.3)
-        ("rust-write-json" ,rust-write-json-0.1)
-        ("rust-xflags" ,rust-xflags-0.2)
-        ("rust-xshell" ,rust-xshell-0.1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'fix-tests
-           (lambda _
-             (let ((bash (string-append "#!" (which "bash"))))
-               (with-directory-excursion "crates/parser/test_data/lexer/ok"
-                 (substitute* "single_line_comments.txt"
-                   (("SHEBANG 19")
-                    (string-append "SHEBANG "
-                                   (number->string (string-length bash))))
-                   (("#!/usr/bin/env bash") bash))))))
-         (add-before 'install 'install-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (string-append out "/share/doc/rust-analyzer-"
-                                        ,version)))
-               (copy-recursively "docs" doc))))
-         (add-before 'install 'chdir
-           (lambda _
-             (chdir "crates/rust-analyzer")))
-         (add-after 'install 'wrap-program
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (rust-src-path (search-input-directory
-                                    inputs "/lib/rustlib/src/rust/library")))
-               ;; if environment variable RUST_SRC_PATH is not set, set it,
-               ;; make rust-analyzer work out of box.
-               (with-directory-excursion bin
-                 (let* ((prog "rust-analyzer")
-                        (wrapped-file (string-append (dirname prog)
-                                                     "/." (basename prog) "-real"))
-                        (prog-tmp (string-append wrapped-file "-tmp")))
-                   (link prog wrapped-file)
-                   (call-with-output-file prog-tmp
-                     (lambda (port)
-                       (format port "#!~a
-if test -z \"${RUST_SRC_PATH}\";then export RUST_SRC_PATH=~S;fi;
-exec -a \"$0\" \"~a\" \"$@\""
-                               (which "bash")
-                               rust-src-path
-                               (canonicalize-path wrapped-file))))
-                   (chmod prog-tmp #o755)
-                   (rename-file prog-tmp prog))))))
-         (replace 'install-license-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (string-append out "/share/doc/rust-analyzer-"
-                                        ,version)))
-               (chdir "../..")
-               (install-file "LICENSE-MIT" doc)
-               (install-file "LICENSE-APACHE" doc)))))))
-    (native-inputs (list rust-src-1.64))
-    (home-page "https://rust-analyzer.github.io/")
-    (synopsis "Experimental Rust compiler front-end for IDEs")
-    (description "Rust-analyzer is a modular compiler frontend for the Rust
-language.  It is a part of a larger rls-2.0 effort to create excellent IDE
-support for Rust.")
-    (license (list license:expat license:asl2.0))))
-
 ;;; Note: keep in sync with our current Rust/Cargo version.
 (define-public rust-cargo-c
   (package
     (name "rust-cargo-c")
-    (version "0.9.18+cargo-0.69")
+    (version "0.9.27+cargo-0.74.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "cargo-c" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".tar.gz"))
         (sha256
-         (base32
-          "191d0813g4m2g1c1h8ykgrfp00blkbds6pg3zl044iyxaclng29h"))))
+         (base32 "1xsw17zcxzlg7d7pg40anm9w8g95kvnxfp7ln9sbgv3zhsc9wggq"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-anyhow" ,rust-anyhow-1)
-        ("rust-cargo" ,rust-cargo-0.69)
+        ("rust-cargo" ,rust-cargo-0.74)
         ("rust-cargo-util" ,rust-cargo-util-0.2)
-        ("rust-cbindgen" ,rust-cbindgen-0.24)
+        ("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.10)
+        ("rust-itertools" ,rust-itertools-0.11)
         ("rust-log" ,rust-log-0.4)
         ("rust-regex" ,rust-regex-1)
         ("rust-semver" ,rust-semver-1)
         ("rust-serde" ,rust-serde-1)
         ("rust-serde-derive" ,rust-serde-derive-1)
         ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-toml" ,rust-toml-0.7))))
+        ("rust-toml" ,rust-toml-0.7)
+        ("rust-windows-sys" ,rust-windows-sys-0.48))))
     (native-inputs
      (list pkg-config))
     (inputs
-     (list curl libgit2 libssh2 openssl zlib))
+     (list curl libgit2-1.6 libssh2 openssl zlib))
     (home-page "https://github.com/lu-zero/cargo-c")
     (synopsis "Build and install C-compatible libraries")
     (description
@@ -2284,6 +2195,66 @@ consecutive lines and since program start.")
 (define-public rust-skim-0.7
   (deprecated-package "rust-skim-0.7" skim-0.7))
 
+(define-public spotifyd
+  (package
+    (name "spotifyd")
+    (version "0.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "spotifyd" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1g6k8xmx8xvc2dpak14y8cc2221djhdflzsjczygvqa9gk5jiadd"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:install-source? #f
+       #:cargo-inputs (("rust-alsa" ,rust-alsa-0.7)
+                       ("rust-chrono" ,rust-chrono-0.4)
+                       ("rust-color-eyre" ,rust-color-eyre-0.6)
+                       ("rust-daemonize" ,rust-daemonize-0.5)
+                       ("rust-dbus" ,rust-dbus-0.9)
+                       ("rust-dbus-crossroads" ,rust-dbus-crossroads-0.5)
+                       ("rust-dbus-tokio" ,rust-dbus-tokio-0.7)
+                       ("rust-fern" ,rust-fern-0.6)
+                       ("rust-futures" ,rust-futures-0.3)
+                       ("rust-gethostname" ,rust-gethostname-0.4)
+                       ("rust-hex" ,rust-hex-0.4)
+                       ("rust-keyring" ,rust-keyring-2)
+                       ("rust-libc" ,rust-libc-0.2)
+                       ("rust-librespot-audio" ,rust-librespot-audio-0.4)
+                       ("rust-librespot-connect" ,rust-librespot-connect-0.4)
+                       ("rust-librespot-core" ,rust-librespot-core-0.4)
+                       ("rust-librespot-discovery" ,rust-librespot-discovery-0.4)
+                       ("rust-librespot-playback" ,rust-librespot-playback-0.4)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-rspotify" ,rust-rspotify-0.11)
+                       ("rust-serde" ,rust-serde-1)
+                       ("rust-sha-1" ,rust-sha-1-0.10)
+                       ("rust-structopt" ,rust-structopt-0.3)
+                       ("rust-syslog" ,rust-syslog-6)
+                       ("rust-tokio" ,rust-tokio-1)
+                       ("rust-tokio-stream" ,rust-tokio-stream-0.1)
+                       ("rust-toml" ,rust-toml-0.7)
+                       ("rust-url" ,rust-url-2)
+                       ("rust-whoami" ,rust-whoami-1)
+                       ("rust-xdg" ,rust-xdg-2))
+       #:cargo-development-inputs (("rust-env-logger" ,rust-env-logger-0.10))
+       #:features (list "alsa_backend"
+                        "dbus_keyring"
+                        ;"dbus_mpris"   ; Conflicts with rust-chrono-0.4 version.
+                        "pulseaudio_backend"
+                        "rodio_backend")))
+    (native-inputs (list perl pkg-config))
+    (inputs (list alsa-lib dbus pulseaudio))
+    (home-page "https://github.com/Spotifyd/spotifyd")
+    (synopsis "Spotify streaming daemon with Spotify Connect support")
+    (description
+     "This package provides a light-weight daemon that connects to the Spotify
+music service.  A Spotifyd instance can be controlled by clients that use the
+Spotify Connect protocol, which includes the official Spotify mobile apps.")
+    (license license:gpl3)))
+
 (define-public svd2rust
   (package
     (name "svd2rust")
@@ -2522,14 +2493,7 @@ It will then write @code{fixup!} commits for each of those changes.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1815hz1a93brj6v9102xypds1qslf6gxgk9vcvxhxlhy1c2pfxvj"))
-       (snippet
-        #~(begin (use-modules (guix build utils))
-                 (substitute* "Cargo.toml"
-                   (("1\\.0\\.75") "1.0.68")    ; rust-anyhow
-                   (("0\\.4\\.19") "0.4.17")    ; rust-log
-                   (("1\\.9\\.4") "1.9.1")      ; regex
-                   (("3\\.3") "3.0"))))))       ; serde-with
+         "1815hz1a93brj6v9102xypds1qslf6gxgk9vcvxhxlhy1c2pfxvj"))))
     (build-system cargo-build-system)
     (arguments
      `(#:features '()
@@ -2667,7 +2631,8 @@ It will then write @code{fixup!} commits for each of those changes.")
         (base32 "0y5v2vgl9f3n0n0w4b3iddbfyxv0hls0vw5406ry0hcvnnjyy2l3"))))
     (build-system cargo-build-system)
     (arguments
-     (list #:cargo-inputs
+     (list #:install-source? #f
+           #:cargo-inputs
            `(("rust-anyhow" ,rust-anyhow-1)
              ("rust-askama" ,rust-askama-0.11)
              ("rust-bincode" ,rust-bincode-1)
@@ -2685,26 +2650,7 @@ It will then write @code{fixup!} commits for each of those changes.")
            `(("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))
-           #:phases
-           #~(modify-phases %standard-phases
-               (add-after 'unpack 'use-older-rust
-                 (lambda _
-                   (setenv "RUSTC_BOOTSTRAP" "1")
-                   (substitute* "Cargo.toml"
-                     (("^rust-version = .*$")
-                      (string-append
-                       "rust-version = \""
-                       #$(package-version rust)
-                       "\"\n")))
-                   (substitute* "src/main.rs"
-                     (("#!\\[allow\\(clippy::single_component_path_imports)]")
-                      "#![feature(total_cmp)]"))
-                   (substitute* "src/cmd/query.rs"
-                     (("let handle = &mut io::stdout\\()\\.lock\\();")
-                      "\
-let _stdout = io::stdout();
-let handle = &mut _stdout.lock();")))))))
+             ("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/ajeetdsouza/zoxide/")
     (synopsis "Fast way to navigate your file system")
     (description