{ lib, stdenv, fetchFromGitHub, rustPlatform, pkg-config, openssl, }: rustPlatform.buildRustPackage rec { pname = "shadowsocks-rust"; version = "1.23.5"; src = fetchFromGitHub { owner = "shadowsocks"; repo = "shadowsocks-rust"; tag = "v${version}"; hash = "sha256-szFFnQw38d8EWDKUF3/biuniNkd4Rz4sq7TvZGM8dcc="; }; cargoHash = "sha256-I+qHJ5w4aJOZCNhoMJpqOjrcmiHI+Mjfy5d8rl6L+Hw="; nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ pkg-config ]; buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ openssl ]; buildFeatures = [ "trust-dns" "local-tunnel" "local-socks4" "local-redir" "local-dns" "local-tun" "aead-cipher-extra" "aead-cipher-2022" "aead-cipher-2022-extra" ]; # all of these rely on connecting to www.example.com:80 checkFlags = [ "--skip=http_proxy" "--skip=tcp_tunnel" "--skip=tcprelay" "--skip=udp_tunnel" "--skip=udp_relay" "--skip=socks4_relay_connect" "--skip=socks5_relay_aead" "--skip=socks5_relay_stream" "--skip=trust_dns_resolver" ]; # timeouts in sandbox doCheck = false; meta = { description = "Rust port of Shadowsocks"; homepage = "https://github.com/shadowsocks/shadowsocks-rust"; changelog = "https://github.com/shadowsocks/shadowsocks-rust/raw/v${version}/debian/changelog"; license = lib.licenses.mit; maintainers = [ ]; }; }