Please keep guix-devel@gnu.org in CC: or To:.

On Sun, 2021-03-28 at 10:18 +0000, mecqor labi wrote:
> Thanks for your help,
> The Shadowsocks package does not work in Guix at all, and this has been 
> reported over the developers of Guix, but it has never been solved.
> About Tor, this is not what I want, speed of the program is very slow, I have 
> problem in upload files and other ...
> 
> [...]

Guix has a package importer for rust crates:
  "guix import crate shadowsocks"

I imported the shadowsocks crate and some dependencies (see attachment).
(To build: "guix build -f d.scm")  Some dependencies are still missing,
but I hope this is enough to get you started with writing the package
definition.

Greetings,
Maxime

(use-modules (gnu packages crates-io)
            ((guix licenses) #:prefix license:)
             (guix build-system cargo)
             (guix packages)
             (guix download)
             (guix git-download))

(define-public rust-spin-0.9
  (package
    (name "rust-spin")
    (version "0.9.0")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "spin" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "0y2406b02rkn1p1mfcb9vn6mxy1nb222k2gfq5b2lcw1rfcbyyxq"))))
    (build-system cargo-build-system)
    (arguments
      `(#:cargo-inputs
        (("rust-lock-api" ,rust-lock-api-0.4))))
    (home-page
      "https://github.com/mvdnes/spin-rs.git";)
    (synopsis
      "Spin-based synchronization primitives")
    (description
      "Spin-based synchronization primitives")
    (license license:expat)))

(define-public rust-notify-5
  (package
    (name "rust-notify")
    (version "5.0.0-pre.6")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "notify" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "1hzlm8lscdbrd2gsniikqv4cv0g0w10yfpp61b0bkv9l6jwq5zg5"))))
    (build-system cargo-build-system)
    (arguments
      `(#:cargo-inputs
        (("rust-anymap" ,rust-anymap-0.12)
         ("rust-bitflags" ,rust-bitflags-1)
         ("rust-crossbeam-channel"
          ,rust-crossbeam-channel-0.5)
         ("rust-filetime" ,rust-filetime-0.2)
         ("rust-fsevent" ,rust-fsevent-2)
         ("rust-fsevent-sys" ,rust-fsevent-sys-3)
         ("rust-inotify" ,rust-inotify-0.9)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-mio" ,rust-mio-0.7)
         ("rust-serde" ,rust-serde-1)
         ("rust-walkdir" ,rust-walkdir-2)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
        (("rust-serde-json" ,rust-serde-json-1))))
    (home-page "https://github.com/notify-rs/notify";)
    (synopsis
      "Cross-platform filesystem notification library")
    (description
      "Cross-platform filesystem notification library")
    (license license:cc0)))

(define-public rust-nix-0.20
  (package
    (name "rust-nix")
    (version "0.20.0")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "nix" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "12n1syfd967hblrcrrqk63a4s1h4hsybfqwblh71rihvv8cli6zs"))))
    (build-system cargo-build-system)
    (arguments
      `(#:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
         ("rust-cc" ,rust-cc-1)
         ("rust-cfg-if" ,rust-cfg-if-1)
         ("rust-libc" ,rust-libc-0.2))
        #:cargo-development-inputs
        (("rust-bytes" ,rust-bytes-0.4)
         ;; TODO update to 0.5
         ("rust-caps" ,rust-caps-0.3)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.6)
         ("rust-semver" ,rust-semver-0.9)
         ("rust-sysctl" ,rust-sysctl-0.1)
         ("rust-tempfile" ,rust-tempfile-3))))
    (home-page "https://github.com/nix-rust/nix";)
    (synopsis "Rust friendly bindings to *nix APIs")
    (description
      "Rust friendly bindings to *nix APIs")
    (license license:expat)))

(define-public rust-byte-string-1
  (package
    (name "rust-byte-string")
    (version "1.0.0")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "byte-string" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "1vdll2i5gdx98d3wqbrq8c2l61jqqhzlri7d3hskm35a0mxdxahi"))))
    (build-system cargo-build-system)
    (home-page
      "https://github.com/FraGag/byte_string";)
    (synopsis
      "Wrapper types for outputting byte strings (b\"Hello\") using the Debug ({:?}) format.")
    (description
      "Wrapper types for outputting byte strings (b\"Hello\") using the Debug ({:?}) format.")
    (license (list license:expat license:asl2.0))))

(define-public rust-bloomfilter-1
  (package
    (name "rust-bloomfilter")
    (version "1.0.5")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "bloomfilter" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "1d352wzl3pwpwxixjh8b8v4sqaglgkzp0rfv1q068c8piddfizqw"))))
    (build-system cargo-build-system)
    (arguments
      `(#:cargo-inputs
        ;; TODO update to 0.6
        (("rust-bit-vec" ,rust-bit-vec-0.5)
         ("rust-rand" ,rust-rand-0.8)
         ("rust-siphasher" ,rust-siphasher-0.3))))
    (home-page
      "https://github.com/jedisct1/rust-bloom-filter";)
    (synopsis "Bloom filter implementation")
    (description "Bloom filter implementation")
    (license license:isc)))

(define-public rust-shadowsocks-crypto-0.2
  (package
    (name "rust-shadowsocks-crypto")
    (version "0.2.0")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "shadowsocks-crypto" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "0l42dagy8gkwasr5ras4yiy1h9dp6f461pichqmzf7wsl97m1axx"))))
    (build-system cargo-build-system)
    (arguments
      `(#:cargo-inputs
        (("rust-crypto2" ,rust-crypto2-0.1)
         ("rust-rand" ,rust-rand-0.8)
         ("rust-ring" ,rust-ring-0.16))
        #:cargo-development-inputs
        (("rust-hex" ,rust-hex-0.4))))
    (home-page
      "https://github.com/shadowsocks/shadowsocks-crypto";)
    (synopsis "Shadowsocks Crypto")
    (description "Shadowsocks Crypto")
    (license license:expat)))

(define-public rust-shadowsocks-1
  (package
    (name "rust-shadowsocks")
    (version "1.10.0")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "shadowsocks" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "1gsah34zrznl3b4za6f09vqzmzsw57nlwil3351hcfvqm8mazw8c"))))
    (build-system cargo-build-system)
    (arguments
      `(#:cargo-inputs
        (("rust-arc-swap" ,rust-arc-swap-1)
         ("rust-async-trait" ,rust-async-trait-0.1)
         ("rust-base64" ,rust-base64-0.13)
         ("rust-bloomfilter" ,rust-bloomfilter-1)
         ("rust-byte-string" ,rust-byte-string-1)
         ("rust-bytes" ,rust-bytes-1)
         ("rust-cfg-if" ,rust-cfg-if-1)
         ("rust-futures" ,rust-futures-0.3)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
         ("rust-mio" ,rust-mio-0.7)
         ("rust-nix" ,rust-nix-0.20)
         ("rust-notify" ,rust-notify-5)
         ("rust-pin-project" ,rust-pin-project-1)
         ("rust-serde" ,rust-serde-1)
         ("rust-serde-json" ,rust-serde-json-1)
         ("rust-serde-urlencoded"
          ,rust-serde-urlencoded-0.7)
         ("rust-shadowsocks-crypto"
          ,rust-shadowsocks-crypto-0.2)
         ;; TODO update rust-socket2-0.3 to 0.4
         ("rust-socket2" rust-socket2-0.3 #;,rust-socket2-0.4)
         ("rust-spin" ,rust-spin-0.9)
         ("rust-thiserror" ,rust-thiserror-1)
         ("rust-tokio" ,rust-tokio-1)
         ("rust-trust-dns-resolver"
          ,rust-trust-dns-resolver-0.20)
         ("rust-url" ,rust-url-2)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
        (("rust-env-logger" ,rust-env-logger-0.8))))
    (home-page
      "https://github.com/shadowsocks/shadowsocks-rust";)
    (synopsis
      "shadowsocks is a fast tunnel proxy that helps you bypass firewalls.")
    (description
      "shadowsocks is a fast tunnel proxy that helps you bypass firewalls.")
    (license license:expat)))
rust-shadowsocks-1

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to