diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index 35f8f91a21b5..2b0bcb4b6e56 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -40,6 +40,14 @@ services.sourcehut. + + + ucarp, + an userspace implementation of the Common Address Redundancy + Protocol (CARP). Available as + networking.ucarp. + +
diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index a199bcfef35f..968fdb0f3be2 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -18,6 +18,10 @@ In addition to numerous new and upgraded packages, this release has the followin 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). + ## Backward Incompatibilities * The `staticjinja` package has been upgraded from 1.0.4 to 2.0.0 diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 2938f79fb16a..1a4c2fb719dc 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -839,6 +839,7 @@ ./services/networking/tox-node.nix ./services/networking/toxvpn.nix ./services/networking/tvheadend.nix + ./services/networking/ucarp.nix ./services/networking/unbound.nix ./services/networking/unifi.nix ./services/networking/v2ray.nix diff --git a/nixos/modules/services/monitoring/grafana.nix b/nixos/modules/services/monitoring/grafana.nix index b243e24591e6..c3e1f72945bf 100644 --- a/nixos/modules/services/monitoring/grafana.nix +++ b/nixos/modules/services/monitoring/grafana.nix @@ -94,7 +94,7 @@ let description = "Name of the datasource. Required."; }; type = mkOption { - type = types.enum ["graphite" "prometheus" "cloudwatch" "elasticsearch" "influxdb" "opentsdb" "mysql" "mssql" "postgres" "loki"]; + type = types.str; description = "Datasource type. Required."; }; access = mkOption { diff --git a/nixos/modules/services/networking/ucarp.nix b/nixos/modules/services/networking/ucarp.nix new file mode 100644 index 000000000000..9b19a19687bc --- /dev/null +++ b/nixos/modules/services/networking/ucarp.nix @@ -0,0 +1,183 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.networking.ucarp; + + ucarpExec = concatStringsSep " " ( + [ + "${cfg.package}/bin/ucarp" + "--interface=${cfg.interface}" + "--srcip=${cfg.srcIp}" + "--vhid=${toString cfg.vhId}" + "--passfile=${cfg.passwordFile}" + "--addr=${cfg.addr}" + "--advbase=${toString cfg.advBase}" + "--advskew=${toString cfg.advSkew}" + "--upscript=${cfg.upscript}" + "--downscript=${cfg.downscript}" + "--deadratio=${toString cfg.deadratio}" + ] + ++ (optional cfg.preempt "--preempt") + ++ (optional cfg.neutral "--neutral") + ++ (optional cfg.shutdown "--shutdown") + ++ (optional cfg.ignoreIfState "--ignoreifstate") + ++ (optional cfg.noMcast "--nomcast") + ++ (optional (cfg.extraParam != null) "--xparam=${cfg.extraParam}") + ); +in { + options.networking.ucarp = { + enable = mkEnableOption "ucarp, userspace implementation of CARP"; + + interface = mkOption { + type = types.str; + description = "Network interface to bind to."; + example = "eth0"; + }; + + srcIp = mkOption { + type = types.str; + description = "Source (real) IP address of this host."; + }; + + vhId = mkOption { + type = types.ints.between 1 255; + description = "Virtual IP identifier shared between CARP hosts."; + example = 1; + }; + + passwordFile = mkOption { + type = types.str; + description = "File containing shared password between CARP hosts."; + example = "/run/keys/ucarp-password"; + }; + + preempt = mkOption { + type = types.bool; + description = '' + Enable preemptive failover. + Thus, this host becomes the CARP master as soon as possible. + ''; + default = false; + }; + + neutral = mkOption { + type = types.bool; + description = "Do not run downscript at start if the host is the backup."; + default = false; + }; + + addr = mkOption { + type = types.str; + description = "Virtual shared IP address."; + }; + + advBase = mkOption { + type = types.ints.unsigned; + description = "Advertisement frequency in seconds."; + default = 1; + }; + + advSkew = mkOption { + type = types.ints.unsigned; + description = "Advertisement skew in seconds."; + default = 0; + }; + + upscript = mkOption { + type = types.path; + description = '' + Command to run after become master, the interface name, virtual address + and optional extra parameters are passed as arguments. + ''; + example = '' + pkgs.writeScript "upscript" ''' + #!/bin/sh + $\{pkgs.iproute2\}/bin/ip addr add "$2"/24 dev "$1" + '''; + ''; + }; + + downscript = mkOption { + type = types.path; + description = '' + Command to run after become backup, the interface name, virtual address + and optional extra parameters are passed as arguments. + ''; + example = '' + pkgs.writeScript "downscript" ''' + #!/bin/sh + $\{pkgs.iproute2\}/bin/ip addr del "$2"/24 dev "$1" + '''; + ''; + }; + + deadratio = mkOption { + type = types.ints.unsigned; + description = "Ratio to consider a host as dead."; + default = 3; + }; + + shutdown = mkOption { + type = types.bool; + description = "Call downscript at exit."; + default = false; + }; + + ignoreIfState = mkOption { + type = types.bool; + description = "Ignore interface state, e.g., down or no carrier."; + default = false; + }; + + noMcast = mkOption { + type = types.bool; + description = "Use broadcast instead of multicast advertisements."; + default = false; + }; + + extraParam = mkOption { + type = types.nullOr types.str; + description = "Extra parameter to pass to the up/down scripts."; + default = null; + }; + + package = mkOption { + type = types.package; + description = '' + Package that should be used for ucarp. + + Please note that the default package, pkgs.ucarp, has not received any + upstream updates for a long time and can be considered as unmaintained. + ''; + default = pkgs.ucarp; + defaultText = "pkgs.ucarp"; + }; + }; + + config = mkIf cfg.enable { + systemd.services.ucarp = { + description = "ucarp, userspace implementation of CARP"; + + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + serviceConfig = { + Type = "exec"; + ExecStart = ucarpExec; + + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + ProtectClock = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + MemoryDenyWriteExecute = true; + RestrictRealtime = true; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ oxzi ]; +} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index d8fcbde6bc0c..e8c86394831d 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -433,6 +433,7 @@ in trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {}; tuptime = handleTest ./tuptime.nix {}; turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {}; + ucarp = handleTest ./ucarp.nix {}; ucg = handleTest ./ucg.nix {}; udisks2 = handleTest ./udisks2.nix {}; unbound = handleTest ./unbound.nix {}; diff --git a/nixos/tests/ucarp.nix b/nixos/tests/ucarp.nix new file mode 100644 index 000000000000..1f60f770d3a8 --- /dev/null +++ b/nixos/tests/ucarp.nix @@ -0,0 +1,66 @@ +import ./make-test-python.nix ({ pkgs, lib, ...} : + +let + addrShared = "192.168.0.1"; + addrHostA = "192.168.0.10"; + addrHostB = "192.168.0.11"; + + mkUcarpHost = addr: { config, pkgs, lib, ... }: { + networking.interfaces.eth1.ipv4.addresses = lib.mkForce [ + { address = addr; prefixLength = 24; } + ]; + + networking.ucarp = { + enable = true; + interface = "eth1"; + srcIp = addr; + vhId = 1; + passwordFile = "${pkgs.writeText "ucarp-pass" "secure"}"; + addr = addrShared; + upscript = pkgs.writeScript "upscript" '' + #!/bin/sh + ${pkgs.iproute2}/bin/ip addr add "$2"/24 dev "$1" + ''; + downscript = pkgs.writeScript "downscript" '' + #!/bin/sh + ${pkgs.iproute2}/bin/ip addr del "$2"/24 dev "$1" + ''; + }; + }; +in { + name = "ucarp"; + meta.maintainers = with lib.maintainers; [ oxzi ]; + + nodes = { + hostA = mkUcarpHost addrHostA; + hostB = mkUcarpHost addrHostB; + }; + + testScript = '' + def is_master(host): + ipOutput = host.succeed("ip addr show dev eth1") + return "inet ${addrShared}/24" in ipOutput + + + start_all() + + # First, let both hosts start and let a master node be selected + for host, peer in [(hostA, "${addrHostB}"), (hostB, "${addrHostA}")]: + host.wait_for_unit("ucarp.service") + host.succeed(f"ping -c 1 {peer}") + + hostA.sleep(5) + + hostA_master, hostB_master = is_master(hostA), is_master(hostB) + assert hostA_master != hostB_master, "only one master node is allowed" + + master_host = hostA if hostA_master else hostB + backup_host = hostB if hostA_master else hostA + + # Let's crash the master host and let the backup take over + master_host.crash() + + backup_host.sleep(5) + assert is_master(backup_host), "backup did not take over" + ''; +}) diff --git a/pkgs/build-support/skaware/build-skaware-package.nix b/pkgs/build-support/skaware/build-skaware-package.nix index 7a5db942b2cb..b27b65f48a59 100644 --- a/pkgs/build-support/skaware/build-skaware-package.nix +++ b/pkgs/build-support/skaware/build-skaware-package.nix @@ -99,7 +99,7 @@ in stdenv.mkDerivation { inherit description platforms; license = lib.licenses.isc; maintainers = with lib.maintainers; - [ pmahoney Profpatsch ] ++ maintainers; + [ pmahoney Profpatsch qyliss ] ++ maintainers; }; } diff --git a/pkgs/development/interpreters/erlang/R23.nix b/pkgs/development/interpreters/erlang/R23.nix index ee788560dcf4..3ecbf3de2a91 100644 --- a/pkgs/development/interpreters/erlang/R23.nix +++ b/pkgs/development/interpreters/erlang/R23.nix @@ -3,6 +3,6 @@ # How to obtain `sha256`: # nix-prefetch-url --unpack https://github.com/erlang/otp/archive/OTP-${version}.tar.gz mkDerivation { - version = "23.3.4.2"; - sha256 = "QAIkiYBhYnUzyRg70SQ4BwjjYqclDA4uruqRNTgB2Sk="; + version = "23.3.4.3"; + sha256 = "wmR0XTMrJ3608HD341lNlYChwxs/8jb12Okw3RNHGCA="; } diff --git a/pkgs/development/libraries/amdvlk/default.nix b/pkgs/development/libraries/amdvlk/default.nix index e3bc04a6d226..5d5277afcd3e 100644 --- a/pkgs/development/libraries/amdvlk/default.nix +++ b/pkgs/development/libraries/amdvlk/default.nix @@ -21,13 +21,13 @@ let in stdenv.mkDerivation rec { pname = "amdvlk"; - version = "2021.Q2.4"; + version = "2021.Q2.5"; src = fetchRepoProject { name = "${pname}-src"; manifest = "https://github.com/GPUOpen-Drivers/AMDVLK.git"; rev = "refs/tags/v-${version}"; - sha256 = "KPWkwbD55BoztF6DPmvau9i1AMhR+5ad5VrrD8I2YyI="; + sha256 = "0NJoGk++SHt4dtoUj3UQeW4zFtwa7osczUr+vxi8DG8="; }; buildInputs = [ diff --git a/pkgs/development/libraries/nsss/default.nix b/pkgs/development/libraries/nsss/default.nix index 4e71c4d65e6e..527e7d4898e1 100644 --- a/pkgs/development/libraries/nsss/default.nix +++ b/pkgs/development/libraries/nsss/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "nsss"; - version = "0.1.0.0"; - sha256 = "15rxbwf16wm1la079yr2xn4bccjgd7m8dh6r7bpr6s57cj93i2mq"; + version = "0.1.0.1"; + sha256 = "1nair10m7fddp50mpqnwj0qiggnh5qmnffmyzxis5l1ixcav1ir0"; description = "An implementation of a subset of the pwd.h, group.h and shadow.h family of functions."; diff --git a/pkgs/development/libraries/skalibs/default.nix b/pkgs/development/libraries/skalibs/default.nix index 3d90a8ebb21c..09530db0532c 100644 --- a/pkgs/development/libraries/skalibs/default.nix +++ b/pkgs/development/libraries/skalibs/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "skalibs"; - version = "2.10.0.2"; - sha256 = "03qyi77wgcw3nzy7i932wd98d6j7nnzxc8ddl973vf5sa1v3vflb"; + version = "2.10.0.3"; + sha256 = "0ka6n5rnxd5sn5lycarf596d5wlak5s535zqqlz0rnhdcnpb105p"; description = "A set of general-purpose C programming libraries"; diff --git a/pkgs/development/libraries/utmps/default.nix b/pkgs/development/libraries/utmps/default.nix index 107c23dcb59b..be74748cb369 100644 --- a/pkgs/development/libraries/utmps/default.nix +++ b/pkgs/development/libraries/utmps/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "utmps"; - version = "0.1.0.0"; - sha256 = "09p0k2sgxr7jlsbrn66fzvzf9zxvpjp85y79xk10hxjglypszyml"; + version = "0.1.0.2"; + sha256 = "1vjza7m65ziq54q0sv46kb3lss9cmxkkv0n9h3i8505x0h2hlvlb"; description = "A secure utmpx and wtmp implementation"; diff --git a/pkgs/development/python-modules/blinkpy/default.nix b/pkgs/development/python-modules/blinkpy/default.nix new file mode 100644 index 000000000000..a73514805249 --- /dev/null +++ b/pkgs/development/python-modules/blinkpy/default.nix @@ -0,0 +1,48 @@ +{ lib +, buildPythonPackage +, pythonOlder +, fetchFromGitHub +, python-dateutil +, python-slugify +, requests +, pytestCheckHook +}: + +buildPythonPackage rec { + pname = "blinkpy"; + version = "0.17.1"; + + src = fetchFromGitHub { + owner = "fronzbot"; + repo = "blinkpy"; + rev = "v${version}"; + sha256 = "11h4r2vkrlxwjig1lay1n5wpny5isfgz85f7lsn8ndnqa2wpsymp"; + }; + + propagatedBuildInputs = [ + python-dateutil + python-slugify + requests + ]; + + checkInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ + "blinkpy" + "blinkpy.api" + "blinkpy.auth" + "blinkpy.blinkpy" + "blinkpy.camera" + "blinkpy.helpers.util" + "blinkpy.sync_module" + ]; + + meta = with lib; { + description = "Python library for the Blink Camera system"; + homepage = "https://github.com/fronzbot/blinkpy"; + license = licenses.mit; + maintainers = with maintainers; [ dotlambda ]; + }; +} diff --git a/pkgs/development/python-modules/garminconnect-ha/default.nix b/pkgs/development/python-modules/garminconnect-ha/default.nix new file mode 100644 index 000000000000..e3d4cd5b48e9 --- /dev/null +++ b/pkgs/development/python-modules/garminconnect-ha/default.nix @@ -0,0 +1,33 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, requests +}: + +buildPythonPackage rec { + pname = "garminconnect-ha"; + version = "0.1.6"; + + src = fetchFromGitHub { + owner = "cyberjunky"; + repo = "python-garminconnect-ha"; + rev = version; + sha256 = "0ngas6zikhpja1cdkq64m9pjm4b0z3qaj9g3x88mggy60jsxm1d7"; + }; + + propagatedBuildInputs = [ + requests + ]; + + # Project has no tests + doCheck = false; + + pythonImportsCheck = [ "garminconnect_ha" ]; + + meta = with lib; { + description = "Minimal Garmin Connect Python 3 API wrapper for Home Assistant"; + homepage = "https://github.com/cyberjunky/python-garminconnect-ha"; + license = licenses.mit; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/development/python-modules/httpcore/default.nix b/pkgs/development/python-modules/httpcore/default.nix index 64e2b1144527..7781dbe8b319 100644 --- a/pkgs/development/python-modules/httpcore/default.nix +++ b/pkgs/development/python-modules/httpcore/default.nix @@ -17,14 +17,14 @@ buildPythonPackage rec { pname = "httpcore"; - version = "0.13.4"; + version = "0.13.6"; disabled = pythonOlder "3.6"; src = fetchFromGitHub { owner = "encode"; repo = pname; rev = version; - sha256 = "0vfdkd3bq14mnjd2gfg3ajsgygmd796md7pv96nicpx20prw3a2p"; + sha256 = "sha256-7G7jchOQTgcFSGZfoMPFm0NY9ofg5MM5Xn5lV+W9w8k="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/pydaikin/default.nix b/pkgs/development/python-modules/pydaikin/default.nix index 209ef3dbc235..fbb205bb9f78 100644 --- a/pkgs/development/python-modules/pydaikin/default.nix +++ b/pkgs/development/python-modules/pydaikin/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "pydaikin"; - version = "2.4.1"; + version = "2.4.2"; disabled = pythonOlder "3.6"; src = fetchFromBitbucket { owner = "mustang51"; repo = pname; rev = "v${version}"; - sha256 = "1624adp4lqd1n9flnf0wqrcibml2nd19ga3fmxzjg4x5z6767bs3"; + sha256 = "13cslszjhd1x7j0ja0n0wpy62hb2sdmkrmjl3qhwqfggps2w2wy1"; }; propagatedBuildInputs = [ @@ -28,6 +28,10 @@ buildPythonPackage rec { urllib3 ]; + # while they have tests, they do not run them in their CI and they fail as of 2.4.2 + # AttributeError: 'DaikinBRP069' object has no attribute 'last_hour_cool_energy_consumption' + doCheck = false; + checkInputs = [ freezegun pytest-aiohttp diff --git a/pkgs/development/python-modules/pyro4/default.nix b/pkgs/development/python-modules/pyro4/default.nix index 626560d89b6d..3de7afd9668d 100644 --- a/pkgs/development/python-modules/pyro4/default.nix +++ b/pkgs/development/python-modules/pyro4/default.nix @@ -7,7 +7,6 @@ , cloudpickle , msgpack , isPy27 -, selectors34 , pytestCheckHook }: @@ -15,6 +14,8 @@ buildPythonPackage rec { pname = "Pyro4"; version = "4.80"; + disabled = isPy27; + src = fetchPypi { inherit pname version; sha256 = "46847ca703de3f483fbd0b2d22622f36eff03e6ef7ec7704d4ecaa3964cb2220"; @@ -22,7 +23,7 @@ buildPythonPackage rec { propagatedBuildInputs = [ serpent - ] ++ lib.optionals isPy27 [ selectors34 ]; + ]; buildInputs = [ dill diff --git a/pkgs/development/python-modules/selectors34/default.nix b/pkgs/development/python-modules/selectors34/default.nix deleted file mode 100644 index 2209ccf43d26..000000000000 --- a/pkgs/development/python-modules/selectors34/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ lib -, buildPythonPackage -, fetchPypi -, python -, six -}: - -buildPythonPackage rec { - pname = "selectors34"; - version = "1.2"; - - src = fetchPypi { - inherit pname version; - sha256 = "09f5066337f8a76fb5233f267873f89a27a17c10bf79575954894bb71686451c"; - }; - - propagatedBuildInputs = [ six ]; - - checkPhase = '' - ${python.interpreter} setup.py test - ''; - - meta = with lib; { - description = "A backport of the selectors module from Python 3.4"; - homepage = "https://github.com/berkerpeksag/selectors34"; - license = licenses.psfl; - maintainers = with maintainers; [ prusnak ]; - }; -} diff --git a/pkgs/os-specific/linux/mdevd/default.nix b/pkgs/os-specific/linux/mdevd/default.nix index b88e3ad1e6f0..58299ba5e878 100644 --- a/pkgs/os-specific/linux/mdevd/default.nix +++ b/pkgs/os-specific/linux/mdevd/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "mdevd"; - version = "0.1.3.0"; - sha256 = "0spvw27xxd0m6j8bl8xysmgsx18fl769smr6dsh25s2d5h3sp2dy"; + version = "0.1.4.0"; + sha256 = "1lnwk7qa6x7iia0v12i2jckg42ypi35hk3sa7cjm23ngnhiv5lzz"; description = "mdev-compatible Linux hotplug manager daemon"; platforms = lib.platforms.linux; diff --git a/pkgs/os-specific/linux/s6-linux-init/default.nix b/pkgs/os-specific/linux/s6-linux-init/default.nix index 41790e5eb781..5d6941259e1b 100644 --- a/pkgs/os-specific/linux/s6-linux-init/default.nix +++ b/pkgs/os-specific/linux/s6-linux-init/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "s6-linux-init"; - version = "1.0.6.1"; - sha256 = "0sq8ya39a1qs61cdjns8ijwrvxnqd4snk2ab4j5wl9a87i7wixhn"; + version = "1.0.6.2"; + sha256 = "06xcmn2a89fvng056lcnnyrl2ak0y7cblkc90lj9a2liyhawy9dr"; description = "A set of minimalistic tools used to create a s6-based init system, including a /sbin/init binary, on a Linux kernel"; platforms = lib.platforms.linux; diff --git a/pkgs/os-specific/linux/s6-linux-utils/default.nix b/pkgs/os-specific/linux/s6-linux-utils/default.nix index 132a0b49574c..3596ab23e72b 100644 --- a/pkgs/os-specific/linux/s6-linux-utils/default.nix +++ b/pkgs/os-specific/linux/s6-linux-utils/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "s6-linux-utils"; - version = "2.5.1.4"; - sha256 = "02gxzc9igid2kf2rvm3v6kc9806mpjmdq7cpanv4cml0ip68vbfq"; + version = "2.5.1.5"; + sha256 = "1fj5ldlrc6bx40pphg29rp3byd6fal6869v85kw86c2kdgrxn063"; description = "A set of minimalistic Linux-specific system utilities"; platforms = lib.platforms.linux; diff --git a/pkgs/servers/dns/knot-dns/default.nix b/pkgs/servers/dns/knot-dns/default.nix index 11adceb0f74d..394c76dbdb23 100644 --- a/pkgs/servers/dns/knot-dns/default.nix +++ b/pkgs/servers/dns/knot-dns/default.nix @@ -1,17 +1,17 @@ { lib, stdenv, fetchurl, pkg-config, gnutls, liburcu, lmdb, libcap_ng, libidn2, libunistring , systemd, nettle, libedit, zlib, libiconv, libintl, libmaxminddb, libbpf, nghttp2 -, autoreconfHook +, autoreconfHook, nixosTests }: let inherit (lib) optional optionals; in stdenv.mkDerivation rec { pname = "knot-dns"; - version = "3.0.6"; + version = "3.0.7"; src = fetchurl { url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz"; - sha256 = "63756ac5a00c3e4a066ed231a287faef5963a9183d77326e30bf0644cdf74f86"; + sha256 = "2bad8be0be95c8f54a26d1e16299e65f31ae1b34bd6ad3819aa50e7b40521484"; }; outputs = [ "bin" "out" "dev" ]; @@ -56,6 +56,8 @@ stdenv.mkDerivation rec { rm -r "$out"/lib/*.la ''; + passthru.tests = { inherit (nixosTests) knot; }; + meta = with lib; { description = "Authoritative-only DNS server from .cz domain registry"; homepage = "https://knot-dns.cz"; diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index 04d3b5baa4c1..04abaab961a9 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -2,7 +2,7 @@ # Do not edit! { - version = "2021.6.4"; + version = "2021.6.5"; components = { "abode" = ps: with ps; [ abodepy ]; "accuweather" = ps: with ps; [ accuweather ]; @@ -82,7 +82,7 @@ "bizkaibus" = ps: with ps; [ ]; # missing inputs: bizkaibus "blackbird" = ps: with ps; [ pyblackbird ]; "blebox" = ps: with ps; [ blebox-uniapi ]; - "blink" = ps: with ps; [ ]; # missing inputs: blinkpy + "blink" = ps: with ps; [ blinkpy ]; "blinksticklight" = ps: with ps; [ BlinkStick ]; "blinkt" = ps: with ps; [ ]; # missing inputs: blinkt "blockchain" = ps: with ps; [ ]; # missing inputs: python-blockchain-api @@ -293,7 +293,7 @@ "futurenow" = ps: with ps; [ pyfnip ]; "garadget" = ps: with ps; [ ]; "garages_amsterdam" = ps: with ps; [ garages-amsterdam ]; - "garmin_connect" = ps: with ps; [ garminconnect-aio ]; + "garmin_connect" = ps: with ps; [ garminconnect-ha ]; "gc100" = ps: with ps; [ ]; # missing inputs: python-gc100 "gdacs" = ps: with ps; [ aio-georss-gdacs ]; "generic" = ps: with ps; [ ]; diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index eb2fa70bbb92..ac84462d9f39 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -3,7 +3,6 @@ , fetchFromGitHub , python3 , inetutils -, tzdata , nixosTests # Look up dependencies of specified components in component-packages.nix @@ -52,12 +51,12 @@ let # https://github.com/home-assistant/core/pull/48137 was merged (self: super: { iaqualink = super.iaqualink.overridePythonAttrs (oldAttrs: rec { - version = "0.3.4"; + version = "0.3.90"; src = fetchFromGitHub { owner = "flz"; repo = "iaqualink-py"; rev = "v${version}"; - sha256 = "16mn6nd9x3hm6j6da99qhwbqs95hh8wx21r1h1m9csl76z77n9lh"; + sha256 = "0c8ckbbr1n8gx5k63ymgyfkbz3d0rbdvghg8fqdvbg4nrigrs5v0"; }; checkInputs = oldAttrs.checkInputs ++ [ python3.pkgs.asynctest ]; }); @@ -181,7 +180,7 @@ let extraBuildInputs = extraPackages py.pkgs; # Don't forget to run parse-requirements.py after updating - hassVersion = "2021.6.4"; + hassVersion = "2021.6.5"; in with py.pkgs; buildPythonApplication rec { pname = "homeassistant"; @@ -200,7 +199,7 @@ in with py.pkgs; buildPythonApplication rec { owner = "home-assistant"; repo = "core"; rev = version; - sha256 = "058dx5hg0a3zvd85sxglbadigfzajmzx8i5jxvw0ww9yp8002qj1"; + sha256 = "1cp294hy35k9hjbp8iqmaf1m5qbbkh3jwf92ym49waw8di5a5wvh"; }; # leave this in, so users don't have to constantly update their downstream patch handling @@ -219,7 +218,7 @@ in with py.pkgs; buildPythonApplication rec { ''; propagatedBuildInputs = [ - # Only packages required in setup.py + hass-frontend + # Only packages required in setup.py aiohttp astral async-timeout @@ -308,6 +307,7 @@ in with py.pkgs; buildPythonApplication rec { "binary_sensor" "blackbird" "blebox" + "blink" "blueprint" "bluetooth_le_tracker" "bond" @@ -788,9 +788,6 @@ in with py.pkgs; buildPythonApplication rec { # put ping binary into PATH, e.g. for wake_on_lan tests export PATH=${inetutils}/bin:$PATH - # set up zoneinfo data for backports-zoneinfo in pvpc_hourly_pricing tests - export PYTHONTZPATH="${tzdata}/share/zoneinfo" - # error out when component test directory is missing, otherwise hidden by xdist execution :( for component in ${lib.concatStringsSep " " (map lib.escapeShellArg componentTests)}; do test -d "tests/components/$component" || { @@ -801,11 +798,10 @@ in with py.pkgs; buildPythonApplication rec { ''; passthru = { - inherit (py.pkgs) hass-frontend; + python = py; tests = { inherit (nixosTests) home-assistant; }; - python = py; }; meta = with lib; { diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py index 5d8678a6267f..2cdc44caaae9 100755 --- a/pkgs/servers/home-assistant/parse-requirements.py +++ b/pkgs/servers/home-assistant/parse-requirements.py @@ -183,8 +183,7 @@ def main() -> None: if attr_path is not None: # Add attribute path without "python3Packages." prefix attr_paths.append(attr_path[len(PKG_SET + ".") :]) - # home-assistant-frontend is always in propagatedBuildInputs - elif name != 'home-assistant-frontend': + else: missing_reqs.append(name) else: build_inputs[component] = (attr_paths, missing_reqs) diff --git a/pkgs/servers/home-assistant/update.sh b/pkgs/servers/home-assistant/update.sh index e80b7acbed0f..5ed865f411e2 100755 --- a/pkgs/servers/home-assistant/update.sh +++ b/pkgs/servers/home-assistant/update.sh @@ -26,7 +26,7 @@ sed -i -e "s/hassVersion =.*/hassVersion = \"${TARGET_VERSION}\";/" \ ./parse-requirements.py ( cd ../../.. - nix-update --version "$FRONTEND_VERSION" home-assistant.hass-frontend + nix-update --version "$FRONTEND_VERSION" home-assistant.python.pkgs.home-assistant-frontend nix-update --version "$TARGET_VERSION" --build home-assistant ) diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix index 0fce99819671..c65627311439 100644 --- a/pkgs/servers/matrix-synapse/default.nix +++ b/pkgs/servers/matrix-synapse/default.nix @@ -12,11 +12,11 @@ let in buildPythonApplication rec { pname = "matrix-synapse"; - version = "1.35.1"; + version = "1.36.0"; src = fetchPypi { inherit pname version; - sha256 = "sha256-MJ3RG60rWbcfQxhj34k99AFg8TsPd3ECEw/x2+xU1js="; + sha256 = "sha256-OMbSd64mD2+6GVUxGL4lvQlKAiBuen0PjvyVdk/ePbI="; }; patches = [ diff --git a/pkgs/servers/ucarp/default.nix b/pkgs/servers/ucarp/default.nix new file mode 100644 index 000000000000..321a725cc89a --- /dev/null +++ b/pkgs/servers/ucarp/default.nix @@ -0,0 +1,28 @@ +{ stdenv, lib, fetchurl, libpcap }: + +stdenv.mkDerivation rec { + pname = "ucarp"; + version = "1.5.2"; + + src = fetchurl { + url = "https://download.pureftpd.org/pub/ucarp/ucarp-${version}.tar.bz2"; + sha256 = "0qidz5sr55nxlmnl8kcbjsrff2j97b44h9l1dmhvvjl46iji7q7j"; + }; + + buildInputs = [ libpcap ]; + + meta = with lib; { + description = "Userspace implementation of CARP"; + longDescription = '' + UCARP allows a couple of hosts to share common virtual IP addresses in + order to provide automatic failover. It is a portable userland + implementation of the secure and patent-free Common Address Redundancy + Protocol (CARP, OpenBSD's alternative to the patents-bloated VRRP). + + Warning: This package has not received any upstream updates for a long + time and can be considered as unmaintained. + ''; + license = with licenses; [ isc bsdOriginal bsd2 gpl2Plus ]; + maintainers = with maintainers; [ oxzi ]; + }; +} diff --git a/pkgs/tools/misc/dua/default.nix b/pkgs/tools/misc/dua/default.nix index 32c5d3b47457..20288bf3f5e7 100644 --- a/pkgs/tools/misc/dua/default.nix +++ b/pkgs/tools/misc/dua/default.nix @@ -2,7 +2,7 @@ rustPlatform.buildRustPackage rec { pname = "dua"; - version = "2.13.0"; + version = "2.13.1"; buildInputs = lib.optionals stdenv.isDarwin [ libiconv ]; @@ -10,7 +10,7 @@ rustPlatform.buildRustPackage rec { owner = "Byron"; repo = "dua-cli"; rev = "v${version}"; - sha256 = "sha256-gJOEMp2Ex9gBsvYOmIKH7WNLQejiJhY8wnw2JYxcUU4="; + sha256 = "sha256-6xSRsLM1DD1xMjOGzHMDVLibrJlu9lN9OoSV7B/WMT0="; # Remove unicode file names which leads to different checksums on HFS+ # vs. other filesystems because of unicode normalisation. extraPostFetch = '' @@ -18,7 +18,7 @@ rustPlatform.buildRustPackage rec { ''; }; - cargoSha256 = "sha256-cN5rURv1RmesLzwm3ZXyGJXxvFeIbpTb6kWzJSKgX5o="; + cargoSha256 = "sha256-udz1EtPchEHxkvvVFnkwSOpFz4XEBGOXRz8qWREyzvc="; doCheck = false; diff --git a/pkgs/tools/misc/execline/default.nix b/pkgs/tools/misc/execline/default.nix index 705a8a554c18..095e43b9d3ee 100644 --- a/pkgs/tools/misc/execline/default.nix +++ b/pkgs/tools/misc/execline/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "execline"; - version = "2.8.0.0"; - sha256 = "0vbn4pdazy6x6213vn42k0khcij5bvkbrcfg7nw6inhf8154nx77"; + version = "2.8.0.1"; + sha256 = "1v9swmhw2rcrr9fmkmd7qh8qq0kslhmvxwz2a3bhan9ksabz8wx3"; description = "A small scripting language, to be used in place of a shell in non-interactive scripts"; diff --git a/pkgs/tools/misc/s6-portable-utils/default.nix b/pkgs/tools/misc/s6-portable-utils/default.nix index 731f6c48785f..d6f475a408ef 100644 --- a/pkgs/tools/misc/s6-portable-utils/default.nix +++ b/pkgs/tools/misc/s6-portable-utils/default.nix @@ -2,13 +2,10 @@ with skawarePackages; -let +buildPackage { pname = "s6-portable-utils"; - -in buildPackage { - pname = pname; - version = "2.2.3.1"; - sha256 = "1ks1ch5v3p2z8y8wp5fmzzgjrqn2l5sj1sgfp8vv6wy8psd8mrj3"; + version = "2.2.3.2"; + sha256 = "173nmygkp7ky3093dg4rx3ahvyl7ll86z8qj6pl3jd96xb9s49v6"; description = "A set of tiny general Unix utilities optimized for simplicity and small size"; @@ -28,7 +25,7 @@ in buildPackage { rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable) rm seekablepipe - mv doc $doc/share/doc/${pname}/html + mv doc $doc/share/doc/s6-portable-utils/html ''; diff --git a/pkgs/tools/networking/s6-dns/default.nix b/pkgs/tools/networking/s6-dns/default.nix index 5036b1a87eaa..a4ebf5beef9b 100644 --- a/pkgs/tools/networking/s6-dns/default.nix +++ b/pkgs/tools/networking/s6-dns/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "s6-dns"; - version = "2.3.5.0"; - sha256 = "0h5p5dbkkdadahrp4pqhc3x9ds758i6djy49k5zrn7mm5k4722wz"; + version = "2.3.5.1"; + sha256 = "0qsgqwdr5ms337fc9f2b4aa5cr7myvbzndvgkgswnrdwszjm078c"; description = "A suite of DNS client programs and libraries for Unix systems"; diff --git a/pkgs/tools/networking/s6-networking/default.nix b/pkgs/tools/networking/s6-networking/default.nix index be19656f1c2d..e0c8eda9c749 100644 --- a/pkgs/tools/networking/s6-networking/default.nix +++ b/pkgs/tools/networking/s6-networking/default.nix @@ -19,8 +19,8 @@ assert sslSupportEnabled -> sslLibs ? ${sslSupport}; buildPackage { pname = "s6-networking"; - version = "2.4.1.0"; - sha256 = "023wnayv1gddklnsh3qv7i5jfy2fisbp24wa0nzjg0nfq3p807yc"; + version = "2.4.1.1"; + sha256 = "0m55ibx7k2wgrqbpci1n667ij0h925ajzggxalq2pj65kmwcmyx3"; description = "A suite of small networking utilities for Unix systems"; diff --git a/pkgs/tools/system/s6-rc/default.nix b/pkgs/tools/system/s6-rc/default.nix index 20c23e150519..532575d16c88 100644 --- a/pkgs/tools/system/s6-rc/default.nix +++ b/pkgs/tools/system/s6-rc/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "s6-rc"; - version = "0.5.2.1"; - sha256 = "02pszbi440wagx2qp8aqj9mv5wm2qisw9lkq7mbnbnxxw9azlhi8"; + version = "0.5.2.2"; + sha256 = "12bzc483jpd16xmhfsfrib84daj1k3kwy5s5nc18ap60apa1r39a"; description = "A service manager for s6-based systems"; platforms = lib.platforms.linux; diff --git a/pkgs/tools/system/s6/default.nix b/pkgs/tools/system/s6/default.nix index 16fd1be63394..e9d096a7ab0e 100644 --- a/pkgs/tools/system/s6/default.nix +++ b/pkgs/tools/system/s6/default.nix @@ -4,8 +4,8 @@ with skawarePackages; buildPackage { pname = "s6"; - version = "2.10.0.2"; - sha256 = "08bcrp7ck1l3wmjyzxi3vgk6j0n2jfymxs4rjjw4if40f3lgqfmj"; + version = "2.10.0.3"; + sha256 = "0mw7blp8dwr09z58m9mrxwmmvvpnjzq9klcf1vgm0hbha4qkf88x"; description = "skarnet.org's small & secure supervision software suite"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b813443e70fc..c160cdbf3384 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9403,6 +9403,8 @@ in ubertooth = callPackage ../applications/radio/ubertooth { }; + ucarp = callPackage ../servers/ucarp { }; + ucl = callPackage ../development/libraries/ucl { }; ucspi-tcp = callPackage ../tools/networking/ucspi-tcp { }; diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index 15e09c0f7bb7..b9c37c960908 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -48,6 +48,7 @@ mapAliases ({ pytest-pep8 = pytestpep8; # added 2021-01-04 pytestpep8 = throw "pytestpep8 was removed because it is abandoned and no longer compatible with pytest v6.0"; # added 2020-12-10 qasm2image = throw "qasm2image is no longer maintained (since November 2018), and is not compatible with the latest pythonPackages.qiskit versions."; # added 2020-12-09 + selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # Added 2021-06-10 setuptools_scm = setuptools-scm; # added 2021-06-03 smart_open = smart-open; # added 2021-03-14 smmap2 = throw "smmap2 has been deprecated, use smmap instead."; # added 2020-03-14 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 865c6aa8fcb3..528d5dffbf76 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1109,6 +1109,8 @@ in { blinker = callPackage ../development/python-modules/blinker { }; + blinkpy = callPackage ../development/python-modules/blinkpy { }; + BlinkStick = callPackage ../development/python-modules/blinkstick { }; blis = callPackage ../development/python-modules/blis { }; @@ -2716,6 +2718,8 @@ in { garminconnect-aio = callPackage ../development/python-modules/garminconnect-aio { }; + garminconnect-ha = callPackage ../development/python-modules/garminconnect-ha { }; + gast = callPackage ../development/python-modules/gast { }; garages-amsterdam = callPackage ../development/python-modules/garages-amsterdam { }; @@ -7676,8 +7680,6 @@ in { selectors2 = callPackage ../development/python-modules/selectors2 { }; - selectors34 = callPackage ../development/python-modules/selectors34 { }; - selenium = callPackage ../development/python-modules/selenium { }; semantic-version = callPackage ../development/python-modules/semantic-version { };