Merge master into haskell-updates
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 {};
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, pythonOlder
|
||||
, requests
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "streamlabswater";
|
||||
version = "0.3.2";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = "stream-python";
|
||||
rev = "v${version}";
|
||||
sha256 = "1lh1i1ksic9yhxnwc7mqm5qla98x85dfwj846kwldwam0vcrqlk7";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
requests
|
||||
];
|
||||
|
||||
# Project has no tests
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "streamlabswater" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python library for the StreamLabs API";
|
||||
homepage = "https://github.com/streamlabswater/stream-python";
|
||||
license = with 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 = [
|
||||
|
||||
@@ -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; [ ];
|
||||
@@ -824,7 +824,7 @@
|
||||
"stiebel_eltron" = ps: with ps; [ pymodbus ]; # missing inputs: pystiebeleltron
|
||||
"stookalert" = ps: with ps; [ ]; # missing inputs: stookalert
|
||||
"stream" = ps: with ps; [ aiohttp-cors av ];
|
||||
"streamlabswater" = ps: with ps; [ ]; # missing inputs: streamlabswater
|
||||
"streamlabswater" = ps: with ps; [ streamlabswater ];
|
||||
"stt" = ps: with ps; [ aiohttp-cors ];
|
||||
"subaru" = ps: with ps; [ subarulink ];
|
||||
"suez_water" = ps: with ps; [ ]; # missing inputs: pysuez
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 { };
|
||||
@@ -8669,6 +8683,8 @@ in {
|
||||
|
||||
streaming-form-data = callPackage ../development/python-modules/streaming-form-data { };
|
||||
|
||||
streamlabswater = callPackage ../development/python-modules/streamlabswater { };
|
||||
|
||||
streamz = callPackage ../development/python-modules/streamz { };
|
||||
|
||||
strict-rfc3339 = callPackage ../development/python-modules/strict-rfc3339 { };
|
||||
|
||||
Reference in New Issue
Block a user