diff options
author | Mazurel <mateusz.mazur@yahoo.com> | 2021-06-17 22:30:33 +0200 |
---|---|---|
committer | Mazurel <mateusz.mazur@yahoo.com> | 2021-06-27 12:34:28 +0200 |
commit | 30a15dbc5e6c891feade4c32478e36827190fe14 (patch) | |
tree | b80f4cbf13902cd98d2f847fc11314ca092fa150 | |
parent | c06cb69ca0dc02b37e27104ac8415c3cab173328 (diff) | |
download | nixpkgs-30a15dbc5e6c891feade4c32478e36827190fe14.tar nixpkgs-30a15dbc5e6c891feade4c32478e36827190fe14.tar.gz nixpkgs-30a15dbc5e6c891feade4c32478e36827190fe14.tar.bz2 nixpkgs-30a15dbc5e6c891feade4c32478e36827190fe14.tar.lz nixpkgs-30a15dbc5e6c891feade4c32478e36827190fe14.tar.xz nixpkgs-30a15dbc5e6c891feade4c32478e36827190fe14.tar.zst nixpkgs-30a15dbc5e6c891feade4c32478e36827190fe14.zip |
hy: 0.19.0 -> 1.0a1 and improvements
-rw-r--r-- | doc/languages-frameworks/hy.section.md | 31 | ||||
-rw-r--r-- | doc/languages-frameworks/index.xml | 1 | ||||
-rw-r--r-- | pkgs/development/interpreters/hy/builder.nix | 40 | ||||
-rw-r--r-- | pkgs/development/interpreters/hy/default.nix | 50 |
4 files changed, 86 insertions, 36 deletions
diff --git a/doc/languages-frameworks/hy.section.md b/doc/languages-frameworks/hy.section.md new file mode 100644 index 00000000000..a851ff24dfc --- /dev/null +++ b/doc/languages-frameworks/hy.section.md @@ -0,0 +1,31 @@ +# Hy {#sec-language-hy} + +## Installation {#ssec-hy-installation} + +### Installation without packages {#installation-without-packages} + +You can install `hy` via nix-env or by adding it to `configuration.nix` by reffering to it as a `hy` attribute. This kind of installation adds `hy` to your environment and it succesfully works with `python3`. + +::: {.caution} +Packages that are installed with your python derivation, are not accesible by `hy` this way. +::: + +### Installation with packages {#installation-with-packages} + +Creating `hy` derivation with custom `python` packages is really simple and similar to the way that python does it. Attribute `hy` provides function `withPackages` that creates custom `hy` derivation with specified packages. + +For example if you want to create shell with `matplotlib` and `numpy`, you can do it like so: + +```ShellSession +$ nix-shell -p "hy.withPackages (ps: with ps; [ numpy matplotlib ])" +``` + +Or if you want to extend your `configuration.nix`: +```nix +{ # ... + + environment.systemPackages = with pkgs; [ + (hy.withPackages (py-packages: with py-packages; [ numpy matplotlib ])) + ]; +} +``` diff --git a/doc/languages-frameworks/index.xml b/doc/languages-frameworks/index.xml index 791afce6f5c..516bddf67fd 100644 --- a/doc/languages-frameworks/index.xml +++ b/doc/languages-frameworks/index.xml @@ -16,6 +16,7 @@ <xi:include href="gnome.section.xml" /> <xi:include href="go.section.xml" /> <xi:include href="haskell.section.xml" /> + <xi:include href="hy.section.xml" /> <xi:include href="idris.section.xml" /> <xi:include href="ios.section.xml" /> <xi:include href="java.section.xml" /> diff --git a/pkgs/development/interpreters/hy/builder.nix b/pkgs/development/interpreters/hy/builder.nix new file mode 100644 index 00000000000..6757f859ac1 --- /dev/null +++ b/pkgs/development/interpreters/hy/builder.nix @@ -0,0 +1,40 @@ +{ lib +, python3Packages +, hyDefinedPythonPackages /* Packages like with python.withPackages */ +, ... +}: +python3Packages.buildPythonApplication rec { + pname = "hy"; + version = "1.0a1"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "sha256-lCrbvbkeutSNmvvn/eHpTnJwPb5aEH7hWTXYSE+AJmU="; + }; + + checkInputs = with python3Packages; [ flake8 pytest ]; + + propagatedBuildInputs = with python3Packages; [ + appdirs + astor + clint + colorama + fastentrypoints + funcparserlib + rply + pygments + ] ++ (hyDefinedPythonPackages python3Packages); + + # Hy does not include tests in the source distribution from PyPI, so only test executable. + checkPhase = '' + $out/bin/hy --help > /dev/null + ''; + + meta = with lib; { + description = "A LISP dialect embedded in Python"; + homepage = "https://hylang.org/"; + license = licenses.mit; + maintainers = with maintainers; [ nixy mazurel ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/development/interpreters/hy/default.nix b/pkgs/development/interpreters/hy/default.nix index e39bf915cfc..f5d80c11d71 100644 --- a/pkgs/development/interpreters/hy/default.nix +++ b/pkgs/development/interpreters/hy/default.nix @@ -1,37 +1,15 @@ -{ lib, python3Packages }: - -python3Packages.buildPythonApplication rec { - pname = "hy"; - version = "0.19.0"; - - src = python3Packages.fetchPypi { - inherit pname version; - sha256 = "05k05qmiiysiwdc05sxmanwhv1crfwbb3l8swxfisbzbvmv1snis"; - }; - - checkInputs = with python3Packages; [ flake8 pytest ]; - - propagatedBuildInputs = with python3Packages; [ - appdirs - astor - clint - colorama - fastentrypoints - funcparserlib - rply - pygments - ]; - - # Hy does not include tests in the source distribution from PyPI, so only test executable. - checkPhase = '' - $out/bin/hy --help > /dev/null - ''; - - meta = with lib; { - description = "A LISP dialect embedded in Python"; - homepage = "http://hylang.org/"; - license = licenses.mit; - maintainers = with maintainers; [ nixy ]; - platforms = platforms.all; - }; +{ lib +, callPackage +, hyDefinedPythonPackages ? python-packages: [] /* Packages like with python.withPackages */ +}: +let + withPackages = ( + python-packages: callPackage ./builder.nix { + hyDefinedPythonPackages = python-packages; + } + ); +in +(withPackages hyDefinedPythonPackages) // { + # Export withPackages function for hy customization + inherit withPackages; } |