about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorJon Seager <jon@sgrs.uk>2024-03-19 14:54:09 +0000
committerGitHub <noreply@github.com>2024-03-19 14:54:09 +0000
commit8e90afb61f99b1e2f3ccf1418ae88ed03cc528a1 (patch)
tree7e19f9bf7e6fd20614faae4a5e7e81db3239554e /pkgs
parent64eb8fcf9b5c1c9f3f2e18c303c2268fcdbc3c11 (diff)
parentb4015067b28bf72e8ad7e7a27a335272ab015c99 (diff)
Merge pull request #291245 from t4ccer/t4/opshin/init
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/by-name/op/opshin/package.nix37
-rw-r--r--pkgs/development/python-modules/frozenlist2/default.nix32
-rw-r--r--pkgs/development/python-modules/graphlib-backport/default.nix40
-rw-r--r--pkgs/development/python-modules/pluthon/default.nix39
-rw-r--r--pkgs/development/python-modules/pycardano/default.nix7
-rw-r--r--pkgs/development/python-modules/python-secp256k1-cardano/default.nix41
-rw-r--r--pkgs/development/python-modules/uplc/default.nix55
-rw-r--r--pkgs/top-level/python-packages.nix10
8 files changed, 261 insertions, 0 deletions
diff --git a/pkgs/by-name/op/opshin/package.nix b/pkgs/by-name/op/opshin/package.nix
new file mode 100644
index 0000000000000..12fd3671cfee6
--- /dev/null
+++ b/pkgs/by-name/op/opshin/package.nix
@@ -0,0 +1,37 @@
+{ lib
+, fetchFromGitHub
+, python3
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "opshin";
+  version = "0.20.0";
+
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "OpShin";
+    repo = "opshin";
+    rev = version;
+    hash = "sha256-fJlPeVAuEf80FVxdXnaKASLmjMEgz6ysXenUY72+sos=";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    setuptools
+    poetry-core
+    uplc
+    pluthon
+    pycardano
+    frozenlist2
+    astunparse
+    ordered-set
+  ];
+
+  meta = with lib; {
+    description = "A simple pythonic programming language for Smart Contracts on Cardano";
+    homepage = "https://opshin.dev";
+    license = licenses.mit;
+    maintainers = with maintainers; [ t4ccer ];
+    mainProgram = "opshin";
+  };
+}
diff --git a/pkgs/development/python-modules/frozenlist2/default.nix b/pkgs/development/python-modules/frozenlist2/default.nix
new file mode 100644
index 0000000000000..2cbac731c577e
--- /dev/null
+++ b/pkgs/development/python-modules/frozenlist2/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "frozenlist2";
+  version = "1.0.0";
+
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "rohanpm";
+    repo = "frozenlist2";
+    rev = "v${version}";
+    hash = "sha256-fF0oFZ2q1wRH7IKBlCjm3Za4xtEMSHyEaGL09rHgtTY=";
+  };
+
+  propagatedBuildInputs = [
+    setuptools
+  ];
+
+  pythonImportsCheck = [ "frozenlist2" ];
+
+  meta = with lib; {
+    description = "An immutable list for Python";
+    homepage = "https://github.com/rohanpm/frozenlist2";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ t4ccer ];
+  };
+}
diff --git a/pkgs/development/python-modules/graphlib-backport/default.nix b/pkgs/development/python-modules/graphlib-backport/default.nix
new file mode 100644
index 0000000000000..54d166a88ba2a
--- /dev/null
+++ b/pkgs/development/python-modules/graphlib-backport/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, setuptools
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "graphlib-backport";
+  version = "1.1.0";
+
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "mariushelf";
+    repo = "graphlib_backport";
+    rev = version;
+    hash = "sha256-ssJLtBQH8sSnccgcAKLKfYpPyw5U0RIm1F66/Er81lo=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml        \
+      --replace 'poetry>=1.0' 'poetry-core' \
+      --replace 'poetry.masonry.api' 'poetry.core.masonry.api'
+  '';
+
+  propagatedBuildInputs = [
+    setuptools
+    poetry-core
+  ];
+
+  pythonImportsCheck = [ "graphlib" ];
+
+  meta = with lib; {
+    description = "Backport of the Python 3.9 graphlib module for Python 3.6+";
+    homepage = "https://github.com/mariushelf/graphlib_backport";
+    license = licenses.psfl;
+    maintainers = with maintainers; [ t4ccer ];
+  };
+}
diff --git a/pkgs/development/python-modules/pluthon/default.nix b/pkgs/development/python-modules/pluthon/default.nix
new file mode 100644
index 0000000000000..51f73a7381c61
--- /dev/null
+++ b/pkgs/development/python-modules/pluthon/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, setuptools
+, pythonOlder
+# Python deps
+, uplc
+, graphlib-backport
+, ordered-set
+}:
+
+buildPythonPackage rec {
+  pname = "pluthon";
+  version = "0.4.6";
+
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "OpShin";
+    repo = "pluthon";
+    rev = version;
+    hash = "sha256-ZmBkbglSbBfVhA4yP0tJdwpJiFpJ7vX0A321ldQF0lA=";
+  };
+
+  propagatedBuildInputs = [
+    setuptools
+    uplc
+    ordered-set
+  ] ++ lib.optionals (pythonOlder "3.9") graphlib-backport;
+
+  pythonImportsCheck = [ "pluthon" ];
+
+  meta = with lib; {
+    description = "Pluto-like programming language for Cardano Smart Contracts in Python";
+    homepage = "https://github.com/OpShin/pluthon";
+    license = licenses.mit;
+    maintainers = with maintainers; [ t4ccer ];
+  };
+}
diff --git a/pkgs/development/python-modules/pycardano/default.nix b/pkgs/development/python-modules/pycardano/default.nix
index 118e4ed66b5e6..75bef6723d5df 100644
--- a/pkgs/development/python-modules/pycardano/default.nix
+++ b/pkgs/development/python-modules/pycardano/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, pythonRelaxDepsHook
 # Python deps
 , blockfrost-python
 , cachetools
@@ -41,6 +42,10 @@ in buildPythonPackage rec {
     hash = "sha256-LP/W8IC2del476fGFq10VMWwMrbAoCCcZOngA8unBM0=";
   };
 
+  nativeBuildInputs = [
+    pythonRelaxDepsHook
+  ];
+
   propagatedBuildInputs = [
     blockfrost-python
     cachetools
@@ -58,6 +63,8 @@ in buildPythonPackage rec {
     websocket-client
   ];
 
+  pythonRelaxDeps = [ "typeguard" ];
+
   pythonImportsCheck = [ "pycardano" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/python-secp256k1-cardano/default.nix b/pkgs/development/python-modules/python-secp256k1-cardano/default.nix
new file mode 100644
index 0000000000000..d5becf5d86264
--- /dev/null
+++ b/pkgs/development/python-modules/python-secp256k1-cardano/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, fetchFromGitHub
+, python3
+, pkg-config
+}:
+
+python3.pkgs.buildPythonPackage {
+  pname = "python-secp256k1-cardano";
+  version = "0.2.3";
+
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "OpShin";
+    repo = "python-secp256k1";
+    rev = "5a8f761a4b9a1594653cc4deebadc3398b07533c"; # No tags in repo
+    hash = "sha256-6bE4/G2gW2F8h5FWtI3TZ6FtijsB/slvFT/SIVv7VIY=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+
+  propagatedBuildInputs = with python3.pkgs; [ cffi secp256k1 ];
+
+  nativeCheckInputs = [ python3.pkgs.pytestCheckHook ];
+
+  # Tests expect .so files and are failing
+  doCheck = false;
+
+  preConfigure = ''
+    cp -r ${python3.pkgs.secp256k1.src} libsecp256k1
+    export INCLUDE_DIR=${python3.pkgs.secp256k1}/include
+    export LIB_DIR=${python3.pkgs.secp256k1}/lib
+  '';
+
+  meta = {
+    homepage = "https://github.com/OpShin/python-secp256k1";
+    description = "A fork of python-secp256k1, fixing the commit hash of libsecp256k1 to a Cardano compatible version";
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ t4ccer ];
+  };
+}
diff --git a/pkgs/development/python-modules/uplc/default.nix b/pkgs/development/python-modules/uplc/default.nix
new file mode 100644
index 0000000000000..a3aa8d10e7adc
--- /dev/null
+++ b/pkgs/development/python-modules/uplc/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, pythonRelaxDepsHook
+# Python deps
+, frozenlist2
+, python-secp256k1-cardano
+, setuptools
+, poetry-core
+, frozendict
+, cbor2
+, rply
+, pycardano
+}:
+
+buildPythonPackage rec {
+  pname = "uplc";
+  version = "0.6.9";
+
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "OpShin";
+    repo = "uplc";
+    rev = version;
+    hash = "sha256-djJMNXijMVzMVzw8NZSe3YFRGyAPqdvr0P374Za5XkU=";
+  };
+
+  nativeBuildInputs = [
+    pythonRelaxDepsHook
+  ];
+
+  propagatedBuildInputs = [
+    setuptools
+    poetry-core
+    frozendict
+    cbor2
+    frozenlist2
+    rply
+    pycardano
+    python-secp256k1-cardano
+  ];
+
+  pythonRelaxDeps = [ "pycardano" "rply" ];
+
+  pythonImportsCheck = [ "uplc" ];
+
+  meta = with lib; {
+    description = "Python implementation of untyped plutus language core";
+    homepage = "https://opshin.dev";
+    license = licenses.mit;
+    maintainers = with maintainers; [ t4ccer ];
+    mainProgram = "opshin";
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 28cb5bf1700a5..1a37a8282e82a 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -4446,6 +4446,8 @@ self: super: with self; {
 
   frozenlist = callPackage ../development/python-modules/frozenlist { };
 
+  frozenlist2 = callPackage ../development/python-modules/frozenlist2 { };
+
   fs = callPackage ../development/python-modules/fs { };
 
   fs-s3fs = callPackage ../development/python-modules/fs-s3fs { };
@@ -4995,6 +4997,8 @@ self: super: with self; {
 
   graphene-django = callPackage ../development/python-modules/graphene-django { };
 
+  graphlib-backport = callPackage ../development/python-modules/graphlib-backport { };
+
   graphqlclient= callPackage ../development/python-modules/graphqlclient { };
 
   graphql-core = callPackage ../development/python-modules/graphql-core { };
@@ -8752,6 +8756,8 @@ self: super: with self; {
 
   python-nvd3 = callPackage ../development/python-modules/python-nvd3 { };
 
+  python-secp256k1-cardano = callPackage ../development/python-modules/python-secp256k1-cardano { };
+
   python-tds = callPackage ../development/python-modules/python-tds { };
 
   python-yate = callPackage ../development/python-modules/python-yate { };
@@ -9940,6 +9946,8 @@ self: super: with self; {
 
   plumbum = callPackage ../development/python-modules/plumbum { };
 
+  pluthon = callPackage ../development/python-modules/pluthon { };
+
   plux = callPackage ../development/python-modules/plux { };
 
   ply = callPackage ../development/python-modules/ply { };
@@ -16128,6 +16136,8 @@ self: super: with self; {
 
   update-dotdee = callPackage ../development/python-modules/update-dotdee { };
 
+  uplc = callPackage ../development/python-modules/uplc { };
+
   upnpy = callPackage ../development/python-modules/upnpy { };
 
   uproot = callPackage ../development/python-modules/uproot { };