From e15f24ccdddfe05236eb10f1edc9c37a9f7a4b68 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Wed, 3 Feb 2021 16:05:01 +0100 Subject: [PATCH 1/6] nixopsUnstable: Remove old unstable expression (cherry picked from commit c200428600683285d199974fe76f36460e9ccbca) --- pkgs/tools/package-management/nixops/unstable.nix | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 pkgs/tools/package-management/nixops/unstable.nix diff --git a/pkgs/tools/package-management/nixops/unstable.nix b/pkgs/tools/package-management/nixops/unstable.nix deleted file mode 100644 index 94975807dea6..000000000000 --- a/pkgs/tools/package-management/nixops/unstable.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ callPackage, fetchurl }: - -# To upgrade pick the hydra job of the nixops revision that you want to upgrade -# to from: https://hydra.nixos.org/job/nixops/master/tarball -# Then copy the URL to the tarball. - -callPackage ./generic.nix (rec { - version = "1.7pre2764_932bf43"; - src = fetchurl { - url = "https://hydra.nixos.org/build/92372343/download/2/nixops-${version}.tar.bz2"; - sha256 = "f35bf81bf2805473ea54248d0ee92d163d00a1992f3f75d17e8cf430db1f9919"; - }; -}) From ecbc659c2e9a32d0329b04c86ccbf62523e778d7 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Mon, 8 Feb 2021 16:00:53 +0100 Subject: [PATCH 2/6] nixops: Fix build by disabling the libvirt backend if package marked as insecure With this change it's possible to override the libvirt package used if you absolutely need it. (cherry picked from commit 418af7d7aae6ad5c15b8c31d0fc7052d7c5625ed) --- .../python-modules/libvirt/5.9.0.nix | 4 ++++ .../package-management/nixops/generic.nix | 5 ++-- .../nixops/optional-virtd.patch | 24 +++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 pkgs/tools/package-management/nixops/optional-virtd.patch diff --git a/pkgs/development/python-modules/libvirt/5.9.0.nix b/pkgs/development/python-modules/libvirt/5.9.0.nix index 7b0b7c438d9a..16b2e248a2e8 100644 --- a/pkgs/development/python-modules/libvirt/5.9.0.nix +++ b/pkgs/development/python-modules/libvirt/5.9.0.nix @@ -18,6 +18,10 @@ buildPythonPackage rec { nosetests ''; + passthru = { + inherit libvirt; + }; + meta = with stdenv.lib; { homepage = "http://www.libvirt.org/"; description = "libvirt Python bindings"; diff --git a/pkgs/tools/package-management/nixops/generic.nix b/pkgs/tools/package-management/nixops/generic.nix index 59d139d28847..f16b47daf2c1 100644 --- a/pkgs/tools/package-management/nixops/generic.nix +++ b/pkgs/tools/package-management/nixops/generic.nix @@ -21,9 +21,10 @@ python2Packages.buildPythonApplication { pysqlite datadog digital-ocean - libvirt typing - ] ++ nixopsAzurePackages; + ] + ++ lib.optional (!libvirt.passthru.libvirt.meta.insecure or true) libvirt + ++ nixopsAzurePackages; checkPhase = # Ensure, that there are no (python) import errors diff --git a/pkgs/tools/package-management/nixops/optional-virtd.patch b/pkgs/tools/package-management/nixops/optional-virtd.patch new file mode 100644 index 000000000000..3697fdde8f26 --- /dev/null +++ b/pkgs/tools/package-management/nixops/optional-virtd.patch @@ -0,0 +1,24 @@ +diff --git a/nixops/backends/libvirtd.py b/nixops/backends/libvirtd.py +index bc5f4af7..edd1348b 100644 +--- a/nixops/backends/libvirtd.py ++++ b/nixops/backends/libvirtd.py +@@ -8,12 +8,18 @@ import shutil + import string + import subprocess + import time +-import libvirt + + from nixops.backends import MachineDefinition, MachineState + import nixops.known_hosts + import nixops.util + ++try: ++ import libvirt ++except: ++ class libvirt(object): ++ def __getattribute__(self, name): ++ raise ValueError("The libvirt backend has been disabled because of security issues.") ++ + # to prevent libvirt errors from appearing on screen, see + # https://www.redhat.com/archives/libvirt-users/2017-August/msg00011.html + From 91b134f7d3018942e7d8c47a95d9a6adcc3433a3 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Mon, 8 Feb 2021 16:05:37 +0100 Subject: [PATCH 3/6] nixops_1_6_1: Remove package Even Nixops 1.7 is unmaintained at this point, let's remove this old cruft. (cherry picked from commit dc83b85804fd10afd3c7fca5b384ad34efa3566f) --- .../nixops/nixops-v1_6_1.nix | 32 ------------------- pkgs/top-level/all-packages.nix | 4 +-- 2 files changed, 1 insertion(+), 35 deletions(-) delete mode 100644 pkgs/tools/package-management/nixops/nixops-v1_6_1.nix diff --git a/pkgs/tools/package-management/nixops/nixops-v1_6_1.nix b/pkgs/tools/package-management/nixops/nixops-v1_6_1.nix deleted file mode 100644 index dc0c733ca7b1..000000000000 --- a/pkgs/tools/package-management/nixops/nixops-v1_6_1.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ callPackage, newScope, pkgs, fetchurl }: - -callPackage ./generic.nix (rec { - version = "1.6.1"; - src = fetchurl { - url = "https://nixos.org/releases/nixops/nixops-${version}/nixops-${version}.tar.bz2"; - sha256 = "0lfx5fhyg3z6725ydsk0ibg5qqzp5s0x9nbdww02k8s307axiah3"; - }; - nixopsAzurePackages = with python2Packages; [ - azure-storage - azure-mgmt-compute - azure-mgmt-network - azure-mgmt-resource - azure-mgmt-storage - ]; - # nixops is incompatible with the most recent versions of listed - # azure-mgmt-* packages, therefore we are pinning them to - # package-private versions, so that they don't get trampled by - # updates. - # see - # https://github.com/NixOS/nixops/issues/1065 - python2Packages = pkgs.python2Packages.override { - overrides = (self: super: let callPackage = newScope self; in { - azure-mgmt-compute = callPackage ./azure-mgmt-compute { }; - azure-mgmt-network = callPackage ./azure-mgmt-network { }; - azure-mgmt-nspkg = callPackage ./azure-mgmt-nspkg { }; - azure-mgmt-resource = callPackage ./azure-mgmt-resource { }; - azure-mgmt-storage = callPackage ./azure-mgmt-storage { }; - azure-storage = callPackage ./azure-storage { }; - }); - }; -}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 366240fcda08..efb97b2185af 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -26901,9 +26901,7 @@ in nixops = callPackage ../tools/package-management/nixops { }; - nixops_1_6_1 = callPackage ../tools/package-management/nixops/nixops-v1_6_1.nix {}; - - nixopsUnstable = lowPrio (callPackage ../tools/package-management/nixops/unstable.nix { }); + nixopsUnstable = lowPrio (callPackage ../applications/networking/cluster/nixops { }); nixops-dns = callPackage ../tools/package-management/nixops/nixops-dns.nix { }; From baaf573239beaf579fa5b0290e6fa4ab9d7a727e Mon Sep 17 00:00:00 2001 From: adisbladis Date: Mon, 8 Feb 2021 16:16:45 +0100 Subject: [PATCH 4/6] nixops: Refactor expression This removes the generic expression (cherry picked from commit 3d6531e94f1e62bd03a6ec754456d1324cff6dfb) --- .../package-management/nixops/default.nix | 67 ++++++++++++++++++- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/package-management/nixops/default.nix b/pkgs/tools/package-management/nixops/default.nix index c761a3a47793..0dcbeb8abfed 100644 --- a/pkgs/tools/package-management/nixops/default.nix +++ b/pkgs/tools/package-management/nixops/default.nix @@ -1,9 +1,70 @@ -{ callPackage, fetchurl }: +{ lib, python2Packages, libxslt, docbook_xsl_ns, openssh, cacert, nixopsAzurePackages ? [] +, fetchurl, fetchpatch +}: -callPackage ./generic.nix (rec { +let version = "1.7"; + +in python2Packages.buildPythonApplication { + pname = "nixops"; + inherit version; + src = fetchurl { url = "https://nixos.org/releases/nixops/nixops-${version}/nixops-${version}.tar.bz2"; sha256 = "091c0b5bca57d4aa20be20e826ec161efe3aec9c788fbbcf3806a734a517f0f3"; }; -}) + + patches = [ + (fetchpatch { + url = "https://github.com/NixOS/nixops/commit/fb6d4665e8efd858a215bbaaf079ec3f5ebc49b8.patch"; + sha256 = "1hbhykl811zsqlaj3y5m9d8lfsal6ps6n5p16ah6lqy2s18ap9d0"; + }) + ./optional-virtd.patch + ]; + + buildInputs = [ libxslt ]; + + pythonPath = with python2Packages; + [ prettytable + boto + boto3 + hetzner + libcloud + adal + # Go back to sqlite once Python 2.7.13 is released + pysqlite + datadog + digital-ocean + typing + ] + ++ lib.optional (!libvirt.passthru.libvirt.meta.insecure or true) libvirt + ++ nixopsAzurePackages; + + checkPhase = + # Ensure, that there are no (python) import errors + '' + SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt \ + HOME=$(pwd) \ + $out/bin/nixops --version + ''; + + postInstall = '' + make -C doc/manual install nixops.1 docbookxsl=${docbook_xsl_ns}/xml/xsl/docbook \ + docdir=$out/share/doc/nixops mandir=$out/share/man + + mkdir -p $out/share/nix/nixops + cp -av "nix/"* $out/share/nix/nixops + + # Add openssh to nixops' PATH. On some platforms, e.g. CentOS and RHEL + # the version of openssh is causing errors when have big networks (40+) + wrapProgram $out/bin/nixops --prefix PATH : "${openssh}/bin" + ''; + + meta = { + homepage = "https://github.com/NixOS/nixops"; + description = "NixOS cloud provisioning and deployment tool"; + maintainers = with lib.maintainers; [ aminechikhaoui eelco rob domenkozar ]; + platforms = lib.platforms.unix; + license = lib.licenses.lgpl3; + }; +} From 89f1f7c5b13c78288af2fa7d4e272bbdfd81ae31 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 12 Feb 2021 17:00:01 +0100 Subject: [PATCH 5/6] nixopsUnstable: remove I didn't backport it for now since it doesn't trivially build on release-20.09. Also, it's a bit more important to get `nixops` in a usable state again. --- pkgs/top-level/all-packages.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index efb97b2185af..2f0d6730129d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -26901,8 +26901,6 @@ in nixops = callPackage ../tools/package-management/nixops { }; - nixopsUnstable = lowPrio (callPackage ../applications/networking/cluster/nixops { }); - nixops-dns = callPackage ../tools/package-management/nixops/nixops-dns.nix { }; /* Evaluate a NixOS configuration using this evaluation of Nixpkgs. From 02a0ebff767720147c05d0750e727b17e2a095ff Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 12 Feb 2021 17:05:28 +0100 Subject: [PATCH 6/6] nixopsUnstable: alias to nixops --- pkgs/top-level/all-packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2f0d6730129d..1e9479992bb8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -26900,6 +26900,7 @@ in nixFlakes; nixops = callPackage ../tools/package-management/nixops { }; + nixopsUnstable = nixops; nixops-dns = callPackage ../tools/package-management/nixops/nixops-dns.nix { };