Merge pull request #128123 from Mazurel/master

hy: 0.19.0 -> 1.0a1 and improvements

Changed files
+86 -36
doc
languages-frameworks
pkgs
development
interpreters
+31
doc/languages-frameworks/hy.section.md
···
+
# 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 ]))
+
];
+
}
+
```
+1
doc/languages-frameworks/index.xml
···
<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" />
+40
pkgs/development/interpreters/hy/builder.nix
···
+
{ 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;
+
};
+
}
+14 -36
pkgs/development/interpreters/hy/default.nix
···
-
{ 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;
}