Merge staging-next into staging
This commit is contained in:
commit
970aea96fa
@ -638,6 +638,7 @@
|
|||||||
./services/networking/coredns.nix
|
./services/networking/coredns.nix
|
||||||
./services/networking/corerad.nix
|
./services/networking/corerad.nix
|
||||||
./services/networking/coturn.nix
|
./services/networking/coturn.nix
|
||||||
|
./services/networking/croc.nix
|
||||||
./services/networking/dante.nix
|
./services/networking/dante.nix
|
||||||
./services/networking/ddclient.nix
|
./services/networking/ddclient.nix
|
||||||
./services/networking/dhcpcd.nix
|
./services/networking/dhcpcd.nix
|
||||||
|
88
nixos/modules/services/networking/croc.nix
Normal file
88
nixos/modules/services/networking/croc.nix
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) types;
|
||||||
|
cfg = config.services.croc;
|
||||||
|
rootDir = "/run/croc";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.croc = {
|
||||||
|
enable = lib.mkEnableOption "croc relay";
|
||||||
|
ports = lib.mkOption {
|
||||||
|
type = with types; listOf port;
|
||||||
|
default = [9009 9010 9011 9012 9013];
|
||||||
|
description = "Ports of the relay.";
|
||||||
|
};
|
||||||
|
pass = lib.mkOption {
|
||||||
|
type = with types; either path str;
|
||||||
|
default = "pass123";
|
||||||
|
description = "Password or passwordfile for the relay.";
|
||||||
|
};
|
||||||
|
openFirewall = lib.mkEnableOption "opening of the peer port(s) in the firewall";
|
||||||
|
debug = lib.mkEnableOption "debug logs";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
systemd.services.croc = {
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.croc}/bin/croc --pass '${cfg.pass}' ${lib.optionalString cfg.debug "--debug"} relay --ports ${lib.concatMapStringsSep "," toString cfg.ports}";
|
||||||
|
# The following options are only for optimizing:
|
||||||
|
# systemd-analyze security croc
|
||||||
|
AmbientCapabilities = "";
|
||||||
|
CapabilityBoundingSet = "";
|
||||||
|
DynamicUser = true;
|
||||||
|
# ProtectClock= adds DeviceAllow=char-rtc r
|
||||||
|
DeviceAllow = "";
|
||||||
|
LockPersonality = true;
|
||||||
|
MemoryDenyWriteExecute = true;
|
||||||
|
MountAPIVFS = true;
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
PrivateDevices = true;
|
||||||
|
PrivateMounts = true;
|
||||||
|
PrivateNetwork = lib.mkDefault false;
|
||||||
|
PrivateTmp = true;
|
||||||
|
PrivateUsers = true;
|
||||||
|
ProcSubset = "pid";
|
||||||
|
ProtectClock = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectHome = true;
|
||||||
|
ProtectHostname = true;
|
||||||
|
ProtectKernelLogs = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectProc = "noaccess";
|
||||||
|
ProtectSystem = "strict";
|
||||||
|
RemoveIPC = true;
|
||||||
|
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
RestrictSUIDSGID = true;
|
||||||
|
RootDirectory = rootDir;
|
||||||
|
# Avoid mounting rootDir in the own rootDir of ExecStart='s mount namespace.
|
||||||
|
InaccessiblePaths = [ "-+${rootDir}" ];
|
||||||
|
BindReadOnlyPaths = [
|
||||||
|
builtins.storeDir
|
||||||
|
] ++ lib.optional (types.path.check cfg.pass) cfg.pass;
|
||||||
|
# This is for BindReadOnlyPaths=
|
||||||
|
# to allow traversal of directories they create in RootDirectory=.
|
||||||
|
UMask = "0066";
|
||||||
|
# Create rootDir in the host's mount namespace.
|
||||||
|
RuntimeDirectory = [(baseNameOf rootDir)];
|
||||||
|
RuntimeDirectoryMode = "700";
|
||||||
|
SystemCallFilter = [
|
||||||
|
"@system-service"
|
||||||
|
"~@aio" "~@chown" "~@keyring" "~@memlock"
|
||||||
|
"~@privileged" "~@resources" "~@setuid"
|
||||||
|
"~@sync" "~@timer"
|
||||||
|
];
|
||||||
|
SystemCallArchitectures = "native";
|
||||||
|
SystemCallErrorNumber = "EPERM";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall cfg.ports;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with lib.maintainers; [ hax404 julm ];
|
||||||
|
}
|
@ -14,17 +14,16 @@ let
|
|||||||
ADMIN_PASSWORD=password
|
ADMIN_PASSWORD=password
|
||||||
'';
|
'';
|
||||||
|
|
||||||
pgsu = "${pkgs.sudo}/bin/sudo -u ${config.services.postgresql.superUser}";
|
|
||||||
pgbin = "${config.services.postgresql.package}/bin";
|
pgbin = "${config.services.postgresql.package}/bin";
|
||||||
preStart = pkgs.writeScript "miniflux-pre-start" ''
|
preStart = pkgs.writeScript "miniflux-pre-start" ''
|
||||||
#!${pkgs.runtimeShell}
|
#!${pkgs.runtimeShell}
|
||||||
db_exists() {
|
db_exists() {
|
||||||
[ "$(${pgsu} ${pgbin}/psql -Atc "select 1 from pg_database where datname='$1'")" == "1" ]
|
[ "$(${pgbin}/psql -Atc "select 1 from pg_database where datname='$1'")" == "1" ]
|
||||||
}
|
}
|
||||||
if ! db_exists "${dbName}"; then
|
if ! db_exists "${dbName}"; then
|
||||||
${pgsu} ${pgbin}/psql postgres -c "CREATE ROLE ${dbUser} WITH LOGIN NOCREATEDB NOCREATEROLE ENCRYPTED PASSWORD '${dbPassword}'"
|
${pgbin}/psql postgres -c "CREATE ROLE ${dbUser} WITH LOGIN NOCREATEDB NOCREATEROLE ENCRYPTED PASSWORD '${dbPassword}'"
|
||||||
${pgsu} ${pgbin}/createdb --owner "${dbUser}" "${dbName}"
|
${pgbin}/createdb --owner "${dbUser}" "${dbName}"
|
||||||
${pgsu} ${pgbin}/psql "${dbName}" -c "CREATE EXTENSION IF NOT EXISTS hstore"
|
${pgbin}/psql "${dbName}" -c "CREATE EXTENSION IF NOT EXISTS hstore"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
@ -73,15 +72,26 @@ in
|
|||||||
|
|
||||||
services.postgresql.enable = true;
|
services.postgresql.enable = true;
|
||||||
|
|
||||||
|
systemd.services.miniflux-dbsetup = {
|
||||||
|
description = "Miniflux database setup";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
requires = [ "postgresql.service" ];
|
||||||
|
after = [ "network.target" "postgresql.service" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = config.services.postgresql.superUser;
|
||||||
|
ExecStart = preStart;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services.miniflux = {
|
systemd.services.miniflux = {
|
||||||
description = "Miniflux service";
|
description = "Miniflux service";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
requires = [ "postgresql.service" ];
|
requires = [ "postgresql.service" ];
|
||||||
after = [ "network.target" "postgresql.service" ];
|
after = [ "network.target" "postgresql.service" "miniflux-dbsetup.service" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.miniflux}/bin/miniflux";
|
ExecStart = "${pkgs.miniflux}/bin/miniflux";
|
||||||
ExecStartPre = "+${preStart}";
|
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
RuntimeDirectory = "miniflux";
|
RuntimeDirectory = "miniflux";
|
||||||
RuntimeDirectoryMode = "0700";
|
RuntimeDirectoryMode = "0700";
|
||||||
|
@ -84,6 +84,7 @@ in
|
|||||||
couchdb = handleTest ./couchdb.nix {};
|
couchdb = handleTest ./couchdb.nix {};
|
||||||
cri-o = handleTestOn ["x86_64-linux"] ./cri-o.nix {};
|
cri-o = handleTestOn ["x86_64-linux"] ./cri-o.nix {};
|
||||||
custom-ca = handleTest ./custom-ca.nix {};
|
custom-ca = handleTest ./custom-ca.nix {};
|
||||||
|
croc = handleTest ./croc.nix {};
|
||||||
deluge = handleTest ./deluge.nix {};
|
deluge = handleTest ./deluge.nix {};
|
||||||
dhparams = handleTest ./dhparams.nix {};
|
dhparams = handleTest ./dhparams.nix {};
|
||||||
dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {};
|
dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {};
|
||||||
|
51
nixos/tests/croc.nix
Normal file
51
nixos/tests/croc.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import ./make-test-python.nix ({ pkgs, ... }:
|
||||||
|
let
|
||||||
|
client = { pkgs, ... }: {
|
||||||
|
environment.systemPackages = [ pkgs.croc ];
|
||||||
|
};
|
||||||
|
pass = pkgs.writeText "pass" "PassRelay";
|
||||||
|
in {
|
||||||
|
name = "croc";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ hax404 julm ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
relay = {
|
||||||
|
services.croc = {
|
||||||
|
enable = true;
|
||||||
|
pass = pass;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
sender = client;
|
||||||
|
receiver = client;
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
# wait until relay is up
|
||||||
|
relay.wait_for_unit("croc")
|
||||||
|
relay.wait_for_open_port(9009)
|
||||||
|
relay.wait_for_open_port(9010)
|
||||||
|
relay.wait_for_open_port(9011)
|
||||||
|
relay.wait_for_open_port(9012)
|
||||||
|
relay.wait_for_open_port(9013)
|
||||||
|
|
||||||
|
# generate testfiles and send them
|
||||||
|
sender.wait_for_unit("multi-user.target")
|
||||||
|
sender.execute("echo Hello World > testfile01.txt")
|
||||||
|
sender.execute("echo Hello Earth > testfile02.txt")
|
||||||
|
sender.execute(
|
||||||
|
"croc --pass ${pass} --relay relay send --code topSecret testfile01.txt testfile02.txt &"
|
||||||
|
)
|
||||||
|
|
||||||
|
# receive the testfiles and check them
|
||||||
|
receiver.succeed(
|
||||||
|
"croc --pass ${pass} --yes --relay relay topSecret"
|
||||||
|
)
|
||||||
|
assert "Hello World" in receiver.succeed("cat testfile01.txt")
|
||||||
|
assert "Hello Earth" in receiver.succeed("cat testfile02.txt")
|
||||||
|
'';
|
||||||
|
})
|
@ -20,6 +20,13 @@ with lib;
|
|||||||
services.miniflux.enable = true;
|
services.miniflux.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
withoutSudo =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.miniflux.enable = true;
|
||||||
|
security.sudo.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
customized =
|
customized =
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
@ -46,6 +53,13 @@ with lib;
|
|||||||
"curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep -q '\"is_admin\":true'"
|
"curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep -q '\"is_admin\":true'"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
withoutSudo.wait_for_unit("miniflux.service")
|
||||||
|
withoutSudo.wait_for_open_port(${toString defaultPort})
|
||||||
|
withoutSudo.succeed("curl --fail 'http://localhost:${toString defaultPort}/healthcheck' | grep -q OK")
|
||||||
|
withoutSudo.succeed(
|
||||||
|
"curl 'http://localhost:${toString defaultPort}/v1/me' -u '${defaultUsername}:${defaultPassword}' -H Content-Type:application/json | grep -q '\"is_admin\":true'"
|
||||||
|
)
|
||||||
|
|
||||||
customized.wait_for_unit("miniflux.service")
|
customized.wait_for_unit("miniflux.service")
|
||||||
customized.wait_for_open_port(${toString port})
|
customized.wait_for_open_port(${toString port})
|
||||||
customized.succeed("curl --fail 'http://localhost:${toString port}/healthcheck' | grep -q OK")
|
customized.succeed("curl --fail 'http://localhost:${toString port}/healthcheck' | grep -q OK")
|
||||||
|
@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "helm";
|
pname = "helm";
|
||||||
version = "3.5.2";
|
version = "3.5.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "helm";
|
owner = "helm";
|
||||||
repo = "helm";
|
repo = "helm";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-XFWJtzKQrZL6lcr8JNiEQ8ldG5289x5pE21E8XgoYkA=";
|
sha256 = "sha256-7xO07JDy6ujWlDF+5Xd3myRQ8ajTppCXz9fNe4yizVw=";
|
||||||
};
|
};
|
||||||
vendorSha256 = "sha256-mjWQxCCtTgj1VCFjnuJWgDjwMt/r4jiFC9Of+CXRgPg=";
|
vendorSha256 = "sha256-lpEoUgABtJczwShNdvD+zYAPDFTJqILSei2YY6mQ2mw=";
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
|
21
pkgs/development/php-packages/swoole/default.nix
Normal file
21
pkgs/development/php-packages/swoole/default.nix
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{ lib, buildPecl, php, valgrind, pcre' }:
|
||||||
|
|
||||||
|
buildPecl {
|
||||||
|
pname = "swoole";
|
||||||
|
|
||||||
|
version = "4.6.4";
|
||||||
|
sha256 = "0hgndnn27q7fbsb0nw6bfdg0kyy5di9vrmf7g53jc6lsnf73ha31";
|
||||||
|
|
||||||
|
buildInputs = [ valgrind pcre' ];
|
||||||
|
internalDeps = lib.optionals (lib.versionOlder php.version "7.4") [ php.extensions.hash ];
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
checkTarget = "tests";
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Coroutine-based concurrency library for PHP";
|
||||||
|
license = licenses.asl20;
|
||||||
|
homepage = "https://www.swoole.co.uk/";
|
||||||
|
maintainers = teams.php.members;
|
||||||
|
};
|
||||||
|
}
|
@ -1,25 +1,29 @@
|
|||||||
{ lib, fetchPypi, buildPythonPackage
|
{ lib
|
||||||
, cryptography, pyaes, pycrc }:
|
, buildPythonPackage
|
||||||
|
, fetchPypi
|
||||||
|
, cryptography
|
||||||
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "broadlink";
|
pname = "broadlink";
|
||||||
version = "0.16.0";
|
version = "0.17.0";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "637dabc6f47b283b72bc521322554462da7a247f04614e458d65df8574d03a41";
|
sha256 = "bfd1ff007d0d1187c17ae52be938afc8137fbd1ed6a794426e975df10d167571";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
propagatedBuildInputs = [
|
||||||
substituteInPlace setup.py \
|
cryptography
|
||||||
--replace pyaes==1.6.0 pyaes
|
];
|
||||||
'';
|
|
||||||
|
|
||||||
propagatedBuildInputs = [ cryptography pyaes pycrc ];
|
|
||||||
|
|
||||||
# no tests available
|
# no tests available
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"broadlink"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Python API for controlling Broadlink IR controllers";
|
description = "Python API for controlling Broadlink IR controllers";
|
||||||
homepage = "https://github.com/mjg59/python-broadlink";
|
homepage = "https://github.com/mjg59/python-broadlink";
|
||||||
|
@ -15,13 +15,13 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "caldav";
|
pname = "caldav";
|
||||||
version = "0.7.1";
|
version = "0.8.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "python-caldav";
|
owner = "python-caldav";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1shfj67kq6qzd0ngyfk09hpzfggybcfxv5s7hqs87nq9l51bssv8";
|
sha256 = "11q3svns3a2ywfci739krxbh67cx691qja772wq22606blyygyjy";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = lib.optionals (pythonOlder "3.5") [ mock ];
|
nativeBuildInputs = lib.optionals (pythonOlder "3.5") [ mock ];
|
||||||
@ -34,6 +34,10 @@ buildPythonPackage rec {
|
|||||||
tzlocal
|
tzlocal
|
||||||
];
|
];
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
nosetests tests
|
||||||
|
'';
|
||||||
|
|
||||||
# xandikos and radicale is only a optional test dependency, not available for python3
|
# xandikos and radicale is only a optional test dependency, not available for python3
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace setup.py \
|
substituteInPlace setup.py \
|
||||||
@ -45,7 +49,7 @@ buildPythonPackage rec {
|
|||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "This project is a CalDAV (RFC4791) client library for Python.";
|
description = "This project is a CalDAV (RFC4791) client library for Python.";
|
||||||
homepage = "https://pythonhosted.org/caldav/";
|
homepage = "https://github.com/python-caldav/caldav";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
maintainers = with maintainers; [ marenz ];
|
maintainers = with maintainers; [ marenz ];
|
||||||
#broken = true; # requires radicale which is not packaged yet
|
#broken = true; # requires radicale which is not packaged yet
|
||||||
|
@ -1,20 +1,34 @@
|
|||||||
{ buildPythonPackage, fetchPypi, lib, requests }:
|
{ lib
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchPypi
|
||||||
|
, requests
|
||||||
|
, python
|
||||||
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "ciscomobilityexpress";
|
pname = "ciscomobilityexpress";
|
||||||
version = "1.0.0";
|
version = "1.0.2";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "fd3fe893d8a44f5ac1d46580af88e07f1066e73744763aca4ef2226f87d575ff";
|
sha256 = "d8787245598e8371a83baa4db1df949d8a942c43f13454fa26ee3b09c3ccafc0";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ requests ];
|
propagatedBuildInputs = [ requests ];
|
||||||
|
|
||||||
meta = {
|
# tests directory is set up, but has no tests
|
||||||
|
checkPhase = ''
|
||||||
|
${python.interpreter} -m unittest
|
||||||
|
'';
|
||||||
|
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"ciscomobilityexpress"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
description = "Module to interact with Cisco Mobility Express APIs to fetch connected devices";
|
description = "Module to interact with Cisco Mobility Express APIs to fetch connected devices";
|
||||||
homepage = "https://pypi.python.org/pypi/${pname}/";
|
homepage = "https://github.com/fbradyirl/ciscomobilityexpress";
|
||||||
license = lib.licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with lib.maintainers; [ uvnikita ];
|
maintainers = with maintainers; [ uvnikita ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, fetchpatch
|
|
||||||
, six, pyyaml, mock
|
, six, pyyaml, mock
|
||||||
, pytestCheckHook
|
, pytestCheckHook
|
||||||
, enum34
|
, enum34
|
||||||
@ -10,21 +9,13 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "ddt";
|
pname = "ddt";
|
||||||
version = "1.4.1";
|
version = "1.4.2";
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "0595e70d074e5777771a45709e99e9d215552fb1076443a25fad6b23d8bf38da";
|
sha256 = "sha256-ZKZzZqJxXmNriGlMxgdcwC2ykvAQmLjjhTl8iU05U3g=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
|
||||||
# fix tests with recent PyYAML, https://github.com/datadriventests/ddt/pull/96
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/datadriventests/ddt/commit/97f0a2315736e50f1b34a015447cd751da66ecb6.patch";
|
|
||||||
sha256 = "1g7l5h7m7s4yqfxlygrg7nnhb9xhz1drjld64ssi3fbsmn7klf0a";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
checkInputs = [ six pyyaml mock pytestCheckHook ];
|
checkInputs = [ six pyyaml mock pytestCheckHook ];
|
||||||
|
|
||||||
propagatedBuildInputs = lib.optionals (!isPy3k) [
|
propagatedBuildInputs = lib.optionals (!isPy3k) [
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, isPy27
|
, isPy27
|
||||||
|
, poetry-core
|
||||||
, textfsm
|
, textfsm
|
||||||
, pytestCheckHook
|
, pytestCheckHook
|
||||||
, ruamel_yaml
|
, ruamel_yaml
|
||||||
@ -10,22 +11,36 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "ntc-templates";
|
pname = "ntc-templates";
|
||||||
version = "1.6.0";
|
version = "2.0.0";
|
||||||
|
format = "pyproject";
|
||||||
disabled = isPy27;
|
disabled = isPy27;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "networktocode";
|
owner = "networktocode";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "dc27599b0c5f3bb6ff23049e781b5dab2849c2c3"; # not tagged
|
rev = "v${version}";
|
||||||
sha256 = "1vg5y5c51vc9dj3b8qcffh6dz85ri11zb1azxmyvgbq86pcvbx9f";
|
sha256 = "05ifbzps9jxrrkrqybsdbm67jhynfcjc298pqkhp21q5jwnlrl72";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [ textfsm ];
|
nativeBuildInputs = [
|
||||||
|
poetry-core
|
||||||
|
];
|
||||||
|
|
||||||
checkInputs = [ pytestCheckHook ruamel_yaml yamllint ];
|
propagatedBuildInputs = [
|
||||||
|
textfsm
|
||||||
|
];
|
||||||
|
|
||||||
|
checkInputs = [
|
||||||
|
pytestCheckHook
|
||||||
|
ruamel_yaml
|
||||||
|
yamllint
|
||||||
|
];
|
||||||
|
|
||||||
# https://github.com/networktocode/ntc-templates/issues/743
|
# https://github.com/networktocode/ntc-templates/issues/743
|
||||||
disabledTests = [ "test_raw_data_against_mock" "test_verify_parsed_and_reference_data_exists" ];
|
disabledTests = [
|
||||||
|
"test_raw_data_against_mock"
|
||||||
|
"test_verify_parsed_and_reference_data_exists"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "TextFSM templates for parsing show commands of network devices";
|
description = "TextFSM templates for parsing show commands of network devices";
|
||||||
|
@ -9,14 +9,14 @@
|
|||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "PlexAPI";
|
pname = "PlexAPI";
|
||||||
version = "4.4.0";
|
version = "4.4.1";
|
||||||
disabled = isPy27;
|
disabled = isPy27;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "pkkid";
|
owner = "pkkid";
|
||||||
repo = "python-plexapi";
|
repo = "python-plexapi";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0wzdzi5afncinavz5g77ximdr9y2ndzwb0gl819n0l6pnvbxdwp2";
|
sha256 = "11zarqnrpis6xpsjdvfl3pczv1l9rzbgkawkv2lhfvzlnc00d7df";
|
||||||
};
|
};
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# Do not edit!
|
# Do not edit!
|
||||||
|
|
||||||
{
|
{
|
||||||
version = "2021.3.3";
|
version = "2021.3.4";
|
||||||
components = {
|
components = {
|
||||||
"abode" = ps: with ps; [ abodepy ];
|
"abode" = ps: with ps; [ abodepy ];
|
||||||
"accuweather" = ps: with ps; [ accuweather ];
|
"accuweather" = ps: with ps; [ accuweather ];
|
||||||
|
@ -66,7 +66,7 @@ let
|
|||||||
extraBuildInputs = extraPackages py.pkgs;
|
extraBuildInputs = extraPackages py.pkgs;
|
||||||
|
|
||||||
# Don't forget to run parse-requirements.py after updating
|
# Don't forget to run parse-requirements.py after updating
|
||||||
hassVersion = "2021.3.3";
|
hassVersion = "2021.3.4";
|
||||||
|
|
||||||
in with py.pkgs; buildPythonApplication rec {
|
in with py.pkgs; buildPythonApplication rec {
|
||||||
pname = "homeassistant";
|
pname = "homeassistant";
|
||||||
@ -85,7 +85,7 @@ in with py.pkgs; buildPythonApplication rec {
|
|||||||
owner = "home-assistant";
|
owner = "home-assistant";
|
||||||
repo = "core";
|
repo = "core";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0kfvjpzz6ynw8bwd91nm0aiw1pkrmaydwf1r93dnwi8rmzq10zpb";
|
sha256 = "110pvin39lr40zd3lhb8zvh2wafl0k0dy3nbmc483yafy31xa4kw";
|
||||||
};
|
};
|
||||||
|
|
||||||
# leave this in, so users don't have to constantly update their downstream patch handling
|
# leave this in, so users don't have to constantly update their downstream patch handling
|
||||||
|
@ -18490,6 +18490,7 @@ in
|
|||||||
inherit (darwin.apple_sdk.frameworks) CoreServices;
|
inherit (darwin.apple_sdk.frameworks) CoreServices;
|
||||||
boost = boost173; # Configure checks for specific version.
|
boost = boost173; # Configure checks for specific version.
|
||||||
protobuf = protobuf3_7;
|
protobuf = protobuf3_7;
|
||||||
|
icu = icu67;
|
||||||
};
|
};
|
||||||
|
|
||||||
mysql_jdbc = callPackage ../servers/sql/mysql/jdbc { };
|
mysql_jdbc = callPackage ../servers/sql/mysql/jdbc { };
|
||||||
|
@ -138,6 +138,8 @@ lib.makeScope pkgs.newScope (self: with self; {
|
|||||||
|
|
||||||
sqlsrv = callPackage ../development/php-packages/sqlsrv { };
|
sqlsrv = callPackage ../development/php-packages/sqlsrv { };
|
||||||
|
|
||||||
|
swoole = callPackage ../development/php-packages/swoole { };
|
||||||
|
|
||||||
v8 = buildPecl {
|
v8 = buildPecl {
|
||||||
version = "0.2.2";
|
version = "0.2.2";
|
||||||
pname = "v8";
|
pname = "v8";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user