diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/admin')
85 files changed, 5055 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/admin/acme.sh/default.nix b/nixpkgs/pkgs/tools/admin/acme.sh/default.nix new file mode 100644 index 000000000000..30badb175a96 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/acme.sh/default.nix @@ -0,0 +1,36 @@ +{ stdenv, lib, fetchFromGitHub, makeWrapper, curl, openssl, socat, iproute, unixtools, dnsutils }: +stdenv.mkDerivation rec { + pname = "acme.sh"; + version = "2.8.7"; + + src = fetchFromGitHub { + owner = "Neilpang"; + repo = "acme.sh"; + rev = version; + sha256 = "0bwzrrm07v2lpsja0r0z7nj3jrf814w57mmk8lbdk9dsb3i07x4w"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out $out/bin $out/libexec + cp -R $src/* $_ + makeWrapper $out/libexec/acme.sh $out/bin/acme.sh \ + --prefix PATH : "${ + lib.makeBinPath [ + socat + openssl + curl + dnsutils + (if stdenv.isLinux then iproute else unixtools.netstat) + ] + }" + ''; + + meta = with stdenv.lib; { + description = "A pure Unix shell script implementing ACME client protocol"; + homepage = "https://acme.sh/"; + license = licenses.gpl3; + maintainers = [ maintainers.yorickvp ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/adtool/default.nix b/nixpkgs/pkgs/tools/admin/adtool/default.nix new file mode 100644 index 000000000000..f239b18aec9f --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/adtool/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, openldap }: + +stdenv.mkDerivation rec { + pname = "adtool"; + version = "1.3.3"; + + src = fetchurl { + url = "https://gp2x.org/adtool/${pname}-${version}.tar.gz"; + sha256 = "1awmpjamrwivi69i0j2fyrziy9s096ckviqd9c4llc3990mfsn4n"; + }; + + configureFlags = [ + "--sysconfdir=/etc" + ]; + + installFlags = [ + "sysconfdir=$(out)/etc" + ]; + + buildInputs = [ openldap ]; + + enableParallelBuilding = true; + + postInstall = '' + mkdir -p $out/share/doc/adtool + mv $out/etc/* $out/share/doc/adtool + rmdir $out/etc + ''; + + # It requires an LDAP server for tests + doCheck = false; + + meta = with stdenv.lib; { + description = "Active Directory administration utility for Unix"; + homepage = "https://gp2x.org/adtool"; + license = licenses.gpl2; + maintainers = with maintainers; [ peterhoeg ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/amazon-ecr-credential-helper/default.nix b/nixpkgs/pkgs/tools/admin/amazon-ecr-credential-helper/default.nix new file mode 100644 index 000000000000..30d74c14ce5e --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/amazon-ecr-credential-helper/default.nix @@ -0,0 +1,23 @@ +{ buildGoPackage, fetchFromGitHub, lib, ... }: + +buildGoPackage rec { + pname = "amazon-ecr-credential-helper"; + version = "0.4.0"; + + goPackagePath = "github.com/awslabs/amazon-ecr-credential-helper"; + + src = fetchFromGitHub { + owner = "awslabs"; + repo = "amazon-ecr-credential-helper"; + rev = "v${version}"; + sha256 = "1whwxjzlyzyvrf2mzbd7my2kdz5fdbr79g18g9h4xrg8xyzk1k5q"; + }; + + meta = with lib; { + description = "The Amazon ECR Docker Credential Helper is a credential helper for the Docker daemon that makes it easier to use Amazon Elastic Container Registry"; + homepage = "https://github.com/awslabs/amazon-ecr-credential-helper"; + license = licenses.asl20 ; + maintainers = with maintainers; [ kalbasit ]; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/analog/default.nix b/nixpkgs/pkgs/tools/admin/analog/default.nix new file mode 100644 index 000000000000..68046be2eeea --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/analog/default.nix @@ -0,0 +1,38 @@ +{ stdenv, lib, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "analog"; + version = "6.0.16"; + + src = fetchFromGitHub { + owner = "c-amie"; + repo = "analog-ce"; + rev = version; + sha256 = "15hi8kfknldwpvm885r9s7zd5h7cirs7x0zazx2nnz62xvz3iymk"; + }; + + configurePhase = '' + sed -i src/anlghead.h \ + -e "s|#define DEFAULTCONFIGFILE .*|#define DEFAULTCONFIGFILE \"$out/etc/analog.cfg\"|g" \ + -e "s|#define LANGDIR .*|#define LANGDIR \"$out/share/$pname}/lang/\"|g" + ''; + + installPhase = '' + mkdir -p $out/bin $out/etc $out/share/doc/$pname $out/share/man/man1 $out/share/$pname + mv analog $out/bin/ + cp examples/big.cfg $out/etc/analog.cfg + mv analog.man $out/share/man/man1/analog.1 + mv docs $out/share/doc/$pname/manual + mv how-to $out/share/doc/$pname/ + mv lang images examples $out/share/$pname/ + ''; + + meta = { + homepage = "https://www.c-amie.co.uk/software/analog/"; + license = lib.licenses.gpl2; + description = "Powerful tool to generate web server statistics"; + maintainers = [ lib.maintainers.peti ]; + platforms = lib.platforms.linux; + }; + +} diff --git a/nixpkgs/pkgs/tools/admin/ansible/default.nix b/nixpkgs/pkgs/tools/admin/ansible/default.nix new file mode 100644 index 000000000000..58b2852baca3 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/ansible/default.nix @@ -0,0 +1,32 @@ +{ python3Packages, fetchurl, fetchFromGitHub }: + +rec { + ansible = ansible_2_10; + + # The python module stays at v2.9.x until the related package set has caught up. Therefore v2.10 gets an override + # for now. + ansible_2_10 = python3Packages.toPythonApplication (python3Packages.ansible.overridePythonAttrs (old: rec { + pname = "ansible"; + version = "2.10.0"; + + # TODO: migrate to fetchurl, when release becomes available on releases.ansible.com + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "0k9rs5ajx0chaq0xr1cj4x7fr5n8kd4y856miss6k01iv2m7yx42"; + }; + })); + + ansible_2_9 = python3Packages.toPythonApplication python3Packages.ansible; + + ansible_2_8 = python3Packages.toPythonApplication (python3Packages.ansible.overridePythonAttrs (old: rec { + pname = "ansible"; + version = "2.8.14"; + + src = fetchurl { + url = "https://releases.ansible.com/ansible/${pname}-${version}.tar.gz"; + sha256 = "19ga0c9qs2b216qjg5k2yknz8ksjn8qskicqspg2d4b8x2nr1294"; + }; + })); +} diff --git a/nixpkgs/pkgs/tools/admin/aws-env/default.nix b/nixpkgs/pkgs/tools/admin/aws-env/default.nix new file mode 100644 index 000000000000..dff375207976 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/aws-env/default.nix @@ -0,0 +1,25 @@ +{ buildGoPackage, fetchFromGitHub, lib }: + +buildGoPackage rec { + pname = "aws-env"; + version = "0.4"; + rev = "v${version}"; + + goPackagePath = "github.com/Droplr/aws-env"; + + src = fetchFromGitHub { + owner = "Droplr"; + repo = pname; + inherit rev; + sha256 = "0pw1qz1nn0ig90p8d8c1qcwsdz0m9w63ib07carhh86gw55425j7"; + }; + + goDeps = ./deps.nix; + + meta = with lib; { + description = "Secure way to handle environment variables in Docker and envfile with AWS Parameter Store"; + homepage = "https://github.com/Droplr/aws-env"; + license = licenses.mit; + maintainers = with maintainers; [ srhb ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/aws-env/deps.nix b/nixpkgs/pkgs/tools/admin/aws-env/deps.nix new file mode 100644 index 000000000000..891a6ecb5962 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/aws-env/deps.nix @@ -0,0 +1,12 @@ +# This file was generated by https://github.com/kamilchm/go2nix v1.2.1 +[ + { + goPackagePath = "github.com/aws/aws-sdk-go"; + fetch = { + type = "git"; + url = "https://github.com/aws/aws-sdk-go"; + rev = "5f03c87445c9dcd6aa831a76a77170919265aa97"; + sha256 = "146rwinw2x4r0f2pixv62b7mmhvnnfvvjmfaj6dqjxrhp0imcxdi"; + }; + } +] diff --git a/nixpkgs/pkgs/tools/admin/aws-google-auth/default.nix b/nixpkgs/pkgs/tools/admin/aws-google-auth/default.nix new file mode 100644 index 000000000000..d96eadf0eab5 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/aws-google-auth/default.nix @@ -0,0 +1,62 @@ +{ lib +, buildPythonApplication +, fetchFromGitHub +, beautifulsoup4 +, boto3 +, configparser +, keyring +, keyrings-alt +, lxml +, pillow +, requests +, six +, tabulate +, tzlocal +, nose +, mock +, withU2F ? false, python-u2flib-host +}: + +buildPythonApplication rec { + pname = "aws-google-auth"; + version = "0.0.34"; + + # Pypi doesn't ship the tests, so we fetch directly from GitHub + # https://github.com/cevoaustralia/aws-google-auth/issues/120 + src = fetchFromGitHub { + owner = "cevoaustralia"; + repo = "aws-google-auth"; + rev = version; + sha256 = "12c5ssdy870szrizhs4d7dzcpq3hvszjvl8ba60qf1ak5jsr1ay4"; + }; + + propagatedBuildInputs = [ + beautifulsoup4 + boto3 + configparser + keyring + keyrings-alt + lxml + pillow + requests + six + tabulate + tzlocal + ] ++ lib.optional withU2F python-u2flib-host; + + checkInputs = [ + mock + nose + ]; + + preCheck = '' + export HOME=$TMPDIR + ''; + + meta = with lib; { + description = "Acquire AWS STS (temporary) credentials via Google Apps SAML Single Sign On"; + homepage = "https://github.com/cevoaustralia/aws-google-auth"; + maintainers = [ maintainers.marsam ]; + license = licenses.mit; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/aws-rotate-key/default.nix b/nixpkgs/pkgs/tools/admin/aws-rotate-key/default.nix new file mode 100644 index 000000000000..9c2f747e1558 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/aws-rotate-key/default.nix @@ -0,0 +1,25 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + pname = "aws-rotate-key"; + version = "1.0.6"; + + goPackagePath = "github.com/Fullscreen/aws-rotate-key"; + + src = fetchFromGitHub { + rev = "v${version}"; + owner = "Fullscreen"; + repo = "aws-rotate-key"; + sha256 = "1w9704g1l2b0y6g6mk79g28kk0yaswpgljkk85d0i10wyxq4icby"; + }; + + goDeps = ./deps.nix; + + meta = with stdenv.lib; { + description = "Easily rotate your AWS key"; + homepage = "https://github.com/Fullscreen/aws-rotate-key"; + license = licenses.mit; + maintainers = [maintainers.mbode]; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/aws-rotate-key/deps.nix b/nixpkgs/pkgs/tools/admin/aws-rotate-key/deps.nix new file mode 100644 index 000000000000..680a18e7e2d3 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/aws-rotate-key/deps.nix @@ -0,0 +1,29 @@ +[ + { + goPackagePath = "github.com/go-ini/ini"; + fetch = { + type = "git"; + url = "https://github.com/go-ini/ini"; + rev = "af26abd521cd7697481572fdbc4a53cbea3dde1b"; + sha256 = "1yribbqy9i4i70dfg3yrjhkn3n0fywpr3kismn2mvi882mm01pxz"; + }; + } + { + goPackagePath = "github.com/jmespath/go-jmespath"; + fetch = { + type = "git"; + url = "https://github.com/jmespath/go-jmespath"; + rev = "c2b33e8439af944379acbdd9c3a5fe0bc44bd8a5"; + sha256 = "1r6w7ydx8ydryxk3sfhzsk8m6f1nsik9jg3i1zhi69v4kfl4d5cz"; + }; + } + { + goPackagePath = "github.com/aws/aws-sdk-go"; + fetch = { + type = "git"; + url = "https://github.com/aws/aws-sdk-go"; + rev = "f844700ba2a387dfee7ab3679e7544b5dbd6d394"; + sha256 = "0s9100bzqj58nnax3dxfgi5qr4rbaa53cb0cj3s58k9jc9z6270m"; + }; + } +] diff --git a/nixpkgs/pkgs/tools/admin/aws-vault/default.nix b/nixpkgs/pkgs/tools/admin/aws-vault/default.nix new file mode 100644 index 000000000000..d55b90f3b84d --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/aws-vault/default.nix @@ -0,0 +1,32 @@ +{ buildGoModule, lib, fetchFromGitHub }: +buildGoModule rec { + pname = "aws-vault"; + version = "6.2.0"; + + src = fetchFromGitHub { + owner = "99designs"; + repo = pname; + rev = "v${version}"; + sha256 = "0892fhjmxnms09bfbjnngnnnli2d4nkwq44fw98yb3d5lbpa1j1j"; + }; + + vendorSha256 = "18lmxx784377x1v0gr6fkdx5flhcajsqlzyjx508z0kih6ammc0z"; + + doCheck = false; + + subPackages = [ "." ]; + + # set the version. see: aws-vault's Makefile + buildFlagsArray = '' + -ldflags= + -X main.Version=v${version} + ''; + + meta = with lib; { + description = + "A vault for securely storing and accessing AWS credentials in development environments"; + homepage = "https://github.com/99designs/aws-vault"; + license = licenses.mit; + maintainers = with maintainers; [ zimbatm ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/awscli/default.nix b/nixpkgs/pkgs/tools/admin/awscli/default.nix new file mode 100644 index 000000000000..6bc329628916 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/awscli/default.nix @@ -0,0 +1,65 @@ +{ lib +, python3 +, groff +, less +}: + +let + py = python3.override { + packageOverrides = self: super: { + rsa = super.rsa.overridePythonAttrs (oldAttrs: rec { + version = "3.4.2"; + src = oldAttrs.src.override { + inherit version; + sha256 = "25df4e10c263fb88b5ace923dd84bf9aa7f5019687b5e55382ffcdb8bede9db5"; + }; + }); + }; + }; + +in with py.pkgs; buildPythonApplication rec { + pname = "awscli"; + version = "1.18.137"; # N.B: if you change this, change botocore to a matching version too + + src = fetchPypi { + inherit pname version; + sha256 = "0g745lvmi30di3bbpbca2bkqqzk7g6l3ssmbpi8pvgy0wrfhij69"; + }; + + postPatch = '' + substituteInPlace setup.py --replace "docutils>=0.10,<0.16" "docutils>=0.10" + ''; + + # No tests included + doCheck = false; + + propagatedBuildInputs = [ + botocore + bcdoc + s3transfer + six + colorama + docutils + rsa + pyyaml + groff + less + ]; + + postInstall = '' + mkdir -p $out/etc/bash_completion.d + echo "complete -C $out/bin/aws_completer aws" > $out/etc/bash_completion.d/awscli + mkdir -p $out/share/zsh/site-functions + mv $out/bin/aws_zsh_completer.sh $out/share/zsh/site-functions + rm $out/bin/aws.cmd + ''; + + passthru.python = py; # for aws_shell + + meta = with lib; { + homepage = "https://aws.amazon.com/cli/"; + description = "Unified tool to manage your AWS services"; + license = licenses.asl20; + maintainers = with maintainers; [ muflax ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/awscli2/default.nix b/nixpkgs/pkgs/tools/admin/awscli2/default.nix new file mode 100644 index 000000000000..471034fa51a8 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/awscli2/default.nix @@ -0,0 +1,86 @@ +{ lib +, python3 +, groff +, less +, fetchFromGitHub +}: +let + py = python3.override { + packageOverrides = self: super: { + botocore = super.botocore.overridePythonAttrs (oldAttrs: rec { + version = "2.0.0dev52"; + src = fetchFromGitHub { + owner = "boto"; + repo = "botocore"; + rev = "f115f16d8130957776f232bbb7505ff6c4f18e8c"; + hash = "sha256-wi9ezv6uIvCNFYJX6z0zQO7/VREhe1Sn/CakIgDRp1c="; + }; + }); + prompt_toolkit = super.prompt_toolkit.overridePythonAttrs (oldAttrs: rec { + version = "2.0.10"; + src = oldAttrs.src.override { + inherit version; + sha256 = "1nr990i4b04rnlw1ghd0xmgvvvhih698mb6lb6jylr76cs7zcnpi"; + }; + }); + }; + }; + +in +with py.pkgs; buildPythonApplication rec { + pname = "awscli2"; + version = "2.0.48"; # N.B: if you change this, change botocore to a matching version too + + src = fetchFromGitHub { + owner = "aws"; + repo = "aws-cli"; + rev = version; + hash = "sha256-83EKaKv3ZKOD2hzdsJO7/djbzr4V8LpHxqBl9HFhk1U="; + }; + + postPatch = '' + substituteInPlace setup.py --replace "cryptography>=2.8.0,<=2.9.0" "cryptography>=2.8.0" + substituteInPlace setup.py --replace "docutils>=0.10,<0.16" "docutils>=0.10" + substituteInPlace setup.py --replace "ruamel.yaml>=0.15.0,<0.16.0" "ruamel.yaml>=0.15.0" + substituteInPlace setup.py --replace "wcwidth<0.2.0" "wcwidth" + ''; + + # No tests included + doCheck = false; + + propagatedBuildInputs = [ + bcdoc + botocore + colorama + cryptography + distro + docutils + groff + less + prompt_toolkit + pyyaml + rsa + ruamel_yaml + s3transfer + six + wcwidth + ]; + + postInstall = '' + mkdir -p $out/etc/bash_completion.d + echo "complete -C $out/bin/aws_completer aws" > $out/etc/bash_completion.d/awscli + mkdir -p $out/share/zsh/site-functions + mv $out/bin/aws_zsh_completer.sh $out/share/zsh/site-functions + rm $out/bin/aws.cmd + ''; + + passthru.python = py; # for aws_shell + + meta = with lib; { + homepage = "https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html"; + changelog = "https://github.com/aws/aws-cli/blob/${version}/CHANGELOG.rst"; + description = "Unified tool to manage your AWS services"; + license = licenses.asl20; + maintainers = with maintainers; [ bhipple davegallant ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/awslogs/default.nix b/nixpkgs/pkgs/tools/admin/awslogs/default.nix new file mode 100644 index 000000000000..4a33d7420765 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/awslogs/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "awslogs"; + version = "0.11.0"; + + src = fetchFromGitHub { + owner = "jorgebastida"; + repo = "awslogs"; + rev = version; + sha256 = "0vdpld7r7y78x1lcd5z3qsx047dwichxb8f3447yzl75fnsm75dc"; + }; + + doCheck = false; + + propagatedBuildInputs = with python3Packages; [ + boto3 termcolor dateutil docutils setuptools + ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/jorgebastida/awslogs"; + description = "AWS CloudWatch logs for Humans"; + maintainers = with maintainers; [ dbrock ]; + license = licenses.bsd3; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/awsweeper/default.nix b/nixpkgs/pkgs/tools/admin/awsweeper/default.nix new file mode 100644 index 000000000000..2417854fcad9 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/awsweeper/default.nix @@ -0,0 +1,30 @@ +{ lib, buildGoModule, fetchurl, fetchFromGitHub }: + +buildGoModule rec { + pname = "awsweeper"; + version = "0.7.0"; + + # Requires go generate to be run with mockgen, but doesn't check in the results. + patches = fetchurl { + url = "https://raw.githubusercontent.com/c00w/patches/master/awskeeper.patch"; + sha256 = "0dz553ffxc37m2iwygrbhxf7pm91hxdriic8a1gjf8q3nyn13npl"; + }; + + src = fetchFromGitHub { + owner = "cloudetc"; + repo = pname; + rev = "v${version}"; + sha256 = "1ybrrpnp6rh7rcwihww43cvhfhzzyy51rdk1hwy9ljpkg37k4y28"; + }; + + vendorSha256 = "0hnpb1xp135z2qpn1b6xad59739hffhs8dfpr3n5drmrvajpn4xp"; + + doCheck = false; + + meta = with lib; { + description = "A tool to clean out your AWS account"; + homepage = "https://github.com/cloudetc/awsweeper/"; + license = licenses.mpl20; + maintainers = [ maintainers.marsam ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/azure-cli/default.nix b/nixpkgs/pkgs/tools/admin/azure-cli/default.nix new file mode 100644 index 000000000000..3743cad11a30 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/azure-cli/default.nix @@ -0,0 +1,253 @@ +{ stdenv, lib, python, fetchFromGitHub, installShellFiles }: + +let + version = "2.11.1"; + src = fetchFromGitHub { + owner = "Azure"; + repo = "azure-cli"; + rev = "azure-cli-${version}"; + sha256 = "11jmgc73b0w725rq89j6hk6gh67nfdbzp3rmywmrnah683d6xbpx"; + }; + + # put packages that needs to be overriden in the py package scope + py = import ./python-packages.nix { inherit stdenv python lib src version; }; +in +py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage { + pname = "azure-cli"; + inherit version src; + disabled = python.isPy27; # namespacing assumes PEP420, which isn't compat with py2 + + sourceRoot = "source/src/azure-cli"; + + prePatch = '' + substituteInPlace setup.py \ + --replace "javaproperties==0.5.1" "javaproperties" \ + --replace "pytz==2019.1" "pytz" \ + --replace "mock~=4.0" "mock" + + # remove namespace hacks + # remove urllib3 because it was added as 'urllib3[secure]', which doesn't get handled well + sed -i setup.py \ + -e '/azure-cli-command_modules-nspkg/d' \ + -e '/azure-cli-nspkg/d' \ + -e '/urllib3/d' + ''; + + nativeBuildInputs = [ installShellFiles ]; + + propagatedBuildInputs = with py.pkgs; [ + azure-batch + azure-cli-core + azure-cli-telemetry + azure-cosmos + azure-datalake-store + azure-functions-devops-build + azure-graphrbac + azure-keyvault + azure-loganalytics + azure-mgmt-advisor + azure-mgmt-apimanagement + azure-mgmt-applicationinsights + azure-mgmt-appconfiguration + azure-mgmt-authorization + azure-mgmt-batch + azure-mgmt-batchai + azure-mgmt-billing + azure-mgmt-botservice + azure-mgmt-cdn + azure-mgmt-cognitiveservices + azure-mgmt-compute + azure-mgmt-consumption + azure-mgmt-containerinstance + azure-mgmt-containerregistry + azure-mgmt-containerservice + azure-mgmt-cosmosdb + azure-mgmt-datalake-analytics + azure-mgmt-datalake-store + azure-mgmt-datamigration + azure-mgmt-deploymentmanager + azure-mgmt-devtestlabs + azure-mgmt-dns + azure-mgmt-eventgrid + azure-mgmt-eventhub + azure-mgmt-hdinsight + azure-mgmt-imagebuilder + azure-mgmt-iotcentral + azure-mgmt-iothub + azure-mgmt-iothubprovisioningservices + azure-mgmt-keyvault + azure-mgmt-kusto + azure-mgmt-loganalytics + azure-mgmt-managedservices + azure-mgmt-managementgroups + azure-mgmt-maps + azure-mgmt-marketplaceordering + azure-mgmt-media + azure-mgmt-monitor + azure-mgmt-msi + azure-mgmt-network + azure-mgmt-netapp + azure-mgmt-policyinsights + azure-mgmt-privatedns + azure-mgmt-rdbms + azure-mgmt-recoveryservices + azure-mgmt-recoveryservicesbackup + azure-mgmt-redhatopenshift + azure-mgmt-redis + azure-mgmt-relay + azure-mgmt-reservations + azure-mgmt-resource + azure-mgmt-search + azure-mgmt-security + azure-mgmt-servicebus + azure-mgmt-servicefabric + azure-mgmt-signalr + azure-mgmt-sql + azure-mgmt-sqlvirtualmachine + azure-mgmt-storage + azure-mgmt-synapse + azure-mgmt-trafficmanager + azure-mgmt-web + azure-multiapi-storage + azure-storage-blob + azure-synapse-accesscontrol + azure-synapse-spark + colorama + cryptography + Fabric + jsmin + knack + mock + paramiko + pydocumentdb + pygments + pyopenssl + pytz + pyyaml + psutil + requests + scp + six + sshtunnel + urllib3 + vsts-cd-manager + websocket_client + xmltodict + javaproperties + jsondiff + # urllib3[secure] + ipaddress + # shell completion + argcomplete + ]; + + # TODO: make shell completion actually work + # uses argcomplete, so completion needs PYTHONPATH to work + postInstall = '' + installShellCompletion --bash --name az.bash az.completion.sh + installShellCompletion --zsh --name _az az.completion.sh + + # remove garbage + rm $out/bin/az.bat + rm $out/bin/az.completion.sh + ''; + + # wrap the executable so that the python packages are available + # it's just a shebang script which calls `python -m azure.cli "$@"` + postFixup = '' + wrapProgram $out/bin/az \ + --set PYTHONPATH $PYTHONPATH + ''; + + # almost the entire test suite requires an azure account setup and networking + # ensure that the azure namespaces are setup correctly and that azure.cli can be accessed + checkPhase = '' + cd azure # avoid finding local copy + ${py.interpreter} -c 'import azure.cli.core; assert "${version}" == azure.cli.core.__version__' + HOME=$TMPDIR ${py.interpreter} -m azure.cli --help + ''; + + # ensure these namespaces are able to be accessed + pythonImportsCheck = [ + "azure.batch" + "azure.cli.core" + "azure.cli.telemetry" + "azure.cosmos" + "azure.datalake.store" + "azure_functions_devops_build" + "azure.graphrbac" + "azure.keyvault" + "azure.loganalytics" + "azure.mgmt.advisor" + "azure.mgmt.apimanagement" + "azure.mgmt.applicationinsights" + "azure.mgmt.appconfiguration" + "azure.mgmt.authorization" + "azure.mgmt.batch" + "azure.mgmt.batchai" + "azure.mgmt.billing" + "azure.mgmt.botservice" + "azure.mgmt.cdn" + "azure.mgmt.cognitiveservices" + "azure.mgmt.compute" + "azure.mgmt.consumption" + "azure.mgmt.containerinstance" + "azure.mgmt.containerregistry" + "azure.mgmt.containerservice" + "azure.mgmt.cosmosdb" + "azure.mgmt.datalake.analytics" + "azure.mgmt.datalake.store" + "azure.mgmt.datamigration" + "azure.mgmt.deploymentmanager" + "azure.mgmt.devtestlabs" + "azure.mgmt.dns" + "azure.mgmt.eventgrid" + "azure.mgmt.eventhub" + "azure.mgmt.hdinsight" + "azure.mgmt.imagebuilder" + "azure.mgmt.iotcentral" + "azure.mgmt.iothub" + "azure.mgmt.iothubprovisioningservices" + "azure.mgmt.keyvault" + "azure.mgmt.kusto" + "azure.mgmt.loganalytics" + "azure.mgmt.managedservices" + "azure.mgmt.managementgroups" + "azure.mgmt.maps" + "azure.mgmt.marketplaceordering" + "azure.mgmt.media" + "azure.mgmt.monitor" + "azure.mgmt.msi" + "azure.mgmt.network" + "azure.mgmt.netapp" + "azure.mgmt.policyinsights" + "azure.mgmt.privatedns" + "azure.mgmt.rdbms" + "azure.mgmt.recoveryservices" + "azure.mgmt.recoveryservicesbackup" + "azure.mgmt.redis" + "azure.mgmt.relay" + "azure.mgmt.reservations" + "azure.mgmt.resource" + "azure.mgmt.search" + "azure.mgmt.security" + "azure.mgmt.servicebus" + "azure.mgmt.servicefabric" + "azure.mgmt.signalr" + "azure.mgmt.sql" + "azure.mgmt.sqlvirtualmachine" + "azure.mgmt.storage" + "azure.mgmt.trafficmanager" + "azure.mgmt.web" + "azure.storage.blob" + "azure.storage.common" + ]; + + meta = with lib; { + homepage = "https://github.com/Azure/azure-cli"; + description = "Next generation multi-platform command line experience for Azure"; + license = licenses.mit; + maintainers = with maintainers; [ jonringer ]; + }; +}) + diff --git a/nixpkgs/pkgs/tools/admin/azure-cli/python-packages.nix b/nixpkgs/pkgs/tools/admin/azure-cli/python-packages.nix new file mode 100644 index 000000000000..8d17c9ff2017 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/azure-cli/python-packages.nix @@ -0,0 +1,416 @@ +{ stdenv, python, lib, src, version }: + +let + buildAzureCliPackage = with py.pkgs; attrs: buildPythonPackage (attrs // { + # Remove overly restrictive version contraints and obsolete namespace setup + prePatch = (attrs.prePatch or "") + '' + rm -f azure_bdist_wheel.py tox.ini + substituteInPlace setup.py \ + --replace "wheel==0.30.0" "wheel" + sed -i "/azure-namespace-package/c\ " setup.cfg + ''; + + # Prevent these __init__'s from violating PEP420, only needed for python2 + pythonNamespaces = [ "azure.cli" ]; + + checkInputs = [ mock pytest ] ++ (attrs.checkInputs or []); + checkPhase = attrs.checkPhase or '' + cd azure + HOME=$TMPDIR pytest + ''; + }); + + overrideAzureMgmtPackage = package: version: extension: sha256: + # check to make sure overriding is even necessary + if version == package.version then + package + else package.overrideAttrs(oldAttrs: rec { + inherit version; + + src = py.pkgs.fetchPypi { + inherit (oldAttrs) pname; + inherit version sha256 extension; + }; + + preBuild = '' + rm -f azure_bdist_wheel.py + substituteInPlace setup.cfg \ + --replace "azure-namespace-package = azure-mgmt-nspkg" "" + ''; + + # force PEP420 + pythonNamespaces = [ "azure.mgmt" ]; + }); + + py = python.override { + packageOverrides = self: super: { + inherit buildAzureCliPackage; + + # core and the actual application are highly coupled + azure-cli-core = buildAzureCliPackage { + pname = "azure-cli-core"; + inherit version src; + + sourceRoot = "source/src/azure-cli-core"; + + propagatedBuildInputs = with self; [ + adal + argcomplete + azure-common + azure-cli-telemetry + azure-mgmt-core + azure-mgmt-resource + colorama + humanfriendly + jmespath + knack + msal + msal-extensions + msrest + msrestazure + paramiko + pkginfo + psutil + pygments + pyjwt + pyopenssl + pyperclip + pyyaml + requests + six + tabulate + ] + ++ lib.optionals isPy3k [ antlr4-python3-runtime ] + ++ lib.optionals (!isPy3k) [ enum34 futures antlr4-python2-runtime ndg-httpsclient ]; + + doCheck = stdenv.isLinux; + # ignore test that does network call + checkPhase = '' + rm azure/{,cli/}__init__.py + python -c 'import azure.common; print(azure.common)' + PYTHONPATH=$PWD:$PYTHONPATH HOME=$TMPDIR pytest \ + --ignore=azure/cli/core/tests/test_profile.py \ + --ignore=azure/cli/core/tests/test_generic_update.py + ''; + + pythonImportsCheck = [ + "azure.cli.telemetry" + "azure.cli.core" + ]; + }; + + azure-cli-telemetry = buildAzureCliPackage { + pname = "azure-cli-telemetry"; + version = "1.0.4"; # might be wrong, but doesn't really matter + inherit src; + + sourceRoot = "source/src/azure-cli-telemetry"; + + propagatedBuildInputs = with super; [ + applicationinsights + portalocker + ]; + + # ignore flaky test + checkPhase = '' + cd azure + HOME=$TMPDIR pytest -k 'not test_create_telemetry_note_file_from_scratch' + ''; + }; + + azure-batch = overrideAzureMgmtPackage super.azure-batch "9.0.0" "zip" + "112d73gxjqng348mcvi36ska6pxyg8qc3qswvhf5x4a0lr86zjj7"; + + azure-mgmt-apimanagement = overrideAzureMgmtPackage super.azure-mgmt-apimanagement "0.1.0" "zip" + "06bqqkn5mx127x1z7ycm6rl8ajxlrmrm2kcdpgkbl4baii1x6iax"; + + azure-mgmt-batch = overrideAzureMgmtPackage super.azure-mgmt-batch "9.0.0" "zip" + "1zn3yqwvm2f3sy8v0xvj4yb7m8kxxm1wpcaccxp91b0zzbn7wh83"; + + azure-mgmt-policyinsights = overrideAzureMgmtPackage super.azure-mgmt-policyinsights "0.5.0" "zip" + "1wxh7mgrknnhqyafdd7sbwx8plx0zga2af21vs6yhxy48lw9w8pd"; + + azure-mgmt-rdbms = overrideAzureMgmtPackage super.azure-mgmt-rdbms "2.2.0" "zip" + "1iz1pf28ajrzbq8nab1jbjbgfbv0g6ni036xayy6xylvga4l8czr"; + + azure-mgmt-recoveryservices = overrideAzureMgmtPackage super.azure-mgmt-recoveryservices "0.4.0" "zip" + "0v0ycyjnnx09jqf958hj2q6zfpsn80bxxm98jf59y8rj09v99rz1"; + + azure-mgmt-recoveryservicesbackup = overrideAzureMgmtPackage super.azure-mgmt-recoveryservicesbackup "0.6.0" "zip" + "13s2k4jl8570bj6jkqzm0w29z29rl7h5i7czd3kr6vqar5wj9xjd"; + + azure-mgmt-resource = overrideAzureMgmtPackage super.azure-mgmt-resource "10.2.0" "zip" + "ddfe4c0c55f0e3fd1f66dd82c1d4a3d872ce124639b9a77fcd172daf464438a5"; + + azure-mgmt-appconfiguration = overrideAzureMgmtPackage super.azure-mgmt-appconfiguration "0.5.0" "zip" + "1nh626jg459p9f96glv74dph3vmpybm5cs8rrj1s65kn3m8jf591"; + + azure-mgmt-cognitiveservices = overrideAzureMgmtPackage super.azure-mgmt-cognitiveservices "6.2.0" "zip" + "1khk9jdfx7706xsqpwrnfsplv6p6wracvpyk9ki8zhc7p83kal4k"; + + azure-mgmt-compute = overrideAzureMgmtPackage super.azure-mgmt-compute "13.0.0" "zip" + "17ik8lfd74ki57rml2piswcanzbladsqy0s2m9jmvwpdrfpincvz"; + + azure-mgmt-consumption = overrideAzureMgmtPackage super.azure-mgmt-consumption "2.0.0" "zip" + "12ai4qps73ivawh0yzvgb148ksx02r30pqlvfihx497j62gsi1cs"; + + azure-mgmt-containerinstance = overrideAzureMgmtPackage super.azure-mgmt-containerinstance "1.4.0" "zip" + "1qw6228bia5pimcijr755npli2l33jyfka1s2bzgl1w4h3prsji7"; + + azure-mgmt-containerservice = overrideAzureMgmtPackage super.azure-mgmt-containerservice "9.0.1" "zip" + "11nqjpi9qypb0xvfy63l98q5m5jfv5iqx15mliksm96vkdkmji3y"; + + azure-mgmt-core = overrideAzureMgmtPackage super.azure-mgmt-core "1.2.0" "zip" + "8fe3b59446438f27e34f7b24ea692a982034d9e734617ca1320eedeee1939998"; + + azure-mgmt-cosmosdb = overrideAzureMgmtPackage super.azure-mgmt-cosmosdb "0.15.0" "zip" + "03ysr8kx0gavjrxsi9wqrgxpg3g17nvii7z68qfm0k2mv6ryj3z7"; + + azure-mgmt-deploymentmanager = overrideAzureMgmtPackage super.azure-mgmt-deploymentmanager "0.2.0" "zip" + "0c6pyr36n9snx879vas5r6l25db6nlp2z96xn759mz4kg4i45qs6"; + + azure-mgmt-eventgrid = overrideAzureMgmtPackage super.azure-mgmt-eventgrid "3.0.0rc7" "zip" + "1m5905mn362pn03sf89zsnylkrbgs4p1lkafrw3nxa2gnwcfpyb8"; + + azure-mgmt-imagebuilder = overrideAzureMgmtPackage super.azure-mgmt-imagebuilder "0.4.0" "zip" + "0cqpjnkpid6a34ifd4vk4fn1h57pa1bg3r756wv082xl2szr34jc"; + + azure-mgmt-iothub = overrideAzureMgmtPackage super.azure-mgmt-iothub "0.12.0" "zip" + "187z0w5by7d9a2zsz3kidmzjw591akpc6dwhps4jyb4skcmyw86s"; + + azure-mgmt-iotcentral = overrideAzureMgmtPackage super.azure-mgmt-iotcentral "3.0.0" "zip" + "0iq04hvivq3fvg2lhax95gx0x35avk5hps42227z3qna5i2cznpn"; + + azure-mgmt-kusto = overrideAzureMgmtPackage super.azure-mgmt-kusto "0.3.0" "zip" + "1pmcdgimd66h964a3d5m2j2fbydshcwhrk87wblhwhfl3xwbgf4y"; + + azure-mgmt-devtestlabs = overrideAzureMgmtPackage super.azure-mgmt-devtestlabs "4.0.0" "zip" + "1397ksrd61jv7400mgn8sqngp6ahir55fyq9n5k69wk88169qm2r"; + + azure-mgmt-netapp = overrideAzureMgmtPackage super.azure-mgmt-netapp "0.12.0" "zip" + "7d773119bc02e3d6f9d7cffb7effc17e85676d5c5b1f656d05abc4489e472c76"; + + azure-mgmt-dns = overrideAzureMgmtPackage super.azure-mgmt-dns "2.1.0" "zip" + "1l55py4fzzwhxlmnwa41gpmqk9v2ncc79w7zq11sm9a5ynrv2c1p"; + + azure-mgmt-loganalytics = overrideAzureMgmtPackage super.azure-mgmt-loganalytics "0.7.0" "zip" + "18n2lqvrhq40gdqhlzzg8mc03571i02c7qq7jv771lc58rqpzysh"; + + azure-mgmt-network = overrideAzureMgmtPackage super.azure-mgmt-network "11.0.0" "zip" + "1g39rl4p88bzhqbn1gi2nn8jyx77idxvpaw8xqz1gjv0qqqwdpvz"; + + azure-mgmt-media = overrideAzureMgmtPackage super.azure-mgmt-media "2.1.0" "zip" + "1py0hch0wghzfxazdrrs7p0kln2zn9jh3fmkzwd2z8qggj38q6gm"; + + azure-mgmt-msi = overrideAzureMgmtPackage super.azure-mgmt-msi "0.2.0" "zip" + "0rvik03njz940x2hvqg6iiq8k0d88gyygsr86w8s0sa12sdbq8l6"; + + azure-mgmt-web = overrideAzureMgmtPackage super.azure-mgmt-web "0.47.0" "zip" + "1s6c477q2kpyiqkisw6l70ydyjkv3ay6zjjj4jl4ipv05a7356kq"; + + azure-mgmt-redhatopenshift = overrideAzureMgmtPackage super.azure-mgmt-redhatopenshift "0.1.0" "zip" + "1g65lbia1i1jw6qkyjz2ldyl3p90rbr78l8kfryg70sj7z3gnnjn"; + + azure-mgmt-redis = overrideAzureMgmtPackage super.azure-mgmt-redis "7.0.0rc1" "zip" + "086wk31wsl8dx14qpd0g1bly8i9a8fix007djlj9cybva2f2bk6k"; + + azure-mgmt-reservations = overrideAzureMgmtPackage super.azure-mgmt-reservations "0.6.0" "zip" + "16ycni3cjl9c0mv419gy5rgbrlg8zp0vnr6aj8z8p2ypdw6sgac3"; + + azure-mgmt-security = overrideAzureMgmtPackage super.azure-mgmt-security "0.4.1" "zip" + "08gf401d40bd1kn9wmpxcjxqdh84cd9hxm8rdjd0918483sqs71r"; + + azure-mgmt-signalr = overrideAzureMgmtPackage super.azure-mgmt-signalr "0.4.0" "zip" + "09n12ligh301z4xwixl50n8f1rgd2k6lpsxqzr6n6jvgkpdds0v5"; + + azure-mgmt-sql = overrideAzureMgmtPackage super.azure-mgmt-sql "0.19.0" "zip" + "1iiqc0kh5hygcvr3x1653cpjnf5na3j11v137xa9xy65r7a4jik9"; + + azure-mgmt-sqlvirtualmachine = overrideAzureMgmtPackage super.azure-mgmt-sqlvirtualmachine "0.5.0" "zip" + "1b9am8raa17hxnz7d5pk2ix0309wsnhnchq1mi22icd728sl5adm"; + + azure-mgmt-synapse = overrideAzureMgmtPackage super.azure-mgmt-synapse "0.3.0" "zip" + "0sa12s5af9xl1wnblilswxc6ydr2anm9an000iz3ks54pydby2vy"; + + azure-mgmt-datamigration = overrideAzureMgmtPackage super.azure-mgmt-datamigration "0.1.0" "zip" + "1pq5rn32yvrf5kqjafnj0kc92gpfg435w2l0k7cm8gvlja4r4m77"; + + azure-mgmt-relay = overrideAzureMgmtPackage super.azure-mgmt-relay "0.1.0" "zip" + "1jss6qhvif8l5s0lblqw3qzijjf0h88agciiydaa7f4q577qgyfr"; + + azure-mgmt-eventhub = overrideAzureMgmtPackage super.azure-mgmt-eventhub "4.0.0" "zip" + "1qisnwn0gqfsa3h5x0fdbsgdjwn92hdbg71gdijrja0kryb328k5"; + + azure-mgmt-keyvault = overrideAzureMgmtPackage super.azure-mgmt-keyvault "7.0.0b2" "zip" + "10kpfzgsyh648a9z194vysgfl5887qwwamyd1r32zfqi9fr4js5l"; + + azure-mgmt-cdn = overrideAzureMgmtPackage super.azure-mgmt-cdn "5.0.0" "zip" + "0y1bq6lirwx4n8zydi49jx72xfc7dppzhy82x22sx98id8lxgcwm"; + + azure-mgmt-containerregistry = overrideAzureMgmtPackage super.azure-mgmt-containerregistry "3.0.0rc14" "zip" + "0w9hnxvk5pcsa21g3xrr089rfwgldghrbj8akzvh0gchqlzfjg6j"; + + azure-mgmt-monitor = overrideAzureMgmtPackage super.azure-mgmt-monitor "0.11.0" "zip" + "05jhn66d4sl1qi6w34rqd8wl500jndismiwhdmzzmprdvn1zxqf6"; + + azure-mgmt-advisor = overrideAzureMgmtPackage super.azure-mgmt-advisor "2.0.1" "zip" + "1wsfkprdrn22mwm24y2zlcms8ppp7jwq3s86r3ymbl29pbaxca8r"; + + azure-mgmt-applicationinsights = overrideAzureMgmtPackage super.azure-mgmt-applicationinsights "0.1.1" "zip" + "16raxr5naszrxmgbfhsvh7rqcph5cx6x3f480790m79ykvmjj0pi"; + + azure-mgmt-authorization = overrideAzureMgmtPackage super.azure-mgmt-authorization "0.52.0" "zip" + "0357laxgldb7lvvws81r8xb6mrq9dwwnr1bnwdnyj4bw6p21i9hn"; + + azure-mgmt-storage = overrideAzureMgmtPackage super.azure-mgmt-storage "11.1.0" "zip" + "073zybsxk70vg02bflbrx97pwzsxl0xyi48fpxp8dh3d3dy5h8zg"; + + azure-mgmt-servicefabric = overrideAzureMgmtPackage super.azure-mgmt-servicefabric "0.4.0" "zip" + "1x18grkjf2p2r1ihlwv607sna9yjvsr2jwnkjc55askrgrwx5jx2"; + + azure-mgmt-hdinsight = overrideAzureMgmtPackage super.azure-mgmt-hdinsight "1.7.0" "zip" + "004q3d2kj1i1cx3sad1544n3pkindfm255sw19gdlhbw61wn5l5a"; + + azure-multiapi-storage = overrideAzureMgmtPackage super.azure-multiapi-storage "0.4.1" "zip" + "0h7bzaqwyl3j9xqzjbnwxp59kmg6shxk76pml9kvvqbwsq9w6fx3"; + + azure-graphrbac = super.azure-graphrbac.overrideAttrs(oldAttrs: rec { + version = "0.60.0"; + + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "1zna5vb887clvpyfp5439vhlz3j4z95blw9r7y86n6cfpzc65fyh"; + extension = "zip"; + }; + }); + + azure-storage-blob = super.azure-storage-blob.overrideAttrs(oldAttrs: rec { + version = "1.5.0"; + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "0b15dzy75fml994gdfmaw5qcyij15gvh968mk3hg94d1wxwai1zi"; + }; + }); + + azure-storage-common = super.azure-storage-common.overrideAttrs(oldAttrs: rec { + version = "1.4.2"; + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "00g41b5q4ijlv02zvzjgfwrwy71cgr3lc3if4nayqmyl6xsprj2f"; + }; + }); + + azure-synapse-accesscontrol = super.azure-synapse-accesscontrol.overrideAttrs(oldAttrs: rec { + version = "0.2.0"; + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "1rsdqrhrgy09kbw6c7krb4hlaxs1ldb6lilwrbxgp3zqybxxnh5b"; + extension = "zip"; + }; + }); + + azure-synapse-spark = super.azure-synapse-spark.overrideAttrs(oldAttrs: rec { + version = "0.2.0"; + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "1qijqp6llshqas422lnqvpv45iv99n7f13v86znql40y3jp5n3ir"; + extension = "zip"; + }; + }); + + azure-keyvault = super.azure-keyvault.overrideAttrs(oldAttrs: rec { + version = "1.1.0"; + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + extension = "zip"; + sha256 = "0jfxm8lx8dzs3v2b04ljizk8gfckbm5l2v86rm7k0npbfvryba1p"; + }; + + propagatedBuildInputs = with self; [ + azure-common azure-nspkg msrest msrestazure cryptography + ]; + pythonNamespaces = [ "azure" ]; + pythonImportsCheck = [ ]; + }); + + # part of azure.mgmt.datalake namespace + azure-mgmt-datalake-analytics = super.azure-mgmt-datalake-analytics.overrideAttrs(oldAttrs: rec { + version = "0.2.1"; + + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "192icfx82gcl3igr18w062744376r2ivh63c8nd7v17mjk860yac"; + extension = "zip"; + }; + + preBuild = '' + rm azure_bdist_wheel.py + substituteInPlace setup.cfg \ + --replace "azure-namespace-package = azure-mgmt-datalake-nspkg" "" + ''; + }); + + cryptography = super.cryptography.overridePythonAttrs(oldAttrs: rec { + version = "2.9.2"; + + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "0af25w5mkd6vwns3r6ai1w5ip9xp0ms9s261zzssbpadzdr05hx0"; + }; + + # prevent cycle with cryptography-vectors + doCheck = false; + }); + + knack = super.knack.overridePythonAttrs(oldAttrs: rec { + version = "0.7.2"; + + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "1jh81xyri7wb7vqa049imf6dfy3nc501bq3p0miaka8ffvvaxinz"; + }; + }); + + msal = super.msal.overridePythonAttrs(oldAttrs: rec { + version = "1.0.0"; + + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "0h33wayvakggr684spdyhiqvrwraavcbk3phmcbavb3zqxd3zgpc"; + }; + }); + + msal-extensions = super.msal-extensions.overridePythonAttrs(oldAttrs: rec { + version = "0.1.3"; + + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "1p05cbfksnhijx1il7s24js2ydzgxbpiasf607qdpb5sljlp3qar"; + }; + }); + + websocket_client = super.websocket_client.overridePythonAttrs(oldAttrs: rec { + version = "0.56.0"; + + src = super.fetchPypi { + inherit (oldAttrs) pname; + inherit version; + sha256 = "0fpxjyr74klnyis3yf6m54askl0h5dchxcwbfjsq92xng0455m8z"; + }; + }); + + }; + }; +in + py diff --git a/nixpkgs/pkgs/tools/admin/bash-my-aws/default.nix b/nixpkgs/pkgs/tools/admin/bash-my-aws/default.nix new file mode 100644 index 000000000000..b99f031f4165 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/bash-my-aws/default.nix @@ -0,0 +1,71 @@ +{ stdenv +, awscli +, jq +, fetchgit +, installShellFiles +, bashInteractive +}: + +stdenv.mkDerivation rec { + pname = "bash-my-aws"; + version = "20200111"; + + src = fetchgit { + url = "https://github.com/bash-my-aws/bash-my-aws"; + rev = "5a97ce2c22affca1299022a5afa109d7b62242ba"; + sha256 = "459bda8b244af059d96c7c8b916cf956b01cb2732d1c2888a3ae06a4d660bea6"; + }; + + dontConfigure = true; + dontBuild = true; + + propagatedBuildInputs = [ + awscli + jq + bashInteractive + ]; + nativeBuildInputs = [ installShellFiles ]; + + checkPhase = '' + pushd test + ./shared-spec.sh + ./stack-spec.sh + popd + ''; + installPhase='' + mkdir -p $out + cp -r . $out + ''; + postFixup = '' + pushd $out + substituteInPlace scripts/build \ + --replace '~/.bash-my-aws' $out + substituteInPlace scripts/build-completions \ + --replace "{HOME}" $out \ + --replace '~/.bash-my-aws' $out + ./scripts/build + ./scripts/build-completions + substituteInPlace bash_completion.sh \ + --replace "{HOME}" $out \ + --replace .bash-my-aws "" + substituteInPlace bin/bma \ + --replace '~/.bash-my-aws' $out + installShellCompletion --bash --name bash-my-aws.bash bash_completion.sh + chmod +x $out/lib/* + patchShebangs --host $out/lib + installShellCompletion --bash --name bash-my-aws.bash bash_completion.sh + cat > $out/bin/bma-init <<EOF + echo source $out/aliases + echo source $out/bash_completion.sh + EOF + chmod +x $out/bin/bma-init + popd + ''; + + meta = with stdenv.lib; { + homepage = "https://bash-my-aws.org"; + description = "CLI commands for AWS"; + license = licenses.mit; + maintainers = with maintainers; [ tomberek ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/berglas/default.nix b/nixpkgs/pkgs/tools/admin/berglas/default.nix new file mode 100644 index 000000000000..050ad9db75db --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/berglas/default.nix @@ -0,0 +1,24 @@ +{ stdenv, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "berglas"; + version = "0.5.1"; + + src = fetchFromGitHub { + owner = "GoogleCloudPlatform"; + repo = pname; + rev = "v${version}"; + sha256 = "0y393g36h35zzqyf5b10j6qq2jhvz83j17cmasnv6wbyrb3vnn0n"; + }; + + vendorSha256 = null; + + doCheck = false; + + meta = with stdenv.lib; { + description = "A tool for managing secrets on Google Cloud"; + homepage = "https://github.com/GoogleCloudPlatform/berglas"; + license = licenses.asl20; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/bluemix-cli/default.nix b/nixpkgs/pkgs/tools/admin/bluemix-cli/default.nix new file mode 100644 index 000000000000..f97a6e5df891 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/bluemix-cli/default.nix @@ -0,0 +1,39 @@ +{ lib, stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "bluemix-cli"; + version = "0.8.0"; + + src = + if stdenv.hostPlatform.system == "i686-linux" then + fetchurl { + name = "linux32-${version}.tar.gz"; + url = "https://clis.ng.bluemix.net/download/bluemix-cli/${version}/linux32"; + sha256 = "1ryngbjlw59x33rfd32bcz49r93a1q1g92jh7xmi9vydgqnzsifh"; + } + else + fetchurl { + name = "linux64-${version}.tar.gz"; + url = "https://clis.ng.bluemix.net/download/bluemix-cli/${version}/linux64"; + sha256 = "056zbaca430ldcn0s86vy40m5abvwpfrmvqybbr6fjwfv9zngywx"; + } + ; + + installPhase = '' + install -m755 -D -t $out/bin bin/ibmcloud bin/ibmcloud-analytics + install -m755 -D -t $out/bin/cfcli bin/cfcli/cf + ln -sv $out/bin/ibmcloud $out/bin/bx + ln -sv $out/bin/ibmcloud $out/bin/bluemix + install -D -t "$out/etc/bash_completion.d" bx/bash_autocomplete + install -D -t "$out/share/zsh/site-functions" bx/zsh_autocomplete + ''; + + meta = with lib; { + description = "Administration CLI for IBM BlueMix"; + homepage = "https://console.bluemix.net/docs/cli/index.html"; + downloadPage = "https://console.bluemix.net/docs/cli/reference/bluemix_cli/download_cli.html#download_install"; + license = licenses.unfree; + maintainers = [ maintainers.tazjin maintainers.jensbin ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/boulder/default.nix b/nixpkgs/pkgs/tools/admin/boulder/default.nix new file mode 100644 index 000000000000..a21a3ebdde11 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/boulder/default.nix @@ -0,0 +1,33 @@ +{ buildGoPackage +, libtool +, fetchFromGitHub +, lib +}: + +let + version = "release-2019-10-13"; + +in buildGoPackage { + + pname = "boulder"; + inherit version; + + goPackagePath = "github.com/letsencrypt/boulder"; + + buildInputs = [ libtool ]; + + src = fetchFromGitHub { + owner = "letsencrypt"; + repo = "boulder"; + rev = version; + sha256 = "0kis23dnjja6jp192rjpv2m9m2zmzfwhs93440nxg354k6fp8jdg"; + }; + + meta = { + homepage = "https://github.com/letsencrypt/boulder"; + description = "An ACME-based CA, written in Go"; + license = [ lib.licenses.mpl20 ]; + maintainers = [ ]; + }; + +} diff --git a/nixpkgs/pkgs/tools/admin/bubblewrap/default.nix b/nixpkgs/pkgs/tools/admin/bubblewrap/default.nix new file mode 100644 index 000000000000..b98cadd57d11 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/bubblewrap/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, libxslt, docbook_xsl, libcap }: + +stdenv.mkDerivation rec { + pname = "bubblewrap"; + version = "0.4.1"; + + src = fetchurl { + url = "https://github.com/containers/bubblewrap/releases/download/v${version}/${pname}-${version}.tar.xz"; + sha256 = "00ycgi6q2yngh06bnz50wkvar6r2jnjf3j158grhi9k13jdrpimr"; + }; + + nativeBuildInputs = [ libxslt docbook_xsl ]; + buildInputs = [ libcap ]; + + meta = with stdenv.lib; { + description = "Unprivileged sandboxing tool"; + homepage = "https://github.com/containers/bubblewrap"; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/certigo/default.nix b/nixpkgs/pkgs/tools/admin/certigo/default.nix new file mode 100644 index 000000000000..e363df04556e --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/certigo/default.nix @@ -0,0 +1,24 @@ +{ stdenv, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "certigo"; + version = "1.12.1"; + + src = fetchFromGitHub { + owner = "square"; + repo = pname; + rev = "v${version}"; + sha256 = "0siwbxxzknmbsjy23d0lvh591ngabqhr2g8mip0siwa7c1y7ivv4"; + }; + + vendorSha256 = "1l6ajfl04rfbssvijgd5jrppmqc5svfrswdx01x007lr8rvdfd94"; + + doCheck = false; + + meta = with stdenv.lib; { + description = "A utility to examine and validate certificates in a variety of formats"; + homepage = "https://github.com/square/certigo"; + license = licenses.asl20; + maintainers = [ maintainers.marsam ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/chamber/default.nix b/nixpkgs/pkgs/tools/admin/chamber/default.nix new file mode 100644 index 000000000000..fb21bda41505 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/chamber/default.nix @@ -0,0 +1,28 @@ +{ buildGoModule, lib, fetchFromGitHub }: +buildGoModule rec { + pname = "chamber"; + version = "2.8.2"; + + src = fetchFromGitHub { + owner = "segmentio"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-7L9RaE4LvHRR6MUimze5QpbnfasWJdY4arfS/Usy2q0="; + }; + + vendorSha256 = null; + + # set the version. see: chamber's Makefile + buildFlagsArray = '' + -ldflags= + -X main.Version=v${version} + ''; + + meta = with lib; { + description = + "Chamber is a tool for managing secrets by storing them in AWS SSM Parameter Store."; + homepage = "https://github.com/segmentio/chamber"; + license = licenses.mit; + maintainers = with maintainers; [ kalekseev ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/chkcrontab/default.nix b/nixpkgs/pkgs/tools/admin/chkcrontab/default.nix new file mode 100644 index 000000000000..0740b0c1be60 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/chkcrontab/default.nix @@ -0,0 +1,20 @@ +{ python, stdenv }: + +with python.pkgs; + +buildPythonApplication rec { + pname = "chkcrontab"; + version = "1.7"; + + src = fetchPypi { + inherit pname version; + sha256 = "0gmxavjkjkvjysgf9cf5fcpk589gb75n1mn20iki82wifi1pk1jn"; + }; + + meta = with stdenv.lib; { + description = "A tool to detect crontab errors"; + license = licenses.asl20; + maintainers = with maintainers; [ ma27 ]; + homepage = "https://github.com/lyda/chkcrontab"; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/clair/default.nix b/nixpkgs/pkgs/tools/admin/clair/default.nix new file mode 100644 index 000000000000..565196280ce0 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/clair/default.nix @@ -0,0 +1,31 @@ +{ lib, buildGoModule, fetchFromGitHub, makeWrapper, rpm, xz }: + +buildGoModule rec { + pname = "clair"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "quay"; + repo = pname; + rev = "v${version}"; + sha256 = "1bvwh3ghxb3ynq8a07ka9i0rzaqg1aikxvqxmpjkwjvhwk63lwqd"; + }; + + vendorSha256 = "0x31n50vd8660z816as6kms5dkv87b0mhblccpkvd9cbvcv2n37a"; + + doCheck = false; + + nativeBuildInputs = [ makeWrapper ]; + + postInstall = '' + wrapProgram $out/bin/clair \ + --prefix PATH : "${lib.makeBinPath [ rpm xz ]}" + ''; + + meta = with lib; { + description = "Vulnerability Static Analysis for Containers"; + homepage = "https://github.com/quay/clair"; + license = licenses.asl20; + maintainers = with maintainers; [ marsam ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/cli53/default.nix b/nixpkgs/pkgs/tools/admin/cli53/default.nix new file mode 100644 index 000000000000..4978603c1922 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/cli53/default.nix @@ -0,0 +1,23 @@ +# This file was generated by https://github.com/kamilchm/go2nix v2.0-dev +{ lib, buildGoPackage, fetchFromGitHub }: + +buildGoPackage { + pname = "cli53"; + version = "0.8.12"; + + goPackagePath = "github.com/barnybug/cli53"; + + src = fetchFromGitHub { + owner = "barnybug"; + repo = "cli53"; + rev = "2624c7c4b38a33cdbd166dad1d3e512830f453e4"; + sha256 = "0bhczmzrgf7ypnhhzdrgnvg8cw8ch1x1d0cgajc5kklq9ixv9ygi"; + }; + + meta = with lib; { + description = "CLI tool for the Amazon Route 53 DNS service"; + homepage = "https://github.com/barnybug/cli53"; + license = licenses.mit; + maintainers = with maintainers; [ benley ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/daemontools/default.nix b/nixpkgs/pkgs/tools/admin/daemontools/default.nix new file mode 100644 index 000000000000..660563d9757c --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/daemontools/default.nix @@ -0,0 +1,44 @@ +{ fetchurl, bash, glibc, stdenv }: + +stdenv.mkDerivation rec { + name = "daemontools-0.76"; + + src = fetchurl { + url = "https://cr.yp.to/daemontools/${name}.tar.gz"; + sha256 = "07scvw88faxkscxi91031pjkpccql6wspk4yrlnsbrrb5c0kamd5"; + }; + + patches = [ ./fix-nix-usernamespace-build.patch ]; + + configurePhase = '' + cd ${name} + + sed -ie '1 s_$_ -include ${glibc.dev}/include/errno.h_' src/conf-cc + + substituteInPlace src/Makefile \ + --replace '/bin/sh' '${bash}/bin/bash -oxtrace' + + sed -ie "s_^PATH=.*_PATH=$src/${name}/compile:''${PATH}_" src/rts.tests + + cat ${glibc.dev}/include/errno.h + ''; + + buildPhase = '' + package/compile + ''; + + installPhase = '' + for cmd in $(cat package/commands); do + install -Dm755 "command/$cmd" "$out/bin/$cmd" + done + ''; + + meta = { + license = stdenv.lib.licenses.publicDomain; + homepage = "https://cr.yp.to/daemontools.html"; + description = "A collection of tools for managing UNIX services."; + + maintainers = with stdenv.lib.maintainers; [ kevincox ]; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/daemontools/fix-nix-usernamespace-build.patch b/nixpkgs/pkgs/tools/admin/daemontools/fix-nix-usernamespace-build.patch new file mode 100644 index 000000000000..9b784e7ca112 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/daemontools/fix-nix-usernamespace-build.patch @@ -0,0 +1,10 @@ +--- admin.org/daemontools-0.76/src/chkshsgr.c 2001-07-12 17:49:49.000000000 +0100 ++++ admin/daemontools-0.76/src/chkshsgr.c 2017-05-31 23:54:56.662174028 +0100 +@@ -4,6 +4,7 @@ + + int main() + { ++ return 0; + short x[4]; + + x[0] = x[1] = 0; diff --git a/nixpkgs/pkgs/tools/admin/dehydrated/default.nix b/nixpkgs/pkgs/tools/admin/dehydrated/default.nix new file mode 100644 index 000000000000..6cc69c2290d4 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/dehydrated/default.nix @@ -0,0 +1,35 @@ +{ stdenv, coreutils, curl, diffutils, gawk, gnugrep, gnused, openssl, makeWrapper, fetchFromGitHub, installShellFiles }: +stdenv.mkDerivation rec { + pname = "dehydrated"; + version = "0.6.5"; + + src = fetchFromGitHub { + owner = "lukas2511"; + repo = "dehydrated"; + rev = "v${version}"; + sha256 = "14k7ykry16zp09i0bqb5pqaclvnjcb6p3x8knm9v5q0bdvlplkjv"; + }; + + nativeBuildInputs = [ makeWrapper installShellFiles ]; + + installPhase = '' + installManPage docs/man/dehydrated.1 + + mkdir -p "$out/share/docs/dehydrated" + cp docs/*.md "$out/share/docs/dehydrated" + cp -r docs/examples "$out/share/docs/dehydrated" + cp {CHANGELOG,LICENSE,README.md} "$out/share/docs/dehydrated" + + mkdir -p $out/bin + cp -a dehydrated $out/bin + wrapProgram "$out/bin/dehydrated" --prefix PATH : "${stdenv.lib.makeBinPath [ openssl coreutils gnused gnugrep diffutils curl gawk ]}" + ''; + + meta = with stdenv.lib; { + inherit (src.meta) homepage; + description = "Letsencrypt/acme client implemented as a shell-script"; + license = licenses.mit; + platforms = platforms.all; + maintainers = [ maintainers.pstn ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/docker-credential-gcr/default.nix b/nixpkgs/pkgs/tools/admin/docker-credential-gcr/default.nix new file mode 100644 index 000000000000..d45a57c32211 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/docker-credential-gcr/default.nix @@ -0,0 +1,27 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + pname = "docker-credential-gcr"; + version = "2.0.2"; + + goPackagePath = "github.com/GoogleCloudPlatform/docker-credential-gcr"; + + src = fetchFromGitHub { + owner = "GoogleCloudPlatform"; + repo = "docker-credential-gcr"; + rev = "v${version}"; + sha256 = "0m7jx669yf27z2g9gw9vwncpwldrcb3ldlf1xhvbwbijnc2jk866"; + }; + + meta = with stdenv.lib; { + description = "A Docker credential helper for GCR (https://gcr.io) users"; + longDescription = '' + docker-credential-gcr is Google Container Registry's Docker credential + helper. It allows for Docker clients v1.11+ to easily make + authenticated requests to GCR's repositories (gcr.io, eu.gcr.io, etc.). + ''; + homepage = "https://github.com/GoogleCloudPlatform/docker-credential-gcr"; + license = licenses.asl20; + maintainers = with maintainers; [ suvash ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/docker-credential-helpers/default.nix b/nixpkgs/pkgs/tools/admin/docker-credential-helpers/default.nix new file mode 100644 index 000000000000..38762b6fd29c --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/docker-credential-helpers/default.nix @@ -0,0 +1,49 @@ +{ stdenv, buildGoPackage, fetchFromGitHub, pkg-config, libsecret }: + +buildGoPackage rec { + pname = "docker-credential-helpers"; + version = "0.6.3"; + + goPackagePath = "github.com/docker/docker-credential-helpers"; + + src = fetchFromGitHub { + owner = "docker"; + repo = pname; + rev = "v${version}"; + sha256 = "0xgmwjva3j1s0cqkbajbamj13bgzh5jkf2ir54m9a7w8gjnsh6dx"; + }; + + nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ pkg-config ]; + + buildInputs = stdenv.lib.optionals stdenv.isLinux [ libsecret ]; + + buildPhase = + if stdenv.isDarwin + then '' + cd go/src/${goPackagePath} + go build -ldflags -s -o bin/docker-credential-osxkeychain osxkeychain/cmd/main_darwin.go + '' + else '' + cd go/src/${goPackagePath} + go build -o bin/docker-credential-secretservice secretservice/cmd/main_linux.go + go build -o bin/docker-credential-pass pass/cmd/main_linux.go + ''; + + installPhase = + if stdenv.isDarwin + then '' + install -Dm755 -t $out/bin bin/docker-credential-osxkeychain + '' + else '' + install -Dm755 -t $out/bin bin/docker-credential-pass + install -Dm755 -t $out/bin bin/docker-credential-secretservice + ''; + + meta = with stdenv.lib; { + description = "Suite of programs to use native stores to keep Docker credentials safe"; + homepage = "https://github.com/docker/docker-credential-helpers"; + license = licenses.mit; + maintainers = [ maintainers.marsam ]; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/eksctl/default.nix b/nixpkgs/pkgs/tools/admin/eksctl/default.nix new file mode 100644 index 000000000000..74cc3f3f1711 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/eksctl/default.nix @@ -0,0 +1,41 @@ +{ lib, buildGoModule, fetchFromGitHub, installShellFiles }: + +buildGoModule rec { + pname = "eksctl"; + version = "0.27.0"; + + src = fetchFromGitHub { + owner = "weaveworks"; + repo = pname; + rev = version; + sha256 = "1yclffhr76jd5rzqi37bpdj524lmywmgcfr9r0ahacfkp1hxdn3v"; + }; + + vendorSha256 = "133g2d7l1szmpxjdg28yjm3pw6galwq8948rvalnh932kxngkxys"; + + doCheck = false; + + subPackages = [ "cmd/eksctl" ]; + + buildFlags = [ "-tags netgo" "-tags release" ]; + + buildFlagsArray = [ + "-ldflags=-s -w -X github.com/weaveworks/eksctl/pkg/version.gitCommit=${src.rev} -X github.com/weaveworks/eksctl/pkg/version.buildDate=19700101-00:00:00" + ]; + + nativeBuildInputs = [ installShellFiles ]; + + postInstall = '' + for shell in bash fish zsh; do + $out/bin/eksctl completion $shell > eksctl.$shell + installShellCompletion eksctl.$shell + done + ''; + + meta = with lib; { + description = "A CLI for Amazon EKS"; + homepage = "https://github.com/weaveworks/eksctl"; + license = licenses.asl20; + maintainers = with maintainers; [ xrelkd Chili-Man ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/elasticsearch-curator/default.nix b/nixpkgs/pkgs/tools/admin/elasticsearch-curator/default.nix new file mode 100644 index 000000000000..60a7e0586f5f --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/elasticsearch-curator/default.nix @@ -0,0 +1,83 @@ +{ lib, fetchFromGitHub, python }: + +let +py = python.override { + packageOverrides = self: super: { + click = super.click.overridePythonAttrs (oldAttrs: rec { + version = "6.7"; + src = oldAttrs.src.override { + inherit version; + sha256 = "f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b"; + }; + doCheck = false; + postPatch = ""; + }); + }; +}; +in + +with py.pkgs; +buildPythonApplication rec { + pname = "elasticsearch-curator"; + version = "5.8.1"; + + src = fetchFromGitHub { + owner = "elastic"; + repo = "curator"; + rev = "v${version}"; + sha256 = "1shr9jslirjnbvma3p19djsnamxl7f3m9c8zrlclk57zv8rnwpkr"; + }; + + # The test hangs so we disable it. + doCheck = false; + + propagatedBuildInputs = [ + click + certifi + requests-aws4auth + pyopenssl + voluptuous + pyyaml + elasticsearch + boto3 + ]; + + checkInputs = [ + nosexcover + coverage + nose + mock + funcsigs + ]; + + postPatch = '' + sed -i s/pyyaml==3.13/pyyaml/g setup.cfg setup.py + sed -i s/pyyaml==3.12/pyyaml/g setup.cfg setup.py + substituteInPlace setup.py \ + --replace "urllib3>=1.24.2,<1.25" "urllib3" + substituteInPlace setup.cfg \ + --replace "urllib3>=1.24.2,<1.25" "urllib3" + ''; + + meta = with lib; { + homepage = "https://github.com/elastic/curator"; + description = "Curate, or manage, your Elasticsearch indices and snapshots"; + license = licenses.asl20; + longDescription = '' + Elasticsearch Curator helps you curate, or manage, your Elasticsearch + indices and snapshots by: + + * Obtaining the full list of indices (or snapshots) from the cluster, as the + actionable list + + * Iterate through a list of user-defined filters to progressively remove + indices (or snapshots) from this actionable list as needed. + + * Perform various actions on the items which remain in the actionable list. + ''; + maintainers = with maintainers; [ basvandijk ]; + + # https://github.com/elastic/curator/pull/1280 + #broken = versionAtLeast click.version "7.0"; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/exoscale-cli/default.nix b/nixpkgs/pkgs/tools/admin/exoscale-cli/default.nix new file mode 100644 index 000000000000..41fc026092db --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/exoscale-cli/default.nix @@ -0,0 +1,33 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + pname = "exoscale-cli"; + version = "1.17.0"; + + src = fetchFromGitHub { + owner = "exoscale"; + repo = "cli"; + rev = "v${version}"; + sha256 = "01bll978dis8pqvgrbigzgszkx3kjm6acrw44z6j7algw3an352r"; + }; + + goPackagePath = "github.com/exoscale/cli"; + + buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version} -X main.commit=${src.rev}" ]; + + # ensures only the cli binary is built and we don't clutter bin/ with submodules + subPackages = [ "." ]; + + # we need to rename the resulting binary but can't use buildFlags with -o here + # because these are passed to "go install" which does not recognize -o + postBuild = '' + mv go/bin/cli go/bin/exo + ''; + + meta = { + description = "Command-line tool for everything at Exoscale: compute, storage, dns"; + homepage = "https://github.com/exoscale/cli"; + license = stdenv.lib.licenses.asl20; + maintainers = with stdenv.lib.maintainers; [ dramaturg ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/fastlane/Gemfile b/nixpkgs/pkgs/tools/admin/fastlane/Gemfile new file mode 100644 index 000000000000..1fa8dbca63b1 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/fastlane/Gemfile @@ -0,0 +1,2 @@ +source 'https://rubygems.org' +gem 'fastlane' diff --git a/nixpkgs/pkgs/tools/admin/fastlane/Gemfile.lock b/nixpkgs/pkgs/tools/admin/fastlane/Gemfile.lock new file mode 100644 index 000000000000..1bfce8606532 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/fastlane/Gemfile.lock @@ -0,0 +1,179 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + atomos (0.1.3) + aws-eventstream (1.1.0) + aws-partitions (1.320.0) + aws-sdk-core (3.96.1) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.239.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1.0) + aws-sdk-kms (1.31.0) + aws-sdk-core (~> 3, >= 3.71.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.66.0) + aws-sdk-core (~> 3, >= 3.96.1) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.1) + aws-sigv4 (1.1.3) + aws-eventstream (~> 1.0, >= 1.0.2) + babosa (1.0.3) + claide (1.0.3) + colored (1.2) + colored2 (3.1.2) + commander-fastlane (4.4.6) + highline (~> 1.7.2) + declarative (0.0.10) + declarative-option (0.1.0) + digest-crc (0.5.1) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.5) + emoji_regex (1.0.1) + excon (0.73.0) + faraday (1.0.1) + multipart-post (>= 1.2, < 3) + faraday-cookie_jar (0.0.6) + faraday (>= 0.7.4) + http-cookie (~> 1.0.0) + faraday_middleware (1.0.0) + faraday (~> 1.0) + fastimage (2.1.7) + fastlane (2.148.1) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.3, < 3.0.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.2, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander-fastlane (>= 4.4.6, < 5.0.0) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 2.0) + excon (>= 0.71.0, < 1.0.0) + faraday (>= 0.17, < 2.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (>= 0.13.1, < 2.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-api-client (>= 0.37.0, < 0.39.0) + google-cloud-storage (>= 1.15.0, < 2.0.0) + highline (>= 1.7.2, < 2.0.0) + json (< 3.0.0) + jwt (~> 2.1.0) + mini_magick (>= 4.9.4, < 5.0.0) + multi_xml (~> 0.5) + multipart-post (~> 2.0.0) + plist (>= 3.1.0, < 4.0.0) + public_suffix (~> 2.0.0) + rubyzip (>= 1.3.0, < 2.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + slack-notifier (>= 2.0.0, < 3.0.0) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-api-client (0.38.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (~> 0.9) + httpclient (>= 2.8.1, < 3.0) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) + signet (~> 0.12) + google-cloud-core (1.5.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.3.1) + faraday (>= 0.17.3, < 2.0) + google-cloud-errors (1.0.0) + google-cloud-storage (1.26.1) + addressable (~> 2.5) + digest-crc (~> 0.4) + google-api-client (~> 0.33) + google-cloud-core (~> 1.2) + googleauth (~> 0.9) + mini_mime (~> 1.0) + googleauth (0.12.0) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (~> 0.14) + highline (1.7.10) + http-cookie (1.0.3) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.4.0) + json (2.3.0) + jwt (2.1.0) + memoist (0.16.2) + mini_magick (4.10.1) + mini_mime (1.0.2) + multi_json (1.14.1) + multi_xml (0.6.0) + multipart-post (2.0.0) + nanaimo (0.2.6) + naturally (2.2.0) + os (1.1.0) + plist (3.5.0) + public_suffix (2.0.5) + representable (3.0.4) + declarative (< 0.1.0) + declarative-option (< 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rouge (2.0.7) + rubyzip (1.3.0) + security (0.1.3) + signet (0.14.0) + addressable (~> 2.3) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.8) + CFPropertyList + naturally + slack-notifier (2.3.2) + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + tty-cursor (0.7.1) + tty-screen (0.7.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.7) + unicode-display_width (1.7.0) + word_wrap (1.0.0) + xcodeproj (1.16.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.2.6) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.0) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + ruby + +DEPENDENCIES + fastlane + +BUNDLED WITH + 2.1.4 \ No newline at end of file diff --git a/nixpkgs/pkgs/tools/admin/fastlane/default.nix b/nixpkgs/pkgs/tools/admin/fastlane/default.nix new file mode 100644 index 000000000000..1093ab9df028 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/fastlane/default.nix @@ -0,0 +1,36 @@ +{ stdenv, bundlerEnv, ruby, bundlerUpdateScript, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "fastlane"; + version = (import ./gemset.nix).fastlane.version; + + nativeBuildInputs = [ makeWrapper ]; + + phases = [ "installPhase" ]; + + installPhase = let + env = bundlerEnv { + name = "${pname}-${version}-gems"; + inherit pname ruby; + gemdir = ./.; + }; + in '' + mkdir -p $out/bin + makeWrapper ${env}/bin/fastlane $out/bin/fastlane \ + --set FASTLANE_SKIP_UPDATE_CHECK 1 + ''; + + passthru.updateScript = bundlerUpdateScript "fastlane"; + + meta = with stdenv.lib; { + description = "A tool to automate building and releasing iOS and Android apps"; + longDescription = "fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application."; + homepage = "https://github.com/fastlane/fastlane"; + license = licenses.mit; + maintainers = with maintainers; [ + peterromfeldhk + nicknovitski + shahrukh330 + ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/fastlane/gemset.nix b/nixpkgs/pkgs/tools/admin/fastlane/gemset.nix new file mode 100644 index 000000000000..e289bc6f17d2 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/fastlane/gemset.nix @@ -0,0 +1,738 @@ +{ + addressable = { + dependencies = ["public_suffix"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"; + type = "gem"; + }; + version = "2.7.0"; + }; + atomos = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17vq6sjyswr5jfzwdccw748kgph6bdw30bakwnn6p8sl4hpv4hvx"; + type = "gem"; + }; + version = "0.1.3"; + }; + aws-eventstream = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r0pn66yqrdkrfdin7qdim0yj2x75miyg4wp6mijckhzhrjb7cv5"; + type = "gem"; + }; + version = "1.1.0"; + }; + aws-partitions = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "011ch85shkb3i3w16jymjx19dmxcgb6jrl6dzwqr4bx16ikdyclc"; + type = "gem"; + }; + version = "1.320.0"; + }; + aws-sdk-core = { + dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jdnzynjrpp2jyg8vrbfbaad16k8ni1520xah1z2ckl5779x9fi6"; + type = "gem"; + }; + version = "3.96.1"; + }; + aws-sdk-kms = { + dependencies = ["aws-sdk-core" "aws-sigv4"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1czxr6yi8p9gma4dwgygp1jn0i289hwa2vw69kzfscgbn118c3mm"; + type = "gem"; + }; + version = "1.31.0"; + }; + aws-sdk-s3 = { + dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x1d1azxwanvm0d7qppw41x5nx2zv0bcz41yk9vqi5lvr7apaq13"; + type = "gem"; + }; + version = "1.66.0"; + }; + aws-sigv4 = { + dependencies = ["aws-eventstream"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kysxyw1zkvggbmcj4xnscdh15kxli8mx07hv447h74g9x02drsd"; + type = "gem"; + }; + version = "1.1.3"; + }; + babosa = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10nn9bw63i4awpzn5vrx6kmpx1sg7z8r3fhw9r8bvg9pz2wh489g"; + type = "gem"; + }; + version = "1.0.3"; + }; + CFPropertyList = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1825ll26p28swjiw8n3x2pnh5ygsmg83spf82fnzcjn2p87vc5lf"; + type = "gem"; + }; + version = "3.0.2"; + }; + claide = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kasxsms24fgcdsq680nz99d5lazl9rmz1qkil2y5gbbssx89g0z"; + type = "gem"; + }; + version = "1.0.3"; + }; + colored = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0b0x5jmsyi0z69bm6sij1k89z7h0laag3cb4mdn7zkl9qmxb90lx"; + type = "gem"; + }; + version = "1.2"; + }; + colored2 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i"; + type = "gem"; + }; + version = "3.1.2"; + }; + commander-fastlane = { + dependencies = ["highline"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0y8d3ac9qwm1cg6rnpf8rcdsy1yxacrd2g2kl809xsp2vi973g65"; + type = "gem"; + }; + version = "4.4.6"; + }; + declarative = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0642xvwzzbgi3kp1bg467wma4g3xqrrn0sk369hjam7w579gnv5j"; + type = "gem"; + }; + version = "0.0.10"; + }; + declarative-option = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g4ibxq566f1frnhdymzi9hxxcm4g2gw4n21mpjk2mhwym4q6l0p"; + type = "gem"; + }; + version = "0.1.0"; + }; + digest-crc = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10f10yhz7rn31pq859jx47dypsfsxcmx8h482xn7aijfr6vn8yv9"; + type = "gem"; + }; + version = "0.5.1"; + }; + domain_name = { + dependencies = ["unf"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"; + type = "gem"; + }; + version = "0.5.20190701"; + }; + dotenv = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17hkd62ig9b0czv192kqdfq7gw0a8hgq07yclri6myc8y5lmfin5"; + type = "gem"; + }; + version = "2.7.5"; + }; + emoji_regex = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jfsv8ik2h1msqf3if1f121pnx3lccp8fqnka9na309mnw3bq532"; + type = "gem"; + }; + version = "1.0.1"; + }; + excon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zvphy60fwycl6z2h7dpsy9lgyfrh27fj16987p7bl1n4xlqkvmw"; + type = "gem"; + }; + version = "0.73.0"; + }; + faraday = { + dependencies = ["multipart-post"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wwks9652xwgjm7yszcq5xr960pjypc07ivwzbjzpvy9zh2fw6iq"; + type = "gem"; + }; + version = "1.0.1"; + }; + faraday-cookie_jar = { + dependencies = ["faraday" "http-cookie"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6"; + type = "gem"; + }; + version = "0.0.6"; + }; + faraday_middleware = { + dependencies = ["faraday"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jik2kgfinwnfi6fpp512vlvs0mlggign3gkbpkg5fw1jr9his0r"; + type = "gem"; + }; + version = "1.0.0"; + }; + fastimage = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06lgsy1zdkhhgd9w1c0nb7v9d38mljwz13n6gi3acbzkhz1sf642"; + type = "gem"; + }; + version = "2.1.7"; + }; + fastlane = { + dependencies = ["CFPropertyList" "addressable" "aws-sdk-s3" "babosa" "colored" "commander-fastlane" "dotenv" "emoji_regex" "excon" "faraday" "faraday-cookie_jar" "faraday_middleware" "fastimage" "gh_inspector" "google-api-client" "google-cloud-storage" "highline" "json" "jwt" "mini_magick" "multi_xml" "multipart-post" "plist" "public_suffix" "rubyzip" "security" "simctl" "slack-notifier" "terminal-notifier" "terminal-table" "tty-screen" "tty-spinner" "word_wrap" "xcodeproj" "xcpretty" "xcpretty-travis-formatter"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jss8cpcngwrmpck6ncijksrfcj5csgljwn2rmqv9gx1azj4mlgv"; + type = "gem"; + }; + version = "2.148.1"; + }; + gh_inspector = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f8r9byajj3bi2c7c5sqrc7m0zrv3nblfcd4782lw5l73cbsgk04"; + type = "gem"; + }; + version = "1.1.3"; + }; + google-api-client = { + dependencies = ["addressable" "googleauth" "httpclient" "mini_mime" "representable" "retriable" "signet"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jybks8i00rxrxx9mkx90dbdk6pczh2w757wchlavmrkrk0dp9s1"; + type = "gem"; + }; + version = "0.38.0"; + }; + google-cloud-core = { + dependencies = ["google-cloud-env" "google-cloud-errors"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qjn7vs8f85vxi1nkikbjfja6bv9snrj26vzscjii0cm8n4dy0i1"; + type = "gem"; + }; + version = "1.5.0"; + }; + google-cloud-env = { + dependencies = ["faraday"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rbascsddvwsq827fj4m2daqh0l3ghmdlbbhy48clgaysapaz685"; + type = "gem"; + }; + version = "1.3.1"; + }; + google-cloud-errors = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nl08lhgjvz3g7nsarn9nnsck0k3dg8mwg4awcnklnzpvs62b4ih"; + type = "gem"; + }; + version = "1.0.0"; + }; + google-cloud-storage = { + dependencies = ["addressable" "digest-crc" "google-api-client" "google-cloud-core" "googleauth" "mini_mime"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1wdnd5wisbrlivapdr7bcg8v59hayqz3q5qiqs0628g371lwx30k"; + type = "gem"; + }; + version = "1.26.1"; + }; + googleauth = { + dependencies = ["faraday" "jwt" "memoist" "multi_json" "os" "signet"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rsk471ld98pxhvzig3lnw9i13454c9nschvzxvq6vjqnn9ip0yh"; + type = "gem"; + }; + version = "0.12.0"; + }; + highline = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01ib7jp85xjc4gh4jg0wyzllm46hwv8p0w1m4c75pbgi41fps50y"; + type = "gem"; + }; + version = "1.7.10"; + }; + http-cookie = { + dependencies = ["domain_name"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"; + type = "gem"; + }; + version = "1.0.3"; + }; + httpclient = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"; + type = "gem"; + }; + version = "2.8.3"; + }; + jmespath = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf"; + type = "gem"; + }; + version = "1.4.0"; + }; + json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nrmw2r4nfxlfgprfgki3hjifgrcrs3l5zvm3ca3gb4743yr25mn"; + type = "gem"; + }; + version = "2.3.0"; + }; + jwt = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"; + type = "gem"; + }; + version = "2.1.0"; + }; + memoist = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0i9wpzix3sjhf6d9zw60dm4371iq8kyz7ckh2qapan2vyaim6b55"; + type = "gem"; + }; + version = "0.16.2"; + }; + mini_magick = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lpq12z70n10c1qshcddd5nib2pkcbkwzvmiqqzj60l01k3x4fg9"; + type = "gem"; + }; + version = "4.10.1"; + }; + mini_mime = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha"; + type = "gem"; + }; + version = "1.0.2"; + }; + multi_json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xy54mjf7xg41l8qrg1bqri75agdqmxap9z466fjismc1rn2jwfr"; + type = "gem"; + }; + version = "1.14.1"; + }; + multi_xml = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"; + type = "gem"; + }; + version = "0.6.0"; + }; + multipart-post = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"; + type = "gem"; + }; + version = "2.0.0"; + }; + nanaimo = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ajfyaqjw3dzykk612yw8sm21savfqy292hgps8h8l4lvxww1lz6"; + type = "gem"; + }; + version = "0.2.6"; + }; + naturally = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0dzqdawqr4agx7zr1fr5zxdwl8vb5rhpz57l1lk7d2y46ha6l4l7"; + type = "gem"; + }; + version = "2.2.0"; + }; + os = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xnynckvrn9ailkmkrmkldnpv8hmmbdwxr7c7iz27cl1cpcdd49n"; + type = "gem"; + }; + version = "1.1.0"; + }; + plist = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ra0910xxbhfsmdi0ig36pr3q0khdqzwb5da3wg7y3n8d1sh9ffp"; + type = "gem"; + }; + version = "3.5.0"; + }; + public_suffix = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "040jf98jpp6w140ghkhw2hvc1qx41zvywx5gj7r2ylr1148qnj7q"; + type = "gem"; + }; + version = "2.0.5"; + }; + representable = { + dependencies = ["declarative" "declarative-option" "uber"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qm9rgi1j5a6nv726ka4mmixivlxfsg91h8rpp72wwd4vqbkkm07"; + type = "gem"; + }; + version = "3.0.4"; + }; + retriable = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1q48hqws2dy1vws9schc0kmina40gy7sn5qsndpsfqdslh65snha"; + type = "gem"; + }; + version = "3.1.2"; + }; + rouge = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0sfikq1q8xyqqx690iiz7ybhzx87am4w50w8f2nq36l3asw4x89d"; + type = "gem"; + }; + version = "2.0.7"; + }; + rubyzip = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qxc2zxwwipm6kviiar4gfhcakpx1jdcs89v6lvzivn5hq1xk78l"; + type = "gem"; + }; + version = "1.3.0"; + }; + security = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ryjxs0j66wrbky2c08yf0mllwalvpg12rpxzbdx2rdhj3cbrlxa"; + type = "gem"; + }; + version = "0.1.3"; + }; + signet = { + dependencies = ["addressable" "faraday" "jwt" "multi_json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10g2667fvxnc50hcd1aywgsbf8j7nrckg3n7zjvywmyz82pwmpqp"; + type = "gem"; + }; + version = "0.14.0"; + }; + simctl = { + dependencies = ["CFPropertyList" "naturally"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1v9rsdmg5c5kkf8ps47xnrfbvjnq11sbaifr186jwkh4npawz00x"; + type = "gem"; + }; + version = "1.6.8"; + }; + slack-notifier = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pkfn99dhy5s526r6k8d87fwwb6j287ga9s7lxqmh60z28xqh3bv"; + type = "gem"; + }; + version = "2.3.2"; + }; + terminal-notifier = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1slc0y8pjpw30hy21v8ypafi8r7z9jlj4bjbgz03b65b28i2n3bs"; + type = "gem"; + }; + version = "2.0.0"; + }; + terminal-table = { + dependencies = ["unicode-display_width"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk"; + type = "gem"; + }; + version = "1.8.0"; + }; + tty-cursor = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0j5zw041jgkmn605ya1zc151bxgxl6v192v2i26qhxx7ws2l2lvr"; + type = "gem"; + }; + version = "0.7.1"; + }; + tty-screen = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jwgr2i3wilng3mx851xczmkzllbirmsmr42ik4amqyyvry1yzyf"; + type = "gem"; + }; + version = "0.7.1"; + }; + tty-spinner = { + dependencies = ["tty-cursor"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hh5awmijnzw9flmh5ak610x1d00xiqagxa5mbr63ysggc26y0qf"; + type = "gem"; + }; + version = "0.9.3"; + }; + uber = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1p1mm7mngg40x05z52md3mbamkng0zpajbzqjjwmsyw0zw3v9vjv"; + type = "gem"; + }; + version = "0.1.0"; + }; + unf = { + dependencies = ["unf_ext"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"; + type = "gem"; + }; + version = "0.1.4"; + }; + unf_ext = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wc47r23h063l8ysws8sy24gzh74mks81cak3lkzlrw4qkqb3sg4"; + type = "gem"; + }; + version = "0.0.7.7"; + }; + unicode-display_width = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06i3id27s60141x6fdnjn5rar1cywdwy64ilc59cz937303q3mna"; + type = "gem"; + }; + version = "1.7.0"; + }; + word_wrap = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1iyc5bc7dbgsd8j3yk1i99ral39f23l6wapi0083fbl19hid8mpm"; + type = "gem"; + }; + version = "1.0.0"; + }; + xcodeproj = { + dependencies = ["CFPropertyList" "atomos" "claide" "colored2" "nanaimo"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bkk8y6lzd86w9yx72hd1nil3fkk5f0v3il9vm554gzpl6dhc2bi"; + type = "gem"; + }; + version = "1.16.0"; + }; + xcpretty = { + dependencies = ["rouge"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1xq47q2h5llj7b54rws4796904vnnjz7qqnacdv7wlp3gdbwrivm"; + type = "gem"; + }; + version = "0.3.0"; + }; + xcpretty-travis-formatter = { + dependencies = ["xcpretty"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15b5c0lxz2blmichfdlabzlbyw5nlh1ci898pxwb661m9bahz3ml"; + type = "gem"; + }; + version = "1.0.0"; + }; +} \ No newline at end of file diff --git a/nixpkgs/pkgs/tools/admin/fbvnc/default.nix b/nixpkgs/pkgs/tools/admin/fbvnc/default.nix new file mode 100644 index 000000000000..ec32b5f0a268 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/fbvnc/default.nix @@ -0,0 +1,30 @@ +{stdenv, fetchFromGitHub}: +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "fbvnc"; + version = "1.0.2"; + + src = fetchFromGitHub { + owner = "zohead"; + repo = pname; + sha256 = "0lkr4j1wsa05av2g9w99rr9w4j4k7a21vp36x0a3h50y8bmgwgm1"; + rev = "783204ff6c92afec33d6d36f7e74f1fcf2b1b601"; + }; + + buildInputs = []; + + installPhase = '' + mkdir -p "$out/bin" + cp fbvnc "$out/bin" + mkdir -p "$out/share/doc/${pname}" + cp README* "$out/share/doc/${pname}" + ''; + + meta = { + description = "Framebuffer VNC client"; + license = stdenv.lib.licenses.bsd3; + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.linux; + homepage = "https://github.com/zohead/fbvnc/"; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/gixy/default.nix b/nixpkgs/pkgs/tools/admin/gixy/default.nix new file mode 100644 index 000000000000..118457d40802 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/gixy/default.nix @@ -0,0 +1,43 @@ +{ lib, fetchFromGitHub, python }: + +python.pkgs.buildPythonApplication rec { + pname = "gixy"; + version = "0.1.20"; + + # package is only compatible with python 2.7 and 3.5+ + disabled = with python.pkgs; !(pythonAtLeast "3.5" || isPy27); + + # fetching from GitHub because the PyPi source is missing the tests + src = fetchFromGitHub { + owner = "yandex"; + repo = "gixy"; + rev = "v${version}"; + sha256 = "14arz3fjidb8z37m08xcpih1391varj8s0v3gri79z3qb4zq5k6b"; + }; + + postPatch = '' + sed -ie '/argparse/d' setup.py + ''; + + propagatedBuildInputs = with python.pkgs; [ + cached-property + ConfigArgParse + pyparsing + jinja2 + nose + setuptools + six + ]; + + meta = with lib; { + description = "Nginx configuration static analyzer"; + longDescription = '' + Gixy is a tool to analyze Nginx configuration. + The main goal of Gixy is to prevent security misconfiguration and automate flaw detection. + ''; + homepage = "https://github.com/yandex/gixy"; + license = licenses.mpl20; + maintainers = [ maintainers.willibutz ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/google-cloud-sdk/alpha__init__.py b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/alpha__init__.py new file mode 100755 index 000000000000..d120969d8fb8 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/alpha__init__.py @@ -0,0 +1,23 @@ +# Copyright 2013 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Auth for the Google Cloud SDK. +""" + +from googlecloudsdk.calliope import base + + +@base.ReleaseTracks(base.ReleaseTrack.ALPHA) +class Alpha(base.Group): + """Alpha versions of gcloud commands.""" diff --git a/nixpkgs/pkgs/tools/admin/google-cloud-sdk/beta__init__.py b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/beta__init__.py new file mode 100755 index 000000000000..bb52c5a0bc4a --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/beta__init__.py @@ -0,0 +1,23 @@ +# Copyright 2013 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Auth for the Google Cloud SDK. +""" + +from googlecloudsdk.calliope import base + + +@base.ReleaseTracks(base.ReleaseTrack.BETA) +class Beta(base.Group): + """Beta versions of gcloud commands.""" diff --git a/nixpkgs/pkgs/tools/admin/google-cloud-sdk/default.nix b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/default.nix new file mode 100644 index 000000000000..5a51ace3b986 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/default.nix @@ -0,0 +1,105 @@ +# Make sure that the "with-gce" flag is set when building `google-cloud-sdk` +# for GCE hosts. This flag prevents "google-compute-engine" from being a +# default dependency which is undesirable because this package is +# +# 1) available only on GNU/Linux (requires `systemd` in particular) +# 2) intended only for GCE guests (and is useless elsewhere) +# 3) used by `google-cloud-sdk` only on GCE guests +# + +{ stdenv, lib, fetchurl, makeWrapper, python, openssl, jq, with-gce ? false }: + +let + pythonEnv = python.withPackages (p: with p; [ + cffi + cryptography + pyopenssl + crcmod + ] ++ lib.optional (with-gce) google-compute-engine); + + baseUrl = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads"; + sources = name: system: { + x86_64-darwin = { + url = "${baseUrl}/${name}-darwin-x86_64.tar.gz"; + sha256 = "1l2r9pgyzih7xgrr2ygm0mcl97kyp1wfvybwhbn1i0kbb72nagk1"; + }; + + x86_64-linux = { + url = "${baseUrl}/${name}-linux-x86_64.tar.gz"; + sha256 = "1qbkdfa7dzysp7crv9ph476hbabl3qiszs067f20dadqssqs1v4r"; + }; + }.${system}; + +in stdenv.mkDerivation rec { + pname = "google-cloud-sdk"; + version = "306.0.0"; + + src = fetchurl (sources "${pname}-${version}" stdenv.hostPlatform.system); + + buildInputs = [ python makeWrapper ]; + + nativeBuildInputs = [ jq ]; + + patches = [ + ./gcloud-path.patch + ./gsutil-disable-updates.patch + ]; + + installPhase = '' + mkdir -p $out/google-cloud-sdk + cp -R * .install $out/google-cloud-sdk/ + + mkdir -p $out/google-cloud-sdk/lib/surface/{alpha,beta} + cp ${./alpha__init__.py} $out/google-cloud-sdk/lib/surface/alpha/__init__.py + cp ${./beta__init__.py} $out/google-cloud-sdk/lib/surface/beta/__init__.py + + # create wrappers with correct env + for program in gcloud bq gsutil git-credential-gcloud.sh docker-credential-gcloud; do + programPath="$out/google-cloud-sdk/bin/$program" + binaryPath="$out/bin/$program" + wrapProgram "$programPath" \ + --set CLOUDSDK_PYTHON "${pythonEnv}/bin/python" \ + --prefix PYTHONPATH : "${pythonEnv}/${python.sitePackages}" \ + --prefix PATH : "${openssl.bin}/bin" + + mkdir -p $out/bin + ln -s $programPath $binaryPath + done + + # disable component updater and update check + substituteInPlace $out/google-cloud-sdk/lib/googlecloudsdk/core/config.json \ + --replace "\"disable_updater\": false" "\"disable_updater\": true" + echo " + [component_manager] + disable_update_check = true" >> $out/google-cloud-sdk/properties + + # setup bash completion + mkdir -p $out/etc/bash_completion.d + mv $out/google-cloud-sdk/completion.bash.inc $out/etc/bash_completion.d/gcloud.inc + + # This directory contains compiled mac binaries. We used crcmod from + # nixpkgs instead. + rm -r $out/google-cloud-sdk/platform/gsutil/third_party/crcmod \ + $out/google-cloud-sdk/platform/gsutil/third_party/crcmod_osx + + # remove tests and test data + find $out -name tests -type d -exec rm -rf '{}' + + rm $out/google-cloud-sdk/platform/gsutil/gslib/commands/test.py + + # compact all the JSON + find $out -name \*.json | while read path; do + jq -c . $path > $path.min + mv $path.min $path + done + ''; + + meta = with stdenv.lib; { + description = "Tools for the google cloud platform"; + longDescription = "The Google Cloud SDK. This package has the programs: gcloud, gsutil, and bq"; + # This package contains vendored dependencies. All have free licenses. + license = licenses.free; + homepage = "https://cloud.google.com/sdk/"; + maintainers = with maintainers; [ pradyuman stephenmw zimbatm ]; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/google-cloud-sdk/gcloud-path.patch b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/gcloud-path.patch new file mode 100644 index 000000000000..64ec6cdb1b65 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/gcloud-path.patch @@ -0,0 +1,47 @@ +From b69fee70154a861637c82e98e18be01bbb96423b Mon Sep 17 00:00:00 2001 +From: Florian Klink <flokli@flokli.de> +Date: Wed, 12 Jun 2019 17:03:09 +0200 +Subject: [PATCH] kubeconfig: don't store absolute path to gcloud binary +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The `gcloud beta container clusters get-credentials $cluster \ +--region $region --project $project` +command can be used to write kubectl config files. + +In that file, normally the absolute path to the `gcloud` binary is +stored. + +This is a bad idea in NixOS. We might eventually garbage-collect that +specific gcloud binary - and in general, would expect a nix-shell +provided gcloud to be used. + +In its current state, token renewal would just start to break with the +following error message: + +Unable to connect to the server: error executing access token command "/nix/store/…/gcloud config config-helper --format=json": err=fork/exec /nix/store/…/gcloud: no such file or directory output= stderr= + +Avoid this by storing just `gcloud` inside `cmd-path`, which causes +kubectl to lookup the gcloud command from $PATH, which is more likely to +keep working. +--- + lib/googlecloudsdk/api_lib/container/kubeconfig.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/googlecloudsdk/api_lib/container/kubeconfig.py b/lib/googlecloudsdk/api_lib/container/kubeconfig.py +index 4330988d6..37424b841 100644 +--- a/lib/googlecloudsdk/api_lib/container/kubeconfig.py ++++ b/lib/googlecloudsdk/api_lib/container/kubeconfig.py +@@ -255,7 +255,7 @@ def _AuthProvider(name='gcp'): + raise Error(SDK_BIN_PATH_NOT_FOUND) + cfg = { + # Command for gcloud credential helper +- 'cmd-path': os.path.join(sdk_bin_path, bin_name), ++ 'cmd-path': bin_name, + # Args for gcloud credential helper + 'cmd-args': 'config config-helper --format=json', + # JSONpath to the field that is the raw access token +-- +2.21.0 + diff --git a/nixpkgs/pkgs/tools/admin/google-cloud-sdk/gsutil-disable-updates.patch b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/gsutil-disable-updates.patch new file mode 100644 index 000000000000..de44ea7e7915 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/google-cloud-sdk/gsutil-disable-updates.patch @@ -0,0 +1,50 @@ +diff --git a/platform/gsutil/gslib/command_runner.py b/platform/gsutil/gslib/command_runner.py +index 06ca5e5..4a4e225 100644 +--- a/platform/gsutil/gslib/command_runner.py ++++ b/platform/gsutil/gslib/command_runner.py +@@ -61,7 +61,6 @@ from gslib.utils.text_util import InsistAsciiHeaderValue + from gslib.utils.text_util import print_to_fd + from gslib.utils.unit_util import SECONDS_PER_DAY + from gslib.utils.update_util import LookUpGsutilVersion +-from gslib.tests.util import HAS_NON_DEFAULT_GS_HOST + + + def HandleHeaderCoding(headers): +@@ -331,17 +330,6 @@ class CommandRunner(object): + Returns: + Return value(s) from Command that was run. + """ +- command_changed_to_update = False +- if (not skip_update_check and +- self.MaybeCheckForAndOfferSoftwareUpdate(command_name, debug)): +- command_name = 'update' +- command_changed_to_update = True +- args = [_StringToSysArgType('-n')] +- +- # Check for opt-in analytics. +- if system_util.IsRunningInteractively() and collect_analytics: +- metrics.CheckAndMaybePromptForAnalyticsEnabling() +- + if not args: + args = [] + +@@ -414,18 +402,10 @@ class CommandRunner(object): + ShutDownGsutil() + if GetFailureCount() > 0: + return_code = 1 +- if command_changed_to_update: +- # If the command changed to update, the user's original command was +- # not executed. +- return_code = 1 +- print('\n'.join( +- textwrap.wrap( +- 'Update was successful. Exiting with code 1 as the original command ' +- 'issued prior to the update was not executed and should be re-run.' +- ))) + return return_code + + def MaybeCheckForAndOfferSoftwareUpdate(self, command_name, debug): ++ return False + """Checks the last time we checked for an update and offers one if needed. + + Offer is made if the time since the last update check is longer diff --git a/nixpkgs/pkgs/tools/admin/gtk-vnc/default.nix b/nixpkgs/pkgs/tools/admin/gtk-vnc/default.nix new file mode 100644 index 000000000000..afaa237d342c --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/gtk-vnc/default.nix @@ -0,0 +1,78 @@ +{ stdenv +, fetchurl +, fetchpatch +, meson +, ninja +, gobject-introspection +, gnutls +, cairo +, glib +, pkgconfig +, cyrus_sasl +, libpulseaudio +, libgcrypt +, gtk3 +, vala +, gettext +, perl +, gnome3 +, gdk-pixbuf +, zlib +}: + +stdenv.mkDerivation rec { + pname = "gtk-vnc"; + version = "1.0.0"; + + outputs = [ "out" "bin" "man" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1060ws037v556rx1qhfrcg02859rscksrzr8fq11himdg4d1y6m8"; + }; + + patches = [ + # Fix undeclared gio-unix-2.0 in example program. + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gtk-vnc/commit/8588bc1c8321152ddc5086ca9b2c03a7f511e0d0.patch"; + sha256 = "0i1iapsbngl1mhnz22dd73mnzk68qc4n51pqdhnm18zqc8pawvh4"; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gobject-introspection + vala + gettext + perl # for pod2man + ]; + + buildInputs = [ + gnutls + cairo + gdk-pixbuf + zlib + glib + libgcrypt + cyrus_sasl + libpulseaudio + gtk3 + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + description = "GTK VNC widget"; + homepage = "https://wiki.gnome.org/Projects/gtk-vnc"; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ raskin offline ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/iamy/default.nix b/nixpkgs/pkgs/tools/admin/iamy/default.nix new file mode 100644 index 000000000000..1a668777e2e6 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/iamy/default.nix @@ -0,0 +1,28 @@ +{ stdenv, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "iamy"; + version = "2.3.2"; + + src = fetchFromGitHub { + owner = "99designs"; + repo = "iamy"; + rev = "v${version}"; + sha256 = "1fypc6yjnhlpk7zhb2lvah2ikh2zji9sll55rqjbr3i4j02h484z"; + }; + + vendorSha256 = "0c4g1zr0wl118g41hqri0vwvfin39yvgs214w3spw8ggjcj6bzph"; + + doCheck = false; + + buildFlagsArray = [''-ldflags= + -X main.Version=v${version} -s -w + '']; + + meta = with stdenv.lib; { + description = "A cli tool for importing and exporting AWS IAM configuration to YAML files"; + homepage = "https://github.com/99designs/iamy"; + license = licenses.mit; + maintainers = with maintainers; [ suvash ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/intecture/agent.nix b/nixpkgs/pkgs/tools/admin/intecture/agent.nix new file mode 100644 index 000000000000..1c2d84836ebb --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/intecture/agent.nix @@ -0,0 +1,29 @@ +{ lib, fetchFromGitHub, rustPlatform +, openssl, zeromq, czmq, pkgconfig, cmake, zlib }: + +with rustPlatform; + +buildRustPackage rec { + pname = "intecture-agent"; + version = "0.3.1"; + + src = fetchFromGitHub { + owner = "intecture"; + repo = "agent"; + rev = version; + sha256 = "0j27qdgyxybaixggh7k57mpm6rifimn4z2vydk463msc8b3kgywj"; + }; + + cargoSha256 = "1is1cbbwxf00dc64h76h57s0wxsai0zm5vfrrss7598cim6a4yxb"; + + buildInputs = [ openssl zeromq czmq zlib ]; + + nativeBuildInputs = [ pkgconfig cmake ]; + + meta = with lib; { + description = "Authentication client/server for Intecture components"; + homepage = "https://intecture.io"; + license = licenses.mpl20; + maintainers = [ maintainers.rushmorem ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/intecture/auth.nix b/nixpkgs/pkgs/tools/admin/intecture/auth.nix new file mode 100644 index 000000000000..0d7443d3225e --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/intecture/auth.nix @@ -0,0 +1,29 @@ +{ lib, fetchFromGitHub, rustPlatform +, openssl, zeromq, czmq, pkgconfig, cmake, zlib }: + +with rustPlatform; + +buildRustPackage rec { + pname = "intecture-auth"; + version = "0.1.2"; + + src = fetchFromGitHub { + owner = "intecture"; + repo = "auth"; + rev = version; + sha256 = "0c7ar3pc7n59lzfy74lwz51p09s2bglc870rfr4c0vmc91jl0pj2"; + }; + + cargoSha256 = "17k4a3jd7n2fkalx7vvgah62pj77n536jvm17d60sj0yz2fxx799"; + + buildInputs = [ openssl zeromq czmq zlib ]; + + nativeBuildInputs = [ pkgconfig cmake ]; + + meta = with lib; { + description = "Authentication client/server for Intecture components"; + homepage = "https://intecture.io"; + license = licenses.mpl20; + maintainers = [ maintainers.rushmorem ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/intecture/cli.nix b/nixpkgs/pkgs/tools/admin/intecture/cli.nix new file mode 100644 index 000000000000..5a841b920402 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/intecture/cli.nix @@ -0,0 +1,32 @@ +{ lib, fetchFromGitHub, rustPlatform +, openssl, zeromq, czmq, pkgconfig, cmake, zlib }: + +with rustPlatform; + +buildRustPackage rec { + pname = "intecture-cli"; + version = "0.3.4"; + + src = fetchFromGitHub { + owner = "intecture"; + repo = "cli"; + rev = version; + sha256 = "16a5fkpyqkf8w20k3ircc1d0qmif7nygkzxj6mzk9609dlb0dmxq"; + }; + + cargoSha256 = "11r551baz3hrkyf9nv68mdf09nqyvbcfjh2rgy8babmi7jljpzav"; + + buildInputs = [ openssl zeromq czmq zlib ]; + + nativeBuildInputs = [ pkgconfig cmake ]; + + # Needed for tests + USER = "$(whoami)"; + + meta = with lib; { + description = "A developer friendly, language agnostic configuration management tool for server systems"; + homepage = "https://intecture.io"; + license = licenses.mpl20; + maintainers = [ maintainers.rushmorem ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/lego/default.nix b/nixpkgs/pkgs/tools/admin/lego/default.nix new file mode 100644 index 000000000000..18ec4ba4636e --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/lego/default.nix @@ -0,0 +1,32 @@ +{ lib, fetchFromGitHub, buildGoModule, nixosTests }: + +buildGoModule rec { + pname = "lego"; + version = "4.0.1"; + + src = fetchFromGitHub { + owner = "go-acme"; + repo = pname; + rev = "v${version}"; + sha256 = "1s3sh4n12g7ylkpmxqjcpdw3gqhdjbh9r09h2rsrm30xr4qaqpng"; + }; + + vendorSha256 = "0p2pibid2d761whfk7zgq230lyqi2f0wmfvxqkjzrd1sba40r9bp"; + + doCheck = false; + + subPackages = [ "cmd/lego" ]; + + buildFlagsArray = [ + "-ldflags=-X main.version=${version}" + ]; + + meta = with lib; { + description = "Let's Encrypt client and ACME library written in Go"; + license = licenses.mit; + homepage = "https://go-acme.github.io/lego/"; + maintainers = teams.acme.members; + }; + + passthru.tests.lego = nixosTests.acme; +} diff --git a/nixpkgs/pkgs/tools/admin/lexicon/default.nix b/nixpkgs/pkgs/tools/admin/lexicon/default.nix new file mode 100644 index 000000000000..3af266c81753 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/lexicon/default.nix @@ -0,0 +1,31 @@ +{ lib +, python3Packages +, fetchFromGitHub +}: + +python3Packages.buildPythonApplication rec { + pname = "lexicon"; + version = "3.3.27"; + + propagatedBuildInputs = with python3Packages; [ requests tldextract future cryptography pyyaml boto3 zeep xmltodict beautifulsoup4 dnspython pynamecheap softlayer transip localzone ]; + + checkInputs = with python3Packages; [ pytest pytestcov pytest_xdist vcrpy mock ]; + + checkPhase = '' + pytest --ignore=lexicon/tests/providers/test_auto.py + ''; + + src = fetchFromGitHub { + owner = "AnalogJ"; + repo = pname; + rev = "v${version}"; + sha256 = "0i6grrpdwh7axhnsabb0pfjhpd3prc9ji1afivi7q3c0krgvncmc"; + }; + + meta = with lib; { + description = "Manipulate DNS records on various DNS providers in a standardized way."; + homepage = "https://github.com/AnalogJ/lexicon"; + maintainers = with maintainers; [ flyfloh ]; + license = licenses.mit; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/lxd/default.nix b/nixpkgs/pkgs/tools/admin/lxd/default.nix new file mode 100644 index 000000000000..3d62e39c6ed3 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/lxd/default.nix @@ -0,0 +1,72 @@ +{ stdenv, hwdata, pkgconfig, lxc, buildGoPackage, fetchurl +, makeWrapper, acl, rsync, gnutar, xz, btrfs-progs, gzip, dnsmasq +, squashfsTools, iproute, iptables, ebtables, iptables-nftables-compat, libcap +, libco-canonical, dqlite, raft-canonical, sqlite-replication, udev +, writeShellScriptBin, apparmor-profiles, apparmor-parser +, criu +, bash +, installShellFiles +, nftablesSupport ? false +}: + +let + networkPkgs = if nftablesSupport then + [ iptables-nftables-compat ] + else + [ iptables ebtables ]; + +in +buildGoPackage rec { + pname = "lxd"; + version = "4.6"; + + goPackagePath = "github.com/lxc/lxd"; + + src = fetchurl { + url = "https://github.com/lxc/lxd/releases/download/${pname}-${version}/${pname}-${version}.tar.gz"; + sha256 = "011fsyafmpis6j0aq7vwd56m2mcb9v3rn4f246ms5nx6zgmga0ip"; + }; + + postPatch = '' + substituteInPlace shared/usbid/load.go \ + --replace "/usr/share/misc/usb.ids" "${hwdata}/share/hwdata/usb.ids" + ''; + + preBuild = '' + # unpack vendor + pushd go/src/github.com/lxc/lxd + rm _dist/src/github.com/lxc/lxd + cp -r _dist/src/* ../../.. + popd + ''; + + buildFlags = [ "-tags libsqlite3" ]; + + postInstall = '' + # test binaries, code generation + rm $out/bin/{deps,macaroon-identity,generate} + + wrapProgram $out/bin/lxd --prefix PATH : ${stdenv.lib.makeBinPath ( + networkPkgs + ++ [ acl rsync gnutar xz btrfs-progs gzip dnsmasq squashfsTools iproute bash criu ] + ++ [ (writeShellScriptBin "apparmor_parser" '' + exec '${apparmor-parser}/bin/apparmor_parser' -I '${apparmor-profiles}/etc/apparmor.d' "$@" + '') ] + ) + } + + installShellCompletion --bash go/src/github.com/lxc/lxd/scripts/bash/lxd-client + ''; + + nativeBuildInputs = [ installShellFiles pkgconfig makeWrapper ]; + buildInputs = [ lxc acl libcap libco-canonical.dev dqlite.dev + raft-canonical.dev sqlite-replication udev.dev ]; + + meta = with stdenv.lib; { + description = "Daemon based on liblxc offering a REST API to manage containers"; + homepage = "https://linuxcontainers.org/lxd/"; + license = licenses.asl20; + maintainers = with maintainers; [ fpletz wucke13 ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/mycli/default.nix b/nixpkgs/pkgs/tools/admin/mycli/default.nix new file mode 100644 index 000000000000..4745d065be93 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/mycli/default.nix @@ -0,0 +1,42 @@ +{ lib +, python3 +, glibcLocales +}: + +with python3.pkgs; + +buildPythonApplication rec { + pname = "mycli"; + version = "1.22.2"; + + src = fetchPypi { + inherit pname version; + sha256 = "1lq2x95553vdmhw13cxcgsd2g2i32izhsb7hxd4m1iwf9b3msbpv"; + }; + + propagatedBuildInputs = [ + paramiko pymysql configobj sqlparse prompt_toolkit pygments click pycrypto cli-helpers + ]; + + checkInputs = [ pytest mock glibcLocales ]; + + checkPhase = '' + export HOME=. + export LC_ALL="en_US.UTF-8" + + py.test \ + --ignore=mycli/packages/paramiko_stub/__init__.py + ''; + + meta = { + inherit version; + description = "Command-line interface for MySQL"; + longDescription = '' + Rich command-line interface for MySQL with auto-completion and + syntax highlighting. + ''; + homepage = "http://mycli.net"; + license = lib.licenses.bsd3; + maintainers = [ lib.maintainers.jojosch ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/nomachine-client/default.nix b/nixpkgs/pkgs/tools/admin/nomachine-client/default.nix new file mode 100644 index 000000000000..4657c64d3307 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/nomachine-client/default.nix @@ -0,0 +1,96 @@ +{ stdenv, file, fetchurl, makeWrapper, + autoPatchelfHook, jsoncpp, libpulseaudio }: +let + versionMajor = "6.11"; + versionMinor = "2"; + versionBuild_x86_64 = "1"; + versionBuild_i686 = "1"; +in + stdenv.mkDerivation rec { + pname = "nomachine-client"; + version = "${versionMajor}.${versionMinor}"; + + src = + if stdenv.hostPlatform.system == "x86_64-linux" then + fetchurl { + urls = [ + "https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_x86_64}_x86_64.tar.gz" + "https://web.archive.org/web/https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_x86_64}_x86_64.tar.gz" + ]; + sha256 = "1b6r9bwkr8mhaljma19ikxpkmlx8iy5r1vf5hlv27bja2zz1r8xr"; + } + else if stdenv.hostPlatform.system == "i686-linux" then + fetchurl { + urls = [ + "https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_i686}_i686.tar.gz" + "https://web.archive.org/web/https://download.nomachine.com/download/${versionMajor}/Linux/nomachine_${version}_${versionBuild_i686}_i686.tar.gz" + ]; + sha256 = "0dl138ry9n1qh651zh0zvp88qhgxrs2kvvnq329jw0py5v70b9pm"; + } + else + throw "NoMachine client is not supported on ${stdenv.hostPlatform.system}"; + + postUnpack = '' + mv $(find . -type f -name nxclient.tar.gz) . + mv $(find . -type f -name nxplayer.tar.gz) . + rm -r NX/ + tar xf nxclient.tar.gz + tar xf nxplayer.tar.gz + rm $(find . -maxdepth 1 -type f) + ''; + + nativeBuildInputs = [ file makeWrapper autoPatchelfHook ]; + buildInputs = [ jsoncpp libpulseaudio ]; + + installPhase = '' + rm bin/nxplayer bin/nxclient + + mkdir -p $out/NX + cp -r bin lib share $out/NX/ + + ln -s $out/NX/bin $out/bin + + for i in share/icons/*; do + if [[ -d "$i" ]]; then + mkdir -p "$out/share/icons/hicolor/$(basename $i)/apps" + cp "$i"/* "$out/share/icons/hicolor/$(basename $i)/apps/" + fi + done + + mkdir $out/share/applications + cp share/applnk/player/xdg/*.desktop $out/share/applications/ + cp share/applnk/client/xdg-mime/*.desktop $out/share/applications/ + + mkdir -p $out/share/mime/packages + cp share/applnk/client/xdg-mime/*.xml $out/share/mime/packages/ + + for i in $out/share/applications/*.desktop; do + substituteInPlace "$i" --replace /usr/NX/bin $out/bin + done + ''; + + postFixup = '' + makeWrapper $out/bin/nxplayer.bin $out/bin/nxplayer --set NX_SYSTEM $out/NX + makeWrapper $out/bin/nxclient.bin $out/bin/nxclient --set NX_SYSTEM $out/NX + + # libnxcau.so needs libpulse.so.0 for audio to work, but doesn't + # have a DT_NEEDED entry for it. + patchelf --add-needed libpulse.so.0 $out/NX/lib/libnxcau.so + ''; + + dontBuild = true; + dontStrip = true; + + meta = with stdenv.lib; { + description = "NoMachine remote desktop client (nxplayer)"; + homepage = "https://www.nomachine.com/"; + license = { + fullName = "NoMachine 6 End-User License Agreement"; + url = "https://www.nomachine.com/licensing-6"; + free = false; + }; + maintainers = with maintainers; [ talyz ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; + } + diff --git a/nixpkgs/pkgs/tools/admin/oxidized/Gemfile b/nixpkgs/pkgs/tools/admin/oxidized/Gemfile new file mode 100644 index 000000000000..bddfe1adee53 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/oxidized/Gemfile @@ -0,0 +1,5 @@ +source 'https://rubygems.org' + +gem 'oxidized', '0.26.3' +gem 'oxidized-web', '0.13.1' +gem 'oxidized-script', '0.6.0' diff --git a/nixpkgs/pkgs/tools/admin/oxidized/Gemfile.lock b/nixpkgs/pkgs/tools/admin/oxidized/Gemfile.lock new file mode 100644 index 000000000000..64bc02cafc3c --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/oxidized/Gemfile.lock @@ -0,0 +1,80 @@ +GEM + remote: https://rubygems.org/ + specs: + asetus (0.3.0) + backports (3.14.0) + charlock_holmes (0.7.6) + emk-sinatra-url-for (0.2.1) + sinatra (>= 0.9.1.1) + ffi (1.10.0) + git (1.5.0) + haml (5.0.4) + temple (>= 0.8.0) + tilt + htmlentities (4.3.4) + json (2.2.0) + multi_json (1.13.1) + net-ssh (5.2.0) + net-telnet (0.1.1) + oxidized (0.26.3) + asetus (~> 0.1) + git (~> 1) + net-ssh (~> 5) + net-telnet (~> 0.1.1) + rugged (~> 0.21, >= 0.21.4) + slop (~> 3.5) + oxidized-script (0.6.0) + oxidized (~> 0.25) + slop (~> 3.5) + oxidized-web (0.13.1) + charlock_holmes (~> 0.7.5) + emk-sinatra-url-for (~> 0.2) + haml (~> 5.0) + htmlentities (~> 4.3) + json (>= 1.7.0) + oxidized (~> 0.26) + puma (~> 3.11.4) + rack-test (~> 0.7.0) + sass (~> 3.3) + sinatra (~> 1.4, >= 1.4.6) + sinatra-contrib (~> 1.4, >= 1.4.6) + puma (3.11.4) + rack (1.6.11) + rack-protection (1.5.5) + rack + rack-test (0.7.0) + rack (>= 1.0, < 3) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rugged (0.28.1) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sinatra (1.4.8) + rack (~> 1.5) + rack-protection (~> 1.4) + tilt (>= 1.3, < 3) + sinatra-contrib (1.4.7) + backports (>= 2.0) + multi_json + rack-protection + rack-test + sinatra (~> 1.4.0) + tilt (>= 1.3, < 3) + slop (3.6.0) + temple (0.8.1) + tilt (2.0.9) + +PLATFORMS + ruby + +DEPENDENCIES + oxidized (= 0.26.3) + oxidized-script (= 0.6.0) + oxidized-web (= 0.13.1) + +BUNDLED WITH + 2.1.4 diff --git a/nixpkgs/pkgs/tools/admin/oxidized/default.nix b/nixpkgs/pkgs/tools/admin/oxidized/default.nix new file mode 100644 index 000000000000..01129c5afb10 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/oxidized/default.nix @@ -0,0 +1,20 @@ +{ lib, ruby, bundlerApp, bundlerUpdateScript }: + +bundlerApp { + pname = "oxidized"; + gemdir = ./.; + + inherit ruby; + + exes = [ "oxidized" "oxidized-web" "oxidized-script" ]; + + passthru.updateScript = bundlerUpdateScript "oxidized"; + + meta = with lib; { + description = "Oxidized is a network device configuration backup tool. It's a RANCID replacement!"; + homepage = "https://github.com/ytti/oxidized"; + license = licenses.asl20; + maintainers = with maintainers; [ willibutz nicknovitski ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/oxidized/gemset.nix b/nixpkgs/pkgs/tools/admin/oxidized/gemset.nix new file mode 100644 index 000000000000..ff77102af12a --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/oxidized/gemset.nix @@ -0,0 +1,304 @@ +{ + asetus = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zkr8cbp8klanqmhzz7qmimzlxh6zmsy98zb3s75af34l7znq790"; + type = "gem"; + }; + version = "0.3.0"; + }; + backports = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17j5pf0b69bkn043wi4xd530ky53jbbnljr4bsjzlm4k8bzlknfn"; + type = "gem"; + }; + version = "3.14.0"; + }; + charlock_holmes = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nf1l31n10yaark2rrg5qzyzcx9w80681449s3j09qmnipsl8rl5"; + type = "gem"; + }; + version = "0.7.6"; + }; + emk-sinatra-url-for = { + dependencies = ["sinatra"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rd5b1lraklv0hblzdnmw2z3dragfg0qqk7wxbpn58f8y7jxzjgj"; + type = "gem"; + }; + version = "0.2.1"; + }; + ffi = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p"; + type = "gem"; + }; + version = "1.10.0"; + }; + git = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bf83icwypi3p3pd97vlqbnp3hvf31ncd440m9kh9y7x6yk74wyh"; + type = "gem"; + }; + version = "1.5.0"; + }; + haml = { + dependencies = ["temple" "tilt"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"; + type = "gem"; + }; + version = "5.0.4"; + }; + htmlentities = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"; + type = "gem"; + }; + version = "4.3.4"; + }; + json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0sx97bm9by389rbzv8r1f43h06xcz8vwi3h5jv074gvparql7lcx"; + type = "gem"; + }; + version = "2.2.0"; + }; + multi_json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv"; + type = "gem"; + }; + version = "1.13.1"; + }; + net-ssh = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "101wd2px9lady54aqmkibvy4j62zk32w0rjz4vnigyg974fsga40"; + type = "gem"; + }; + version = "5.2.0"; + }; + net-telnet = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13qxznpwmc3hs51b76wqx2w29r158gzzh8719kv2gpi56844c8fx"; + type = "gem"; + }; + version = "0.1.1"; + }; + oxidized = { + dependencies = ["asetus" "git" "net-ssh" "net-telnet" "rugged" "slop"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "07hpxmdjkfpkc00ln3hhh5qkj0lyhcmgbi0jza2c8cnjyy9sc73x"; + type = "gem"; + }; + version = "0.26.3"; + }; + oxidized-script = { + dependencies = ["oxidized" "slop"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15cxsyaz2mwd7jj63gfv3lzyqkvb3gz29wxfy7xyjdzkc19c7vk6"; + type = "gem"; + }; + version = "0.6.0"; + }; + oxidized-web = { + dependencies = ["charlock_holmes" "emk-sinatra-url-for" "haml" "htmlentities" "json" "oxidized" "puma" "rack-test" "sass" "sinatra" "sinatra-contrib"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "07qmal83h1h5dqapgirq5yrnclbm3xhcjqkj80lla3dq18jmjhqs"; + type = "gem"; + }; + version = "0.13.1"; + }; + puma = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06qiqx1pcfwq4gi9pdrrq8r6hgh3rwl7nl51r67zpm5xmqlp0g10"; + type = "gem"; + }; + version = "3.11.4"; + }; + rack = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g9926ln2lw12lfxm4ylq1h6nl0rafl10za3xvjzc87qvnqic87f"; + type = "gem"; + }; + version = "1.6.11"; + }; + rack-protection = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0my0wlw4a5l3hs79jkx2xzv7djhajgf8d28k8ai1ddlnxxb0v7ss"; + type = "gem"; + }; + version = "1.5.5"; + }; + rack-test = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f50ljlbg38g21q242him0n12r0fz7r3rs9n6p8ppahzh7k22x11"; + type = "gem"; + }; + version = "0.7.0"; + }; + rb-fsevent = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"; + type = "gem"; + }; + version = "0.10.3"; + }; + rb-inotify = { + dependencies = ["ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fs7hxm9g6ywv2yih83b879klhc4fs8i0p9166z795qmd77dk0a4"; + type = "gem"; + }; + version = "0.10.0"; + }; + rugged = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yiszpz6y13vvgh3fss1l0ipp0zgsbbc8c28vynnpdyx1sy6krp6"; + type = "gem"; + }; + version = "0.28.1"; + }; + sass = { + dependencies = ["sass-listen"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0p95lhs0jza5l7hqci1isflxakz83xkj97lkvxl919is0lwhv2w0"; + type = "gem"; + }; + version = "3.7.4"; + }; + sass-listen = { + dependencies = ["rb-fsevent" "rb-inotify"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"; + type = "gem"; + }; + version = "4.0.0"; + }; + sinatra = { + dependencies = ["rack" "rack-protection" "tilt"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0byxzl7rx3ki0xd7aiv1x8mbah7hzd8f81l65nq8857kmgzj1jqq"; + type = "gem"; + }; + version = "1.4.8"; + }; + sinatra-contrib = { + dependencies = ["backports" "multi_json" "rack-protection" "rack-test" "sinatra" "tilt"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vi3i0icbi2figiayxpvxbqpbn1syma7w4p4zw5mav1ln4c7jnfr"; + type = "gem"; + }; + version = "1.4.7"; + }; + slop = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"; + type = "gem"; + }; + version = "3.6.0"; + }; + temple = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "158d7ygbwcifqnvrph219p7m78yjdjazhykv5darbkms7bxm5y09"; + type = "gem"; + }; + version = "0.8.1"; + }; + tilt = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz"; + type = "gem"; + }; + version = "2.0.9"; + }; +} \ No newline at end of file diff --git a/nixpkgs/pkgs/tools/admin/pebble/default.nix b/nixpkgs/pkgs/tools/admin/pebble/default.nix new file mode 100644 index 000000000000..4813f86ea641 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/pebble/default.nix @@ -0,0 +1,26 @@ +{ buildGoPackage +, fetchFromGitHub +, lib +}: + +let + version = "v2.3.0"; + pname = "pebble"; +in buildGoPackage { + inherit pname version; + goPackagePath = "github.com/letsencrypt/${pname}"; + + src = fetchFromGitHub { + owner = "letsencrypt"; + repo = pname; + rev = version; + sha256 = "1piwzzfqsdx6s2niczzp4mf4r3qn9nfdgpn7882g52cmmm0vzks2"; + }; + + meta = { + homepage = "https://github.com/letsencrypt/pebble"; + description = "A miniature version of Boulder, Pebble is a small RFC 8555 ACME test server not suited for a production CA"; + license = [ lib.licenses.mpl20 ]; + maintainers = lib.teams.acme.members; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/procs/default.nix b/nixpkgs/pkgs/tools/admin/procs/default.nix new file mode 100644 index 000000000000..54bdf238e3f2 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/procs/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub, rustPlatform, Security }: + +rustPlatform.buildRustPackage rec { + pname = "procs"; + version = "0.10.4"; + + src = fetchFromGitHub { + owner = "dalance"; + repo = pname; + rev = "v${version}"; + sha256 = "1a28kkxcrdfmrq2mmsfkdxfp3msklwga5nbfhjb7a7s64xh8jmjv"; + }; + + cargoSha256 = "1xlxjr0pkwlzm7f5xlrsf76in28r9jj41n6gn44vxqbh4x161gs1"; + + buildInputs = stdenv.lib.optional stdenv.isDarwin Security; + + meta = with stdenv.lib; { + description = "A modern replacement for ps written in Rust"; + homepage = "https://github.com/dalance/procs"; + license = licenses.mit; + maintainers = with maintainers; [ dalance filalex77 ]; + platforms = with platforms; linux ++ darwin; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/pulumi/data.nix b/nixpkgs/pkgs/tools/admin/pulumi/data.nix new file mode 100644 index 000000000000..7d2523b4073d --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/pulumi/data.nix @@ -0,0 +1,179 @@ +# DO NOT EDIT! This file is generated automatically by update.sh +{ }: +{ + version = "2.10.2"; + pulumiPkgs = { + x86_64-linux = [ + { + url = "https://get.pulumi.com/releases/sdk/pulumi-v2.10.2-linux-x64.tar.gz"; + sha256 = "0pxm90vmha265zc4b1ip2f3iryslkwxznn4kb8l3ma6gibz1zav3"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v1.1.0-linux-amd64.tar.gz"; + sha256 = "1l4kszzw1w862sfd4jnz66lwnp02p4kl1fwvj5ab81qfwzwg0cfx"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v3.4.0-linux-amd64.tar.gz"; + sha256 = "1gzjdafx5zsqrb5r3amskak51ajcpqbbfw45939jdsdll8vclw7g"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v2.6.0-linux-amd64.tar.gz"; + sha256 = "0myvx2glqnx29l4wd5vx4gm773zrcmwcjvs2b1yv63fl10md9sv7"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v2.5.0-linux-amd64.tar.gz"; + sha256 = "12cajd8jiqy11s880vsv20gqfm44g160x7fxm93agjl7wng32ad6"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v2.8.0-linux-amd64.tar.gz"; + sha256 = "0k429fh477f84kmnhyl5s9p0yym7d6sdq7hy7wqx6psxp4rf5h9x"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v2.8.0-linux-amd64.tar.gz"; + sha256 = "045z7qj23bq71nxfjk1vvnfbjcnqfkcbxbpjz72q0hw4xn7dq6jz"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v2.3.0-linux-amd64.tar.gz"; + sha256 = "16d0jd3429pr4vlrzrv32w2fa53j7gyqq5lc78gw9j4v3mc3scvz"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v3.25.0-linux-amd64.tar.gz"; + sha256 = "0gz4kpddaf9p25lfnp70p6197wrfgsiys7s4vdy75z8dyd4sbiv0"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v2.0.0-linux-amd64.tar.gz"; + sha256 = "0n2532gfb5i53raya07rn8wcp15rc07jfg8wsm2lfzj7a4mp2p6c"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v2.6.0-linux-amd64.tar.gz"; + sha256 = "16l1a30rkg9l6yh68qv61dgm3h3gdgpsdacvnfg1ra0fvvfs9477"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v0.2.0-linux-amd64.tar.gz"; + sha256 = "1m2w8gsksr36pprxr6v3v4y3n7x5ycbcdfywv67yxmbi4lxyy3ar"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v2.6.1-linux-amd64.tar.gz"; + sha256 = "01vnbgck1ffj4jg8ghmkjp63xq3r9q3459vy03xpzm14l1i6agwv"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v2.2.0-linux-amd64.tar.gz"; + sha256 = "1g05kqymbkrxf48iskn9w12kxy880allhqm9a7p4g7mx0174yfhm"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v2.2.1-linux-amd64.tar.gz"; + sha256 = "1fa5i283nisa6cq02fcrsgwkw7bwnh2j3agjbqyvv2xiss34i7hw"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v2.6.0-linux-amd64.tar.gz"; + sha256 = "0ihiag248c30dz4z2b559689zqwp52p0m7pv7jqpk86xwvimbsn1"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.1.0-linux-amd64.tar.gz"; + sha256 = "0jwvdsb26bhsqcbrsw9ss54xgpccl830hhbwnbz8ql8yndd35srg"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v2.4.0-linux-amd64.tar.gz"; + sha256 = "1wr4p312xwqi0icn153iv2j88rp37wkf8hc5y4pmdr61vd0kpw7w"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v2.3.1-linux-amd64.tar.gz"; + sha256 = "0xq3as94i9ah9dv1cabgdqjg68yg7laksfzpf81s6kcv742cnnqi"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v2.4.0-linux-amd64.tar.gz"; + sha256 = "1av7fj1jlhhqplqq60d6hzzidlhsvr41z9p1x3mvz5frwijxr1ab"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v2.10.0-linux-amd64.tar.gz"; + sha256 = "1bgw5xw6f01whxlm5358xn6v9wqz9mxg3dvb5vi7rfs9wwxykr4g"; + } + ]; + x86_64-darwin = [ + { + url = "https://get.pulumi.com/releases/sdk/pulumi-v2.10.2-darwin-x64.tar.gz"; + sha256 = "1fzqylx7pmrpvsxrmhlx56v9i9zkid96zrj9hsc26qhx5w7k600w"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v1.1.0-darwin-amd64.tar.gz"; + sha256 = "05dxpdwdg8cd1a6d3xh8dkns5wkvpr0v11bb4zdzv38x6wxnqx0z"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v3.4.0-darwin-amd64.tar.gz"; + sha256 = "1jbnx1wpzh2k127ixh9j0ghlqhj3sc1s17cp3ax3q9gq3cadcl5i"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v2.6.0-darwin-amd64.tar.gz"; + sha256 = "0lpf3cqi3kss7hmr8a3y6gmwjl854vmva4f9p9q7147rxr8aw5f9"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v2.5.0-darwin-amd64.tar.gz"; + sha256 = "0qwjrhmspibjr17kgswfcgbdhmkicqrjd1md6azingdr5wp7cwwm"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v2.8.0-darwin-amd64.tar.gz"; + sha256 = "0rwgbpif7l3ayh363cz0k2dir36a87x0bszspq3nm3xbwmd190f0"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v2.8.0-darwin-amd64.tar.gz"; + sha256 = "0943r8x70gxxkfn0rhcx2b9zya44k28j5s8z2m8jn2i1fvqvahq5"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v2.3.0-darwin-amd64.tar.gz"; + sha256 = "1nvqjc1zrxfn2r1wdh2sdr2vimar5836bhscqsiaw4i6mjdsggfy"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v3.25.0-darwin-amd64.tar.gz"; + sha256 = "05x0qlv3xkkvs71ixzmc21ck85w9f4a4dxrwmgkq6c0nhy3npbnj"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v2.0.0-darwin-amd64.tar.gz"; + sha256 = "1m80l75r2w46m7191igjan4ipfkhc9ld1xlybncd628qlcf2jpqz"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v2.6.0-darwin-amd64.tar.gz"; + sha256 = "0dan0qqvaxfh90db14s7adjjy670lz15bbm6a8fjfyj4fdhsbwyn"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-hcloud-v0.2.0-darwin-amd64.tar.gz"; + sha256 = "1gznv5d10pxbkyl4hbd4c9skkgkypfs1xg0jjmszkwxcjzvhc4l3"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v2.6.1-darwin-amd64.tar.gz"; + sha256 = "08w8by7h9nlgvyap2in6yy21dk46fxvl93h4ghaw7xxjjs2l3dfi"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v2.2.0-darwin-amd64.tar.gz"; + sha256 = "0qjszd30r3094p5m7v5gynx2kxh9xf9878mxdc2wnswpkpw3v5pb"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v2.2.1-darwin-amd64.tar.gz"; + sha256 = "1a19lmxi8r8h4yfll0k97kvq0lgkzwvrwf52ny4zl67bc9g4jr5p"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-openstack-v2.6.0-darwin-amd64.tar.gz"; + sha256 = "11vfjkmhrq7q4j6h5d2sdzan3ziyhl5qhc0fhfnsz2pxss549zab"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-packet-v3.1.0-darwin-amd64.tar.gz"; + sha256 = "1ny1m6pb44k77gqf97km3gkb7dwhilkmqi2zy4hdl20js1ijsh7p"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-postgresql-v2.4.0-darwin-amd64.tar.gz"; + sha256 = "1vm2pfj93wi6q7kcrqwy9190mx0jn2p96algcd5gms48a4m8bgpb"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v2.3.1-darwin-amd64.tar.gz"; + sha256 = "0mnmlvyppfndq1rwy4k40j0syy590v2lg75kg0rnf16qlpffskn9"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v2.4.0-darwin-amd64.tar.gz"; + sha256 = "0q9qbqalask628cbi3347pjbnm3304c8qhx7h8icqxxh59mjnhr7"; + } + { + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v2.10.0-darwin-amd64.tar.gz"; + sha256 = "1gxiqq6hk77s1n3q3p92p0yykpihw2k8lv01dra015fjha6pyl19"; + } + ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/pulumi/default.nix b/nixpkgs/pkgs/tools/admin/pulumi/default.nix new file mode 100644 index 000000000000..231bdc099653 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/pulumi/default.nix @@ -0,0 +1,37 @@ +{ lib, stdenv, fetchurl, autoPatchelfHook, makeWrapper }: + +with lib; + +let + data = import ./data.nix {}; +in stdenv.mkDerivation { + pname = "pulumi"; + version = data.version; + + postUnpack = '' + mv pulumi-* pulumi + ''; + + srcs = map (x: fetchurl x) data.pulumiPkgs.${stdenv.hostPlatform.system}; + + installPhase = '' + mkdir -p $out/bin + cp * $out/bin/ + '' + optionalString stdenv.isLinux '' + wrapProgram $out/bin/pulumi --set LD_LIBRARY_PATH "${stdenv.cc.cc.lib}/lib" + ''; + + nativeBuildInputs = optionals stdenv.isLinux [ autoPatchelfHook makeWrapper ]; + + meta = { + homepage = "https://pulumi.io/"; + description = "Pulumi is a cloud development platform that makes creating cloud programs easy and productive"; + license = with licenses; [ asl20 ]; + platforms = builtins.attrNames data.pulumiPkgs; + maintainers = with maintainers; [ + ghuntley + peterromfeldhk + jlesquembre + ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/pulumi/update.sh b/nixpkgs/pkgs/tools/admin/pulumi/update.sh new file mode 100755 index 000000000000..5e0c721959c3 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/pulumi/update.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +# Bash 3 compatible for Darwin + +# Version of Pulumi from +# https://www.pulumi.com/docs/get-started/install/versions/ +VERSION="2.10.2" + +# Grab latest release ${VERSION} from +# https://github.com/pulumi/pulumi-${NAME}/releases +plugins=( + "auth0=1.1.0" + "aws=3.4.0" + "cloudflare=2.6.0" + "consul=2.5.0" + "datadog=2.8.0" + "digitalocean=2.8.0" + "docker=2.3.0" + "gcp=3.25.0" + "github=2.0.0" + "gitlab=2.6.0" + "hcloud=0.2.0" + "kubernetes=2.6.1" + "mailgun=2.2.0" + "mysql=2.2.1" + "openstack=2.6.0" + "packet=3.1.0" + "postgresql=2.4.0" + "random=2.3.1" + "vault=2.4.0" + "vsphere=2.10.0" + ); + +function genMainSrc() { + local url="https://get.pulumi.com/releases/sdk/pulumi-v${VERSION}-$1-x64.tar.gz" + local sha256 + sha256=$(nix-prefetch-url "$url") + echo " {" + echo " url = \"${url}\";" + echo " sha256 = \"$sha256\";" + echo " }" +} + +function genSrcs() { + for plugVers in "${plugins[@]}"; do + local plug=${plugVers%=*} + local version=${plugVers#*=} + # url as defined here + # https://github.com/pulumi/pulumi/blob/06d4dde8898b2a0de2c3c7ff8e45f97495b89d82/pkg/workspace/plugins.go#L197 + local url="https://api.pulumi.com/releases/plugins/pulumi-resource-${plug}-v${version}-$1-amd64.tar.gz" + local sha256 + sha256=$(nix-prefetch-url "$url") + echo " {" + echo " url = \"${url}\";" + echo " sha256 = \"$sha256\";" + echo " }" + done +} + +cat <<EOF > data.nix +# DO NOT EDIT! This file is generated automatically by update.sh +{ }: +{ + version = "${VERSION}"; + pulumiPkgs = { + x86_64-linux = [ +EOF +genMainSrc "linux" >> data.nix +genSrcs "linux" >> data.nix +echo " ];" >> data.nix + +echo " x86_64-darwin = [" >> data.nix +genMainSrc "darwin" >> data.nix +genSrcs "darwin" >> data.nix +echo " ];" >> data.nix +echo " };" >> data.nix +echo "}" >> data.nix + diff --git a/nixpkgs/pkgs/tools/admin/s3bro/default.nix b/nixpkgs/pkgs/tools/admin/s3bro/default.nix new file mode 100644 index 000000000000..154b4aae9665 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/s3bro/default.nix @@ -0,0 +1,23 @@ +{ stdenv, python3Packages }: + +python3Packages.buildPythonPackage rec { + pname = "s3bro"; + version = "2.8"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "0k25g3vch0q772f29jlghda5mjvps55h5lgwhwwbd5g2nlnrrspq"; + }; + + propagatedBuildInputs = with python3Packages; [ boto3 botocore click termcolor ]; + + # No tests + doCheck = false; + + meta = with stdenv.lib; { + description = "A handy s3 cli tool"; + homepage = "https://github.com/rsavordelli/s3bro"; + license = licenses.mit; + maintainers = with maintainers; [ psyanticy ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/salt/default.nix b/nixpkgs/pkgs/tools/admin/salt/default.nix new file mode 100644 index 000000000000..83b69b12fea1 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/salt/default.nix @@ -0,0 +1,47 @@ +{ lib +, python3 +, openssl + # Many Salt modules require various Python modules to be installed, + # passing them in this array enables Salt to find them. +, extraInputs ? [] +}: +python3.pkgs.buildPythonApplication rec { + pname = "salt"; + version = "3001.1"; + + src = python3.pkgs.fetchPypi { + inherit pname version; + sha256 = "1g2sdcibir0zhldmngv1iyzlhh2adq9dqjc73grap3df5zcv9sz9"; + }; + + propagatedBuildInputs = with python3.pkgs; [ + distro + jinja2 + markupsafe + msgpack + pycryptodomex + pyyaml + pyzmq + requests + tornado + ] ++ extraInputs; + + patches = [ ./fix-libcrypto-loading.patch ]; + + postPatch = '' + substituteInPlace "salt/utils/rsax931.py" \ + --subst-var-by "libcrypto" "${openssl.out}/lib/libcrypto.so" + ''; + + # The tests fail due to socket path length limits at the very least; + # possibly there are more issues but I didn't leave the test suite running + # as is it rather long. + doCheck = false; + + meta = with lib; { + homepage = "https://saltstack.com/"; + description = "Portable, distributed, remote execution and configuration management system"; + maintainers = with maintainers; [ aneeshusa ]; + license = licenses.asl20; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/salt/fix-libcrypto-loading.patch b/nixpkgs/pkgs/tools/admin/salt/fix-libcrypto-loading.patch new file mode 100644 index 000000000000..e011a15b43f9 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/salt/fix-libcrypto-loading.patch @@ -0,0 +1,13 @@ +diff --git a/salt/utils/rsax931.py b/salt/utils/rsax931.py +index f827cc6db8..b728595186 100644 +--- a/salt/utils/rsax931.py ++++ b/salt/utils/rsax931.py +@@ -74,7 +74,7 @@ + """ + Attempt to load libcrypto. + """ +- return cdll.LoadLibrary(_find_libcrypto()) ++ return cdll.LoadLibrary('@libcrypto@') + + + def _init_libcrypto(): diff --git a/nixpkgs/pkgs/tools/admin/salt/pepper/default.nix b/nixpkgs/pkgs/tools/admin/salt/pepper/default.nix new file mode 100644 index 000000000000..0c6e9dc0ab23 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/salt/pepper/default.nix @@ -0,0 +1,26 @@ +{ lib +, python3Packages +, salt +}: + +python3Packages.buildPythonApplication rec { + pname = "salt-pepper"; + version = "0.7.5"; + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "1wh6yidwdk8jvjpr5g3azhqgsk24c5rlzmw6l86dmi0mpvmxm94w"; + }; + + buildInputs = with python3Packages; [ setuptools setuptools_scm salt ]; + checkInputs = with python3Packages; [ + pytest mock pyzmq pytest-rerunfailures pytestcov cherrypy tornado + ]; + + meta = with lib; { + description = "A CLI front-end to a running salt-api system"; + homepage = "https://github.com/saltstack/pepper"; + maintainers = [ maintainers.pierrer ]; + license = licenses.asl20; + broken = true; # ModuleNotFoundError: No module named 'pytestsalt' + }; +} diff --git a/nixpkgs/pkgs/tools/admin/scaleway-cli/default.nix b/nixpkgs/pkgs/tools/admin/scaleway-cli/default.nix new file mode 100644 index 000000000000..a174937e5a12 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/scaleway-cli/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchFromGitHub, buildGoPackage }: + +buildGoPackage rec { + pname = "scaleway-cli"; + version = "1.20"; + + goPackagePath = "github.com/scaleway/scaleway-cli"; + + src = fetchFromGitHub { + owner = "scaleway"; + repo = "scaleway-cli"; + rev = "v${version}"; + sha256 = "14likzp3hl04nq9nmpmh9m5zqjyspy5cyk20dkh03c1nhkd4vcnx"; + }; + + meta = with stdenv.lib; { + description = "Interact with Scaleway API from the command line"; + homepage = "https://github.com/scaleway/scaleway-cli"; + license = licenses.mit; + maintainers = with maintainers; [ nickhu ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/sec/default.nix b/nixpkgs/pkgs/tools/admin/sec/default.nix new file mode 100644 index 000000000000..b082f61f875d --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/sec/default.nix @@ -0,0 +1,32 @@ +{ fetchFromGitHub, perl, stdenv }: + +stdenv.mkDerivation rec { + name = "sec-${meta.version}"; + + src = fetchFromGitHub { + owner = "simple-evcorr"; + repo = "sec"; + rev = meta.version; + sha256 = "0ryic5ilj1i5l41440i0ss6j3yv796fz3gr0qij5pqyd1z21md83"; + }; + + buildInputs = [ perl ]; + + dontBuild = false; + doCheck = false; + + installPhase = '' + mkdir -p $out/bin $out/share/man/man1 + cp sec $out/bin + cp sec.man $out/share/man/man1/sec.1 + ''; + + meta = { + homepage = "https://simple-evcorr.github.io"; + license = stdenv.lib.licenses.gpl2; + description = "Simple Event Correlator"; + maintainers = [ stdenv.lib.maintainers.tv ]; + platforms = stdenv.lib.platforms.all; + version = "2.8.3"; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/sewer/default.nix b/nixpkgs/pkgs/tools/admin/sewer/default.nix new file mode 100644 index 000000000000..471a8788a95e --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/sewer/default.nix @@ -0,0 +1,20 @@ +{ stdenv, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "sewer"; + version = "0.8.1"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "0s8f0w6nv8dcs5yw7rn49981b3c9mnnx4f6wzqw4zha0rpp60z22"; + }; + + propagatedBuildInputs = with python3Packages; [ pyopenssl requests tldextract ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/komuw/sewer"; + description = "ACME client"; + license = licenses.mit; + maintainers = with maintainers; [ kevincox ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/simp_le/default.nix b/nixpkgs/pkgs/tools/admin/simp_le/default.nix new file mode 100644 index 000000000000..6ff547ab5322 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/simp_le/default.nix @@ -0,0 +1,32 @@ +{ stdenv, python3Packages, bash }: + +python3Packages.buildPythonApplication rec { + pname = "simp_le-client"; + version = "0.17.0"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "0m1jynar4calaffp2zdxr5yy9vnhw2qf2hsfxwzfwf8fqb5h7bjb"; + }; + + postPatch = '' + # drop upper bound of idna requirement + sed -ri "s/'(idna)<[^']+'/'\1'/" setup.py + substituteInPlace simp_le.py \ + --replace "/bin/sh" "${bash}/bin/sh" + ''; + + checkPhase = '' + $out/bin/simp_le --test + ''; + + propagatedBuildInputs = with python3Packages; [ acme setuptools_scm josepy idna ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/zenhack/simp_le"; + description = "Simple Let's Encrypt client"; + license = licenses.gpl3; + maintainers = with maintainers; [ gebner makefu ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/ssh-import-id/default.nix b/nixpkgs/pkgs/tools/admin/ssh-import-id/default.nix new file mode 100644 index 000000000000..77d30e56d5fc --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/ssh-import-id/default.nix @@ -0,0 +1,36 @@ +{ buildPythonPackage +, stdenv +, fetchgit +, requests +, makeWrapper +, extraHandlers ? [] +}: + +buildPythonPackage rec { + pname = "ssh-import-id"; + version = "5.8"; + + src = fetchgit { + url = "https://git.launchpad.net/ssh-import-id"; + rev = version; + sha256 = "0l9gya1hyf2qfidlmvg2cgfils1fp9rn5r8sihwvx4qfsfp5yaak"; + }; + + propagatedBuildInputs = [ + requests + ] ++ extraHandlers; + + nativeBuildInputs = [ + makeWrapper + ]; + + # handlers require main bin, main bin requires handlers + makeWrapperArgs = [ "--prefix" ":" "$out/bin" ]; + + meta = with stdenv.lib; { + description = "Retrieves an SSH public key and installs it locally"; + license = licenses.gpl3; + maintainers = with maintainers; [ mkg20001 ]; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/ssl-cert-check/default.nix b/nixpkgs/pkgs/tools/admin/ssl-cert-check/default.nix new file mode 100644 index 000000000000..b94d77bdf706 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/ssl-cert-check/default.nix @@ -0,0 +1,57 @@ +{ stdenv +, fetchFromGitHub +, makeWrapper +, openssl +, which +, gnugrep +, gnused +, gawk +, mktemp +, coreutils +, findutils +}: + +stdenv.mkDerivation rec { + pname = "ssl-cert-check"; + version = "3.31"; + + src = fetchFromGitHub { + owner = "Matty9191"; + repo = pname; + rev = "698c1996d05152cfaf2a1a3df4cc70482411fac8"; + sha256 = "0jvi9phs0ngfwrj9zixb03v9byavbwxx8xkp0h5m98qppn1kvl3n"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = [ + openssl + which + gnugrep + mktemp + gawk + gnused + coreutils + findutils + ]; + + prePatch = '' + substituteInPlace $pname --replace PATH= NOT_PATH= + ''; + + installPhase = '' + mkdir -p $out/bin + cp $pname $out/bin/$pname + wrapProgram $out/bin/$pname \ + --set PATH "${stdenv.lib.makeBinPath buildInputs}" + ''; + + meta = with stdenv.lib; { + description = "a Bourne shell script that can be used to report on expiring SSL certificates"; + homepage = "https://github.com/Matty9191/ssl-cert-check"; + license = licenses.gpl2; + maintainers = [ maintainers.ryantm ]; + platforms = platforms.linux; + }; + +} diff --git a/nixpkgs/pkgs/tools/admin/swiftclient/default.nix b/nixpkgs/pkgs/tools/admin/swiftclient/default.nix new file mode 100644 index 000000000000..91860d2df08e --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/swiftclient/default.nix @@ -0,0 +1,32 @@ +{ lib, buildPythonApplication, fetchPypi, requests, six, pbr, setuptools }: + +buildPythonApplication rec { + pname = "python-swiftclient"; + version = "3.9.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "0xx3v5kk8jp352rydy3jxndy1b9kl2zmkj1gi14fjxjc5r4rf82g"; + }; + + propagatedBuildInputs = [ requests six pbr setuptools ]; + + # For the tests the following requirements are needed: + # https://github.com/openstack/python-swiftclient/blob/master/test-requirements.txt + # + # The ones missing in nixpkgs (currently) are: + # - hacking + # - keystoneauth + # - oslosphinx + # - stestr + # - reno + # - openstackdocstheme + doCheck = false; + + meta = with lib; { + homepage = "https://github.com/openstack/python-swiftclient"; + description = "Python bindings to the OpenStack Object Storage API"; + license = licenses.asl20; + maintainers = with maintainers; [ c0deaddict ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/tigervnc/default.nix b/nixpkgs/pkgs/tools/admin/tigervnc/default.nix new file mode 100644 index 000000000000..0bb291d797ba --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/tigervnc/default.nix @@ -0,0 +1,107 @@ +{ stdenv, fetchFromGitHub +, xorg, xkeyboard_config, zlib +, libjpeg_turbo, pixman, fltk +, fontDirectories +, cmake, gettext, libtool +, libGLU +, gnutls, pam, nettle +, xterm, openssh, perl +, makeWrapper}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + version = "1.10.1"; + pname = "tigervnc"; + + src = fetchFromGitHub { + owner = "TigerVNC"; + repo = "tigervnc"; + rev = "v1.10.1"; + sha256 = "001n189d2f3psn7nxgl8188ml6f7jbk26cxn2835y3mnlk5lmhgr"; + }; + + inherit fontDirectories; + + patches = [ ./u_xorg-server-1.20.7-ddxInputThreadInit.patch ]; + + postPatch = '' + sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -xkbdir ${xkeyboard_config}/etc/X11/xkb";' unix/vncserver + fontPath= + for i in $fontDirectories; do + for j in $(find $i -name fonts.dir); do + addToSearchPathWithCustomDelimiter "," fontPath $(dirname $j) + done + done + sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -fp '"$fontPath"'";' unix/vncserver + substituteInPlace vncviewer/vncviewer.cxx \ + --replace '"/usr/bin/ssh' '"${openssh}/bin/ssh' + ''; + + dontUseCmakeBuildDir = true; + + postBuild = '' + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-error=int-to-pointer-cast -Wno-error=pointer-to-int-cast" + export CXXFLAGS="$CXXFLAGS -fpermissive" + # Build Xvnc + tar xf ${xorg.xorgserver.src} + cp -R xorg*/* unix/xserver + pushd unix/xserver + version=$(echo ${xorg.xorgserver.name} | sed 's/.*-\([0-9]\+\).\([0-9]\+\).*/\1\2/g') + patch -p1 < ${src}/unix/xserver$version.patch + autoreconf -vfi + ./configure $configureFlags --disable-devel-docs --disable-docs \ + --disable-xorg --disable-xnest --disable-xvfb --disable-dmx \ + --disable-xwin --disable-xephyr --disable-kdrive --with-pic \ + --disable-xorgcfg --disable-xprint --disable-static \ + --enable-composite --disable-xtrap --enable-xcsecurity \ + --disable-{a,c,m}fb \ + --disable-xwayland \ + --disable-config-dbus --disable-config-udev --disable-config-hal \ + --disable-xevie \ + --disable-dri --disable-dri2 --disable-dri3 --enable-glx \ + --enable-install-libxf86config \ + --prefix="$out" --disable-unit-tests \ + --with-xkb-path=${xkeyboard_config}/share/X11/xkb \ + --with-xkb-bin-directory=${xorg.xkbcomp}/bin \ + --with-xkb-output=$out/share/X11/xkb/compiled + make TIGERVNC_SRC=$src TIGERVNC_BUILDDIR=`pwd`/../.. -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES + popd + ''; + + postInstall = '' + pushd unix/xserver/hw/vnc + make TIGERVNC_SRC=$src TIGERVNC_BUILDDIR=`pwd`/../../../.. install + popd + rm -f $out/lib/xorg/protocol.txt + + wrapProgram $out/bin/vncserver \ + --prefix PATH : ${stdenv.lib.makeBinPath (with xorg; [ xterm twm xsetroot xauth ]) } + ''; + + buildInputs = with xorg; [ + libjpeg_turbo fltk pixman + gnutls pam nettle perl + xorgproto + utilmacros libXtst libXext libX11 libXext libICE libXi libSM libXft + libxkbfile libXfont2 libpciaccess + libGLU + ] ++ xorg.xorgserver.buildInputs; + + nativeBuildInputs = with xorg; [ cmake zlib gettext libtool utilmacros fontutil makeWrapper ] + ++ xorg.xorgserver.nativeBuildInputs; + + propagatedBuildInputs = xorg.xorgserver.propagatedBuildInputs; + + enableParallelBuilding = true; + + meta = { + homepage = "https://tigervnc.org/"; + license = stdenv.lib.licenses.gpl2Plus; + description = "Fork of tightVNC, made in cooperation with VirtualGL"; + maintainers = with stdenv.lib.maintainers; [viric]; + platforms = with stdenv.lib.platforms; linux; + # Prevent a store collision. + priority = 4; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch b/nixpkgs/pkgs/tools/admin/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch new file mode 100644 index 000000000000..c18f4bf213f2 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch @@ -0,0 +1,21 @@ +Origin: https://build.opensuse.org/package/view_file/X11:XOrg/tigervnc/u_xorg-server-1.20.7-ddxInputThreadInit.patch +diff -u -p -r tigervnc-1.10.0.old/unix/xserver/hw/vnc/xvnc.c tigervnc-1.10.0/unix/xserver/hw/vnc/xvnc.c +--- tigervnc-1.10.0.old/unix/xserver/hw/vnc/xvnc.c 2020-01-15 11:19:19.486731848 +0000 ++++ tigervnc-1.10.0/unix/xserver/hw/vnc/xvnc.c 2020-01-15 11:37:33.275445409 +0000 +@@ -295,6 +295,15 @@ void ddxBeforeReset(void) + } + #endif + ++#if INPUTTHREAD ++/** This function is called in Xserver/os/inputthread.c when starting ++ the input thread. */ ++void ++ddxInputThreadInit(void) ++{ ++} ++#endif ++ + void ddxUseMsg(void) + { + vncPrintBanner(); + diff --git a/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15678.patch b/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15678.patch new file mode 100644 index 000000000000..cd65d2fb5dd9 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15678.patch @@ -0,0 +1,18 @@ +Adapted from https://github.com/LibVNC/libvncserver/commit/c5ba3fee85a7ecbbca1df5ffd46d32b92757bc2a +diff --git a/vncviewer/rfbproto.c b/vncviewer/rfbproto.c +index 04b0230..47a6863 100644 +--- a/vncviewer/rfbproto.c ++++ b/vncviewer/rfbproto.c +@@ -1217,6 +1217,12 @@ HandleRFBServerMessage() + if (serverCutText) + free(serverCutText); + ++ if (msg.sct.length > 1<<20) { ++ fprintf(stderr,"Ignoring too big cut text length sent by server: %u B > 1 MB\n", ++ (unsigned int)msg.sct.length); ++ return False; ++ } ++ + serverCutText = malloc(msg.sct.length+1); + + if (!ReadFromRFBServer(serverCutText, msg.sct.length)) diff --git a/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15679.patch b/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15679.patch new file mode 100644 index 000000000000..6d7b3e89e0c4 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15679.patch @@ -0,0 +1,19 @@ +Adapted from https://github.com/LibVNC/libvncserver/commit/c2c4b81e6cb3b485fb1ec7ba9e7defeb889f6ba7 +diff --git a/vncviewer/rfbproto.c b/vncviewer/rfbproto.c +index 04b0230..bd11b54 100644 +--- a/vncviewer/rfbproto.c ++++ b/vncviewer/rfbproto.c +@@ -303,7 +303,12 @@ InitialiseRFBConnection(void) + si.format.blueMax = Swap16IfLE(si.format.blueMax); + si.nameLength = Swap32IfLE(si.nameLength); + +- /* FIXME: Check arguments to malloc() calls. */ ++ if (si.nameLength > 1<<20) { ++ fprintf(stderr, "Too big desktop name length sent by server: %lu B > 1 MB\n", ++ (unsigned long)si.nameLength); ++ return False; ++ } ++ + desktopName = malloc(si.nameLength + 1); + if (!desktopName) { + fprintf(stderr, "Error allocating memory for desktop name, %lu bytes\n", diff --git a/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15680.patch b/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15680.patch new file mode 100644 index 000000000000..7426a2b58b10 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-15680.patch @@ -0,0 +1,16 @@ +diff --git a/vncviewer/zlib.c b/vncviewer/zlib.c +index 80c4eee..76998d8 100644 +--- a/vncviewer/zlib.c ++++ b/vncviewer/zlib.c +@@ -55,6 +55,11 @@ HandleZlibBPP (int rx, int ry, int rw, int rh) + raw_buffer_size = (( rw * rh ) * ( BPP / 8 )); + raw_buffer = (char*) malloc( raw_buffer_size ); + ++ if ( raw_buffer == NULL ) { ++ fprintf(stderr, ++ "couldn't allocate raw_buffer in HandleZlibBPP"); ++ return False; ++ } + } + + if (!ReadFromRFBServer((char *)&hdr, sz_rfbZlibHeader)) diff --git a/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-8287.patch b/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-8287.patch new file mode 100644 index 000000000000..5bfd1b9ea87f --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/tightvnc/1.3.10-CVE-2019-8287.patch @@ -0,0 +1,14 @@ +Adapted from https://github.com/LibVNC/libvncserver/commit/7b1ef0ffc4815cab9a96c7278394152bdc89dc4d +diff --git a/vncviewer/corre.c b/vncviewer/corre.c +index c846a10..a4c272d 100644 +--- a/vncviewer/corre.c ++++ b/vncviewer/corre.c +@@ -56,7 +56,7 @@ HandleCoRREBPP (int rx, int ry, int rw, int rh) + XChangeGC(dpy, gc, GCForeground, &gcv); + XFillRectangle(dpy, desktopWin, gc, rx, ry, rw, rh); + +- if (!ReadFromRFBServer(buffer, hdr.nSubrects * (4 + (BPP / 8)))) ++ if (hdr.nSubrects > BUFFER_SIZE / (4 + (BPP / 8)) || !ReadFromRFBServer(buffer, hdr.nSubrects * (4 + (BPP / 8)))) + return False; + + ptr = (CARD8 *)buffer; diff --git a/nixpkgs/pkgs/tools/admin/tightvnc/default.nix b/nixpkgs/pkgs/tools/admin/tightvnc/default.nix new file mode 100644 index 000000000000..7dc416c8efda --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/tightvnc/default.nix @@ -0,0 +1,85 @@ +{ stdenv, fetchurl, xlibsWrapper, zlib, libjpeg, imake, gccmakedep, libXmu +, libXaw, libXpm, libXp , perl, xauth, fontDirectories, openssh }: + +stdenv.mkDerivation { + name = "tightvnc-1.3.10"; + + src = fetchurl { + url = "mirror://sourceforge/vnc-tight/tightvnc-1.3.10_unixsrc.tar.bz2"; + sha256 = "f48c70fea08d03744ae18df6b1499976362f16934eda3275cead87baad585c0d"; + }; + + patches = [ + ./1.3.10-CVE-2019-15678.patch + ./1.3.10-CVE-2019-15679.patch + ./1.3.10-CVE-2019-15680.patch + ./1.3.10-CVE-2019-8287.patch + ]; + + # for the builder script + inherit fontDirectories; + + hardeningDisable = [ "format" ]; + + buildInputs = [ xlibsWrapper zlib libjpeg imake gccmakedep libXmu libXaw + libXpm libXp xauth openssh ]; + + postPatch = '' + fontPath= + for i in $fontDirectories; do + for j in $(find $i -name fonts.dir); do + addToSearchPathWithCustomDelimiter "," fontPath $(dirname $j) + done + done + + sed -i "s@/usr/bin/ssh@${openssh}/bin/ssh@g" vncviewer/vncviewer.h + + sed -e 's@/usr/bin/perl@${perl}/bin/perl@' \ + -e 's@unix/:7100@'$fontPath'@' \ + -i vncserver + + sed -e 's@.* CppCmd .*@#define CppCmd cpp@' -i Xvnc/config/cf/linux.cf + sed -e 's@.* CppCmd .*@#define CppCmd cpp@' -i Xvnc/config/cf/Imake.tmpl + sed -i \ + -e 's@"uname","xauth","Xvnc","vncpasswd"@"uname","Xvnc","vncpasswd"@g' \ + -e "s@\<xauth\>@${xauth}/bin/xauth@g" \ + vncserver + ''; + + preInstall = '' + mkdir -p $out/bin + mkdir -p $out/share/man/man1 + ''; + + installPhase = '' + runHook preInstall + + ./vncinstall $out/bin $out/share/man + + runHook postInstall + ''; + + postInstall = '' + # fix HTTP client: + mkdir -p $out/share/tightvnc + cp -r classes $out/share/tightvnc + substituteInPlace $out/bin/vncserver \ + --replace /usr/local/vnc/classes $out/share/tightvnc/classes + ''; + + meta = { + license = stdenv.lib.licenses.gpl2Plus; + homepage = "http://vnc-tight.sourceforge.net/"; + description = "Improved version of VNC"; + + longDescription = '' + TightVNC is an improved version of VNC, the great free + remote-desktop tool. The improvements include bandwidth-friendly + "tight" encoding, file transfers in the Windows version, enhanced + GUI, many bugfixes, and more. + ''; + + maintainers = []; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/virtscreen/default.nix b/nixpkgs/pkgs/tools/admin/virtscreen/default.nix new file mode 100644 index 000000000000..3c5fb64f7224 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/virtscreen/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitHub, python3Packages, x11vnc, xrandr, libGL }: + +python3Packages.buildPythonApplication rec { + pname = "virtscreen"; + version = "0.3.1"; + + disabled = python3Packages.pythonOlder "3.6"; + + # No tests + doCheck = false; + + src = fetchFromGitHub { + owner = "kbumsik"; + repo = pname; + rev = version; + sha256 = "005qach6phz8w17k8kqmyd647c6jkfybczybxq0yxi5ik0s91a08"; + }; + + propagatedBuildInputs = with python3Packages; [ + netifaces + pyqt5 + quamash + x11vnc + xrandr + ]; + + postPatch = let + ext = stdenv.hostPlatform.extensions.sharedLibrary; in '' + substituteInPlace virtscreen/__main__.py \ + --replace "'GL'" "'${libGL}/lib/libGL${ext}'" \ + ''; + + meta = with stdenv.lib; { + description = "Make your iPad/tablet/computer as a secondary monitor on Linux"; + homepage = "https://github.com/kbumsik/VirtScreen"; + license = licenses.gpl3; + maintainers = with maintainers; [ borisbabic ]; + }; +} diff --git a/nixpkgs/pkgs/tools/admin/vncdo/default.nix b/nixpkgs/pkgs/tools/admin/vncdo/default.nix new file mode 100644 index 000000000000..5ca633a944b2 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/vncdo/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub +, python2Packages +}: +python2Packages.buildPythonPackage { + pname = "vncdo"; + version = "0.11.2"; + + src = fetchFromGitHub { + owner = "sibson"; + repo = "vncdotool"; + rev = "5c03a82dcb5a3bd9e8f741f8a8d0c1ce082f2834"; + sha256 = "0k03b09ipsz8vp362x7sx7z68mxgqw9qzvkii2f8j9vx2y79rjsh"; + }; + + propagatedBuildInputs = with python2Packages; [ + pillow + twisted + pexpect + nose + ptyprocess + ]; + + doCheck = false; + + meta = with stdenv.lib; { + homepage = "https://github.com/sibson/vncdotool"; + description = "A command line VNC client and python library"; + license = licenses.mit; + maintainers = with maintainers; [ elitak ]; + platforms = with platforms; linux ++ darwin; + }; + +} |