diff options
author | Robert Schütz <nix@dotlambda.de> | 2024-01-29 23:05:07 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-29 23:05:07 +0000 |
commit | dc1bee5a69ef06040c26f09ae4e04ab91c4b7b66 (patch) | |
tree | 913cb6ecb37aa21294c7859ee840106d074cb600 /pkgs | |
parent | 001727cbc7bdf298d465960271e81db70a807caf (diff) | |
parent | 6734bc99f7c5e0e01de7ecebdfd3dadede69cdd7 (diff) |
Merge pull request #269409 from nazarewk/python-keyring-pass
python3Packages.keyring-pass: init at 0.9.2
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/python-modules/keyring-pass/default.nix | 78 | ||||
-rw-r--r-- | pkgs/top-level/python-packages.nix | 2 |
2 files changed, 80 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/keyring-pass/default.nix b/pkgs/development/python-modules/keyring-pass/default.nix new file mode 100644 index 0000000000000..c9ac11c9313a8 --- /dev/null +++ b/pkgs/development/python-modules/keyring-pass/default.nix @@ -0,0 +1,78 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, gnupg +, keyring +, pass +, poetry-core +, pythonOlder +}: +buildPythonPackage rec { + pname = "keyring-pass"; + version = "0.9.2"; + disabled = pythonOlder "3.6"; + + pyproject = true; + + src = fetchFromGitHub { + owner = "nazarewk"; + repo = "keyring_pass"; + rev = "refs/tags/v${version}"; + hash = "sha256-Sf7eDOB3prH2s6BzdBtxewSweC0ibLXVxNHBJRRaJe4="; + }; + + postPatch = '' + substituteInPlace keyring_pass/__init__.py \ + --replace 'pass_binary = "pass"' 'pass_binary = "${lib.getExe pass}"' + ''; + + nativeBuildInputs = [ + poetry-core + ]; + + nativeCheckInputs = [ + keyring + gnupg + ]; + + checkPhase = '' + export HOME="$TMPDIR" + + # generate temporary GPG identity + cat <<EOF | gpg --gen-key --batch /dev/stdin + %no-protection + %transient-key + Key-Type: 1 + Key-Length: 1024 + Subkey-Type: 1 + Subkey-Length: 1024 + Name-Real: test + Name-Email: test@example.com + Expire-Date: 1 + EOF + + # configure password store + ${lib.getExe pass} init test@example.com + + # Configure `keyring` CLI + # first make sure `keyring-pass` is in "$PYTHONPATH" + [[ "$PYTHONPATH" == *"$out"/lib/python*/site-packages* ]] + export PYTHON_KEYRING_BACKEND="keyring_pass.PasswordStoreBackend" + + # confirm set/get/del works + keyring set test-service test-username <<<"test-password" + test "$(keyring get test-service test-username)" == "test-password" + keyring del test-service test-username + ''; + + pythonImportsCheck = [ + "keyring_pass" + ]; + + meta = { + description = "Password Store (pass) backend for python's keyring"; + homepage = "https://github.com/nazarewk/keyring_pass"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.nazarewk ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f625410bf8d18..2441adaae4f33 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6125,6 +6125,8 @@ self: super: with self; { keyring = callPackage ../development/python-modules/keyring { }; + keyring-pass = callPackage ../development/python-modules/keyring-pass { }; + keyrings-cryptfile = callPackage ../development/python-modules/keyrings-cryptfile { }; keyrings-google-artifactregistry-auth = callPackage ../development/python-modules/keyrings-google-artifactregistry-auth { }; |