Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2023-05-21 00:03:13 +00:00 committed by GitHub
commit 3cd24799a5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
58 changed files with 1332 additions and 3204 deletions

View file

@ -10,7 +10,7 @@ Several versions of the Python interpreter are available on Nix, as well as a
high amount of packages. The attribute `python3` refers to the default
interpreter, which is currently CPython 3.10. The attribute `python` refers to
CPython 2.7 for backwards-compatibility. It is also possible to refer to
specific versions, e.g. `python39` refers to CPython 3.9, and `pypy` refers to
specific versions, e.g. `python311` refers to CPython 3.11, and `pypy` refers to
the default PyPy interpreter.
Python is used a lot, and in different ways. This affects also how it is
@ -26,10 +26,10 @@ however, are in separate sets, with one set per interpreter version.
The interpreters have several common attributes. One of these attributes is
`pkgs`, which is a package set of Python libraries for this specific
interpreter. E.g., the `toolz` package corresponding to the default interpreter
is `python.pkgs.toolz`, and the CPython 3.9 version is `python39.pkgs.toolz`.
is `python.pkgs.toolz`, and the CPython 3.11 version is `python311.pkgs.toolz`.
The main package set contains aliases to these package sets, e.g.
`pythonPackages` refers to `python.pkgs` and `python39Packages` to
`python39.pkgs`.
`pythonPackages` refers to `python.pkgs` and `python311Packages` to
`python311.pkgs`.
#### Installing Python and packages {#installing-python-and-packages}
@ -54,7 +54,7 @@ with `python.buildEnv` or `python.withPackages` where the interpreter and other
executables are wrapped to be able to find each other and all of the modules.
In the following examples we will start by creating a simple, ad-hoc environment
with a nix-shell that has `numpy` and `toolz` in Python 3.9; then we will create
with a nix-shell that has `numpy` and `toolz` in Python 3.11; then we will create
a re-usable environment in a single-file Python script; then we will create a
full Python environment for development with this same environment.
@ -70,10 +70,10 @@ temporary shell session with a Python and a *precise* list of packages (plus
their runtime dependencies), with no other Python packages in the Python
interpreter's scope.
To create a Python 3.9 session with `numpy` and `toolz` available, run:
To create a Python 3.11 session with `numpy` and `toolz` available, run:
```sh
$ nix-shell -p 'python39.withPackages(ps: with ps; [ numpy toolz ])'
$ nix-shell -p 'python311.withPackages(ps: with ps; [ numpy toolz ])'
```
By default `nix-shell` will start a `bash` session with this interpreter in our
@ -81,8 +81,7 @@ By default `nix-shell` will start a `bash` session with this interpreter in our
```Python console
[nix-shell:~/src/nixpkgs]$ python3
Python 3.9.12 (main, Mar 23 2022, 21:36:19)
[GCC 11.3.0] on linux
Python 3.11.3 (main, Apr 4 2023, 22:36:41) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy; import toolz
```
@ -102,16 +101,12 @@ will still get 1 wrapped Python interpreter. We can start the interpreter
directly like so:
```sh
$ nix-shell -p "python39.withPackages (ps: with ps; [ numpy toolz requests ])" --run python3
$ nix-shell -p "python311.withPackages (ps: with ps; [ numpy toolz requests ])" --run python3
this derivation will be built:
/nix/store/mpn7k6bkjl41fm51342rafaqfsl10qs4-python3-3.9.12-env.drv
this path will be fetched (0.09 MiB download, 0.41 MiB unpacked):
/nix/store/5gaiacnzi096b6prc6aa1pwrhncmhc8b-python3.9-toolz-0.11.2
copying path '/nix/store/5gaiacnzi096b6prc6aa1pwrhncmhc8b-python3.9-toolz-0.11.2' from 'https://cache.nixos.org'...
building '/nix/store/mpn7k6bkjl41fm51342rafaqfsl10qs4-python3-3.9.12-env.drv'...
created 279 symlinks in user environment
Python 3.9.12 (main, Mar 23 2022, 21:36:19)
[GCC 11.3.0] on linux
/nix/store/r19yf5qgfiakqlhkgjahbg3zg79549n4-python3-3.11.2-env.drv
building '/nix/store/r19yf5qgfiakqlhkgjahbg3zg79549n4-python3-3.11.2-env.drv'...
created 273 symlinks in user environment
Python 3.11.2 (main, Feb 7 2023, 13:52:42) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>>
@ -150,7 +145,7 @@ Executing this script requires a `python3` that has `numpy`. Using what we learn
in the previous section, we could startup a shell and just run it like so:
```ShellSession
$ nix-shell -p 'python39.withPackages(ps: with ps; [ numpy ])' --run 'python3 foo.py'
$ nix-shell -p 'python311.withPackages (ps: with ps; [ numpy ])' --run 'python3 foo.py'
The dot product of [1 2] and [3 4] is: 11
```
@ -190,17 +185,17 @@ can make it fully reproducible by pinning the `nixpkgs` import:
```python
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p "python3.withPackages(ps: [ ps.numpy ])"
#!nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/d373d80b1207d52621961b16aa4a3438e4f98167.tar.gz
#!nix-shell -i python3 -p "python3.withPackages (ps: [ ps.numpy ])"
#!nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/e51209796c4262bfb8908e3d6d72302fe4e96f5f.tar.gz
import numpy as np
a = np.array([1,2])
b = np.array([3,4])
print(f"The dot product of {a} and {b} is: {np.dot(a, b)}")
```
This will execute with the exact same versions of Python 3.8, numpy, and system
This will execute with the exact same versions of Python 3.10, numpy, and system
dependencies a year from now as it does today, because it will always use
exactly git commit `d373d80b1207d52621961b16aa4a3438e4f98167` of Nixpkgs for all
exactly git commit `e51209796c4262bfb8908e3d6d72302fe4e96f5f` of Nixpkgs for all
of the package versions.
This is also a great way to ensure the script executes identically on different
@ -213,12 +208,15 @@ create a single script with Python dependencies, but in the course of normal
development we're usually working in an entire package repository.
As explained in the Nix manual, `nix-shell` can also load an expression from a
`.nix` file. Say we want to have Python 3.9, `numpy` and `toolz`, like before,
`.nix` file. Say we want to have Python 3.11, `numpy` and `toolz`, like before,
in an environment. We can add a `shell.nix` file describing our dependencies:
```nix
with import <nixpkgs> {};
(python39.withPackages (ps: [ps.numpy ps.toolz])).env
(python311.withPackages (ps: with ps; [
numpy
toolz
])).env
```
And then at the command line, just typing `nix-shell` produces the same
@ -232,7 +230,7 @@ What's happening here?
imports the `<nixpkgs>` function, `{}` calls it and the `with` statement
brings all attributes of `nixpkgs` in the local scope. These attributes form
the main package set.
2. Then we create a Python 3.9 environment with the `withPackages` function, as before.
2. Then we create a Python 3.11 environment with the `withPackages` function, as before.
3. The `withPackages` function expects us to provide a function as an argument
that takes the set of all Python packages and returns a list of packages to
include in the environment. Here, we select the packages `numpy` and `toolz`
@ -243,7 +241,7 @@ To combine this with `mkShell` you can:
```nix
with import <nixpkgs> {};
let
pythonEnv = python39.withPackages (ps: [
pythonEnv = python311.withPackages (ps: [
ps.numpy
ps.toolz
]);
@ -327,7 +325,7 @@ on NixOS.
{ # ...
environment.systemPackages = with pkgs; [
(python38.withPackages(ps: with ps; [ numpy toolz ]))
(python310.withPackages(ps: with ps; [ numpy toolz ]))
];
}
```
@ -348,20 +346,32 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th
`toolz` package.
```nix
{ lib, buildPythonPackage, fetchPypi }:
{ lib
, buildPythonPackage
, fetchPypi
}:
buildPythonPackage rec {
pname = "toolz";
version = "0.10.0";
format = "setuptools";
src = fetchPypi {
inherit pname version;
hash = "sha256-CP3V73yWSArRHBLUct4hrNMjWZlvaaUlkpm1QP66RWA=";
};
# has no tests
doCheck = false;
pythonImportsCheck = [
"toolz.itertoolz"
"toolz.functoolz"
"toolz.dicttoolz"
];
meta = with lib; {
changelog = "https://github.com/pytoolz/toolz/releases/tag/${version}";
homepage = "https://github.com/pytoolz/toolz";
description = "List processing tools and functional utilities";
license = licenses.bsd3;
@ -376,13 +386,14 @@ arguments is the name of the package, which consists of a basename (generally
following the name on PyPi) and a version. Another argument, `src` specifies the
source, which in this case is fetched from PyPI using the helper function
`fetchPypi`. The argument `doCheck` is used to set whether tests should be run
when building the package. Furthermore, we specify some (optional) meta
when building the package. Since there are no tests, we rely on `pythonImportsCheck`
to test whether the package can be imported. Furthermore, we specify some meta
information. The output of the function is a derivation.
An expression for `toolz` can be found in the Nixpkgs repository. As explained
in the introduction of this Python section, a derivation of `toolz` is available
for each interpreter version, e.g. `python39.pkgs.toolz` refers to the `toolz`
derivation corresponding to the CPython 3.9 interpreter.
for each interpreter version, e.g. `python311.pkgs.toolz` refers to the `toolz`
derivation corresponding to the CPython 3.11 interpreter.
The above example works when you're directly working on
`pkgs/top-level/python-packages.nix` in the Nixpkgs repository. Often though,
@ -395,29 +406,35 @@ and adds it along with a `numpy` package to a Python environment.
with import <nixpkgs> {};
( let
my_toolz = python39.pkgs.buildPythonPackage rec {
my_toolz = python311.pkgs.buildPythonPackage rec {
pname = "toolz";
version = "0.10.0";
format = "setuptools";
src = python39.pkgs.fetchPypi {
src = python311.pkgs.fetchPypi {
inherit pname version;
hash = "sha256-CP3V73yWSArRHBLUct4hrNMjWZlvaaUlkpm1QP66RWA=";
};
# has no tests
doCheck = false;
meta = {
homepage = "https://github.com/pytoolz/toolz/";
description = "List processing tools and functional utilities";
# [...]
};
};
in python38.withPackages (ps: [ps.numpy my_toolz])
in python311.withPackages (ps: with ps; [
numpy
my_toolz
])
).env
```
Executing `nix-shell` will result in an environment in which you can use
Python 3.9 and the `toolz` package. As you can see we had to explicitly mention
Python 3.11 and the `toolz` package. As you can see we had to explicitly mention
for which Python version we want to build a package.
So, what did we do here? Well, we took the Nix expression that we used earlier
@ -442,21 +459,39 @@ The following example shows which arguments are given to `buildPythonPackage` in
order to build [`datashape`](https://github.com/blaze/datashape).
```nix
{ lib, buildPythonPackage, fetchPypi, numpy, multipledispatch, python-dateutil, pytest }:
{ lib
, buildPythonPackage
, fetchPypi
# dependencies
, numpy, multipledispatch, python-dateutil
# tests
, pytest
}:
buildPythonPackage rec {
pname = "datashape";
version = "0.4.7";
format = "setuptools";
src = fetchPypi {
inherit pname version;
hash = "sha256-FLLvdm1MllKrgTGC6Gb0k0deZeVYvtCCLji/B7uhong=";
};
nativeCheckInputs = [ pytest ];
propagatedBuildInputs = [ numpy multipledispatch python-dateutil ];
propagatedBuildInputs = [
multipledispatch
numpy
python-dateutil
];
nativeCheckInputs = [
pytest
];
meta = with lib; {
changelog = "https://github.com/blaze/datashape/releases/tag/${version}";
homepage = "https://github.com/ContinuumIO/datashape";
description = "A data description language";
license = licenses.bsd2;
@ -466,9 +501,9 @@ buildPythonPackage rec {
```
We can see several runtime dependencies, `numpy`, `multipledispatch`, and
`python-dateutil`. Furthermore, we have one `nativeCheckInputs`, i.e. `pytest`. `pytest` is a
test runner and is only used during the `checkPhase` and is therefore not added
to `propagatedBuildInputs`.
`python-dateutil`. Furthermore, we have `nativeCheckInputs` with `pytest`.
`pytest` is a test runner and is only used during the `checkPhase` and is
therefore not added to `propagatedBuildInputs`.
In the previous case we had only dependencies on other Python packages to consider.
Occasionally you have also system libraries to consider. E.g., `lxml` provides
@ -476,20 +511,29 @@ Python bindings to `libxml2` and `libxslt`. These libraries are only required
when building the bindings and are therefore added as `buildInputs`.
```nix
{ lib, pkgs, buildPythonPackage, fetchPypi }:
{ lib
, pkgs
, buildPythonPackage
, fetchPypi
}:
buildPythonPackage rec {
pname = "lxml";
version = "3.4.4";
format = "setuptools";
src = fetchPypi {
inherit pname version;
hash = "sha256-s9NiusRxFydHzaNRMjjxFcvWxfi45jGb9ql6eJJyQJk=";
};
buildInputs = [ pkgs.libxml2 pkgs.libxslt ];
buildInputs = [
pkgs.libxml2
pkgs.libxslt
];
meta = with lib; {
changelog = "https://github.com/lxml/lxml/releases/tag/lxml-${version}";
description = "Pythonic binding for the libxml2 and libxslt libraries";
homepage = "https://lxml.de";
license = licenses.bsd3;
@ -509,30 +553,47 @@ The bindings don't expect to find each of them in a different folder, and
therefore we have to set `LDFLAGS` and `CFLAGS`.
```nix
{ lib, pkgs, buildPythonPackage, fetchPypi, numpy, scipy }:
{ lib
, pkgs
, buildPythonPackage
, fetchPypi
# dependencies
, numpy
, scipy
}:
buildPythonPackage rec {
pname = "pyFFTW";
version = "0.9.2";
format = "setuptools";
src = fetchPypi {
inherit pname version;
hash = "sha256-9ru2r6kwhUCaskiFoaPNuJCfCVoUL01J40byvRt4kHQ=";
};
buildInputs = [ pkgs.fftw pkgs.fftwFloat pkgs.fftwLongDouble];
buildInputs = [
pkgs.fftw
pkgs.fftwFloat
pkgs.fftwLongDouble
];
propagatedBuildInputs = [ numpy scipy ];
# Tests cannot import pyfftw. pyfftw works fine though.
doCheck = false;
propagatedBuildInputs = [
numpy
scipy
];
preConfigure = ''
export LDFLAGS="-L${pkgs.fftw.dev}/lib -L${pkgs.fftwFloat.out}/lib -L${pkgs.fftwLongDouble.out}/lib"
export CFLAGS="-I${pkgs.fftw.dev}/include -I${pkgs.fftwFloat.dev}/include -I${pkgs.fftwLongDouble.dev}/include"
'';
# Tests cannot import pyfftw. pyfftw works fine though.
doCheck = false;
meta = with lib; {
changelog = "https://github.com/pyFFTW/pyFFTW/releases/tag/v${version}";
description = "A pythonic wrapper around FFTW, the FFT library, presenting a unified interface for all the supported transforms";
homepage = "http://hgomersall.github.com/pyFFTW";
license = with licenses; [ bsd2 bsd3 ];
@ -590,7 +651,7 @@ To filter tests using pytest, one can do the following:
checkPhase = ''
runHook preCheck
pytest tests/ --ignore=tests/integration -k 'not download and not update'
pytest tests/ --ignore=tests/integration -k 'not download and not update' --ignore=tests/test_failing.py
runHook postCheck
'';
@ -618,10 +679,15 @@ when a package may need many items disabled to run the test suite.
Using the example above, the analogous `pytestCheckHook` usage would be:
```
nativeCheckInputs = [ pytestCheckHook ];
nativeCheckInputs = [
pytestCheckHook
];
# requires additional data
pytestFlagsArray = [ "tests/" "--ignore=tests/integration" ];
pytestFlagsArray = [
"tests/"
"--ignore=tests/integration"
];
disabledTests = [
# touches network
@ -663,7 +729,10 @@ To help ensure the package still works, `pythonImportsCheck` can attempt to impo
the listed modules.
```
pythonImportsCheck = [ "requests" "urllib" ];
pythonImportsCheck = [
"requests"
"urllib"
];
```
roughly translates to:
@ -704,9 +773,16 @@ pkg3>=1.0,<=2.0
we can do:
```
nativeBuildInputs = [ pythonRelaxDepsHook ];
pythonRelaxDeps = [ "pkg1" "pkg3" ];
pythonRemoveDeps = [ "pkg2" ];
nativeBuildInputs = [
pythonRelaxDepsHook
];
pythonRelaxDeps = [
"pkg1"
"pkg3"
];
pythonRemoveDeps = [
"pkg2"
];
```
which would result in the following `requirements.txt` file:
@ -749,9 +825,13 @@ with the exception of `other` (see `format` in
`unittestCheckHook` is a hook which will substitute the setuptools `test` command for a `checkPhase` which runs `python -m unittest discover`:
```
nativeCheckInputs = [ unittestCheckHook ];
nativeCheckInputs = [
unittestCheckHook
];
unittestFlagsArray = [ "-s" "tests" "-v" ];
unittestFlagsArray = [
"-s" "tests" "-v"
];
```
#### Using sphinxHook {#using-sphinxhook}
@ -816,7 +896,7 @@ If we create a `shell.nix` file which calls `buildPythonPackage`, and if `src`
is a local source, and if the local source has a `setup.py`, then development
mode is activated.
In the following example, we create a simple environment that has a Python 3.9
In the following example, we create a simple environment that has a Python 3.11
version of our package in it, as well as its dependencies and other packages we
like to have in the environment, all specified with `propagatedBuildInputs`.
Indeed, we can just add any package we like to have in our environment to
@ -824,12 +904,16 @@ Indeed, we can just add any package we like to have in our environment to
```nix
with import <nixpkgs> {};
with python39Packages;
with python311Packages;
buildPythonPackage rec {
name = "mypackage";
src = ./path/to/package/source;
propagatedBuildInputs = [ pytest numpy pkgs.libsndfile ];
propagatedBuildInputs = [
pytest
numpy
pkgs.libsndfile
];
}
```
@ -857,11 +941,14 @@ Let's split the package definition from the environment definition.
We first create a function that builds `toolz` in `~/path/to/toolz/release.nix`
```nix
{ lib, buildPythonPackage }:
{ lib
, buildPythonPackage
}:
buildPythonPackage rec {
pname = "toolz";
version = "0.10.0";
format = "setuptools";
src = fetchPypi {
inherit pname version;
@ -869,6 +956,7 @@ buildPythonPackage rec {
};
meta = with lib; {
changelog = "https://github.com/pytoolz/toolz/releases/tag/${version}";
homepage = "https://github.com/pytoolz/toolz/";
description = "List processing tools and functional utilities";
license = licenses.bsd3;
@ -885,9 +973,13 @@ with import <nixpkgs> {};
( let
toolz = callPackage /path/to/toolz/release.nix {
buildPythonPackage = python38Packages.buildPythonPackage;
buildPythonPackage = python310
Packages.buildPythonPackage;
};
in python38.withPackages (ps: [ ps.numpy toolz ])
in python310.withPackages (ps: [
ps.numpy
toolz
])
).env
```
@ -895,17 +987,17 @@ Important to remember is that the Python version for which the package is made
depends on the `python` derivation that is passed to `buildPythonPackage`. Nix
tries to automatically pass arguments when possible, which is why generally you
don't explicitly define which `python` derivation should be used. In the above
example we use `buildPythonPackage` that is part of the set `python38Packages`,
and in this case the `python38` interpreter is automatically used.
example we use `buildPythonPackage` that is part of the set `python3Packages`,
and in this case the `python3` interpreter is automatically used.
## Reference {#reference}
### Interpreters {#interpreters}
Versions 2.7, 3.7, 3.8, 3.9 and 3.10 of the CPython interpreter are available
as respectively `python27`, `python37`, `python38`, `python39` and `python310`.
Versions 2.7, 3.8, 3.9, 3.10 and 3.11 of the CPython interpreter are available
as respectively `python27`, python38`, `python39`, `python310` and `python311`.
The aliases `python2` and `python3` correspond to respectively `python27` and
`python39`. The attribute `python` maps to `python2`. The PyPy interpreters
`python310`. The attribute `python` maps to `python2`. The PyPy interpreters
compatible with Python 2.7 and 3 are available as `pypy27` and `pypy3`, with
aliases `pypy2` mapping to `pypy27` and `pypy` mapping to `pypy2`. The Nix
expressions for the interpreters can be found in
@ -928,7 +1020,7 @@ Each interpreter has the following attributes:
- `buildEnv`. Function to build python interpreter environments with extra packages bundled together. See section *python.buildEnv function* for usage and documentation.
- `withPackages`. Simpler interface to `buildEnv`. See section *python.withPackages function* for usage and documentation.
- `sitePackages`. Alias for `lib/${libPrefix}/site-packages`.
- `executable`. Name of the interpreter executable, e.g. `python3.8`.
- `executable`. Name of the interpreter executable, e.g. `python3.10`.
- `pkgs`. Set of Python packages for that specific interpreter. The package set can be modified by overriding the interpreter and passing `packageOverrides`.
### Optimizations {#optimizations}
@ -968,7 +1060,7 @@ attribute set is created for each available Python interpreter. The available
sets are
* `pkgs.python27Packages`
* `pkgs.python37Packages`
* `pkgs.python3Packages`
* `pkgs.python38Packages`
* `pkgs.python39Packages`
* `pkgs.python310Packages`
@ -978,7 +1070,7 @@ sets are
and the aliases
* `pkgs.python2Packages` pointing to `pkgs.python27Packages`
* `pkgs.python3Packages` pointing to `pkgs.python39Packages`
* `pkgs.python3Packages` pointing to `pkgs.python310Packages`
* `pkgs.pythonPackages` pointing to `pkgs.python2Packages`
#### `buildPythonPackage` function {#buildpythonpackage-function}
@ -990,11 +1082,28 @@ using setup hooks.
The following is an example:
```nix
{ lib, buildPythonPackage, fetchPypi, hypothesis, setuptools-scm, attrs, py, setuptools, six, pluggy }:
{ lib
, buildPythonPackage
, fetchPypi
# build-system
, setuptools-scm
# dependencies
, attrs
, pluggy
, py
, setuptools
, six
# tests
, hypothesis
}:
buildPythonPackage rec {
pname = "pytest";
version = "3.3.1";
format = "setuptools";
src = fetchPypi {
inherit pname version;
@ -1006,13 +1115,28 @@ buildPythonPackage rec {
rm testing/test_argcomplete.py
'';
nativeCheckInputs = [ hypothesis ];
nativeBuildInputs = [ setuptools-scm ];
propagatedBuildInputs = [ attrs py setuptools six pluggy ];
nativeBuildInputs = [
setuptools-scm
];
propagatedBuildInputs = [
attrs
py
setuptools
six
pluggy
];
nativeCheckInputs = [
hypothesis
];
meta = with lib; {
maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
changelog = "https://github.com/pytest-dev/pytest/releases/tag/${version}";
description = "Framework for writing tests";
homepage = "https://github.com/pytest-dev/pytest";
license = licenses.mit;
maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
};
}
```
@ -1114,7 +1238,7 @@ with import <nixpkgs> {};
};
in pkgs.python3.override {inherit packageOverrides; self = python;};
in python.withPackages(ps: [ps.blaze])).env
in python.withPackages(ps: [ ps.blaze ])).env
```
#### Optional extra dependencies {#python-optional-dependencies}
@ -1160,18 +1284,24 @@ called with `callPackage` and passed `python` or `pythonPackages` (possibly
specifying an interpreter version), like this:
```nix
{ lib, python3 }:
{ lib
, python3
}:
python3.pkgs.buildPythonApplication rec {
pname = "luigi";
version = "2.7.9";
format = "setuptools";
src = python3.pkgs.fetchPypi {
inherit pname version;
hash = "sha256-Pe229rT0aHwA98s+nTHQMEFKZPo/yw6sot8MivFDvAw=";
};
propagatedBuildInputs = with python3.pkgs; [ tornado python-daemon ];
propagatedBuildInputs = with python3.pkgs; [
tornado
python-daemon
];
meta = with lib; {
...
@ -1253,7 +1383,10 @@ running `nix-shell` with the following `shell.nix`
with import <nixpkgs> {};
(python3.buildEnv.override {
extraLibs = with python3Packages; [ numpy requests ];
extraLibs = with python3Packages; [
numpy
requests
];
}).env
```
@ -1279,7 +1412,7 @@ example for the Pyramid Web Framework environment can be written like this:
```nix
with import <nixpkgs> {};
python.withPackages (ps: [ps.pyramid])
python.withPackages (ps: [ ps.pyramid ])
```
`withPackages` passes the correct package set for the specific interpreter
@ -1289,7 +1422,7 @@ version as an argument to the function. In the above example, `ps` equals
```nix
with import <nixpkgs> {};
python3.withPackages (ps: [ps.pyramid])
python3.withPackages (ps: [ ps.pyramid ])
```
Now, `ps` is set to `python3Packages`, matching the version of the interpreter.
@ -1301,7 +1434,10 @@ thus be also written like this:
```nix
with import <nixpkgs> {};
(python38.withPackages (ps: [ps.numpy ps.requests])).env
(python3.withPackages (ps: with ps; [
numpy
requests
])).env
```
In contrast to `python.buildEnv`, `python.withPackages` does not support the
@ -1393,7 +1529,7 @@ has security implications and is relevant for those using Python in a
When the environment variable `DETERMINISTIC_BUILD` is set, all bytecode will
have timestamp 1. The `buildPythonPackage` function sets `DETERMINISTIC_BUILD=1`
and [PYTHONHASHSEED=0](https://docs.python.org/3.8/using/cmdline.html#envvar-PYTHONHASHSEED).
and [PYTHONHASHSEED=0](https://docs.python.org/3.11/using/cmdline.html#envvar-PYTHONHASHSEED).
Both are also exported in `nix-shell`.
### Automatic tests {#automatic-tests}
@ -1408,22 +1544,27 @@ example of such a situation is when `py.test` is used.
#### Common issues {#common-issues}
* Non-working tests can often be deselected. By default `buildPythonPackage`
runs `python setup.py test`. Most Python modules follows the standard test
protocol where the pytest runner can be used instead. `py.test` supports a
`-k` parameter to ignore test methods or classes:
runs `python setup.py test`. which is deprecated. Most Python modules however
do follow the standard test protocol where the pytest runner can be used
instead. `pytest` supports the `-k` and `--ignore` parameters to ignore test
methods or classes as well as whole files. For `pytestCheckHook` these are
conveniently exposed as `disabledTests` and `disabledTestPaths` respectively.
```nix
buildPythonPackage {
# ...
# assumes the tests are located in tests
nativeCheckInputs = [ pytest ];
checkPhase = ''
runHook preCheck
nativeCheckInputs = [
pytestCheckHook
];
py.test -k 'not function_name and not other_function' tests
disabledTests = [
"function_name"
"other_function"
];
runHook postCheck
'';
disabledTestPaths = [
"this/file.py"
];
}
```
@ -1451,9 +1592,13 @@ with import <nixpkgs> {};
packageOverrides = self: super: {
pandas = super.pandas.overridePythonAttrs(old: {name="foo";});
};
in pkgs.python38.override {inherit packageOverrides;};
in pkgs.python310.override {
inherit packageOverrides;
};
in python.withPackages(ps: [ps.pandas])).env
in python.withPackages (ps: [
ps.pandas
])).env
```
Using `nix-build` on this expression will build an environment that contains the
@ -1473,7 +1618,11 @@ with import <nixpkgs> {};
packageOverrides = self: super: {
scipy = super.scipy_0_17;
};
in (pkgs.python38.override {inherit packageOverrides;}).withPackages (ps: [ps.blaze])
in (pkgs.python310.override {
inherit packageOverrides;
}).withPackages (ps: [
ps.blaze
])
).env
```
@ -1487,11 +1636,11 @@ If you want the whole of Nixpkgs to use your modifications, then you can use
let
pkgs = import <nixpkgs> {};
newpkgs = import pkgs.path { overlays = [ (self: super: {
python38 = let
python310 = let
packageOverrides = python-self: python-super: {
numpy = python-super.numpy_1_18;
};
in super.python38.override {inherit packageOverrides;};
in super.python310.override {inherit packageOverrides;};
} ) ]; };
in newpkgs.inkscape
```

View file

@ -1204,7 +1204,7 @@ Nix itself considers a build-time dependency as merely something that should pre
In order to alleviate this burden, the setup hook mechanism was written, where any package can include a shell script that \[by convention rather than enforcement by Nix\], any downstream reverse-dependency will source as part of its build process. That allows the downstream dependency to merely specify its dependencies, and lets those dependencies effectively initialize themselves. No boilerplate mirroring the list of dependencies is needed.
The setup hook mechanism is a bit of a sledgehammer though: a powerful feature with a broad and indiscriminate area of effect. The combination of its power and implicit use may be expedient, but isnt without costs. Nix itself is unchanged, but the spirit of added dependencies being effect-free is violated even if the letter isnt. For example, if a derivation path is mentioned more than once, Nix itself doesnt care and simply makes sure the dependency derivation is already built just the same—depending is just needing something to exist, and needing is idempotent. However, a dependency specified twice will have its setup hook run twice, and that could easily change the build environment (though a well-written setup hook will therefore strive to be idempotent so this is in fact not observable). More broadly, setup hooks are anti-modular in that multiple dependencies, whether the same or different, should not interfere and yet their setup hooks may well do so.
The setup hook mechanism is a bit of a sledgehammer though: a powerful feature with a broad and indiscriminate area of effect. The combination of its power and implicit use may be expedient, but isnt without costs. Nix itself is unchanged, but the spirit of added dependencies being effect-free is violated even if the latter isnt. For example, if a derivation path is mentioned more than once, Nix itself doesnt care and simply makes sure the dependency derivation is already built just the same—depending is just needing something to exist, and needing is idempotent. However, a dependency specified twice will have its setup hook run twice, and that could easily change the build environment (though a well-written setup hook will therefore strive to be idempotent so this is in fact not observable). More broadly, setup hooks are anti-modular in that multiple dependencies, whether the same or different, should not interfere and yet their setup hooks may well do so.
The most typical use of the setup hook is actually to add other hooks which are then run (i.e. after all the setup hooks) on each dependency. For example, the C compiler wrappers setup hook feeds itself flags for each dependency that contains relevant libraries and headers. This is done by defining a bash function, and appending its name to one of `envBuildBuildHooks`, `envBuildHostHooks`, `envBuildTargetHooks`, `envHostHostHooks`, `envHostTargetHooks`, or `envTargetTargetHooks`. These 6 bash variables correspond to the 6 sorts of dependencies by platform (theres 12 total but we ignore the propagated/non-propagated axis).

View file

@ -190,6 +190,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- `nushell` has been updated to at least version 0.77.0, which includes potential breaking changes in aliases. The old aliases are now available as `old-alias` but it is recommended you migrate to the new format. See [Reworked aliases](https://www.nushell.sh/blog/2023-03-14-nushell_0_77.html#reworked-aliases-breaking-changes-kubouch).
- `gajim` has been updated to version 1.7.3 which has disabled legacy ciphers. See [changelog for version 1.7.0](https://dev.gajim.org/gajim/gajim/-/releases/1.7.0).
- `keepassx` and `keepassx2` have been removed, due to upstream [stopping development](https://www.keepassx.org/index.html%3Fp=636.html). Consider [KeePassXC](https://keepassxc.org) as a maintained alternative.
- The [services.kubo.settings](#opt-services.kubo.settings) option is now no longer stateful. If you changed any of the options in [services.kubo.settings](#opt-services.kubo.settings) in the past and then removed them from your NixOS configuration again, those changes are still in your Kubo configuration file but will now be reset to the default. If you're unsure, you may want to make a backup of your configuration file (probably /var/lib/ipfs/config) and compare after the update.

File diff suppressed because it is too large Load diff

View file

@ -1,33 +1,33 @@
{ fetchzip, lib, rustPlatform, installShellFiles, makeWrapper }:
{ fetchFromGitHub, lib, rustPlatform, installShellFiles, makeWrapper, callPackage }:
let
version = "23.05";
src = fetchFromGitHub {
owner = "helix-editor";
repo = "helix";
rev = "${version}";
hash = "sha256-Ws9uWtZLvTwL5HNonFr4YwyPoTU8QlCvhs6IJ92aLDw=";
};
grammars = callPackage ./grammars.nix { };
in rustPlatform.buildRustPackage {
inherit src version;
rustPlatform.buildRustPackage rec {
pname = "helix";
version = "23.03";
# This release tarball includes source code for the tree-sitter grammars,
# which is not ordinarily part of the repository.
src = fetchzip {
url = "https://github.com/helix-editor/helix/releases/download/${version}/helix-${version}-source.tar.xz";
hash = "sha256-FtY2V7za3WGeUaC2t2f63CcDUEg9zAS2cGUWI0YeGwk=";
stripRoot = false;
};
# should be removed, when tree-sitter is not used as a git checkout anymore
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"tree-sitter-0.20.9" = "sha256-/PaFaASOT0Z8FpipX5uiRCjnv1kyZtg4B9+TnHA0yTY=";
};
};
cargoSha256 = "sha256-/LCtfyDAA2JuioBD/CDMv6OOxM0B9A3PpuVP/YY5oF0=";
nativeBuildInputs = [ installShellFiles makeWrapper ];
postInstall = ''
# not needed at runtime
rm -r runtime/grammars/sources
# We self build the grammar files
rm -r runtime/grammars
mkdir -p $out/lib
cp -r runtime $out/lib
ln -s ${grammars} $out/lib/runtime/grammars
installShellCompletion contrib/completion/hx.{bash,fish,zsh}
mkdir -p $out/share/{applications,icons/hicolor/256x256/apps}
cp contrib/Helix.desktop $out/share/applications
@ -37,6 +37,11 @@ rustPlatform.buildRustPackage rec {
wrapProgram $out/bin/hx --set HELIX_RUNTIME $out/lib/runtime
'';
# disable fetching and building of tree-sitter grammars in favor of the custom build process in ./grammars.nix
env.HELIX_DISABLE_AUTO_GRAMMAR_BUILD = "1";
passthru.updateScript = ./update.py;
meta = with lib; {
description = "A post-modern modal text editor";
homepage = "https://helix-editor.com";

View file

@ -0,0 +1,107 @@
{
stdenv,
lib,
runCommand,
includeGrammarIf ? _: true,
fetchFromGitHub,
fetchgit,
...
}: let
# similiar to https://github.com/helix-editor/helix/blob/23.05/grammars.nix
grammars = builtins.fromJSON (builtins.readFile ./language-grammars.json);
isGitGrammar = grammar:
builtins.hasAttr "source" grammar
&& builtins.hasAttr "git" grammar.source
&& builtins.hasAttr "rev" grammar.source;
isGitHubGrammar = grammar: lib.hasPrefix "https://github.com" grammar.source.git;
toGitHubFetcher = url: let
match = builtins.match "https://github\.com/([^/]*)/([^/]*)/?" url;
in {
owner = builtins.elemAt match 0;
repo = builtins.elemAt match 1;
};
gitGrammars = builtins.filter isGitGrammar grammars;
buildGrammar = grammar: let
gh = toGitHubFetcher grammar.source.git;
sourceGit = fetchgit {
url = grammar.source.git;
inherit (grammar.source) rev sha256;
};
sourceGitHub = fetchFromGitHub {
owner = gh.owner;
repo = gh.repo;
inherit (grammar.source) rev sha256;
};
source =
if isGitHubGrammar grammar
then sourceGitHub
else sourceGit;
in
stdenv.mkDerivation rec {
# similar to tree-sitter grammar generation
pname = "helix-tree-sitter-grammar-${grammar.name}";
version = grammar.source.rev;
src =
if builtins.hasAttr "subpath" grammar.source
then "${source}/${grammar.source.subpath}"
else source;
dontUnpack = true;
dontConfigure = true;
FLAGS = [
"-I${src}/src"
"-g"
"-O3"
"-fPIC"
"-fno-exceptions"
"-Wl,-z,relro,-z,now"
];
NAME = grammar.name;
buildPhase = ''
runHook preBuild
if [[ -e "$src/src/scanner.cc" ]]; then
$CXX -c "$src/src/scanner.cc" -o scanner.o $FLAGS
elif [[ -e "$src/src/scanner.c" ]]; then
$CC -c "$src/src/scanner.c" -o scanner.o $FLAGS
fi
$CC -c "$src/src/parser.c" -o parser.o $FLAGS
$CXX -shared -o $NAME.so *.o
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir $out
mv $NAME.so $out/
runHook postInstall
'';
# Strip failed on darwin: strip: error: symbols referenced by indirect symbol table entries that can't be stripped
fixupPhase = lib.optionalString stdenv.isLinux ''
runHook preFixup
$STRIP $out/$NAME.so
runHook postFixup
'';
};
grammarsToBuild = builtins.filter includeGrammarIf gitGrammars;
builtGrammars =
builtins.map (grammar: {
inherit (grammar) name;
artifact = buildGrammar grammar;
})
grammarsToBuild;
grammarLinks =
builtins.map (grammar: "ln -s ${grammar.artifact}/${grammar.name}.so $out/${grammar.name}.so")
builtGrammars;
in
runCommand "helix-tree-sitter-grammars" {} ''
mkdir -p $out
${builtins.concatStringsSep "\n" grammarLinks}
''

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,47 @@
#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p nix-update python3 python3Packages.requests python3.pkgs.tomlkit nix-prefetch-git
import tomlkit
import json
import requests
import subprocess
from pathlib import Path
latest_release_url = "https://api.github.com/repos/helix-editor/helix/releases/latest"
def get_latest_release():
res = requests.get(latest_release_url)
res.raise_for_status()
return res.json()["tag_name"]
def get_grammar_config():
res = requests.get(f"https://raw.githubusercontent.com/helix-editor/helix/{version}/languages.toml")
res.raise_for_status()
return tomlkit.parse(res.text)["grammar"]
def calculate_sha256(url, rev):
out = subprocess.check_output([
"nix-prefetch-git", "--quiet",
"--url", url,
"--rev", rev])
return json.loads(out)["sha256"]
version = get_latest_release()
grammars = get_grammar_config()
for grammar in grammars:
if grammar["source"].get("git") is not None:
grammar["source"]["sha256"] = calculate_sha256(
grammar["source"]["git"], grammar["source"]["rev"])
json_grammars = json.dumps(grammars)
with open(Path(__file__).parent / "language-grammars.json", "w") as file:
file.write(json_grammars + "\n")
subprocess.run([
"nix-update", "helix",
"--version", version,
])

File diff suppressed because it is too large Load diff

View file

@ -126,23 +126,23 @@
};
c = buildGrammar {
language = "c";
version = "0.0.0+rev=735716c";
version = "0.0.0+rev=424d014";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-c";
rev = "735716c926837d9e39e4effb3fdc28cee81a7e5e";
hash = "sha256-7EBhWdRchk0K1+ofn+nHa/VZ8eWDM9cpPu1QUwpvidw=";
rev = "424d0145efb0a87927269ab47709f98a564f8c4f";
hash = "sha256-cj8aEcdO5rsie9CqT8GLfvJm6O7yqBQPtn5aDe/lVpI=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c";
};
c_sharp = buildGrammar {
language = "c_sharp";
version = "0.0.0+rev=7611471";
version = "0.0.0+rev=aaafc3d";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-c-sharp";
rev = "76114711aedd3f4b6e1333a7513975647930c629";
hash = "sha256-sBpI/8SfIzPQ0aJ8tw00IZoWGFnBo6mvRcn1lKfnaTg=";
rev = "aaafc3d75f058ca5fe639b7ed5829964a3ca4575";
hash = "sha256-rKP6KfNCkytcAXHVv3EtOQEuhY+dxawFEFQr7kjuA6I=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c-sharp";
};
@ -292,12 +292,12 @@
};
dart = buildGrammar {
language = "dart";
version = "0.0.0+rev=939e5e1";
version = "0.0.0+rev=8aa8ab9";
src = fetchFromGitHub {
owner = "UserNobody14";
repo = "tree-sitter-dart";
rev = "939e5e18321a695f39889ae9dcf3c0255a107109";
hash = "sha256-1zOxekwG+wM0Fkr2LMqCHf5twlNfJyN9Ozb98bkq/+k=";
rev = "8aa8ab977647da2d4dcfb8c4726341bee26fbce4";
hash = "sha256-62Mwn1PnGxVWST396vX/aRkNgzloq3H23TOPZ4oqqiM=";
};
meta.homepage = "https://github.com/UserNobody14/tree-sitter-dart";
};
@ -436,12 +436,12 @@
};
erlang = buildGrammar {
language = "erlang";
version = "0.0.0+rev=7d083ca";
version = "0.0.0+rev=13a6a51";
src = fetchFromGitHub {
owner = "WhatsApp";
repo = "tree-sitter-erlang";
rev = "7d083ca431265a6a677c10e8ca68a908ab0c2bc8";
hash = "sha256-W08JXLPIjUBfHSaTEGbIKPStQr4jOVE1f9osjrWG82Q=";
rev = "13a6a51d1bda845f756971773dd6049b80a3cffc";
hash = "sha256-xy4/AZPHv9V0gzLRXOmUcFyKzLDCgOyqBH8HNYE8GRk=";
};
meta.homepage = "https://github.com/WhatsApp/tree-sitter-erlang";
};
@ -579,12 +579,12 @@
};
gitcommit = buildGrammar {
language = "gitcommit";
version = "0.0.0+rev=735f02b";
version = "0.0.0+rev=6c14f8b";
src = fetchFromGitHub {
owner = "gbprod";
repo = "tree-sitter-gitcommit";
rev = "735f02b12d9cdd9a8b90ac4b2dff8cdab6dd1e7b";
hash = "sha256-uWePpMTJNiR7uh9LpmSiIQUHNiVDF8i32nckPKBFH3g=";
rev = "6c14f8b63767cf6264c5c43ec71cc9351420e831";
hash = "sha256-x5FNXZ+/AexfXn92xSRIdKQGAepvAnMmAz/013x1Q7U=";
};
meta.homepage = "https://github.com/gbprod/tree-sitter-gitcommit";
};
@ -623,12 +623,12 @@
};
glsl = buildGrammar {
language = "glsl";
version = "0.0.0+rev=f21fc83";
version = "0.0.0+rev=7a00509";
src = fetchFromGitHub {
owner = "theHamsta";
repo = "tree-sitter-glsl";
rev = "f21fc834ee48cc485c85f5df7099e00058dbc180";
hash = "sha256-1G0oiIOPVDCeWej6CwMQUvf53Rq2ZIFgz6ucQs1AZ+U=";
rev = "7a005091d3896dab80f34d8dba58935ad7ad6353";
hash = "sha256-L8FbCXea2cQ9Gyh8xtETynRKCt03TAXH0yM3XJTrGMY=";
};
meta.homepage = "https://github.com/theHamsta/tree-sitter-glsl";
};
@ -766,12 +766,12 @@
};
hlsl = buildGrammar {
language = "hlsl";
version = "0.0.0+rev=9160427";
version = "0.0.0+rev=cad6130";
src = fetchFromGitHub {
owner = "theHamsta";
repo = "tree-sitter-hlsl";
rev = "916042734060d3d3a023f6637c815a1d23814af8";
hash = "sha256-FGOXqBmQXCK2G1iseYgc7CdMOQ7P9dVG7ZHEsqcnRhk=";
rev = "cad6130182be8793ca5ef00a8581508e2f12f642";
hash = "sha256-gTek2joY9bhkFYXOxE7ZJ5PnyBbnPTLvUeZmFHjWXlU=";
};
meta.homepage = "https://github.com/theHamsta/tree-sitter-hlsl";
};
@ -1154,12 +1154,12 @@
};
nickel = buildGrammar {
language = "nickel";
version = "0.0.0+rev=d6c7eeb";
version = "0.0.0+rev=3a79438";
src = fetchFromGitHub {
owner = "nickel-lang";
repo = "tree-sitter-nickel";
rev = "d6c7eeb751038f934b5b1aa7ff236376d0235c56";
hash = "sha256-D/RRwXsWyHMxoU7Z8VVJ6jn7zUFKaKusLT/ofON7sOE=";
rev = "3a794388773f2424a97b2186828aa3fac4c66ce6";
hash = "sha256-NLgbTl1Te/lHTGra4DdxLtqIg6yXf5lfyl37qpp8SNQ=";
};
meta.homepage = "https://github.com/nickel-lang/tree-sitter-nickel";
};
@ -1196,6 +1196,17 @@
};
meta.homepage = "https://github.com/nvim-neorg/tree-sitter-norg";
};
objc = buildGrammar {
language = "objc";
version = "0.0.0+rev=90773a7";
src = fetchFromGitHub {
owner = "amaanq";
repo = "tree-sitter-objc";
rev = "90773a72d84d3c9a6eb8e373980e9b6b0bb665a0";
hash = "sha256-E0vRMAVWLCRmwqW9KqEWpQkRi8PX/XvjoE4U9Fy7wSc=";
};
meta.homepage = "https://github.com/amaanq/tree-sitter-objc";
};
ocaml = buildGrammar {
language = "ocaml";
version = "0.0.0+rev=f1106bf";
@ -1454,12 +1465,12 @@
};
query = buildGrammar {
language = "query";
version = "0.0.0+rev=e975044";
version = "0.0.0+rev=3a9808b";
src = fetchFromGitHub {
owner = "nvim-treesitter";
repo = "tree-sitter-query";
rev = "e97504446f14f529d5a8e649667d3d60391e4dfd";
hash = "sha256-Gv882sbL2fmR++h4/I7dFCp+g6pddRCaLyX7+loEoHU=";
rev = "3a9808b22742d5bd906ef5d1a562f2f1ae57406d";
hash = "sha256-5N7FT0HTK3xzzhAlk3wBOB9xlEpKSNIfakgFnsxEi18=";
};
meta.homepage = "https://github.com/nvim-treesitter/tree-sitter-query";
};
@ -1663,12 +1674,12 @@
};
sql = buildGrammar {
language = "sql";
version = "0.0.0+rev=9de72fb";
version = "0.0.0+rev=0f774f4";
src = fetchFromGitHub {
owner = "derekstride";
repo = "tree-sitter-sql";
rev = "9de72fb40cd6d13a64c3aeeabc079c6b8dadb339";
hash = "sha256-WcKrYjOnWRf2ei4bAGH7zJJ/DEaaQ8lmAmO5LEkg17g=";
rev = "0f774f4ce1fbc7aa6df6202301e0b08b8c844ae4";
hash = "sha256-2NkcmwBlDxsvgxRYlZzDcNMw2GZmOIWOCziSPBMrRw4=";
};
meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
};
@ -1752,13 +1763,13 @@
};
t32 = buildGrammar {
language = "t32";
version = "0.0.0+rev=4fca25f";
version = "0.0.0+rev=c5ab392";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "xasc";
repo = "tree-sitter-t32";
rev = "4fca25fa99b6fd9ccf9cab9b6bf702a9df142ad5";
hash = "sha256-x657aMnqCw/TlS1VyC8er5GQ1QqGdGHGgfSIStUbVfQ=";
rev = "c5ab392fece192875d2206da487449b856afcdef";
hash = "sha256-OalZs7pP00j3qyQv7mwVx1/jnoM91ZbqwEC17iTxZ/4=";
};
meta.homepage = "https://codeberg.org/xasc/tree-sitter-t32";
};
@ -1909,6 +1920,17 @@
};
meta.homepage = "https://github.com/Philipp-M/tree-sitter-ungrammar";
};
usd = buildGrammar {
language = "usd";
version = "0.0.0+rev=04816b1";
src = fetchFromGitHub {
owner = "ColinKennedy";
repo = "tree-sitter-usd";
rev = "04816b1fbfe548e1446a9efe8b069f3f6e095504";
hash = "sha256-n9sK02luVOv88P8SDCKIaBlEYtYYT0fQ+fjlYuP9AJY=";
};
meta.homepage = "https://github.com/ColinKennedy/tree-sitter-usd";
};
uxntal = buildGrammar {
language = "uxntal";
version = "0.0.0+rev=14e4760";

View file

@ -19,7 +19,7 @@
python3.pkgs.buildPythonApplication rec {
pname = "komikku";
version = "1.20.0";
version = "1.21.1";
format = "other";
@ -27,7 +27,7 @@ python3.pkgs.buildPythonApplication rec {
owner = "valos";
repo = "Komikku";
rev = "v${version}";
hash = "sha256-gBnpps++dwcXCLSVjtK3nMJMcJ43vKeNzgCWEt1kn7g=";
hash = "sha256-1VqV0tTI8XVwGJhaGWEdSxtWDhQFmrsncvhC4ftJ7Jg=";
};
nativeBuildInputs = [

View file

@ -11,13 +11,13 @@
stdenv.mkDerivation rec {
pname = "pgmodeler";
version = "1.0.3";
version = "1.0.4";
src = fetchFromGitHub {
owner = "pgmodeler";
repo = "pgmodeler";
rev = "v${version}";
sha256 = "sha256-ZlIz+7YyER0/wQEkEe8XHYHcLK4vu09v1zkDrIgR/Dc=";
sha256 = "sha256-1d+zox46h22ox9zC+SvN3w3LkpHmN1jpf/tDPD5D80s=";
};
nativeBuildInputs = [ pkg-config qmake wrapQtAppsHook ];

View file

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "argocd";
version = "2.7.1";
version = "2.7.2";
src = fetchFromGitHub {
owner = "argoproj";
repo = "argo-cd";
rev = "v${version}";
sha256 = "sha256-1P3FIgC9j0SbwzWo0aPUwVTKNlSY3FG7Iz6KD9pbv84=";
sha256 = "sha256-pmF0EJfidYRZRelvXLfwANbv+DnfgLXVeKfjRSbnKjY=";
};
proxyVendor = true; # darwin/linux hash mismatch

View file

@ -1,5 +1,5 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p coreutils curl git jq moreutils nix nix-prefetch
#! nix-shell -i bash -p coreutils curl git jq moreutils nix nurl
# shellcheck shell=bash
# vim: ft=sh
#
@ -90,8 +90,7 @@ update_attr() {
repo_root=$(git rev-parse --show-toplevel)
generate_hash() {
nix-prefetch -I nixpkgs="${repo_root}" \
"{ sha256 }: (import ${repo_root} {}).terraform-providers.${provider}.$1.overrideAttrs (_: { inherit sha256; })"
nurl --expr "(import ${repo_root} {}).terraform-providers.${provider}.$1"
}
echo_provider() {

View file

@ -22,13 +22,15 @@
python3.pkgs.buildPythonApplication rec {
pname = "gajim";
version = "1.6.1";
version = "1.7.3";
src = fetchurl {
url = "https://gajim.org/downloads/${lib.versions.majorMinor version}/gajim-${version}.tar.gz";
hash = "sha256-3D87Ou/842WqbaUiJV1hRZFVkZzQ12GXCpRc8F3rKPQ=";
hash = "sha256-t8yzWfdsY8pXye7Dn5hME0bOHgf+MzuyVY3hweXc0xg=";
};
format = "pyproject";
buildInputs = [
gobject-introspection gtk3 gnome.adwaita-icon-theme
gtksourceview4
@ -58,6 +60,14 @@ python3.pkgs.buildPythonApplication rec {
nativeCheckInputs = [ xvfb-run dbus ];
preBuild = ''
python pep517build/build_metadata.py -o dist/metadata
'';
postInstall = ''
python pep517build/install_metadata.py dist/metadata --prefix=$out
'';
checkPhase = ''
xvfb-run dbus-run-session \
--config-file=${dbus}/share/dbus-1/session.conf \
@ -65,6 +75,9 @@ python3.pkgs.buildPythonApplication rec {
${python3.interpreter} -m unittest discover -s test/common -v
'';
# test are broken in 1.7.3
doCheck = false;
# necessary for wrapGAppsHook
strictDeps = false;

View file

@ -1,5 +1,5 @@
diff --git a/libgnucash/app-utils/gnc-quotes.cpp b/libgnucash/app-utils/gnc-quotes.cpp
index 3003fca71f..e01cb10b50 100644
index 3003fca71f..2f2b1398e1 100644
--- a/libgnucash/app-utils/gnc-quotes.cpp
+++ b/libgnucash/app-utils/gnc-quotes.cpp
@@ -122,7 +122,6 @@ private:
@ -10,7 +10,7 @@ index 3003fca71f..e01cb10b50 100644
std::string c_fq_wrapper;
std::string m_version;
StrVec m_sources;
@@ -145,7 +144,6 @@ static std::string parse_quotesource_error(const std::string& line);
@@ -145,13 +144,12 @@ static std::string parse_quotesource_error(const std::string& line);
static const std::string empty_string{};
GncFQQuoteSource::GncFQQuoteSource() :
@ -18,6 +18,13 @@ index 3003fca71f..e01cb10b50 100644
m_version{}, m_sources{}, m_api_key{}
{
char *bindir = gnc_path_get_bindir();
c_fq_wrapper = std::string(bindir) + "/finance-quote-wrapper";
g_free(bindir);
- StrVec args{"-w", c_fq_wrapper, "-v"};
+ StrVec args{"-v"};
auto [rv, sources, errors] = run_cmd(args, empty_string);
if (rv)
{
@@ -197,7 +195,7 @@ m_version{}, m_sources{}, m_api_key{}
QuoteResult
GncFQQuoteSource::get_quotes(const std::string& json_str) const
@ -43,4 +50,3 @@ index 3003fca71f..e01cb10b50 100644
bp::std_out > out_buf,
bp::std_err > err_buf,
bp::std_in < input_buf,

View file

@ -137,7 +137,7 @@ stdenv.mkDerivation rec {
- Financial Calculations
'';
license = licenses.gpl2Plus;
maintainers = with maintainers; [ domenkozar AndersonTorres rski ];
maintainers = with maintainers; [ domenkozar AndersonTorres rski nevivurn ];
platforms = platforms.unix;
};
}

View file

@ -34,6 +34,9 @@ stdenv.mkDerivation rec {
# Fixup build with newer Linux headers: https://github.com/lkl/linux/pull/484
sed '1i#include <linux/sockios.h>' -i tools/lkl/lib/hijack/xlate.c
'' + lib.optionalString stdenv.isi686 ''
echo CONFIG_KALLSYMS=n >> arch/lkl/configs/defconfig
echo CONFIG_KALLSYMS_BASE_RELATIVE=n >> arch/lkl/configs/defconfig
'' + lib.optionalString firewallSupport ''
cat ${./lkl-defconfig-enable-nftables} >> arch/lkl/configs/defconfig
'';

View file

@ -41,13 +41,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "icewm";
version = "3.3.4";
version = "3.3.5";
src = fetchFromGitHub {
owner = "ice-wm";
repo = "icewm";
rev = finalAttrs.version;
hash = "sha256-Ygu10QF+cbjA0qy3k8/A9QX5xSthXcPy0wII3tXLH68=";
hash = "sha256-ZxHeRfdSKhU7osITPLZmC5M2Nji3GjHLPuYphsZXNJw=";
};
nativeBuildInputs = [

View file

@ -39,5 +39,6 @@ stdenv.mkDerivation {
description = "A multi-paradigm functional and object-oriented programming language";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
broken = true; # last successful build 2020-12-11
};
}

View file

@ -16,7 +16,7 @@
stdenv.mkDerivation rec {
pname = "exiv2";
version = "0.27.6";
version = "0.27.7";
outputs = [ "out" "lib" "dev" "doc" "man" "static" ];
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
owner = "exiv2";
repo = "exiv2";
rev = "v${version}";
sha256 = "sha256-Ddy605EQhsATzmdhN3Zq+2ksYMrHEfucA+IqezYmjo4=";
sha256 = "sha256-xytVGrLDS22n2/yydFTT6CsDESmhO9mFbPGX4yk+b6g=";
};
nativeBuildInputs = [

View file

@ -11,7 +11,7 @@
buildPythonPackage rec {
pname = "dbus-fast";
version = "1.85.0";
version = "1.86.0";
format = "pyproject";
disabled = pythonOlder "3.7";
@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "Bluetooth-Devices";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-pl5Qs7llmUna+i85hMl14UhTDkibPEcMaRnsPM7ODFg=";
hash = "sha256-YSkSnRQqalHpRVJx5PUO8EXXV8V6jRNpycO/GqNWmIM=";
};
nativeBuildInputs = [

View file

@ -15,7 +15,7 @@
buildPythonPackage rec {
pname = "dvc-data";
version = "0.51.0";
version = "0.52.0";
format = "pyproject";
disabled = pythonOlder "3.8";
@ -24,7 +24,7 @@ buildPythonPackage rec {
owner = "iterative";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-kLxwBFDoGEZ8w3PHEh8IVDEbmlbwazhZBAoBAUQFDEo=";
hash = "sha256-Z5luqKuUForepBTZ7s2uDI09bK0NVhYMADFOj13nt0I=";
};
SETUPTOOLS_SCM_PRETEND_VERSION = version;

View file

@ -2,12 +2,17 @@
, buildPythonPackage
, fetchpatch
, fetchPypi
, pythonAtLeast
}:
buildPythonPackage rec {
pname = "fn";
version = "0.4.3";
# Python 3.11 changed the API of the `inspect` module and fn was never
# updated to adapt; last commit was in 2014.
disabled = pythonAtLeast "3.11";
src = fetchPypi {
inherit pname version;
sha256 = "1nmsjmn8jb4gp22ksx0j0hhdf4y0zm8rjykyy2i6flzimg6q1kgq";

View file

@ -15,14 +15,14 @@
buildPythonPackage rec {
pname = "gtts";
version = "2.3.1";
version = "2.3.2";
format = "pyproject";
src = fetchFromGitHub {
owner = "pndurette";
repo = "gTTS";
rev = "refs/tags/v${version}";
hash = "sha256-dbIcx6U5TIy3CteUGrZqcWqOJoZD2HILaJmKDY+j/II=";
hash = "sha256-Z5dM/PzIA8qtw0RepTKmHpqBwYMRwNLhWuEC0aBGL3U=";
};
propagatedBuildInputs = [

View file

@ -8,12 +8,13 @@
, precis-i18n
, pygobject3
, pyopenssl
, setuptools
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "nbxmpp";
version = "4.0.1";
version = "4.2.2";
disabled = pythonOlder "3.10";
@ -22,9 +23,11 @@ buildPythonPackage rec {
owner = "gajim";
repo = "python-nbxmpp";
rev = version;
hash = "sha256-PL+qNxeNubGSLqSci4uhRWtOIqs10p+A1VPfTwCLu84=";
hash = "sha256-ZTX8plcsO4zE7ruLtWIvsagQUvwPHuKdPKRwCrFwvgc=";
};
format = "pyproject";
nativeBuildInputs = [
# required for pythonImportsCheck otherwise libsoup cannot be found
gobject-introspection
@ -40,6 +43,7 @@ buildPythonPackage rec {
libsoup_3
pygobject3
pyopenssl
setuptools
];
nativeCheckInputs = [

View file

@ -8,14 +8,14 @@
buildPythonPackage rec {
pname = "pglast";
version = "5.1";
version = "5.2";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-fHWJWgy/Ven5m2Cf81rG/ZKmFFWiLJsIPVxFe+rr+ms=";
hash = "sha256-zj7/WGECL5Ou4F2FdFaA3M9F92ETZbhEXbZJ628gg0o=";
};
propagatedBuildInputs = [

View file

@ -1,7 +1,10 @@
{ lib, stdenv
, bottle
, buildPythonPackage
, fetchpatch
, fetchPypi
, pytestCheckHook
, pythonAtLeast
}:
buildPythonPackage rec {
@ -13,14 +16,36 @@ buildPythonPackage rec {
sha256 = "993f1a3599ca3f4fcd7160c7545ad06310c9e12f70174ae7ae8d4e25f6c5d3fa";
};
patches = [
# Fixes a TypeError on Python 3.11
# (see https://github.com/pympler/pympler/issues/148)
(fetchpatch {
name = "${pname}-python-3.11-compat.patch";
url = "https://github.com/pympler/pympler/pull/149.patch";
hash = "sha256-6MK0AuhVhQkUzlk29HUh1+mSbfsVTBJ1YBtYNIFhh7U=";
})
];
nativeCheckInputs = [
pytestCheckHook
];
# There is a version of bottle bundled with Pympler, but it is broken on
# Python 3.11. Fortunately, Pympler will preferentially import an external
# bottle if it is available, so we make it an explicit dependency.
propagatedBuildInputs = [
bottle
];
disabledTests = [
# 'AssertionError: 'function (test.muppy.test_summary.func)' != 'function (muppy.test_summary.func)'
# https://github.com/pympler/pympler/issues/134
"test_repr_function"
] ++ lib.optionals (pythonAtLeast "3.11") [
# https://github.com/pympler/pympler/issues/148
"test_findgarbage"
"test_get_tree"
"test_prune"
];
doCheck = stdenv.hostPlatform.isLinux;

View file

@ -16,9 +16,10 @@
, extractcode-libarchive
, fasteners
, fetchPypi
, fetchpatch
, fingerprints
, ftfy
, gemfileparser
, gemfileparser2
, html5lib
, importlib-metadata
, intbitset
@ -89,7 +90,7 @@ buildPythonPackage rec {
fasteners
fingerprints
ftfy
gemfileparser
gemfileparser2
html5lib
importlib-metadata
intbitset
@ -133,13 +134,23 @@ buildPythonPackage rec {
pytestCheckHook
];
patches = [
(fetchpatch {
name = "${pname}-allow-stable-spdx-tools.patch";
url = "https://github.com/nexB/scancode-toolkit/commit/d89ab6584d3df6b7eb1d1394559e9d967d6db6ae.patch";
includes = [ "src/*" ];
hash = "sha256-AU3vJlOxmCy3yvkupVaAVxAKxJI3ymXEk+A5DWSkfOM=";
})
];
postPatch = ''
substituteInPlace setup.cfg \
--replace "pdfminer.six >= 20200101" "pdfminer.six" \
--replace "pluggy >= 0.12.0, < 1.0" "pluggy" \
--replace "pygmars >= 0.7.0" "pygmars" \
--replace "license_expression >= 21.6.14" "license_expression" \
--replace "intbitset >= 2.3.0, < 3.0" "intbitset"
--replace "intbitset >= 2.3.0, < 3.0" "intbitset" \
--replace "spdx_tools == 0.7.0a3" "spdx_tools"
'';
# Importing scancode needs a writeable home, and preCheck happens in between

View file

@ -1,18 +1,22 @@
{ lib
, buildPythonPackage
, cython
, fetchPypi
}:
buildPythonPackage rec {
pname = "timelib";
version = "0.2.5";
version = "0.3.0";
src = fetchPypi {
inherit pname version;
extension = "zip";
sha256 = "6ac9f79b09b63bbc07db88525c1f62de1f6d50b0fd9937a0cb05e3d38ce0af45";
hash = "sha256-0bInBlVxhuYFjaiLoPhYN0AbKuneFX9ZNT3JeNglGHo=";
};
nativeBuildInputs = [
cython
];
meta = with lib; {
description = "Parse english textual date descriptions";
homepage = "https://github.com/pediapress/timelib/";

View file

@ -7,33 +7,52 @@
, pytest-timeout
, huggingface-hub
, pyyaml
, safetensors
, torch
, torchvision
}:
buildPythonPackage rec {
pname = "timm";
version = "0.6.12";
disabled = pythonOlder "3.6";
version = "0.9.2";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "huggingface";
repo = "pytorch-image-models";
rev = "refs/tags/v${version}";
hash = "sha256-RNjCcCnNhtr5a+29Bx+k427a03MSooqvnuiDQ8cT8FA=";
hash = "sha256-gYrc8ds6urZvwDsTnzPjxjSTiAGzUD3RlCf0wogCrDI=";
};
propagatedBuildInputs = [
huggingface-hub
pyyaml
safetensors
torch
torchvision
];
nativeCheckInputs = [ expecttest pytestCheckHook pytest-timeout ];
pytestFlagsArray = [ "tests" ];
# takes too long and also tries to download models:
disabledTestPaths = [ "tests/test_models.py" ];
nativeCheckInputs = [
expecttest
pytestCheckHook
pytest-timeout
];
pytestFlagsArray = [
"tests"
];
disabledTestPaths = [
# Takes too long and also tries to download models
"tests/test_models.py"
];
disabledTests = [
# AttributeError: 'Lookahead' object has no attribute '_optimizer_step_pre...
"test_lookahead"
];
pythonImportsCheck = [
"timm"

View file

@ -19,7 +19,8 @@ buildPythonPackage rec {
postPatch = ''
substituteInPlace tests/__init__.py \
--replace "'virtualenv'" "'${virtualenv}/bin/virtualenv'"
--replace "'virtualenv'" "'${virtualenv}/bin/virtualenv'" \
--replace "'3.9', '3.10']" "'3.9', '3.10', '3.11']" # if the Python version used isn't in this list, tests fail
substituteInPlace tests/test_virtualenv_sys.py \
--replace "'virtualenv'" "'${virtualenv}/bin/virtualenv'"

View file

@ -1,6 +1,7 @@
{ stdenv
, lib
, buildPythonPackage
, fetchpatch
, fetchPypi
, colorama
, libunwind
@ -21,6 +22,22 @@ buildPythonPackage rec {
buildInputs = [ libunwind ];
propagatedBuildInputs = [ colorama requests six pytz ];
patches = [
(fetchpatch {
name = "${pname}-python-3.10-compat.patch";
# https://github.com/vmprof/vmprof-python/pull/198
url = "https://github.com/vmprof/vmprof-python/commit/e4e99e5aa677f96d1970d88c8a439f995f429f85.patch";
hash = "sha256-W/c6WtVuKi7xO2sCOr71mrZTWqI86bWg5a0FeDNolh0=";
})
(fetchpatch {
name = "${pname}-python-3.11-compat.patch";
# https://github.com/vmprof/vmprof-python/pull/251 (not yet merged)
url = "https://github.com/matthiasdiener/vmprof-python/compare/a1a1b5264ec0b197444c0053e44f8ae4ffed9353...13c39166363b960017393b614270befe01230be8.patch";
excludes = [ "test_requirements.txt" ];
hash = "sha256-3+0PVdAf83McNd93Q9dD4HLXt39UinVU5BA8jWfT6F4=";
})
];
# No tests included
doCheck = false;
pythonImportsCheck = [ "vmprof" ];

View file

@ -658,6 +658,13 @@ in
"--with-cflags=-I${ncurses.dev}/include"
"--with-ldflags=-L${ncurses.out}/lib"
];
dontBuild = false;
postPatch = ''
substituteInPlace extconf.rb --replace 'rubyio.h' 'ruby/io.h'
substituteInPlace terminfo.c \
--replace 'rubyio.h' 'ruby/io.h' \
--replace 'rb_cData' 'rb_cObject'
'';
};
ruby-vips = attrs: {

View file

@ -10,16 +10,16 @@
buildGoModule rec {
pname = "buf";
version = "1.18.0";
version = "1.19.0";
src = fetchFromGitHub {
owner = "bufbuild";
repo = pname;
rev = "v${version}";
hash = "sha256-wMYl9TlOQ4h5MFNNWaGkou7YIBSsMfhV70ABgKkC7xo=";
hash = "sha256-vLiOAlzIrIwMKPn8yl/YyFmXbFHFAZB1yLejQbAEivg=";
};
vendorHash = "sha256-pyhK0tHpHrEkGRkWgzTFg9FNNBx3SwoWUfw+2zk7nAs=";
vendorHash = "sha256-DT3vffs33hGlylQLKc5o7Xble8Blyy4hgvE27CHnmJc=";
patches = [
# Skip a test that requires networking to be available to work.

View file

@ -0,0 +1,44 @@
{ lib
, buildGoModule
, fetchFromGitHub
, testers
, gopatch
}:
buildGoModule rec {
pname = "gopatch";
version = "0.2.0";
src = fetchFromGitHub {
owner = "uber-go";
repo = "gopatch";
rev = "v${version}";
hash = "sha256-RodRDP7n1hxez+9xpRlguuArJDVaYxVTpnXKqsyqnUw=";
};
vendorHash = "sha256-vygEVVh/bBhV/FCrehDumrw2c1SdSZSdFjVSRoJsIig=";
subPackages = [
"."
];
ldflags = [
"-s"
"-w"
"-X=main._version=${version}"
];
passthru.tests = {
version = testers.testVersion {
package = gopatch;
};
};
meta = with lib; {
description = "Refactoring and code transformation tool for Go";
homepage = "https://github.com/uber-go/gopatch";
changelog = "https://github.com/uber-go/gopatch/blob/${src.rev}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
};
}

View file

@ -17,10 +17,10 @@ let
plat = elemAt info 1;
shas =
{
x86_64-linux = "f0f9f65b6ba3cc401a519f764314854f6f1f22a9c3b55dfc5a4921455d64fc0d5b8352d267217076da82157553f235ab3d2506497132f23789b126205177e86b";
x86_64-darwin = "2ba707a0e7a5c34be98ee5e299b8f1d9ace99a626112efd48ca08bfc9640374ec37fc1761c9ef91599e7a5bf5055d2731759b0337952d7767b02d9c46640be71";
aarch64-linux = "6899c46a06cceb3bfa5db22cdad90db3063b3859c6059a379ac29ce5755073e45b6914491c7c0ec92c48344c1658ea68f7453992d1a39b70782f699315d175de";
aarch64-darwin = "194b7288f394ff39af3e114099a8f0f847091fd50231ee50c12105189e2b1dfdff8971795c2c22275ff113734e543cfaf51940682d77576c89d2d5bce9b26b92";
x86_64-linux = "d3d5e8906e64ae3c469e4df80e1c692ce1912e36f68ddf36b99b7019faf34aebaa329061904a6d2b6a32486c6e19d1c5f2ea30c25479a7960ed93bc1c0cb1691";
x86_64-darwin = "72a4499efbbbdf425f92beafc1b1d416e66e6ded60e76d9c9af9c3c13ce11862ba54dffbfbd5cbdef6afaad50f0d57532d3524f83acd88840aecc6891f748732";
aarch64-linux = "ce1b584e1cf98f8fb0e602352564a71efef4f53936dde7a056caed62675a6216624f0db2bc24d8239b8d01f06306bf173dda7a08a1787ba061db01ca0d88359a";
aarch64-darwin = "72a4499efbbbdf425f92beafc1b1d416e66e6ded60e76d9c9af9c3c13ce11862ba54dffbfbd5cbdef6afaad50f0d57532d3524f83acd88840aecc6891f748732";
};
in stdenv.mkDerivation rec {

View file

@ -14,13 +14,13 @@
buildGoModule rec {
pname = "wails";
version = "2.4.1";
version = "2.5.1";
src = fetchFromGitHub {
owner = "wailsapp";
repo = pname;
rev = "v${version}";
sha256 = "sha256-ei+bp4fwlxZ9ZiXW/FqpqICXpFxpmOKkZZYW0LxHh1s=";
sha256 = "sha256-4JTkViqJ1rmVg6JGJ+uZrIo/mh6o1VE39gYoILdFWBE=";
} + "/v2";
vendorSha256 = "sha256-RiectpUhm24xjgfPZEMDVFSEzPtIjn7L/qC2KE2s5aw=";

View file

@ -8,10 +8,10 @@ let beat = package: extraArgs: buildGoModule (rec {
owner = "elastic";
repo = "beats";
rev = "v${version}";
hash = "sha256-BGi2fGUz0J7BuLo3JA4c2yUlWXdLpjn+AcMHkDGd3js=";
hash = "sha256-Quq32/3NeGhrsy17GrIeBiB3LGQuMFTFl3lAyyU6GZM=";
};
vendorHash = "sha256-FtFHfxCIZ4G1aFfGUgRfTz+zL4OE4SLPuDzXqL6CDyo=";
vendorHash = "sha256-UJjwCRxY1rrymroBqC/SfCVM9vmnQOtLlS3OONih3kM=";
subPackages = [ package ];

View file

@ -33,8 +33,8 @@ let
in {
tomcat9 = common {
versionMajor = "9";
versionMinor = "0.68";
sha256 = "sha256-rxsv8zEIIbTel4CqIuncS5pellGwgHamKRa0KgzsOF0=";
versionMinor = "0.75";
sha256 = "sha256-VWfKg789z+ns1g3hDsCZFYQ+PsdqUEBeBHCihkGZelk=";
};
tomcat10 = common {

View file

@ -1,16 +1,51 @@
{ lib, stdenv, fetchFromGitHub, cmake, ninja, pkg-config
, cyclonedds, libmysqlclient, mariadb, mbedtls, sqlite, zeromq
{ lib
, stdenv
, fetchFromGitHub
, cmake
, ninja
, pkg-config
, cyclonedds
, libmysqlclient
, mariadb
, mbedtls
, sqlite
, zeromq
, flex
, bison
# for tests
, python3
, mosquitto
, netcat-gnu
}:
stdenv.mkDerivation (finalAttrs: {
let
# exposing as full package in its own right would be a
# bit absurd - repo doesn't even have a license.
idl-serial = stdenv.mkDerivation {
pname = "idl-serial";
version = "unstable-2023-03-29";
src = fetchFromGitHub {
owner = "nanomq";
repo = "idl-serial";
rev = "908c364dab4c0dcdd77b8de698d29c8a0b6d3830";
hash = "sha256-3DS9DuzHN7BevfgiekUmKKH9ej9wKTrt6Fuh427NC4I=";
};
nativeBuildInputs = [ cmake ninja flex bison ];
};
in stdenv.mkDerivation (finalAttrs: {
pname = "nanomq";
version = "0.16.3";
version = "0.18.2";
src = fetchFromGitHub {
owner = "emqx";
repo = "nanomq";
rev = finalAttrs.version;
hash = "sha256-9w4afVxuJbYrkagpAe1diftDnjrRjunyhJdJ0BZq3K0=";
hash = "sha256-XGJBBuRSL3InXUMGxOttdbt0zmI1APFlc4IvwC2up8g=";
fetchSubmodules = true;
};
@ -19,7 +54,7 @@ stdenv.mkDerivation (finalAttrs: {
--replace "DESTINATION /etc" "DESTINATION $out/etc"
'';
nativeBuildInputs = [ cmake ninja pkg-config ];
nativeBuildInputs = [ cmake ninja pkg-config idl-serial ];
buildInputs = [ cyclonedds libmysqlclient mariadb mbedtls sqlite zeromq ];
@ -35,6 +70,33 @@ stdenv.mkDerivation (finalAttrs: {
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-return-type";
# disabled by default - not 100% reliable and making nanomq depend on
# mosquitto would annoy people
doInstallCheck = false;
nativeInstallCheckInputs = [
mosquitto
netcat-gnu
(python3.withPackages (ps: with ps; [ jinja2 requests paho-mqtt ]))
];
installCheckPhase = ''
runHook preInstallCheck
(
cd ..
# effectively distable this test because it is slow
echo > .github/scripts/fuzzy_test.txt
PATH="$PATH:$out/bin" python .github/scripts/test.py
)
runHook postInstallCheck
'';
passthru.tests = {
withInstallChecks = finalAttrs.finalPackage.overrideAttrs (_: { doInstallCheck = true; });
};
meta = with lib; {
description = "An ultra-lightweight and blazing-fast MQTT broker for IoT edge";
homepage = "https://nanomq.io/";

View file

@ -18,10 +18,10 @@ let
plat = elemAt info 1;
shas =
{
x86_64-linux = "f49d8fce010db83e6a89462535c71ba11a1153589038a7db430fc7db44178a55d5538dea80e6d4c690f4f0e838168965297c6a3ae31fbc5020af4d966067a90c";
x86_64-darwin = "b7d87bfa2e1793354bfb51ea11bbeeb29cfba62633288c3ed4ab9eecc05d05953db9446e7ca46ffe63f5aa646a0534fb8f4aa897a59fa2ae7e200b824576d915";
aarch64-linux = "aa9624c1777a8530f5eca4f75385de1a95ba8db3d56810cc1e134434438181580c32f5f46ab79094742d077e9b741cfb2549cda549147123dae14109e27a1443";
aarch64-darwin = "191e04a1e440a5ad679d04f6d852a6ab26cb14870b8af38a2ab6a14251a7b6d1ed7646e33b87f4971bb04a68d767abaecaa8dba07e3ae29211f0a358bb499d61";
x86_64-linux = "7a2013e43c7fc39e86a31a733cc74c587ef2bba0c013f95ce874f98b488a4f8f0e6fb254a1eedd5c0b0e210aed9a0195f7358fa9653c890e234413ff93190807";
x86_64-darwin = "e6f49e7c0f59e260b3e3d43e57375c9352976c4f51118005e3a9127f41b59f95e51ea158cd318e99410e6d98464ea1f84432c905d12a84b8f68b2ce35905f944";
aarch64-linux = "f2790f49b79c381246bbf87431919452af93aa4fd8aa6bc9c1f9031e7ed5d9c649f5bab867c28a7d1602e2285d3f4a5f78f809ac05744b02ad67d68610bb677d";
aarch64-darwin = "75b66b60650bb82dc517f4a594fa40816d3becb92bf3b349f3e8324cc6b297c8bcacebc08e7661891fd4ede03a099fea56c1509291804dd03345717c36564172";
};
in
stdenv.mkDerivation rec {

View file

@ -37,8 +37,8 @@ in
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
sha256 =
if version == "7.17.9" then "sha256-70KU7aGUHEZsjykXqHUYspGyX0CCrlS1er9WdUbxxSE="
hash =
if version == "7.17.10" then "sha256-D08CVW/qHpZZaKnploM4aCJ4bunvPjVmieDYr1d6jQA="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
@ -53,8 +53,8 @@ in
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
sha256 =
if version == "7.17.9" then "sha256-oRTs1eK7jpoKaMvc+6rx9qiA8wg+gYUADM0HuJU0nOY="
hash =
if version == "7.17.10" then "sha256-cpgr2zPCpsLrmshWJWoGNcGl0X+bO/K4A9bMqLv8+H8="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
@ -69,7 +69,7 @@ in
version = esVersion;
src = fetchurl {
url = "https://github.com/vhyza/elasticsearch-${pluginName}/releases/download/v${version}/elasticsearch-${pluginName}-${version}-plugin.zip";
sha256 =
hash =
if version == "7.17.9" then "sha256-iY25apDkS6s0RoR9dVL2o/hFuUo6XhMzLjl8wDSFejk="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
@ -77,6 +77,7 @@ in
homepage = "https://github.com/vhyza/elasticsearch-analysis-lemmagen";
description = "LemmaGen Analysis plugin provides jLemmaGen lemmatizer as Elasticsearch token filter";
license = licenses.asl20;
broken = true; # Not released yet for ES 7.17.10
};
};
@ -85,8 +86,8 @@ in
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
sha256 =
if version == "7.17.9" then "sha256-xlEabvNiddEwRfKrHIq1QPFJFMd2gByurIZF9LOxVSs="
hash =
if version == "7.17.10" then "sha256-UmykO+hZDvlFhEbf7zL2bdw4j6NhByRBu9eH3F6/EtM="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
@ -101,8 +102,8 @@ in
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
sha256 =
if version == "7.17.9" then "sha256-J1q87fhL4A5tkxPADgHflPbO2RRMGPUk58l7DEpgd94="
hash =
if version == "7.17.10" then "sha256-Y/AbLfHSdocX0NQbnKm63gTWgwzssb4kpSwRqLozD9w="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
@ -117,8 +118,8 @@ in
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
sha256 =
if version == "7.17.9" then "sha256-BhJtBdsT5Xapehfn0xaTWpSrvT1W+Hhv/yqliA6dBG8="
hash =
if version == "7.17.10" then "sha256-QIYD7cGpJQg+csv/tekN6GFtdnuhYU6VyAXk7nY/uWs="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
@ -133,8 +134,8 @@ in
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${esVersion}.zip";
sha256 =
if version == "7.17.9" then "sha256-bjVMVwZfj9WyjkwTXwTJdmaqZ1sWuvOZKXh9PFTOwb8="
hash =
if version == "7.17.10" then "sha256-L8lS+EPYuhNNTnP3ImeZsBQ5a5DAncs3qBFDWGWISRI="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
@ -149,8 +150,8 @@ in
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${esVersion}.zip";
sha256 =
if version == "7.17.9" then "sha256-ZyImIHYOz5bOEA+ARtPB2CznTOSjFKsavzWXXEzfkO8="
hash =
if version == "7.17.10" then "sha256-eXstbxlyS8WzW8u5YiMFXGpILCcEWrIb/IxXVzAGFLU="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
@ -166,13 +167,13 @@ in
pluginName = "search-guard";
version =
# https://docs.search-guard.com/latest/search-guard-versions
if esVersion == "7.17.9" then "${esVersion}-53.6.0"
if esVersion == "7.17.10" then "${esVersion}-53.7.0"
else throw "unsupported version ${esVersion} for plugin ${pluginName}";
src =
if esVersion == "7.17.9" then
if esVersion == "7.17.10" then
fetchurl {
url = "https://maven.search-guard.com/search-guard-suite-release/com/floragunn/search-guard-suite-plugin/${version}/search-guard-suite-plugin-${version}.zip";
sha256 = "sha256-HwxNvWvjqaI3ytSjNnsGcyt3omIZp69bgwxoufL2Nj8=";
hash = "sha256-FIF4O8z0U2giXVA2cNEdCDbpuJDJhaxHBOmv2fACucw=";
}
else throw "unsupported version ${version} for plugin ${pluginName}";
meta = with lib; {

View file

@ -1,7 +1,7 @@
{ lib, stdenv, fetchurl, writeText, plugins ? [ ], nixosTests }:
let
version = "4.1.2";
version = "4.1.3";
versionParts = lib.take 2 (lib.splitVersion version);
# 4.2 -> 402, 3.11 -> 311
@ -15,7 +15,7 @@ in stdenv.mkDerivation rec {
src = fetchurl {
url = "https://download.moodle.org/stable${stableVersion}/${pname}-${version}.tgz";
sha256 = "sha256-ddXldOQLefV6Kjla+IeFwD50Vye4kholJD5R6X6A2Og=";
hash = "sha256-JMK+nGgeBryC6I9cg1DD52gIGcPMAJ/xZxrC4a1R5Ps=";
};
phpConfig = writeText "config.php" ''

View file

@ -16,14 +16,14 @@ let
shas =
if enableUnfree
then {
x86_64-linux = "a43d592e70f023a594f31a3fba365a9cca6611599bd61f998cb1fc38ddd177d459bce23eaf54f811fe0a87a47cdd4bf4b4d4c8008dab1ac03173371f63b91b6c";
x86_64-darwin = "7f7d89f438400da178b30f345b6ebc80f55f87f38b8925ca8c9dea86f0e2f23f70ccab03fdef5b83c085f1441e77592aab05006d163bc2af1920e1cc0ebdfc17";
aarch64-linux = "3c74d622c362e3aa72442a477ef34b0eb9131f5b550166d0f7f422bd3678acf07d75c702691d6606e5501f4b40854a352398d1c2813f1fb0a152663d75d5658b";
x86_64-linux = "5391bfef09c403a365518a3a8e8f075bb7974b137095b3c7fd2a0173cfa6dbd4a7451170a3657afef3e6a468e90a38d6e7a5b669799878f9389fa44ff8fee026";
x86_64-darwin = "8e3516b82329a47505358fb7eab486ca39423adc44a1f061c35f6ba225ac2f37330f2afc3e37eb652b6536e5ca35d77ac2485dec743fa8d99dd4fcc60bddbc21";
aarch64-linux = "06f91a5aabff0f86a4150de6c1fd02fb6d0a44b04ac660597cb4c8356cf1d22552aaa77899db42a49a5e35b3cad73be5d7bad8cacfb4b17e622949329cdf791a";
}
else {
x86_64-linux = "7c3f9867853582e5d06b9f895b4740abf56a9b6ce34dfbfb624cf9a4b956f489145cd13f3194a7fb16efc52410f55e797c269dc2957a35bdebf9e1aaa3547eaa";
x86_64-darwin = "d81c20317a7c163e42f5aad9e148505a64bba8565ff913650a840918b80e6aadde071596e569b0c8f965810b821779ca3d00f9a7cb24a5c86fff571ca9227c38";
aarch64-linux = "93d9700fc3dd99bc918be19fe41ef60b9071eadcc6fd57833dbf1fff2e0f2419c62f3493a0454f215b0dfd30cec90f1aca5eeff15c4eb3a583519dc9a69e896a";
x86_64-linux = "ba22c4c414f47515387bb28cc47612bea58aff97c407f2571863e83174a2bef273627f65dd531ed833e40668c79144a501d49c3ec691c1b1c4d8fb0cb124b052";
x86_64-darwin = "81a97ca06c086fac33f32e90124f649d5ddce09d649021020f434b75b5bff63065f9dc8aa267b72cedd581089bc24db12122f705ef8b69acf8f59f11771cbf77";
aarch64-linux = "64adb41a7a1b14b21d463b333f3f4470a4db9140e288d379bf79510c83091d5ca27e997961d757cee2329b85d16da6da8a1038a00aeabb1e74ab8f95b841ad0a";
};
this = stdenv.mkDerivation rec {
version = elk7Version;

View file

@ -1,16 +1,16 @@
{ lib, fetchFromGitHub, rustPlatform }:
rustPlatform.buildRustPackage rec {
pname = "tagref";
version = "1.7.0";
version = "1.8.1";
src = fetchFromGitHub {
owner = "stepchowfun";
repo = pname;
rev = "v${version}";
sha256 = "sha256-ESImTR3CFe6ABCP7JHU7XQYvc2VsDN03lkVaKK9MUEU=";
sha256 = "sha256-fEFMzBLQl93QmaviJXOZkiJ3cqYKNOiz3a+CZL7nyRI=";
};
cargoHash = "sha256-vqRVD5RW0j2bMF/Zl+Ldc06zyDlzRpADWqxtkvKtydE=";
cargoHash = "sha256-dvSP1djkjvdm04lsdxZsxS+0R0PI+jo8blg3zOQcBrU=";
meta = with lib; {
description = "Tagref helps you refer to other locations in your codebase.";

View file

@ -5,23 +5,29 @@
buildGoModule rec {
pname = "checkip";
version = "0.45.1";
version = "0.46.1";
src = fetchFromGitHub {
owner = "jreisinger";
repo = pname;
rev = "v${version}";
sha256 = "sha256-GUVyeQtUNnW8yu/dhfip61jxQtgQmjBUDzsOW233laQ=";
rev = "refs/tags/v${version}";
hash = "sha256-U0jHwKmGHpaHSiOYDeYCXiufw0JjzAmhBnINmFsqOJo=";
};
vendorHash = "sha256-9/z1mtZGqrvcvq8cWBpYN7kaPHaPqtyMwMNxuRRP4Cs=";
ldflags = [
"-w"
"-s"
];
# Requires network
doCheck = false;
meta = with lib; {
description = "CLI tool that checks an IP address using various public services";
homepage = "https://github.com/jreisinger/checkip";
changelog = "https://github.com/jreisinger/checkip/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [ fab ];
};

View file

@ -1,17 +1,21 @@
{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
{ lib
, buildGoModule
, fetchFromGitHub
, nixosTests
}:
buildGoModule rec {
pname = "nebula";
version = "1.6.1";
version = "1.7.0";
src = fetchFromGitHub {
owner = "slackhq";
repo = pname;
rev = "v${version}";
sha256 = "sha256-IsLSlQsrfw3obkz4jHL23BRQY2fviGbPEvs5j0zkdX0=";
rev = "refs/tags/v${version}";
hash = "sha256-B0i980mfbfC5p4mIsW3L4v1ilajxtZbp1DQowFw3ghw=";
};
vendorSha256 = "sha256-GvMiOEC3Y/pGG++Z+XCgLVADKymUR9shDxjx3xIz8u0=";
vendorHash = "sha256-VZzSdl8R1y7rCF2vz7e+5nAkb3wlJymNWCXwZZUvg4A=";
subPackages = [ "cmd/nebula" "cmd/nebula-cert" ];
@ -22,7 +26,7 @@ buildGoModule rec {
};
meta = with lib; {
description = "A scalable overlay networking tool with a focus on performance, simplicity and security";
description = "Overlay networking tool with a focus on performance, simplicity and security";
longDescription = ''
Nebula is a scalable overlay networking tool with a focus on performance,
simplicity and security. It lets you seamlessly connect computers
@ -39,8 +43,8 @@ buildGoModule rec {
parts.
'';
homepage = "https://github.com/slackhq/nebula";
changelog = "https://github.com/slackhq/nebula/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ Br1ght0ne numinit ];
};
}

View file

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "crowdsec";
version = "1.4.6";
version = "1.5.1";
src = fetchFromGitHub {
owner = "crowdsecurity";
repo = pname;
rev = "v${version}";
hash = "sha256-+WvpsZjb1pb8WqK0HJYncJUo6wPkKzKvBi/nLKuhSD4=";
hash = "sha256-Z2msr8I5VqY4c5DBFlh9oMg68SSexiN9pgZuJdYnXVQ=";
};
vendorHash = "sha256-FPsoufB9UDgBDIE3yUq4doBse3qgjP19ussYnMAxntk=";
vendorHash = "sha256-T0gJIJDZzzOuYGNL+b6TriQsKQnAQ6JczkiAvJo1tfc=";
nativeBuildInputs = [ installShellFiles ];

View file

@ -8,13 +8,13 @@
buildGoModule rec {
pname = "doppler";
version = "3.58.0";
version = "3.60.1";
src = fetchFromGitHub {
owner = "dopplerhq";
repo = "cli";
rev = version;
sha256 = "sha256-1cAsoaKKxSz2YhwMkfyzAyH8zFHm7YWS01/3CmcD8uY=";
sha256 = "sha256-WzR2oKBQ3GEEmOC0hhb6tcVR4GfapS0LzLCJosQo37k=";
};
vendorHash = "sha256-yuGjaUHfXCJnMvxfaSwbVAApflwfsvX2W7iEZdruMDE=";

View file

@ -0,0 +1,32 @@
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoModule rec {
pname = "go-exploitdb";
version = "0.4.5";
src = fetchFromGitHub {
owner = "vulsio";
repo = "go-exploitdb";
rev = "refs/tags/v${version}";
hash = "sha256-iBOpgeL/cLoQufla0MpQs/0icRWUj1HngnAwOcKLSsQ=";
};
vendorHash = "sha256-e+E8qcc5sRlb9clOFUrOzVwJlp3AFnZ6/lNAxaBe+hQ=";
ldflags = [
"-s"
"-w"
"-X=github.com/vulsio/go-exploitdb/config.Version=${version}"
];
meta = with lib; {
description = "Tool for searching Exploits from Exploit Databases, etc";
homepage = "https://github.com/vulsio/go-exploitdb";
changelog = "https://github.com/vulsio/go-exploitdb/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
};
}

View file

@ -1,25 +1,30 @@
{ lib
, argcomplete
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, colored
, packaging
, paramiko
, pytz
, pyyaml
, rich
, sshpubkeys
, pytestCheckHook
, python3
}:
buildPythonPackage rec {
let
py = python3.override {
packageOverrides = self: super: {
paramiko = super.paramiko.overridePythonAttrs (oldAttrs: rec {
version = "3.1.0";
src = oldAttrs.src.override {
inherit version;
hash = "sha256-aVD6ymgZrNMhnUrmlKI8eofuONCE9wwXJLDA27i3V2k=";
};
patches = [ ];
propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [ python3.pkgs.icecream ];
});
};
};
in
with py.pkgs;
buildPythonApplication rec {
pname = "ssh-mitm";
version = "3.0.2";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = pname;
repo = pname;
@ -35,6 +40,7 @@ buildPythonPackage rec {
pytz
pyyaml
rich
setuptools
sshpubkeys
];

View file

@ -202,6 +202,14 @@ core-big = stdenv.mkDerivation { #TODO: upmendex
url = "https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=1009196;filename=reproducible_exception_strings.patch;msg=5";
sha256 = "sha256-RNZoEeTcWnrLaltcYrhNIORh42fFdwMzBfxMRWVurbk=";
})
# fixes a security-issue in luatex that allows arbitrary code execution even with shell-escape disabled, see https://tug.org/~mseven/luatex.html
(fetchpatch {
name = "CVE-2023-32700.patch";
url = "https://tug.org/~mseven/luatex-files/2022/patch";
hash = "sha256-o9ENLc1ZIIOMX6MdwpBIgrR/Jdw6tYLmAyzW8i/FUbY=";
excludes = [ "build.sh" ];
stripLen = 1;
})
];
hardeningDisable = [ "format" ];

View file

@ -3698,7 +3698,7 @@ with pkgs;
ssh-key-confirmer = callPackage ../tools/networking/ssh-key-confirmer { };
ssh-mitm = with python3Packages; toPythonApplication ssh-mitm;
ssh-mitm = callPackage ../tools/security/ssh-mitm { };
sshchecker = callPackage ../tools/security/sshchecker { };
@ -7246,7 +7246,7 @@ with pkgs;
# The latest version used by elasticsearch, logstash, kibana and the the beats from elastic.
# When updating make sure to update all plugins or they will break!
elk7Version = "7.17.9";
elk7Version = "7.17.10";
elasticsearch7 = callPackage ../servers/search/elasticsearch/7.x.nix {
util-linux = util-linuxMinimal;
@ -18435,6 +18435,8 @@ with pkgs;
gocd-server = callPackage ../development/tools/continuous-integration/gocd-server { };
gopatch = callPackage ../development/tools/misc/gopatch { };
goredo = callPackage ../development/tools/build-managers/goredo { };
gotify-server = callPackage ../servers/gotify { };
@ -35711,6 +35713,8 @@ with pkgs;
inherit (darwin.apple_sdk.frameworks) IOKit;
};
go-exploitdb = callPackage ../tools/security/go-exploitdb { };
groestlcoin = libsForQt5.callPackage ../applications/blockchains/groestlcoin {
boost = boost17x;
withGui = true;

View file

@ -6162,6 +6162,20 @@ with self; {
};
};
DateRange = buildPerlPackage {
pname = "Date-Range";
version = "1.41";
src = fetchurl {
url = "mirror://cpan/authors/id/T/TM/TMTM/Date-Range-1.41.tar.gz";
hash = "sha256-v5iXSSsQHAUDh50Up+fr6QJUQ4NgGufGmpXedcvZSLk=";
};
propagatedBuildInputs = [ DateSimple ];
meta = {
description = "work with a range of dates";
license = with lib.licenses; [ gpl2Plus ];
};
};
DateSimple = buildPerlPackage {
pname = "Date-Simple";
version = "3.03";
@ -9843,17 +9857,18 @@ with self; {
FinanceQuote = buildPerlPackage {
pname = "Finance-Quote";
version = "1.49";
version = "1.55";
src = fetchurl {
url = "mirror://cpan/authors/id/E/EC/ECOCODE/Finance-Quote-1.49.tar.gz";
hash = "sha256-ldvERDumVjILNjxWYl0E83nJQ+IC9g9AoqNRUrVLv1M=";
url = "mirror://cpan/authors/id/B/BP/BPSCHUCK/Finance-Quote-1.55.tar.gz";
hash = "sha256-4uAAtnxmtq9Q1HYYWEkhEFEKVaAwqJEBfUDH3iGLdI8=";
};
propagatedBuildInputs = [ CGI DateTimeFormatStrptime HTMLTableExtract JSON JSONParse LWPProtocolHttps StringUtil TextTemplate ];
buildInputs = [ TestPod ];
buildInputs = [ DateManip DateRange DateSimple DateTime DateTimeFormatISO8601 StringUtil TestKwalitee TestPerlCritic TestPod TestPodCoverage ];
propagatedBuildInputs = [ DateTimeFormatStrptime Encode HTMLTableExtract HTMLTokeParserSimple HTMLTree HTMLTreeBuilderXPath HTTPCookies JSON IOCompress LWPProtocolHttps Readonly StringUtil SpreadsheetXLSX TextTemplate TryTiny WebScraper XMLLibXML libwwwperl ];
meta = {
homepage = "https://finance-quote.sourceforge.net/";
description = "Get stock and mutual fund quotes from various exchanges";
license = with lib.licenses; [gpl2 ];
license = with lib.licenses; [ gpl2Plus ];
maintainers = with lib.maintainers; [ nevivurn ];
};
};
@ -13086,6 +13101,22 @@ with self; {
};
};
libwwwperl = buildPerlPackage {
pname = "libwww-perl";
version = "6.70";
src = fetchurl {
url = "mirror://cpan/authors/id/S/SI/SIMBABQUE/libwww-perl-6.70.tar.gz";
hash = "sha256-NPANI0R1e5wLVa01gI1T6T19kvekZOyDf+anPFH7WWk=";
};
buildInputs = [ HTTPDaemon TestFatal TestNeeds TestRequiresInternet ];
propagatedBuildInputs = [ EncodeLocale FileListing HTMLParser HTTPCookieJar HTTPCookies HTTPDate HTTPMessage HTTPNegotiate LWPMediaTypes NetHTTP TryTiny URI WWWRobotRules ];
meta = {
homepage = "https://github.com/libwww-perl/libwww-perl";
description = "The World-Wide Web library for Perl";
license = with lib.licenses; [ artistic1 gpl1Plus ];
};
};
libxml_perl = buildPerlPackage {
pname = "libxml-perl";
version = "0.08";
@ -21611,6 +21642,22 @@ with self; {
};
};
SpreadsheetXLSX = buildPerlPackage {
pname = "Spreadsheet-XLSX";
version = "0.17";
src = fetchurl {
url = "mirror://cpan/authors/id/A/AS/ASB/Spreadsheet-XLSX-0.17.tar.gz";
hash = "sha256-M7d4knz/FjCQZbdOuMRpawNxZg0szf5FvkYFCSrO6XY=";
};
buildInputs = [ TestNoWarnings TestWarnings ];
propagatedBuildInputs = [ ArchiveZip SpreadsheetParseExcel ];
meta = {
homepage = "https://github.com/asb-capfan/Spreadsheet-XLSX";
description = "Perl extension for reading MS Excel 2007 files;";
license = with lib.licenses; [ artistic1 gpl1Plus ];
};
};
SQLAbstract = buildPerlPackage {
pname = "SQL-Abstract";
version = "2.000001";
@ -27861,6 +27908,22 @@ with self; {
};
};
WebScraper = buildPerlModule {
pname = "Web-Scraper";
version = "0.38";
src = fetchurl {
url = "mirror://cpan/authors/id/M/MI/MIYAGAWA/Web-Scraper-0.38.tar.gz";
hash = "sha256-+VtuX41/7r4RbQW/WaK3zxpR7Z0wvKgBI0MOxFZ1Q78=";
};
buildInputs = [ ModuleBuildTiny TestBase TestRequires ];
propagatedBuildInputs = [ HTMLParser HTMLSelectorXPath HTMLTagset HTMLTree HTMLTreeBuilderXPath UNIVERSALrequire URI XMLXPathEngine YAML libwwwperl ];
meta = {
homepage = "https://github.com/miyagawa/web-scraper";
description = "Web Scraping Toolkit using HTML and CSS Selectors or XPath expressions";
license = with lib.licenses; [ artistic1 gpl1Plus ];
};
};
WebServiceLinode = buildPerlModule {
pname = "WebService-Linode";
version = "0.29";

View file

@ -280,6 +280,7 @@ mapAliases ({
selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # added 2021-06-10
setuptools_scm = setuptools-scm; # added 2021-06-03
sharkiqpy = sharkiq; # added 2022-05-21
ssh-mitm = throw "ssh-mitm was removed in favor of the top-level ssh-mitm"; # added 2023-05-09
smart_open = smart-open; # added 2021-03-14
smmap2 = throw "smmap2 has been deprecated, use smmap instead."; # added 2020-03-14
somecomfort = throw "somecomfort was removed because Home Assistant switched to aiosomecomfort"; # added 2023-02-01

View file

@ -11551,8 +11551,6 @@ self: super: with self; {
sseclient-py = callPackage ../development/python-modules/sseclient-py { };
ssh-mitm = callPackage ../development/python-modules/ssh-mitm { };
sshfs = callPackage ../development/python-modules/sshfs { };
sshpubkeys = callPackage ../development/python-modules/sshpubkeys { };

View file

@ -168,10 +168,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0l3xb57zzzfxryir2ssrl6lai4pvszal54fhss50niyi3pzbjdfx";
sha256 = "0c3jjwp5zax3jsk3ckxy0af8bqcaa7j707ahv2pxp2fi2sb3n3vw";
type = "gem";
};
version = "4.1.3";
version = "4.1.5";
};
atomos = {
groups = ["default"];
@ -260,10 +260,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0hgrfxzhh9h3jrvaarxa663vzyd5y0s03310zkarbl8bcxd2iwm5";
sha256 = "06mywzjpi1bh04qwb2wzrngmbaia1mxib5kzwg62cz3j6wclg5xd";
type = "gem";
};
version = "4.1.3";
version = "4.1.5";
};
camping = {
dependencies = ["mab" "rack"];
@ -705,10 +705,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0dndngqvkm2ih3wqn5ilf9980c1cc57lqn5lywx3myalzpilq05z";
sha256 = "1x32mcpm2cl5492kd6lbjbaf17qsssmpx9kdyr7z1wcif2cwyh0g";
type = "gem";
};
version = "2.4.0";
version = "2.4.1";
};
crass = {
groups = ["default"];
@ -807,10 +807,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0qbj8lvl8lzrbpfj9612iiwxf53drb8jg1l4bd1mcqyds8lw9z9z";
sha256 = "021a7f9lmvz5d3g4zdzm99xal9w3z6wzv2wyrp3jr929nnlf7hdd";
type = "gem";
};
version = "7.5.0";
version = "7.6.0";
};
dnsruby = {
dependencies = ["simpleidn"];
@ -1089,10 +1089,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "02yn2jl0bz6kadx5851545rpqnfqd6gzbk2js9fj318jx9kl7r2m";
sha256 = "1zhids3iqxq8lcslvg49pkg3lyhw4y8ha0q3p0p2grx0dnl2kfi4";
type = "gem";
};
version = "4.1.3";
version = "4.1.5";
};
gemoji = {
groups = ["default"];
@ -1120,10 +1120,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "12hyzvy3853qrlcczmaq5p31lv16klgnkz598amia3kphgbdg5rb";
sha256 = "0q86kaw1hcyqbwbp5fbx2rlbv7wdklprf76xvxgsb8qa6dxgyv6f";
type = "gem";
};
version = "4.1.3";
version = "4.1.5";
};
git = {
dependencies = ["addressable" "rchardet"];
@ -1174,10 +1174,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1vapcxmbyfpgid5blm0m6j3g5cajhpr2317yhvfbpa2mgfwjyj4p";
sha256 = "0plr7159pfy9f5aaxygaz4shzb6y13g83r430583r9ixa6slnll3";
type = "gem";
};
version = "4.1.3";
version = "4.1.5";
};
globalid = {
dependencies = ["activesupport"];
@ -1196,10 +1196,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1q2mjah6w9lxc6b4ys3rwclqf1fy55x4jjxp7rn2bz6whq768b80";
sha256 = "186fj7c6wz90y7h569qm25hvyarsslj1mkq0fz9mv7iyj64d9czk";
type = "gem";
};
version = "4.1.3";
version = "4.1.5";
};
gpgme = {
dependencies = ["mini_portile2"];
@ -1966,10 +1966,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1xz5mrp103i95r4wfxny1f5x7h7vgnxv2p9cdkmmdjzrsk23rijs";
sha256 = "0aarly8kl587d100n81cphks5vp2rnkm8dnf69p0dr7k78dasas3";
type = "gem";
};
version = "4.0.0";
version = "4.1.1";
};
link-header-parser = {
groups = ["default"];
@ -2019,10 +2019,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1mi4ia13fisc97fzd8xcd9wkjdki7zfbmdn1xkdzplicir68gyp8";
sha256 = "1p744kjpb5zk2ihklbykzii77alycjc04vpnm2ch2f3cp65imlj3";
type = "gem";
};
version = "2.20.0";
version = "2.21.3";
};
mab = {
groups = ["default"];
@ -2153,10 +2153,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1af4yarhbbx62f7qsmgg5fynrik0s36wjy3difkawy536xg343mp";
sha256 = "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6";
type = "gem";
};
version = "2.8.1";
version = "2.8.2";
};
minima = {
dependencies = ["jekyll" "jekyll-feed" "jekyll-seo-tag"];
@ -2194,10 +2194,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "172ky0r1jfcm3xyg067pia7k1lhc15vw9svv93max120gcdbrvji";
sha256 = "06n7556vxr3awh92xy1k5bli98bvq4pjm08mnl68ay4fzln7lcsg";
type = "gem";
};
version = "1.7.0";
version = "1.7.1";
};
multi_json = {
groups = ["default"];
@ -2361,10 +2361,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0fnw0z8zl8b5k35g9m5hhc1g4s6ajzjinhyxnqjrx7l7p07fw71v";
sha256 = "10zmnzk0b6v48s9nyrgnidcinn06m52ph3mzzcjh5q7xrzii3mb8";
type = "gem";
};
version = "1.14.3";
version = "1.15.1";
};
octokit = {
dependencies = ["faraday" "sawyer"];
@ -2447,10 +2447,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0i96sa4av0zg85dmwbvjgmhgspbv98a057w5bg20qq1zcr5v31kv";
sha256 = "06g5ajjvm961yhqj4mm0j05sfz8fq0ybqcd5i37cyabm7jxxj4d4";
type = "gem";
};
version = "4.1.3";
version = "4.1.5";
};
parallel = {
groups = ["default"];
@ -2478,10 +2478,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0mzy0s4cdqm5nvgyj55idc2pv51k3zlgw6sa7825dcyrk2ihcx0c";
sha256 = "146x3jhipg55q9ig7l0x8sryanz1zfhai2vszmih7wmf8zi043gl";
type = "gem";
};
version = "1.1.0";
version = "1.1.1";
};
pastel = {
dependencies = ["tty-color"];
@ -3006,10 +3006,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0l46lw5gfj3mcm982wpmx7br4rs466gyislv0hfwcsk8dxhv1zkw";
sha256 = "0013mnzj6ql3v8nif7fm8n2832jnwa46azync6azsg9d4iblrfmy";
type = "gem";
};
version = "1.50.2";
version = "1.51.0";
};
rubocop-ast = {
dependencies = ["parser"];
@ -3017,10 +3017,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0n2gsafg6p7nr1z8i1hkvp2qqkkbg842ba183dnl0h08xd9ms6q5";
sha256 = "0gs8zjigzdqj0kcmmrhvd4zavwr6kz6h9qvrh9m7bhy56f4aqljs";
type = "gem";
};
version = "1.28.0";
version = "1.28.1";
};
rubocop-performance = {
dependencies = ["rubocop" "rubocop-ast"];
@ -3216,20 +3216,20 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1wizqirxln8f2d4aihqizfbyzlssnan058zkqh24siynk38567lg";
sha256 = "0n6hiim82lfydzv71lgzmkyacsbm3q5nw7ixavprci5wrl9zwls7";
type = "gem";
};
version = "0.18.0";
version = "0.19.1";
};
sequel = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1qajss2mc8rw9pxgfjl4mxacnss5xnr603ydms0knmm6cb61vlb4";
sha256 = "0p6z0mdglwynlcz4mnlk1mz8vxsr41id1pf0dfrbgnwpv8zvlika";
type = "gem";
};
version = "5.67.0";
version = "5.68.0";
};
sequel_pg = {
dependencies = ["pg" "sequel"];
@ -3353,10 +3353,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1i47n6nkyigkyag00yqf9f3nj11bm1lb0ds5nkvkdvm7lxbna5jq";
sha256 = "0h95kr5529qv786mfk8r2jjdsdi6v7v3k3dpz69mrcc9i0vpdd37";
type = "gem";
};
version = "1.6.2";
version = "1.6.3";
};
string_inflection = {
groups = ["default"];
@ -3416,10 +3416,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "07k5wr2ypsmsbyc9d1plhdki4xr7vvggld8r1i49iljkrpx5nbqc";
sha256 = "1jj8lny5hp8gm920k73r6xpb40j5mpiw1dcr8g5id4hxjggkw8by";
type = "gem";
};
version = "0.10.0";
version = "0.10.1";
};
terminal-table = {
groups = ["default"];
@ -3436,10 +3436,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0inl77jh4ia03jw3iqm5ipr76ghal3hyjrd6r8zqsswwvi9j2xdi";
sha256 = "0k7j2wn14h1pl4smibasw0bp66kg626drxb59z7rzflch99cd4rg";
type = "gem";
};
version = "1.2.1";
version = "1.2.2";
};
thrift = {
groups = ["default"];