Merge master into haskell-updates
This commit is contained in:
@@ -3251,6 +3251,12 @@
|
||||
githubId = 13485450;
|
||||
name = "Emmanuel Rosa";
|
||||
};
|
||||
emptyflask = {
|
||||
email = "jon@emptyflask.dev";
|
||||
github = "emptyflask";
|
||||
githubId = 28287;
|
||||
name = "Jon Roberts";
|
||||
};
|
||||
endgame = {
|
||||
email = "jack@jackkelly.name";
|
||||
github = "endgame";
|
||||
@@ -4671,6 +4677,12 @@
|
||||
githubId = 36193715;
|
||||
name = "Lassi Haasio";
|
||||
};
|
||||
ilkecan = {
|
||||
email = "ilkecan@protonmail.com";
|
||||
github = "ilkecan";
|
||||
githubId = 40234257;
|
||||
name = "ilkecan bozdogan";
|
||||
};
|
||||
illegalprime = {
|
||||
email = "themichaeleden@gmail.com";
|
||||
github = "illegalprime";
|
||||
|
||||
@@ -1139,10 +1139,12 @@ in
|
||||
source = "${pkgs.iputils.out}/bin/ping";
|
||||
};
|
||||
} else {
|
||||
setuid = true;
|
||||
owner = "root";
|
||||
group = "root";
|
||||
source = "${pkgs.iputils.out}/bin/ping";
|
||||
ping = {
|
||||
setuid = true;
|
||||
owner = "root";
|
||||
group = "root";
|
||||
source = "${pkgs.iputils.out}/bin/ping";
|
||||
};
|
||||
};
|
||||
security.apparmor.policies."bin.ping".profile = lib.mkIf config.security.apparmor.policies."bin.ping".enable (lib.mkAfter ''
|
||||
/run/wrappers/bin/ping {
|
||||
|
||||
@@ -32,9 +32,9 @@ rustPlatform.buildRustPackage rec {
|
||||
buildInputs = [
|
||||
openssl
|
||||
oniguruma
|
||||
] ++ lib.optional stdenv.isDarwin [
|
||||
CoreServices
|
||||
libsass
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
CoreServices
|
||||
];
|
||||
|
||||
RUSTONIG_SYSTEM_LIBONIG = true;
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
{ stdenv, callPackage, fetchurl, lib }:
|
||||
|
||||
let
|
||||
mkRambox = opts: callPackage (import ./rambox.nix opts) { };
|
||||
in mkRambox rec {
|
||||
mkRambox = opts: callPackage (import ./rambox.nix opts) {};
|
||||
in
|
||||
mkRambox rec {
|
||||
pname = "rambox";
|
||||
version = "0.7.8";
|
||||
version = "0.7.9";
|
||||
|
||||
src = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://github.com/ramboxapp/community-edition/releases/download/${version}/Rambox-${version}-linux-x86_64.AppImage";
|
||||
sha256 = "1y3c9xh8594ay95rj9vaqxxzibwpc38n7ixxi2wnsrdbrqrwlc63";
|
||||
sha256 = "19y4cmrfp79dr4hgl698imp4f3l1nhgvhh76j5laxg46ld71knil";
|
||||
};
|
||||
i686-linux = fetchurl {
|
||||
url = "https://github.com/ramboxapp/community-edition/releases/download/${version}/Rambox-${version}-linux-i386.AppImage";
|
||||
sha256 = "07sv384nd2i701fkjgsrlib8jfsa01bvj60gnqdwlnpphlknga3h";
|
||||
sha256 = "13wiciyshyrabq2mvnssl2d6svia1kdvwx3dl26249iyif96xxvq";
|
||||
};
|
||||
}.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
|
||||
|
||||
@@ -21,8 +22,8 @@ in mkRambox rec {
|
||||
description = "Free and Open Source messaging and emailing app that combines common web applications into one";
|
||||
homepage = "https://rambox.pro";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ ];
|
||||
platforms = ["i686-linux" "x86_64-linux"];
|
||||
maintainers = with maintainers; [];
|
||||
platforms = [ "i686-linux" "x86_64-linux" ];
|
||||
hydraPlatforms = [];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "clojure";
|
||||
version = "1.10.3.943";
|
||||
version = "1.10.3.986";
|
||||
|
||||
src = fetchurl {
|
||||
# https://clojure.org/releases/tools
|
||||
url = "https://download.clojure.org/install/clojure-tools-${version}.tar.gz";
|
||||
sha256 = "sha256-w3DRvZsie22uoJMrNQTxN5hW0pIFjH5zAw5Z41I1M/s=";
|
||||
sha256 = "1xhfp186mk9h3jdl9bpkigqrrrgdhgij7ba65j6783nh11llpa3x";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, cchardet
|
||||
, chardet
|
||||
, cleo
|
||||
, clikit
|
||||
@@ -12,17 +13,18 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "clevercsv";
|
||||
version = "0.7.0";
|
||||
version = "0.7.1";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "alan-turing-institute";
|
||||
repo = "CleverCSV";
|
||||
rev = "v${version}";
|
||||
sha256 = "09ccgydnrfdgxjz6ph829l9q62jkzqrak0k6yjik2rvs33jn0dhc";
|
||||
sha256 = "sha256-ynS3G2ZcEqVlC2d6n5ZQ1Em5lh/dWESj9jEO8C4WzZQ=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
cchardet
|
||||
chardet
|
||||
cleo
|
||||
clikit
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "google-cloud-resource-manager";
|
||||
version = "1.1.0";
|
||||
version = "1.1.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "a88f21b7a110dc9b5fd8e5bc9c07330fafc9ef150921505250aec0f0b25cf5e8";
|
||||
sha256 = "1d2c86cf6df12b5fc024b8035ca1130d93654ba984f3026eaa5854dd538d7841";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ google-api-core google-cloud-core grpc-google-iam-v1 proto-plus ];
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "google-cloud-secret-manager";
|
||||
version = "2.7.1";
|
||||
version = "2.7.2";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "84ae86a2320425df2e78d981d4ab26bff591ade1b978c18c929188b741a7b37d";
|
||||
sha256 = "6508a260ea273de0ff17d0bf66a3f93009a9b02ace7736486f70a91789c3e34a";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
||||
@@ -24,12 +24,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "snowflake-connector-python";
|
||||
version = "2.6.1";
|
||||
version = "2.6.2";
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "dbe6f7d84debd27b117e17fdb280be27695cf6ae54009c49495584d1b7776d1b";
|
||||
sha256 = "ce131b1dd059a4d081e78595d618654bf9b9fc184d78352f24512375467257d1";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
{ lib
|
||||
, appdirs
|
||||
, buildPythonPackage
|
||||
, dnspython
|
||||
, fetchPypi
|
||||
, filelock
|
||||
, idna
|
||||
, pytestCheckHook
|
||||
, uritools
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "urlextract";
|
||||
version = "1.3.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-yxOuiswFOJnAvxwTT++Zhk8nZWK2f4ePsQpUYI7EYS4=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
appdirs
|
||||
filelock
|
||||
idna
|
||||
uritools
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
dnspython
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
disabledTests = [
|
||||
# fails with dns.resolver.NoResolverConfiguration due to network sandboxing
|
||||
"test_check_dns_enabled"
|
||||
"test_check_dns_find_urls"
|
||||
"test_dns_cache_init"
|
||||
"test_dns_cache_negative"
|
||||
"test_dns_cache_reuse"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "urlextract" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Collects and extracts URLs from given text";
|
||||
homepage = "https://github.com/lipoja/URLExtract";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ ilkecan ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{ lib, stdenv, fetchurl, jre, makeWrapper }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "google-java-format";
|
||||
version = "1.11.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/google/google-java-format/releases/download/v${version}/google-java-format-${version}-all-deps.jar";
|
||||
sha256 = "1ixpg8ljg819fq94mxyypknmslva3rkifphbnq3ic71b7iip6lia";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ jre ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,share/google-java-format}
|
||||
install -D ${src} $out/share/google-java-format/google-java-format.jar
|
||||
|
||||
makeWrapper ${jre}/bin/java $out/bin/google-java-format \
|
||||
--add-flags "-jar $out/share/google-java-format/google-java-format.jar"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Java source formatter by Google";
|
||||
longDescription = ''
|
||||
A program that reformats Java source code to comply with Google Java Style.
|
||||
'';
|
||||
homepage = "https://github.com/google/google-java-format";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ maintainers.emptyflask ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{ buildGoModule
|
||||
, fetchFromGitHub
|
||||
, lib
|
||||
, makeWrapper
|
||||
, runc
|
||||
, wrapperDir ? "/run/wrappers/bin" # Default for NixOS, other systems might need customization.
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "img";
|
||||
version = "0.5.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "genuinetools";
|
||||
repo = "img";
|
||||
rev = "v${version}";
|
||||
sha256 = "0r5hihzp2679ki9hr3p0f085rafy2hc8kpkdhnd4m5k4iibqib08";
|
||||
};
|
||||
|
||||
vendorSha256 = null;
|
||||
|
||||
postPatch = ''
|
||||
V={newgidmap,newgidmap} \
|
||||
substituteInPlace ./internal/unshare/unshare.c \
|
||||
--replace "/usr/bin/$V" "${wrapperDir}/$V"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
tags = [
|
||||
"seccomp"
|
||||
"noembed" # disables embedded `runc`
|
||||
];
|
||||
|
||||
ldflags = [
|
||||
"-X github.com/genuinetools/img/version.VERSION=v${version}"
|
||||
"-s -w"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/img" --prefix PATH : ${lib.makeBinPath [ runc ]}
|
||||
'';
|
||||
|
||||
# Tests fail as: internal/binutils/install.go:57:15: undefined: Asset
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Standalone, daemon-less, unprivileged Dockerfile and OCI compatible container image builder. ";
|
||||
license = licenses.mit;
|
||||
homepage = "https://github.com/genuinetools/img";
|
||||
maintainers = with maintainers; [ superherointj ];
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{ mkDerivation, lib, fetchurl, fetchgit, fetchpatch
|
||||
, qtbase, qtquickcontrols, qtscript, qtdeclarative, qmake, llvmPackages_8
|
||||
, qtbase, qtquickcontrols, qtscript, qtdeclarative, qmake, llvmPackages_8, elfutils, perf
|
||||
, withDocumentation ? false, withClangPlugins ? true
|
||||
}:
|
||||
|
||||
@@ -28,7 +28,7 @@ mkDerivation rec {
|
||||
sha256 = "07i045mzwbfhwj2jlijhz9xs6ay03qs5dgcw2kzlcr79a69i0h6j";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase qtscript qtquickcontrols qtdeclarative ] ++
|
||||
buildInputs = [ qtbase qtscript qtquickcontrols qtdeclarative elfutils.dev ] ++
|
||||
optionals withClangPlugins [ llvmPackages_8.libclang
|
||||
clang_qt_vendor
|
||||
llvmPackages_8.llvm ];
|
||||
@@ -49,6 +49,8 @@ mkDerivation rec {
|
||||
|
||||
installFlags = [ "INSTALL_ROOT=$(out)" ] ++ optional withDocumentation "install_docs";
|
||||
|
||||
qtWrapperArgs = [ "--set-default PERFPROFILER_PARSER_FILEPATH ${lib.getBin perf}/bin" ];
|
||||
|
||||
preConfigure = ''
|
||||
substituteInPlace src/plugins/plugins.pro \
|
||||
--replace '$$[QT_INSTALL_QML]/QtQuick/Controls' '${qtquickcontrols}/${qtbase.qtQmlPrefix}/QtQuick/Controls'
|
||||
|
||||
@@ -69,13 +69,13 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://www.desmume.com";
|
||||
homepage = "https://www.github.com/TASVideos/desmume/";
|
||||
description = "An open-source Nintendo DS emulator";
|
||||
longDescription = ''
|
||||
DeSmuME is a freeware emulator for the NDS roms & Nintendo DS
|
||||
Lite games created by YopYop156. It supports many homebrew nds
|
||||
rom demoes as well as a handful of Wireless Multiboot demo nds
|
||||
roms. DeSmuME is also able to emulate nearly all of the
|
||||
DeSmuME is a freeware emulator for the NDS roms & Nintendo DS Lite games
|
||||
created by YopYop156 and now maintained by the TASvideos team. It supports
|
||||
many homebrew nds rom demoes as well as a handful of Wireless Multiboot
|
||||
demo nds roms. DeSmuME is also able to emulate nearly all of the
|
||||
commercial nds rom titles which other DS Emulators aren't.
|
||||
'';
|
||||
license = licenses.gpl2Plus;
|
||||
@@ -84,3 +84,4 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
}
|
||||
# TODO: investigate the patches
|
||||
# TODO: investigate other platforms
|
||||
|
||||
@@ -4,20 +4,20 @@ let
|
||||
webassets = fetchFromGitHub {
|
||||
owner = "gravitational";
|
||||
repo = "webassets";
|
||||
rev = "2891baa0de7283f61c08ff2fa4494e53f9d4afc1";
|
||||
sha256 = "sha256-AvhCOLa+mgty9METlOCARlUOEDMAW6Kk1esSmBbVcok=";
|
||||
rev = "07493a5e78677de448b0e35bd72bf1dc6498b5ea";
|
||||
sha256 = "sha256-V1vGGC8Q257iQMhxCBEBkZntt0ckppCJMCEr2Nqxo/M=";
|
||||
};
|
||||
in
|
||||
buildGoModule rec {
|
||||
pname = "teleport";
|
||||
version = "7.1.3";
|
||||
version = "7.2.0";
|
||||
|
||||
# This repo has a private submodule "e" which fetchgit cannot handle without failing.
|
||||
src = fetchFromGitHub {
|
||||
owner = "gravitational";
|
||||
repo = "teleport";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-upzEfImMuYU/6F5HSR3Jah3QiMXEt0XMpNAPzEYV1Nk=";
|
||||
sha256 = "sha256-JLYma/LB/3xLWaFcIbe32pAz6P8hBiLlMuTUBVfqfsw=";
|
||||
};
|
||||
|
||||
vendorSha256 = null;
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
{ lib, stdenv, fetchurl, autoPatchelfHook, installShellFiles }:
|
||||
|
||||
let
|
||||
version = "6.0.2";
|
||||
# TODO: add support for macOS
|
||||
srcUrl =
|
||||
if stdenv.isi686 then {
|
||||
url = "https://www.rarlab.com/rar/rarlinux-${version}.tar.gz";
|
||||
sha256 = "sha256-5iqK7eOo+hgLtGSCqUoB+wOFZHUqZ0M/8Jf7bxdf9qA=";
|
||||
} else if stdenv.isx86_64 then {
|
||||
url = "https://www.rarlab.com/rar/rarlinux-x64-${version}.tar.gz";
|
||||
sha256 = "sha256-WAvrUGCgfwI51Mo/RYSSF0OLPPrTegUCuDEsnBeR9uQ=";
|
||||
}
|
||||
else throw "Unknown architecture";
|
||||
manSrc = fetchurl {
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/rar.1?h=rar&id=8e39a12e88d8a3b168c496c44c18d443c876dd10";
|
||||
name = "rar.1";
|
||||
sha256 = "sha256-93cSr9oAsi+xHUtMsUvICyHJe66vAImS2tLie7nt8Uw=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rar";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl srcUrl;
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
buildInputs = [ stdenv.cc.cc.lib ];
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook installShellFiles ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm755 {rar,unrar} -t "$out/bin"
|
||||
install -Dm755 default.sfx -t "$out/lib"
|
||||
install -Dm644 {acknow.txt,license.txt} -t "$out/share/doc/rar"
|
||||
install -Dm644 rarfiles.lst -t "$out/etc"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
installManPage ${manSrc}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Utility for RAR archives";
|
||||
homepage = "https://www.rarlab.com/";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ thiagokokada ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -10,20 +10,27 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "zellij";
|
||||
version = "0.17.0";
|
||||
version = "0.18.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zellij-org";
|
||||
repo = "zellij";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ZV908Zrvx075TTbrYsw0JdQD+66XRfd7EW48lNZLNik=";
|
||||
sha256 = "sha256-yWDXCEdESRI/ynaBSxHi0lk5SE3i8GC+8OKDc+kgO1U=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-Wpg75RU1ANEnxgx28oy1kp4xt3HwIThNjHwmN8CRkjA=";
|
||||
cargoSha256 = "sha256-wmASt5+whRM9rAoy9/uykQJTnxEiVfpJwD4W8/ukdVk=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles pkg-config ];
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
|
||||
buildInputs = [
|
||||
openssl
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
libiconv
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
HOME=$TMPDIR
|
||||
|
||||
@@ -5681,6 +5681,8 @@ with pkgs;
|
||||
|
||||
google-cloud-cpp = callPackage ../development/libraries/google-cloud-cpp { };
|
||||
|
||||
google-java-format = callPackage ../development/tools/google-java-format { };
|
||||
|
||||
gdown = with python3Packages; toPythonApplication gdown;
|
||||
|
||||
gopro = callPackage ../tools/video/gopro { };
|
||||
@@ -8646,6 +8648,8 @@ with pkgs;
|
||||
|
||||
ranger = callPackage ../applications/misc/ranger { };
|
||||
|
||||
rar = callPackage ../tools/archivers/rar { };
|
||||
|
||||
rarcrack = callPackage ../tools/security/rarcrack { };
|
||||
|
||||
rarian = callPackage ../development/libraries/rarian { };
|
||||
@@ -14262,6 +14266,8 @@ with pkgs;
|
||||
inherit (llvmPackages_9) stdenv clang llvm;
|
||||
};
|
||||
|
||||
img = callPackage ../development/tools/img { };
|
||||
|
||||
include-what-you-use = callPackage ../development/tools/analysis/include-what-you-use {
|
||||
llvmPackages = llvmPackages_12;
|
||||
};
|
||||
@@ -14623,7 +14629,9 @@ with pkgs;
|
||||
|
||||
pycritty = with python3Packages; toPythonApplication pycritty;
|
||||
|
||||
qtcreator = libsForQt5.callPackage ../development/tools/qtcreator { };
|
||||
qtcreator = libsForQt5.callPackage ../development/tools/qtcreator {
|
||||
inherit (linuxPackages) perf;
|
||||
};
|
||||
|
||||
qxmledit = libsForQt5.callPackage ../applications/editors/qxmledit {} ;
|
||||
|
||||
|
||||
@@ -9364,6 +9364,8 @@ in {
|
||||
|
||||
url-normalize = callPackage ../development/python-modules/url-normalize { };
|
||||
|
||||
urlextract = callPackage ../development/python-modules/urlextract { };
|
||||
|
||||
urlgrabber = callPackage ../development/python-modules/urlgrabber { };
|
||||
|
||||
urllib3 = callPackage ../development/python-modules/urllib3 { };
|
||||
|
||||
Reference in New Issue
Block a user