From eebf361edd82d14af4bb4eb92cbdefb57c8582cf Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Wed, 7 Aug 2024 13:43:08 -0400
Subject: [PATCH 1/9] python3Packages.pykerberos: disambiguate krb5

PyPI also has a package called krb5 and this package wants the system krb5, not the PyPI one.
---
 pkgs/development/python-modules/pykerberos/default.nix | 7 ++++---
 pkgs/top-level/python-packages.nix                     | 4 +++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/pkgs/development/python-modules/pykerberos/default.nix b/pkgs/development/python-modules/pykerberos/default.nix
index b7b8953a72b3..653d978922ba 100644
--- a/pkgs/development/python-modules/pykerberos/default.nix
+++ b/pkgs/development/python-modules/pykerberos/default.nix
@@ -2,7 +2,7 @@
   lib,
   fetchPypi,
   buildPythonPackage,
-  krb5,
+  pkgs,
 }:
 
 buildPythonPackage rec {
@@ -15,12 +15,13 @@ buildPythonPackage rec {
     hash = "sha256-nXAevY/FlsmdMVXVukWBO9WQjSbvg7oK3SUO22IqvtQ=";
   };
 
-  nativeBuildInputs = [ krb5 ]; # for krb5-config
+  nativeBuildInputs = [ pkgs.krb5 ]; # for krb5-config
 
-  buildInputs = [ krb5 ];
+  buildInputs = [ pkgs.krb5 ];
 
   # there are no tests
   doCheck = false;
+
   pythonImportsCheck = [ "kerberos" ];
 
   meta = with lib; {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index ac6b04ff3897..e4e924cfbd3e 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -11603,7 +11603,9 @@ self: super: with self; {
 
   pykeepass = callPackage ../development/python-modules/pykeepass { };
 
-  pykerberos = callPackage ../development/python-modules/pykerberos { };
+  pykerberos = callPackage ../development/python-modules/pykerberos {
+    krb5-c = pkgs.krb5;
+  };
 
   pykeyatome = callPackage ../development/python-modules/pykeyatome { };
 

From cd7aa8d5842f7b2a3499ed1e9c15c314e480f749 Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Wed, 7 Aug 2024 13:44:22 -0400
Subject: [PATCH 2/9] python3Packages.pypsrp: propagate kerberos deps from
 pyspnego

This is more faithful to the project's pyproject.toml, which specifies pyspnego[kerberos] as the dependencies for kerberos.
---
 pkgs/development/python-modules/pypsrp/default.nix | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/pkgs/development/python-modules/pypsrp/default.nix b/pkgs/development/python-modules/pypsrp/default.nix
index 7cf8c56581dc..faddf2906f5f 100644
--- a/pkgs/development/python-modules/pypsrp/default.nix
+++ b/pkgs/development/python-modules/pypsrp/default.nix
@@ -4,10 +4,8 @@
   buildPythonPackage,
   cryptography,
   fetchFromGitHub,
-  gssapi,
   httpcore,
   httpx,
-  krb5,
   psrpcore,
   psutil,
   pyspnego,
@@ -52,11 +50,7 @@ buildPythonPackage rec {
 
   passthru.optional-dependencies = {
     credssp = [ requests-credssp ];
-    kerberos = [
-      # pyspnego[kerberos] will have those two dependencies
-      gssapi
-      krb5
-    ];
+    kerberos = pyspnego.optional-dependencies.kerberos;
     named_pipe = [ psutil ];
     ssh = [ asyncssh ];
   };

From a1fd7ef9ae2b3d5df8866d12be3c344b7ab2696e Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Wed, 7 Aug 2024 13:50:29 -0400
Subject: [PATCH 3/9] python3Packages.cccolutils: disambiguate krb5

PyPI also has a package called krb5 and this package wants the
system krb5, not the PyPI one.
---
 pkgs/development/python-modules/cccolutils/default.nix | 4 ++--
 pkgs/top-level/python-packages.nix                     | 4 +++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/pkgs/development/python-modules/cccolutils/default.nix b/pkgs/development/python-modules/cccolutils/default.nix
index 829ebd248c41..53baa3c3e034 100644
--- a/pkgs/development/python-modules/cccolutils/default.nix
+++ b/pkgs/development/python-modules/cccolutils/default.nix
@@ -4,7 +4,7 @@
   fetchPypi,
   git,
   gitpython,
-  krb5,
+  krb5-c, # C krb5 library, not PyPI krb5
   mock,
   pytestCheckHook,
   pythonOlder,
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-YzKjG43biRbTZKtzSUHHhtzOfcZfzISHDFolqzrBjL8=";
   };
 
-  buildInputs = [ krb5 ];
+  buildInputs = [ krb5-c ];
 
   propagatedBuildInputs = [
     git
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index e4e924cfbd3e..9d130bf76835 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -2031,7 +2031,9 @@ self: super: with self; {
 
   cbor = callPackage ../development/python-modules/cbor { };
 
-  cccolutils = callPackage ../development/python-modules/cccolutils { };
+  cccolutils = callPackage ../development/python-modules/cccolutils {
+    krb5-c = pkgs.krb5;
+  };
 
   cdcs = callPackage ../development/python-modules/cdcs { };
 

From 4c2d4a4fbb3ca03ba88f5953982a7b4a45105114 Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Wed, 7 Aug 2024 13:52:25 -0400
Subject: [PATCH 4/9] python3Packages.requests-credssp: propagate kerberos deps
 from pyspnego

This is more faithful to the project's pyproject.toml, which
specifies pyspnego[kerberos] as the dependencies for kerberos.
---
 .../python-modules/requests-credssp/default.nix           | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/pkgs/development/python-modules/requests-credssp/default.nix b/pkgs/development/python-modules/requests-credssp/default.nix
index 243332123f79..f6be7b9908f2 100644
--- a/pkgs/development/python-modules/requests-credssp/default.nix
+++ b/pkgs/development/python-modules/requests-credssp/default.nix
@@ -3,8 +3,6 @@
   buildPythonPackage,
   cryptography,
   fetchFromGitHub,
-  gssapi,
-  krb5,
   pyspnego,
   pytestCheckHook,
   pythonOlder,
@@ -34,11 +32,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [ pytestCheckHook ];
 
   passthru.optional-dependencies = {
-    kerberos = [
-      # pyspnego[kerberos] will have those two dependencies
-      gssapi
-      krb5
-    ];
+    kerberos = pyspnego.optional-dependencies.kerberos;
   };
 
   pythonImportsCheck = [ "requests_credssp" ];

From 392892b6bb6dff55acd12b61beee847960fcbe7d Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Wed, 7 Aug 2024 14:04:39 -0400
Subject: [PATCH 5/9] python3Packages.k5test: disambiguate krb5

PyPI also has a package called krb5 and this package wants the
system krb5, not the PyPI one.
---
 pkgs/development/python-modules/k5test/default.nix    | 11 ++++++-----
 .../development/python-modules/pykerberos/default.nix |  6 +++---
 pkgs/top-level/python-packages.nix                    |  3 ++-
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/pkgs/development/python-modules/k5test/default.nix b/pkgs/development/python-modules/k5test/default.nix
index 676fea31f827..208f24c2b2bf 100644
--- a/pkgs/development/python-modules/k5test/default.nix
+++ b/pkgs/development/python-modules/k5test/default.nix
@@ -1,12 +1,12 @@
 {
   lib,
   buildPythonPackage,
-  pythonOlder,
   fetchPypi,
-  substituteAll,
   findutils,
-  krb5,
+  krb5-c,
+  pythonOlder,
   setuptools,
+  substituteAll,
 }:
 
 buildPythonPackage rec {
@@ -24,9 +24,10 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./fix-paths.patch;
-      inherit findutils krb5;
+      inherit findutils;
+      krb5 = krb5-c;
       # krb5-config is in dev output
-      krb5Dev = krb5.dev;
+      krb5Dev = krb5-c.dev;
     })
   ];
 
diff --git a/pkgs/development/python-modules/pykerberos/default.nix b/pkgs/development/python-modules/pykerberos/default.nix
index 653d978922ba..8b8be76b12e5 100644
--- a/pkgs/development/python-modules/pykerberos/default.nix
+++ b/pkgs/development/python-modules/pykerberos/default.nix
@@ -2,7 +2,7 @@
   lib,
   fetchPypi,
   buildPythonPackage,
-  pkgs,
+  krb5-c, # C krb5 library, not PyPI krb5
 }:
 
 buildPythonPackage rec {
@@ -15,9 +15,9 @@ buildPythonPackage rec {
     hash = "sha256-nXAevY/FlsmdMVXVukWBO9WQjSbvg7oK3SUO22IqvtQ=";
   };
 
-  nativeBuildInputs = [ pkgs.krb5 ]; # for krb5-config
+  nativeBuildInputs = [ krb5-c ]; # for krb5-config
 
-  buildInputs = [ pkgs.krb5 ];
+  buildInputs = [ krb5-c ];
 
   # there are no tests
   doCheck = false;
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 9d130bf76835..69ea001aeac3 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -6536,7 +6536,8 @@ self: super: with self; {
   k-diffusion = callPackage ../development/python-modules/k-diffusion { };
 
   k5test = callPackage ../development/python-modules/k5test {
-    inherit (pkgs) krb5 findutils;
+    inherit (pkgs) findutils;
+    krb5-c = pkgs.krb5;
   };
 
   kaa-base = callPackage ../development/python-modules/kaa-base { };

From 79d9127ea6c56b07b9ccf4303ebadbd294c04b74 Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Thu, 8 Aug 2024 15:02:30 -0400
Subject: [PATCH 6/9] python3Packages.gssapi: disambiguate krb5

PyPI also has a package called krb5 and this package wants the
system krb5, not the PyPI one.
---
 pkgs/development/python-modules/gssapi/default.nix | 6 +++---
 pkgs/top-level/python-packages.nix                 | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/pkgs/development/python-modules/gssapi/default.nix b/pkgs/development/python-modules/gssapi/default.nix
index 44a7b87ec7c3..08683996db8d 100644
--- a/pkgs/development/python-modules/gssapi/default.nix
+++ b/pkgs/development/python-modules/gssapi/default.nix
@@ -7,7 +7,6 @@
 
   # build-system
   cython,
-  krb5,
   setuptools,
 
   # dependencies
@@ -15,6 +14,7 @@
 
   # native dependencies
   GSS,
+  krb5-c, # C krb5 library, not PyPI krb5
 
   # tests
   parameterized,
@@ -38,7 +38,7 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace 'get_output(f"{kc} gssapi --prefix")' '"${lib.getDev krb5}"'
+      --replace 'get_output(f"{kc} gssapi --prefix")' '"${lib.getDev krb5-c}"'
   '';
 
   env = lib.optionalAttrs (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) {
@@ -47,7 +47,7 @@ buildPythonPackage rec {
 
   build-system = [
     cython
-    krb5
+    krb5-c
     setuptools
   ];
 
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 69ea001aeac3..b63d0c230734 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -5370,8 +5370,8 @@ self: super: with self; {
   gspread = callPackage ../development/python-modules/gspread { };
 
   gssapi = callPackage ../development/python-modules/gssapi {
-    inherit (pkgs) krb5;
     inherit (pkgs.darwin.apple_sdk.frameworks) GSS;
+    krb5-c = pkgs.krb5;
   };
 
   gst-python = callPackage ../development/python-modules/gst-python {

From bbdd87069f0e0d822f642626a4d095949e51d382 Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Wed, 7 Aug 2024 14:16:25 -0400
Subject: [PATCH 7/9] python3Packages.krb5: init at 0.6.0

This causes pyspnego to get this krb5 package instead of the top-level
system krb5 package. That's actually intentional because pyspnego's
current dependency on the system package is incorrect.
---
 .../python-modules/krb5/default.nix           | 46 +++++++++++++++++++
 pkgs/top-level/python-packages.nix            |  4 ++
 2 files changed, 50 insertions(+)
 create mode 100644 pkgs/development/python-modules/krb5/default.nix

diff --git a/pkgs/development/python-modules/krb5/default.nix b/pkgs/development/python-modules/krb5/default.nix
new file mode 100644
index 000000000000..ee520b0f0012
--- /dev/null
+++ b/pkgs/development/python-modules/krb5/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  buildPythonPackage,
+  cython,
+  fetchPypi,
+  k5test,
+  krb5-c, # C krb5 library
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "krb5";
+  version = "0.6.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-cSugkvvjoo7BiCC7Gx7SzBA3t1xccDP5cMaoyXu9Egk=";
+  };
+
+  build-system = [
+    cython
+    setuptools
+  ];
+
+  nativeBuildInputs = [ krb5-c ];
+
+  nativeCheckInputs = [
+    k5test
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "krb5" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/jborean93/pykrb5/blob/v${version}/CHANGELOG.md";
+    description = "Kerberos API bindings for Python";
+    homepage = "https://github.com/jborean93/pykrb5";
+    license = licenses.mit;
+    maintainers = teams.deshaw.members;
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index b63d0c230734..11134e49709c 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -6686,6 +6686,10 @@ self: super: with self; {
 
   krakenex = callPackage ../development/python-modules/krakenex { };
 
+  krb5 = callPackage ../development/python-modules/krb5 {
+    krb5-c = pkgs.krb5;
+  };
+
   krfzf-py = callPackage ../development/python-modules/krfzf-py { };
 
   kserve = callPackage ../development/python-modules/kserve { };

From 45172e6548430d06b652aff88b690280f0d31d52 Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Wed, 7 Aug 2024 14:26:40 -0400
Subject: [PATCH 8/9] python3Packages.requests-kerberos: use pyspnego[kerberos]

This drops the hack to avoid these dependencies because PyPI's krb5 (not to be confused with the top-level system krb5) was not previously packaged in Nixpkgs.
---
 .../python-modules/requests-kerberos/default.nix          | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/pkgs/development/python-modules/requests-kerberos/default.nix b/pkgs/development/python-modules/requests-kerberos/default.nix
index c231233a4f29..6c4be7273e79 100644
--- a/pkgs/development/python-modules/requests-kerberos/default.nix
+++ b/pkgs/development/python-modules/requests-kerberos/default.nix
@@ -30,19 +30,13 @@ buildPythonPackage rec {
     requests
     pykerberos
     pyspnego
-  ];
+  ] ++ pyspnego.optional-dependencies.kerberos;
 
   nativeCheckInputs = [
     pytestCheckHook
     pytest-mock
   ];
 
-  # avoid needing to package krb5
-  postPatch = ''
-    substituteInPlace setup.py \
-    --replace "pyspnego[kerberos]" "pyspnego"
-  '';
-
   pythonImportsCheck = [ "requests_kerberos" ];
 
   meta = with lib; {

From 21faf599aa2a9cb56b018ce7828a30ed73f751d0 Mon Sep 17 00:00:00 2001
From: Elliot Cameron <nixpkgs-commits@deshaw.com>
Date: Thu, 8 Aug 2024 15:14:42 -0400
Subject: [PATCH 9/9] python3Packages.requests-kerberos: drop unused pykerberos
 dependency

---
 pkgs/development/python-modules/requests-kerberos/default.nix | 2 --
 1 file changed, 2 deletions(-)

diff --git a/pkgs/development/python-modules/requests-kerberos/default.nix b/pkgs/development/python-modules/requests-kerberos/default.nix
index 6c4be7273e79..210e792cfbf7 100644
--- a/pkgs/development/python-modules/requests-kerberos/default.nix
+++ b/pkgs/development/python-modules/requests-kerberos/default.nix
@@ -3,7 +3,6 @@
   buildPythonPackage,
   cryptography,
   fetchFromGitHub,
-  pykerberos,
   pyspnego,
   pytest-mock,
   pytestCheckHook,
@@ -28,7 +27,6 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     cryptography
     requests
-    pykerberos
     pyspnego
   ] ++ pyspnego.optional-dependencies.kerberos;