From 72b5bea2f6d0f0472e1ea994f7798817b58322ef Mon Sep 17 00:00:00 2001 From: Benjamin Sparks Date: Mon, 28 Apr 2025 21:00:37 +0200 Subject: [PATCH 1/2] octodns: python3Packages.callPackage -> callPackage --- pkgs/tools/networking/octodns/default.nix | 56 ++++++++++++----------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/pkgs/tools/networking/octodns/default.nix b/pkgs/tools/networking/octodns/default.nix index e511070a4b79..618b2a0b57f1 100644 --- a/pkgs/tools/networking/octodns/default.nix +++ b/pkgs/tools/networking/octodns/default.nix @@ -1,26 +1,28 @@ { lib, - buildPythonPackage, - dnspython, fetchFromGitHub, - fqdn, - idna, - natsort, - pytestCheckHook, - python-dateutil, - python, - pythonOlder, - pyyaml, + python3, runCommand, - setuptools, -}: -buildPythonPackage rec { + # passthru + octodns, +}: +let + # Export `python` with `octodns` as a module for `octodns-providers`. + python = python3.override { + self = python; + packageOverrides = final: prev: { + octodns = final.toPythonModule octodns; + }; + }; + python3Packages = python.pkgs; +in +python3Packages.buildPythonApplication rec { pname = "octodns"; version = "1.10.0"; pyproject = true; - disabled = pythonOlder "3.8"; + disabled = python.pythonOlder "3.8"; src = fetchFromGitHub { owner = "octodns"; @@ -29,11 +31,11 @@ buildPythonPackage rec { hash = "sha256-L3c4lYt/fgMctJFArc1XlR+hvpz10kcBcYYXajnNQr0="; }; - build-system = [ + build-system = with python3Packages; [ setuptools ]; - dependencies = [ + dependencies = with python3Packages; [ dnspython fqdn idna @@ -42,21 +44,23 @@ buildPythonPackage rec { pyyaml ]; - nativeCheckInputs = [ + nativeCheckInputs = with python3Packages; [ pytestCheckHook ]; pythonImportsCheck = [ "octodns" ]; - passthru.withProviders = - ps: - let - pyEnv = python.withPackages ps; - in - runCommand "octodns-with-providers" { } '' - mkdir -p $out/bin - ln -st $out/bin ${pyEnv}/bin/octodns-* - ''; + passthru = { + withProviders = + ps: + let + pyEnv = python.withPackages ps; + in + runCommand "octodns-with-providers" { } '' + mkdir -p $out/bin + ln -st $out/bin ${pyEnv}/bin/octodns-* + ''; + }; meta = with lib; { description = "Tools for managing DNS across multiple providers"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index af829b484a35..38cd136163d6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -419,7 +419,7 @@ with pkgs; deviceTree = callPackage ../os-specific/linux/device-tree { }; - octodns = python3Packages.callPackage ../tools/networking/octodns { }; + octodns = callPackage ../tools/networking/octodns { }; octodns-providers = recurseIntoAttrs { bind = python3Packages.callPackage ../tools/networking/octodns/providers/bind { }; From 7e92ae3f3cb72e824863f23627eb4eed8c26e765 Mon Sep 17 00:00:00 2001 From: Benjamin Sparks Date: Mon, 28 Apr 2025 22:25:05 +0200 Subject: [PATCH 2/2] octodns-providers.*: autocalling providers using octodns' python --- pkgs/tools/networking/octodns/default.nix | 7 +++++++ .../providers/bind/{default.nix => package.nix} | 0 .../providers/cloudflare/{default.nix => package.nix} | 0 .../providers/ddns/{default.nix => package.nix} | 0 .../providers/gandi/{default.nix => package.nix} | 0 .../providers/hetzner/{default.nix => package.nix} | 0 .../providers/powerdns/{default.nix => package.nix} | 0 .../providers/transip/{default.nix => package.nix} | 0 pkgs/top-level/all-packages.nix | 10 +--------- 9 files changed, 8 insertions(+), 9 deletions(-) rename pkgs/tools/networking/octodns/providers/bind/{default.nix => package.nix} (100%) rename pkgs/tools/networking/octodns/providers/cloudflare/{default.nix => package.nix} (100%) rename pkgs/tools/networking/octodns/providers/ddns/{default.nix => package.nix} (100%) rename pkgs/tools/networking/octodns/providers/gandi/{default.nix => package.nix} (100%) rename pkgs/tools/networking/octodns/providers/hetzner/{default.nix => package.nix} (100%) rename pkgs/tools/networking/octodns/providers/powerdns/{default.nix => package.nix} (100%) rename pkgs/tools/networking/octodns/providers/transip/{default.nix => package.nix} (100%) diff --git a/pkgs/tools/networking/octodns/default.nix b/pkgs/tools/networking/octodns/default.nix index 618b2a0b57f1..d59389f8b273 100644 --- a/pkgs/tools/networking/octodns/default.nix +++ b/pkgs/tools/networking/octodns/default.nix @@ -51,6 +51,13 @@ python3Packages.buildPythonApplication rec { pythonImportsCheck = [ "octodns" ]; passthru = { + providers = lib.recurseIntoAttrs ( + lib.packagesFromDirectoryRecursive { + inherit (python3Packages) callPackage; + directory = ./providers; + } + ); + withProviders = ps: let diff --git a/pkgs/tools/networking/octodns/providers/bind/default.nix b/pkgs/tools/networking/octodns/providers/bind/package.nix similarity index 100% rename from pkgs/tools/networking/octodns/providers/bind/default.nix rename to pkgs/tools/networking/octodns/providers/bind/package.nix diff --git a/pkgs/tools/networking/octodns/providers/cloudflare/default.nix b/pkgs/tools/networking/octodns/providers/cloudflare/package.nix similarity index 100% rename from pkgs/tools/networking/octodns/providers/cloudflare/default.nix rename to pkgs/tools/networking/octodns/providers/cloudflare/package.nix diff --git a/pkgs/tools/networking/octodns/providers/ddns/default.nix b/pkgs/tools/networking/octodns/providers/ddns/package.nix similarity index 100% rename from pkgs/tools/networking/octodns/providers/ddns/default.nix rename to pkgs/tools/networking/octodns/providers/ddns/package.nix diff --git a/pkgs/tools/networking/octodns/providers/gandi/default.nix b/pkgs/tools/networking/octodns/providers/gandi/package.nix similarity index 100% rename from pkgs/tools/networking/octodns/providers/gandi/default.nix rename to pkgs/tools/networking/octodns/providers/gandi/package.nix diff --git a/pkgs/tools/networking/octodns/providers/hetzner/default.nix b/pkgs/tools/networking/octodns/providers/hetzner/package.nix similarity index 100% rename from pkgs/tools/networking/octodns/providers/hetzner/default.nix rename to pkgs/tools/networking/octodns/providers/hetzner/package.nix diff --git a/pkgs/tools/networking/octodns/providers/powerdns/default.nix b/pkgs/tools/networking/octodns/providers/powerdns/package.nix similarity index 100% rename from pkgs/tools/networking/octodns/providers/powerdns/default.nix rename to pkgs/tools/networking/octodns/providers/powerdns/package.nix diff --git a/pkgs/tools/networking/octodns/providers/transip/default.nix b/pkgs/tools/networking/octodns/providers/transip/package.nix similarity index 100% rename from pkgs/tools/networking/octodns/providers/transip/default.nix rename to pkgs/tools/networking/octodns/providers/transip/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 38cd136163d6..066d71b71670 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -421,15 +421,7 @@ with pkgs; octodns = callPackage ../tools/networking/octodns { }; - octodns-providers = recurseIntoAttrs { - bind = python3Packages.callPackage ../tools/networking/octodns/providers/bind { }; - gandi = python3Packages.callPackage ../tools/networking/octodns/providers/gandi { }; - hetzner = python3Packages.callPackage ../tools/networking/octodns/providers/hetzner { }; - powerdns = python3Packages.callPackage ../tools/networking/octodns/providers/powerdns { }; - cloudflare = python3Packages.callPackage ../tools/networking/octodns/providers/cloudflare { }; - ddns = python3Packages.callPackage ../tools/networking/octodns/providers/ddns { }; - transip = python3Packages.callPackage ../tools/networking/octodns/providers/transip { }; - }; + octodns-providers = octodns.providers; oletools = with python3.pkgs; toPythonApplication oletools;