Merge master into staging-next
This commit is contained in:
commit
e75e21e053
37 changed files with 665 additions and 53 deletions
|
@ -116,6 +116,13 @@
|
|||
<link xlink:href="options.html#opt-services.kea">services.kea</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://owncast.online/">owncast</link>,
|
||||
self-hosted video live streaming solution. Available at
|
||||
<link xlink:href="options.html#opt-services.owncast">services.owncast</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://sr.ht">sourcehut</link>, a
|
||||
|
|
|
@ -39,6 +39,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
|
||||
- [Kea](https://www.isc.org/kea/), ISCs 2nd generation DHCP and DDNS server suite. Available at [services.kea](options.html#opt-services.kea).
|
||||
|
||||
- [owncast](https://owncast.online/), self-hosted video live streaming solution. Available at [services.owncast](options.html#opt-services.owncast).
|
||||
|
||||
- [sourcehut](https://sr.ht), a collection of tools useful for software development. Available as [services.sourcehut](options.html#opt-services.sourcehut.enable).
|
||||
|
||||
- [ucarp](https://download.pureftpd.org/pub/ucarp/README), an userspace implementation of the Common Address Redundancy Protocol (CARP). Available as [networking.ucarp](options.html#opt-networking.ucarp.enable).
|
||||
|
|
|
@ -560,6 +560,7 @@
|
|||
./services/misc/octoprint.nix
|
||||
./services/misc/ombi.nix
|
||||
./services/misc/osrm.nix
|
||||
./services/misc/owncast.nix
|
||||
./services/misc/packagekit.nix
|
||||
./services/misc/paperless-ng.nix
|
||||
./services/misc/parsoid.nix
|
||||
|
|
98
nixos/modules/services/misc/owncast.nix
Normal file
98
nixos/modules/services/misc/owncast.nix
Normal file
|
@ -0,0 +1,98 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
with lib;
|
||||
let cfg = config.services.owncast;
|
||||
in {
|
||||
|
||||
options.services.owncast = {
|
||||
|
||||
enable = mkEnableOption "owncast";
|
||||
|
||||
dataDir = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/owncast";
|
||||
description = ''
|
||||
The directory where owncast stores its data files. If left as the default value this directory will automatically be created before the owncast server starts, otherwise the sysadmin is responsible for ensuring the directory exists with appropriate ownership and permissions.
|
||||
'';
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Open the appropriate ports in the firewall for owncast.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "owncast";
|
||||
description = "User account under which owncast runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "owncast";
|
||||
description = "Group under which owncast runs.";
|
||||
};
|
||||
|
||||
listen = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
example = "0.0.0.0";
|
||||
description = "The IP address to bind the owncast web server to.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8080;
|
||||
description = ''
|
||||
TCP port where owncast web-gui listens.
|
||||
'';
|
||||
};
|
||||
|
||||
rtmp-port = mkOption {
|
||||
type = types.port;
|
||||
default = 1935;
|
||||
description = ''
|
||||
TCP port where owncast rtmp service listens.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd.services.owncast = {
|
||||
description = "A self-hosted live video and web chat server";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = mkMerge [
|
||||
{
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
ExecStart = "${pkgs.owncast}/bin/owncast -webserverport ${toString cfg.port} -rtmpport ${toString cfg.rtmp-port} -webserverip ${cfg.listen}";
|
||||
Restart = "on-failure";
|
||||
}
|
||||
(mkIf (cfg.dataDir == "/var/lib/owncast") {
|
||||
StateDirectory = "owncast";
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
users.users = mkIf (cfg.user == "owncast") {
|
||||
owncast = {
|
||||
isSystemUser = true;
|
||||
group = cfg.group;
|
||||
description = "owncast system user";
|
||||
};
|
||||
};
|
||||
|
||||
users.groups = mkIf (cfg.group == "owncast") { owncast = { }; };
|
||||
|
||||
networking.firewall =
|
||||
mkIf cfg.openFirewall { allowedTCPPorts = [ cfg.rtmp-port ] ++ optional (cfg.listen != "127.0.0.1") cfg.port; };
|
||||
|
||||
};
|
||||
meta = { maintainers = with lib.maintainers; [ MayNiklas ]; };
|
||||
}
|
|
@ -327,6 +327,7 @@ in
|
|||
openstack-image-metadata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).metadata or {};
|
||||
openstack-image-userdata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).userdata or {};
|
||||
opentabletdriver = handleTest ./opentabletdriver.nix {};
|
||||
owncast = handleTest ./owncast.nix {};
|
||||
image-contents = handleTest ./image-contents.nix {};
|
||||
orangefs = handleTest ./orangefs.nix {};
|
||||
os-prober = handleTestOn ["x86_64-linux"] ./os-prober.nix {};
|
||||
|
|
21
nixos/tests/owncast.nix
Normal file
21
nixos/tests/owncast.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ system ? builtins.currentSystem, config ? { }
|
||||
, pkgs ? import ../.. { inherit system config; } }:
|
||||
|
||||
with import (nixpkgs + "/nixos/lib/testing-python.nix") { inherit system; };
|
||||
makeTest {
|
||||
name = "owncast";
|
||||
meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ MayNiklas ]; };
|
||||
|
||||
nodes = {
|
||||
client = { ... }: {
|
||||
environment.systemPackages = [ curl ];
|
||||
services.owncast = { enable = true; };
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
client.wait_for_unit("owncast.service")
|
||||
client.succeed("curl localhost:8080/api/status")
|
||||
'';
|
||||
}
|
|
@ -2,23 +2,19 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "joshuto";
|
||||
version = "0.9.0";
|
||||
version = "0.9.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kamiyaa";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "08d6h7xwcgycw5bdzwwc6aaikcrw3yc7inkiydgml9q261kql7zl";
|
||||
# upstream includes an outdated Cargo.lock that stops cargo from compiling
|
||||
postFetch = ''
|
||||
mkdir -p $out
|
||||
tar xf $downloadedFile --strip=1 -C $out
|
||||
substituteInPlace $out/Cargo.lock \
|
||||
--replace 0.8.6 ${version}
|
||||
'';
|
||||
sha256 = "sha256-+qKOvFoEF/gZL4ijL8lIRWE9ZWJM2eBlk29Lk46jAfQ=";
|
||||
};
|
||||
|
||||
cargoSha256 = "1scrqm7fs8y7anfiigimj7y5rjxcc2qvrxiq8ai7k5cwfc4v1ghm";
|
||||
# upstream includes an outdated Cargo.lock that stops cargo from compiling
|
||||
cargoPatches = [ ./fix-cargo-lock.patch ];
|
||||
|
||||
cargoSha256 = "sha256-JlekxU9pMkHNsIcH3+7b2I6MYUlxRqNX+0wwyVrQMAE=";
|
||||
|
||||
buildInputs = lib.optional stdenv.isDarwin SystemConfiguration;
|
||||
|
||||
|
|
11
pkgs/applications/misc/joshuto/fix-cargo-lock.patch
Normal file
11
pkgs/applications/misc/joshuto/fix-cargo-lock.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -512,7 +512,7 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
|
||||
|
||||
[[package]]
|
||||
name = "joshuto"
|
||||
-version = "0.9.0"
|
||||
+version = "0.9.1"
|
||||
dependencies = [
|
||||
"alphanumeric-sort",
|
||||
"chrono",
|
|
@ -6,6 +6,6 @@
|
|||
|
||||
callPackage ./generic.nix {
|
||||
inherit buildGoPackage nvidia_x11 nvidiaGpuSupport;
|
||||
version = "1.0.10";
|
||||
sha256 = "1yd4j35dmxzg9qapqyq3g3hnhxi5c4f57q43xbim8255bjyn94f0";
|
||||
version = "1.0.11";
|
||||
sha256 = "15h7w020p576zl91s5mr4npcmngrqqfj9xzlx6bk9i1cp6h4w0jy";
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
callPackage ./genericModule.nix {
|
||||
inherit buildGoModule nvidia_x11 nvidiaGpuSupport;
|
||||
version = "1.1.4";
|
||||
sha256 = "182f3sxw751s8qg16vbssplhl92i9gshgzvflwwvnxraz2795y7l";
|
||||
vendorSha256 = "1nddknnsvb05sapbj1c52cv2fmibvdg48f88malxqblzw33wfziq";
|
||||
version = "1.1.5";
|
||||
sha256 = "03gxh12bd5mj1l4q3xilil806dsqaqmz93ff7ysf441frgkx3iy3";
|
||||
vendorSha256 = "0rfd22rf76mwj489zhswah4g3dhhz6davm336xgm9dbnyaz9d8r0";
|
||||
}
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "chatterino2";
|
||||
version = "2.3.0";
|
||||
version = "2.3.4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Chatterino";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0x12zcrbkxn2nn0hqkj1amrxv4q032id282cajzsx7by970r1shd";
|
||||
sha256 = "sha256-ZmUM56+YNH98J3XE/mWOOIfb0qBld2n4iuHpImbrU4o=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
nativeBuildInputs = [ qmake pkg-config wrapQtAppsHook ];
|
||||
|
|
|
@ -91,7 +91,11 @@ stdenv.mkDerivation rec {
|
|||
inherit (python.sourceVersion) major minor; # Should be changed in case of PyPy
|
||||
});
|
||||
|
||||
postPatch = lib.optionalString (cudaSupport && lib.versionAtLeast cudatoolkit.version "9.0") ''
|
||||
postPatch = ''
|
||||
substituteInPlace src/caffe/util/io.cpp --replace \
|
||||
'SetTotalBytesLimit(kProtoReadBytesLimit, 536870912)' \
|
||||
'SetTotalBytesLimit(kProtoReadBytesLimit)'
|
||||
'' + lib.optionalString (cudaSupport && lib.versionAtLeast cudatoolkit.version "9.0") ''
|
||||
# CUDA 9.0 doesn't support sm_20
|
||||
sed -i 's,20 21(20) ,,' cmake/Cuda.cmake
|
||||
'';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, stdenv, fetchgit, fetchFromGitHub, cmake
|
||||
, fetchpatch
|
||||
, openblas, blas, lapack, opencv3, libzip, boost, protobuf, mpi
|
||||
, onebitSGDSupport ? false
|
||||
, cudaSupport ? false, addOpenGLRunpath, cudatoolkit, nvidia_x11
|
||||
|
@ -28,6 +29,26 @@ in stdenv.mkDerivation rec {
|
|||
sha256 = "18l9k7s966a26ywcf7flqyhm61788pcb9fj3wk61jrmgkhy2pcns";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix build with protobuf 3.18+
|
||||
# Remove with onnx submodule bump to 1.9+
|
||||
(fetchpatch {
|
||||
url = "https://github.com/onnx/onnx/commit/d3bc82770474761571f950347560d62a35d519d7.patch";
|
||||
extraPrefix = "Source/CNTKv2LibraryDll/proto/onnx/onnx_repo/";
|
||||
stripLen = 1;
|
||||
sha256 = "00raqj8wx30b06ky6cdp5vvc1mrzs7hglyi6h58hchw5lhrwkzxp";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Fix build with protobuf 3.18+
|
||||
substituteInPlace Source/CNTKv2LibraryDll/Serialization.cpp \
|
||||
--replace 'SetTotalBytesLimit(INT_MAX, INT_MAX)' \
|
||||
'SetTotalBytesLimit(INT_MAX)' \
|
||||
--replace 'SetTotalBytesLimit(limit, limit)' \
|
||||
'SetTotalBytesLimit(limit)'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ] ++ lib.optional cudaSupport addOpenGLRunpath;
|
||||
|
||||
# Force OpenMPI to use g++ in PATH.
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
import ./generic.nix {
|
||||
major_version = "4";
|
||||
minor_version = "13";
|
||||
patch_version = "0-rc2";
|
||||
src = fetchTarball {
|
||||
url = "https://caml.inria.fr/pub/distrib/ocaml-4.13/ocaml-4.13.0~rc2.tar.xz";
|
||||
sha256 = "1w4sdrs5s1bhbisgz44ysi2j1n13qd3slgs34ppglpwmqqw6ply2";
|
||||
};
|
||||
patch_version = "0";
|
||||
sha256 = "sha256:1f7gnndzs6qcyy2gnzalnhm808pifxhvxg2qp5dnsziz6li7x303";
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
, libGL
|
||||
, libGLU
|
||||
, libjpeg
|
||||
, xorg
|
||||
, ncurses
|
||||
, libpng, libtool, mpfr, openssl, pango, poppler
|
||||
, readline, sqlite
|
||||
|
@ -96,6 +97,9 @@ stdenv.mkDerivation rec {
|
|||
|
||||
enableParallelBuilding = false;
|
||||
|
||||
postFixup = lib.optionalString stdenv.isDarwin ''
|
||||
wrapProgram $out/bin/drracket --prefix DYLD_LIBRARY_PATH : ${xorg.libX11}/lib
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A programmable programming language";
|
||||
|
@ -112,6 +116,5 @@ stdenv.mkDerivation rec {
|
|||
license = with licenses; [ asl20 /* or */ mit ];
|
||||
maintainers = with maintainers; [ kkallio henrytill vrthra ];
|
||||
platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-linux" ];
|
||||
broken = stdenv.isDarwin; # No support yet for setting FFI lookup path
|
||||
};
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
, autoPatchelfHook
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, cmake
|
||||
, git
|
||||
, protobuf
|
||||
|
@ -10,17 +11,29 @@
|
|||
, opencv
|
||||
, unzip
|
||||
, shellcheck
|
||||
, srcOnly
|
||||
, python
|
||||
, enablePython ? false
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
onnx_src = fetchFromGitHub {
|
||||
owner = "onnx";
|
||||
repo = "onnx";
|
||||
rev = "v1.8.1";
|
||||
sha256 = "+1zNnZ4lAyVYRptfk0PV7koIX9FqcfD1Ah33qj/G2rA=";
|
||||
onnx_src = srcOnly {
|
||||
name = "onnx-patched";
|
||||
src = fetchFromGitHub {
|
||||
owner = "onnx";
|
||||
repo = "onnx";
|
||||
rev = "v1.8.1";
|
||||
sha256 = "+1zNnZ4lAyVYRptfk0PV7koIX9FqcfD1Ah33qj/G2rA=";
|
||||
};
|
||||
patches = [
|
||||
# Fix build with protobuf 3.18+
|
||||
# Remove with onnx 1.9 release
|
||||
(fetchpatch {
|
||||
url = "https://github.com/onnx/onnx/commit/d3bc82770474761571f950347560d62a35d519d7.patch";
|
||||
sha256 = "0vdsrklkzhdjaj8wdsl4icn93q3961g8dx35zvff0nhpr08wjb7y";
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
in
|
||||
|
|
|
@ -14,6 +14,15 @@ stdenv.mkDerivation rec {
|
|||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
# https://github.com/valhalla/valhalla/issues/2119
|
||||
postPatch = ''
|
||||
for f in valhalla/mjolnir/transitpbf.h \
|
||||
src/mjolnir/valhalla_query_transit.cc; do
|
||||
substituteInPlace $f --replace 'SetTotalBytesLimit(limit, limit)' \
|
||||
'SetTotalBytesLimit(limit)'
|
||||
done
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
buildInputs = [
|
||||
zlib curl protobuf prime-server boost sqlite libspatialite
|
||||
|
|
39
pkgs/development/python-modules/aiopvapi/default.nix
Normal file
39
pkgs/development/python-modules/aiopvapi/default.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{ lib
|
||||
, aiohttp
|
||||
, async-timeout
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, pytestCheckHook
|
||||
, pythonOlder
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aiopvapi";
|
||||
version = "1.6.14";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.5";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "02bl7q166j6rb8av9n1jz11xlwhrzmbkjq70mwr86qaj63pcxrak";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
aiohttp
|
||||
async-timeout
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "aiopvapi" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python API for the PowerView API";
|
||||
homepage = "https://github.com/sander76/aio-powerview-api";
|
||||
license = with licenses; [ bsd3 ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
53
pkgs/development/python-modules/aiowatttime/default.nix
Normal file
53
pkgs/development/python-modules/aiowatttime/default.nix
Normal file
|
@ -0,0 +1,53 @@
|
|||
{ lib
|
||||
, aiohttp
|
||||
, aresponses
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, poetry-core
|
||||
, pytest-aiohttp
|
||||
, pytest-asyncio
|
||||
, pytestCheckHook
|
||||
, pythonOlder
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aiowatttime";
|
||||
version = "0.1.1";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bachya";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1614p5ca7x9ipz7dgwhiz83dfwn6hyliawa8pr2j9y2kn8cg2sdm";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
aiohttp
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
aresponses
|
||||
pytest-aiohttp
|
||||
pytest-asyncio
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
# Ignore the examples directory as the files are prefixed with test_
|
||||
disabledTestPaths = [ "examples/" ];
|
||||
|
||||
pythonImportsCheck = [ "aiowatttime" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python library for interacting with WattTime";
|
||||
homepage = "https://github.com/bachya/aiowatttime";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
39
pkgs/development/python-modules/eternalegypt/default.nix
Normal file
39
pkgs/development/python-modules/eternalegypt/default.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{ lib
|
||||
, aiohttp
|
||||
, attrs
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, pythonOlder
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "eternalegypt";
|
||||
version = "0.0.13";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "amelchio";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0wi2cqd81irqm873npkqg3mvdrb57idqdsp8qw8h0s7lk0kil1wi";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
aiohttp
|
||||
attrs
|
||||
];
|
||||
|
||||
# Project has no tests
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "eternalegypt" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python API for Netgear LTE modems";
|
||||
homepage = "https://github.com/amelchio/eternalegypt";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
36
pkgs/development/python-modules/iotawattpy/default.nix
Normal file
36
pkgs/development/python-modules/iotawattpy/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, httpx
|
||||
, pythonOlder
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "iotawattpy";
|
||||
version = "0.1.0";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "1pyxm87lvd6zy0rx7r9jivk2li267r3xr0b9p6vf0v0vp9fmgsw3";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
httpx
|
||||
];
|
||||
|
||||
# Project doesn't tag releases or ship the tests with PyPI
|
||||
# https://github.com/gtdiehl/iotawattpy/issues/14
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "iotawattpy" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python interface for the IoTaWatt device";
|
||||
homepage = "https://github.com/gtdiehl/iotawattpy";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, marshmallow
|
||||
, marshmallow-enum
|
||||
, pytestCheckHook
|
||||
, pythonOlder
|
||||
, typeguard
|
||||
, typing-inspect
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "marshmallow-dataclass";
|
||||
version = "8.5.3";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lovasoa";
|
||||
repo = "marshmallow_dataclass";
|
||||
rev = "v${version}";
|
||||
sha256 = "0mngkjfs2nxxr0y77n429hb22rmjxbnn95j4vwqr9y6q16bqxs0w";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
marshmallow
|
||||
typing-inspect
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
marshmallow-enum
|
||||
pytestCheckHook
|
||||
typeguard
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "marshmallow_dataclass" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Automatic generation of marshmallow schemas from dataclasses";
|
||||
homepage = "https://github.com/lovasoa/marshmallow_dataclass";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
45
pkgs/development/python-modules/p1monitor/default.nix
Normal file
45
pkgs/development/python-modules/p1monitor/default.nix
Normal file
|
@ -0,0 +1,45 @@
|
|||
{ lib
|
||||
, aiohttp
|
||||
, aresponses
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, poetry-core
|
||||
, pythonOlder
|
||||
, yarl
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "p1monitor";
|
||||
version = "1.0.0";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "klaasnicolaas";
|
||||
repo = "python-p1monitor";
|
||||
rev = "v${version}";
|
||||
sha256 = "1xfr097hmjppp6cfdvfjypxmr1sb9dasq1s3np2vd5d93w0p5123";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
aiohttp
|
||||
yarl
|
||||
];
|
||||
|
||||
# Project has no tests
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "p1monitor" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python client for the P1 Monitor";
|
||||
homepage = "https://github.com/klaasnicolaas/python-p1monitor";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
|
@ -8,14 +8,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyupgrade";
|
||||
version = "2.26.0";
|
||||
version = "2.27.0";
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "asottile";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-fXDBozMZbvMkdqafvPQrCI26OjQ/2Rx6OMQs9X2Q55s=";
|
||||
sha256 = "1j14m4mdvpq740bxz3mhs5k02jfp425xig4yb13drx37p4yyl9zn";
|
||||
};
|
||||
|
||||
checkInputs = [ pytestCheckHook ];
|
||||
|
|
68
pkgs/development/python-modules/renault-api/default.nix
Normal file
68
pkgs/development/python-modules/renault-api/default.nix
Normal file
|
@ -0,0 +1,68 @@
|
|||
{ lib
|
||||
, aiohttp
|
||||
, aioresponses
|
||||
, buildPythonPackage
|
||||
, click
|
||||
, dateparser
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, marshmallow-dataclass
|
||||
, poetry-core
|
||||
, pyjwt
|
||||
, pythonOlder
|
||||
, pytest-asyncio
|
||||
, pytestCheckHook
|
||||
, tabulate
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "renault-api";
|
||||
version = "0.1.4";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hacf-fr";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "049kh63yk0r0falqbl5akcwgzqjrkqqhf9y537rrlzc85ihf28b8";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
aiohttp
|
||||
click
|
||||
dateparser
|
||||
marshmallow-dataclass
|
||||
pyjwt
|
||||
tabulate
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
aioresponses
|
||||
pytest-asyncio
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
patches = [
|
||||
# Switch to poetry-core, https://github.com/hacf-fr/renault-api/pull/371
|
||||
(fetchpatch {
|
||||
name = "switch-to-poetry-core.patch";
|
||||
url = "https://github.com/hacf-fr/renault-api/commit/5457a612b9ff9f323e8449cbe9dbce465bd65a79.patch";
|
||||
sha256 = "0ds9m4j2qpv0nyg9p8dk9klnarl8wckwclddgnii6h47qci362yy";
|
||||
})
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "renault_api" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python library to interact with the Renault API";
|
||||
homepage = "https://github.com/hacf-fr/renault-api";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
}
|
|
@ -1,15 +1,34 @@
|
|||
{ lib, fetchPypi, buildPythonPackage, pythonAtLeast, intervaltree, pyflakes, requests, lxml, google-i18n-address
|
||||
, pycountry, html5lib, six, kitchen, pypdf2, dict2xml, weasyprint, pyyaml, jinja2, configargparse, appdirs
|
||||
{ lib
|
||||
, fetchPypi
|
||||
, buildPythonPackage
|
||||
, pythonOlder
|
||||
, intervaltree
|
||||
, pyflakes
|
||||
, requests
|
||||
, lxml
|
||||
, google-i18n-address
|
||||
, pycountry
|
||||
, html5lib
|
||||
, six
|
||||
, kitchen
|
||||
, pypdf2
|
||||
, dict2xml
|
||||
, weasyprint
|
||||
, pyyaml
|
||||
, jinja2
|
||||
, configargparse
|
||||
, appdirs
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "xml2rfc";
|
||||
version = "3.9.1";
|
||||
disabled = pythonAtLeast "3.9";
|
||||
version = "3.10.0";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "76cee167e81fc3cc0e0cc696fe58cadd039e19a774c8f4d2e5c0fea724c7aaca";
|
||||
sha256 = "sha256-DJjGQAYFhXjAiJhWzxpQ0jRUSrnsNCcNz1KfPEjBoKE=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -31,12 +50,18 @@ buildPythonPackage rec {
|
|||
appdirs
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace requirements.txt \
|
||||
--replace "jinja2>=2.11,<3.0" "jinja2>=2.11"
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d)
|
||||
'';
|
||||
|
||||
# lxml tries to fetch from the internet
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "xml2rfc" ];
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "ytmusicapi";
|
||||
version = "0.19.2";
|
||||
version = "0.19.3";
|
||||
|
||||
disabled = isPy27;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-Vmf3eZpeRPDYWy6fc8VRYsQZJrwwX3KTs0njfPy6HRE=";
|
||||
sha256 = "dfd0271f7177173cea9c255730151a10a2fe4a32f9accd2fe31e7645936c90c5";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "cutter";
|
||||
version = "2.0.2";
|
||||
version = "2.0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rizinorg";
|
||||
repo = "cutter";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-CVVUXx6wt9vH3B7NrrlRGnOIrhXQPjV7GmX3O+KtMSM=";
|
||||
sha256 = "sha256-OC04d3j8Dfsob1dUjNBc1pSQFxJlexzWJ4v0V3QNkno=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
|
|
@ -23,11 +23,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rizin";
|
||||
version = "0.2.1";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/rizinorg/rizin/releases/download/v${version}/rizin-src-v${version}.tar.xz";
|
||||
sha256 = "sha256-lxVsPI+qLenZ0pelvxtHlQ6fhWdQeqoEEHrUGZ5Rdmg=";
|
||||
sha256 = "sha256-+XW12VIaRfRkLc3Li6ItF4VQfWLNRvxZW2VGtxVYJxY=";
|
||||
};
|
||||
|
||||
mesonFlags = [
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "system76-power";
|
||||
version = "1.1.16";
|
||||
version = "1.1.17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pop-os";
|
||||
repo = "system76-power";
|
||||
rev = version;
|
||||
sha256 = "sha256-OtrhvUkNNgg6KlrqjwiBKL4zuQZBWevb0xgtSlEW2rQ=";
|
||||
sha256 = "sha256-9ndukZPNB0qtU0hA9eUYpiAC8Tw1eF16W+sVU7XKvsg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ dbus libusb1 ];
|
||||
|
||||
cargoSha256 = "sha256-ImACDbnUbwc0ZXgF3xxzes8+vUjt76B1xxgqzhgAYX4=";
|
||||
cargoSha256 = "sha256-6mtBY77d2WAwTpj+g0KVpW/n39uanAL2GNHWC8Qbtqk=";
|
||||
|
||||
postInstall = ''
|
||||
install -D -m 0644 data/system76-power.conf $out/etc/dbus-1/system.d/system76-power.conf
|
||||
|
|
|
@ -27,12 +27,12 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rabbitmq-server";
|
||||
version = "3.9.4";
|
||||
version = "3.9.6";
|
||||
|
||||
# when updating, consider bumping elixir version in all-packages.nix
|
||||
src = fetchurl {
|
||||
url = "https://github.com/rabbitmq/rabbitmq-server/releases/download/v${version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-L2ftgdk7QmWl3iQR52G4SwZyI4NURybVMQ1WtcHPvHE=";
|
||||
sha256 = "sha256-YCVOMVsbOMczpZi02Ywd6M+AXrd5AMweCYn1WcyRHSw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip xmlto docbook_xml_dtd_45 docbook_xsl zip rsync ];
|
||||
|
|
|
@ -380,7 +380,7 @@
|
|||
"hue" = ps: with ps; [ aiohue ];
|
||||
"huisbaasje" = ps: with ps; [ huisbaasje-client ];
|
||||
"humidifier" = ps: with ps; [ ];
|
||||
"hunterdouglas_powerview" = ps: with ps; [ ]; # missing inputs: aiopvapi
|
||||
"hunterdouglas_powerview" = ps: with ps; [ aiopvapi ];
|
||||
"hvv_departures" = ps: with ps; [ pygti ];
|
||||
"hydrawise" = ps: with ps; [ hydrawiser ];
|
||||
"hyperion" = ps: with ps; [ hyperion-py ];
|
||||
|
@ -411,7 +411,7 @@
|
|||
"intesishome" = ps: with ps; [ pyintesishome ];
|
||||
"ios" = ps: with ps; [ aiohttp-cors ifaddr zeroconf ];
|
||||
"iota" = ps: with ps; [ ]; # missing inputs: pyota
|
||||
"iotawatt" = ps: with ps; [ ]; # missing inputs: iotawattpy
|
||||
"iotawatt" = ps: with ps; [ iotawattpy ];
|
||||
"iperf3" = ps: with ps; [ ]; # missing inputs: iperf3
|
||||
"ipma" = ps: with ps; [ pyipma ];
|
||||
"ipp" = ps: with ps; [ pyipp ];
|
||||
|
@ -564,7 +564,7 @@
|
|||
"netatmo" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pyatmo ];
|
||||
"netdata" = ps: with ps; [ netdata ];
|
||||
"netgear" = ps: with ps; [ ]; # missing inputs: pynetgear
|
||||
"netgear_lte" = ps: with ps; [ ]; # missing inputs: eternalegypt
|
||||
"netgear_lte" = ps: with ps; [ eternalegypt ];
|
||||
"netio" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pynetio
|
||||
"network" = ps: with ps; [ aiohttp-cors ifaddr ];
|
||||
"neurio_energy" = ps: with ps; [ ]; # missing inputs: neurio
|
||||
|
@ -630,7 +630,7 @@
|
|||
"ovo_energy" = ps: with ps; [ ovoenergy ];
|
||||
"owntracks" = ps: with ps; [ pynacl pyturbojpeg aiohttp-cors hass-nabucasa paho-mqtt ];
|
||||
"ozw" = ps: with ps; [ aiohttp-cors paho-mqtt python-openzwave-mqtt ];
|
||||
"p1_monitor" = ps: with ps; [ ]; # missing inputs: p1monitor
|
||||
"p1_monitor" = ps: with ps; [ p1monitor ];
|
||||
"panasonic_bluray" = ps: with ps; [ ]; # missing inputs: panacotta
|
||||
"panasonic_viera" = ps: with ps; [ ]; # missing inputs: panasonic_viera
|
||||
"pandora" = ps: with ps; [ pexpect ];
|
||||
|
@ -703,7 +703,7 @@
|
|||
"remember_the_milk" = ps: with ps; [ httplib2 ]; # missing inputs: RtmAPI
|
||||
"remote" = ps: with ps; [ ];
|
||||
"remote_rpi_gpio" = ps: with ps; [ ]; # missing inputs: gpiozero
|
||||
"renault" = ps: with ps; [ ]; # missing inputs: renault-api
|
||||
"renault" = ps: with ps; [ renault-api ];
|
||||
"repetier" = ps: with ps; [ ]; # missing inputs: pyrepetier
|
||||
"rest" = ps: with ps; [ jsonpath xmltodict ];
|
||||
"rest_command" = ps: with ps; [ ];
|
||||
|
|
|
@ -430,6 +430,7 @@ in with py.pkgs; buildPythonApplication rec {
|
|||
"hue"
|
||||
"huisbaasje"
|
||||
"humidifier"
|
||||
"hunterdouglas_powerview"
|
||||
"hvv_departures"
|
||||
"hyperion"
|
||||
"ialarm"
|
||||
|
@ -545,6 +546,7 @@ in with py.pkgs; buildPythonApplication rec {
|
|||
"ovo_energy"
|
||||
"owntracks"
|
||||
"ozw"
|
||||
"p1_monitor"
|
||||
"panel_custom"
|
||||
"panel_iframe"
|
||||
"persistent_notification"
|
||||
|
@ -575,6 +577,7 @@ in with py.pkgs; buildPythonApplication rec {
|
|||
"recorder"
|
||||
"reddit"
|
||||
"remote"
|
||||
"renault"
|
||||
"rest"
|
||||
"rest_command"
|
||||
"rflink"
|
||||
|
|
59
pkgs/servers/owncast/default.nix
Normal file
59
pkgs/servers/owncast/default.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
{ lib, buildGoModule, fetchFromGitHub, nixosTests, bash, which, ffmpeg, makeWrapper, coreutils, ... }:
|
||||
|
||||
buildGoModule rec {
|
||||
|
||||
pname = "owncast";
|
||||
version = "0.0.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "owncast";
|
||||
repo = "owncast";
|
||||
rev = "v${version}";
|
||||
sha256 = "0md4iafa767yxkwh6z8zpcjv9zd79ql2wapx9vzyd973ksvrdaw2";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-bH2CWIgpOS974/P98n0R9ebGTJ0YoqPlH8UmxSYNHeM=";
|
||||
|
||||
propagatedBuildInputs = [ ffmpeg ];
|
||||
|
||||
buildInputs = [ makeWrapper ];
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p $out
|
||||
cp -r $src/{static,webroot} $out
|
||||
'';
|
||||
|
||||
postInstall = let
|
||||
|
||||
setupScript = ''
|
||||
[ ! -d "$PWD/webroot" ] && (
|
||||
${coreutils}/bin/cp --no-preserve=mode -r "${placeholder "out"}/webroot" "$PWD"
|
||||
)
|
||||
|
||||
[ ! -d "$PWD/static" ] && (
|
||||
${coreutils}/bin/ln -s "${placeholder "out"}/static" "$PWD"
|
||||
)
|
||||
'';
|
||||
in ''
|
||||
wrapProgram $out/bin/owncast \
|
||||
--run '${setupScript}' \
|
||||
--prefix PATH : ${lib.makeBinPath [ bash which ffmpeg ]}
|
||||
'';
|
||||
|
||||
installCheckPhase = ''
|
||||
runHook preCheck
|
||||
$out/bin/owncast --help
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
passthru.tests.owncast = nixosTests.testOwncast;
|
||||
|
||||
meta = with lib; {
|
||||
description = "self-hosted video live streaming solution";
|
||||
homepage = "https://owncast.online";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ MayNiklas ];
|
||||
};
|
||||
|
||||
}
|
|
@ -7966,6 +7966,8 @@ with pkgs;
|
|||
|
||||
operator-sdk = callPackage ../development/tools/operator-sdk { };
|
||||
|
||||
owncast = callPackage ../servers/owncast { };
|
||||
|
||||
update-dotdee = with python3Packages; toPythonApplication update-dotdee;
|
||||
|
||||
update-nix-fetchgit = haskell.lib.justStaticExecutables haskellPackages.update-nix-fetchgit;
|
||||
|
|
|
@ -1601,7 +1601,7 @@ in let inherit (pkgs) callPackage; in rec
|
|||
|
||||
ocamlPackages_4_13 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.13.nix { });
|
||||
|
||||
ocamlPackages_latest = ocamlPackages_4_12;
|
||||
ocamlPackages_latest = ocamlPackages_4_13;
|
||||
|
||||
ocamlPackages = ocamlPackages_4_12;
|
||||
}
|
||||
|
|
|
@ -351,6 +351,8 @@ in {
|
|||
|
||||
aiopulse = callPackage ../development/python-modules/aiopulse { };
|
||||
|
||||
aiopvapi = callPackage ../development/python-modules/aiopvapi { };
|
||||
|
||||
aiopvpc = callPackage ../development/python-modules/aiopvpc { };
|
||||
|
||||
aiopylgtv = callPackage ../development/python-modules/aiopylgtv { };
|
||||
|
@ -387,6 +389,8 @@ in {
|
|||
|
||||
aiounittest = callPackage ../development/python-modules/aiounittest { };
|
||||
|
||||
aiowatttime = callPackage ../development/python-modules/aiowatttime { };
|
||||
|
||||
aiowinreg = callPackage ../development/python-modules/aiowinreg { };
|
||||
|
||||
aioymaps = callPackage ../development/python-modules/aioymaps { };
|
||||
|
@ -2412,6 +2416,8 @@ in {
|
|||
|
||||
etebase-server = callPackage ../servers/etebase { };
|
||||
|
||||
eternalegypt = callPackage ../development/python-modules/eternalegypt { };
|
||||
|
||||
etesync = callPackage ../development/python-modules/etesync { };
|
||||
|
||||
eth-hash = callPackage ../development/python-modules/eth-hash { };
|
||||
|
@ -3678,6 +3684,8 @@ in {
|
|||
|
||||
iocapture = callPackage ../development/python-modules/iocapture { };
|
||||
|
||||
iotawattpy = callPackage ../development/python-modules/iotawattpy { };
|
||||
|
||||
iowait = callPackage ../development/python-modules/iowait { };
|
||||
|
||||
ipaddress = callPackage ../development/python-modules/ipaddress { };
|
||||
|
@ -4466,6 +4474,8 @@ in {
|
|||
|
||||
marshmallow = callPackage ../development/python-modules/marshmallow { };
|
||||
|
||||
marshmallow-dataclass = callPackage ../development/python-modules/marshmallow-dataclass { };
|
||||
|
||||
marshmallow-enum = callPackage ../development/python-modules/marshmallow-enum { };
|
||||
|
||||
marshmallow-oneofschema = callPackage ../development/python-modules/marshmallow-oneofschema { };
|
||||
|
@ -5239,6 +5249,8 @@ in {
|
|||
|
||||
oyaml = callPackage ../development/python-modules/oyaml { };
|
||||
|
||||
p1monitor = callPackage ../development/python-modules/p1monitor { };
|
||||
|
||||
packageurl-python = callPackage ../development/python-modules/packageurl-python { };
|
||||
|
||||
packaging = callPackage ../development/python-modules/packaging { };
|
||||
|
@ -7801,6 +7813,8 @@ in {
|
|||
|
||||
remarshal = callPackage ../development/python-modules/remarshal { };
|
||||
|
||||
renault-api = callPackage ../development/python-modules/renault-api { };
|
||||
|
||||
rencode = callPackage ../development/python-modules/rencode { };
|
||||
|
||||
reparser = callPackage ../development/python-modules/reparser { };
|
||||
|
|
Loading…
Reference in a new issue