diff --git a/nixos/modules/services/networking/mosquitto.md b/nixos/modules/services/networking/mosquitto.md new file mode 100644 index 000000000000..5cdb598151e5 --- /dev/null +++ b/nixos/modules/services/networking/mosquitto.md @@ -0,0 +1,102 @@ +# Mosquitto {#module-services-mosquitto} + +Mosquitto is a MQTT broker often used for IoT or home automation data transport. + +## Quickstart {#module-services-mosquitto-quickstart} + +A minimal configuration for Mosquitto is + +```nix +services.mosquitto = { + enable = true; + listeners = [ { + acl = [ "pattern readwrite #" ]; + omitPasswordAuth = true; + settings.allow_anonymous = true; + } ]; +}; +``` + +This will start a broker on port 1883, listening on all interfaces of the machine, allowing +read/write access to all topics to any user without password requirements. + +User authentication can be configured with the `users` key of listeners. A config that gives +full read access to a user `monitor` and restricted write access to a user `service` could look +like + +```nix +services.mosquitto = { + enable = true; + listeners = [ { + users = { + monitor = { + acl = [ "read #" ]; + password = "monitor"; + }; + service = { + acl = [ "write service/#" ]; + password = "service"; + }; + }; + } ]; +}; +``` + +TLS authentication is configured by setting TLS-related options of the listener: + +```nix +services.mosquitto = { + enable = true; + listeners = [ { + port = 8883; # port change is not required, but helpful to avoid mistakes + # ... + settings = { + cafile = "/path/to/mqtt.ca.pem"; + certfile = "/path/to/mqtt.pem"; + keyfile = "/path/to/mqtt.key"; + }; + } ]; +``` + +## Configuration {#module-services-mosquitto-config} + +The Mosquitto configuration has four distinct types of settings: +the global settings of the daemon, listeners, plugins, and bridges. +Bridges and listeners are part of the global configuration, plugins are part of listeners. +Users of the broker are configured as parts of listeners rather than globally, allowing +configurations in which a given user is only allowed to log in to the broker using specific +listeners (eg to configure an admin user with full access to all topics, but restricted to +localhost). + +Almost all options of Mosquitto are available for configuration at their appropriate levels, some +as NixOS options written in camel case, the remainders under `settings` with their exact names in +the Mosquitto config file. The exceptions are `acl_file` (which is always set according to the +`acl` attributes of a listener and its users) and `per_listener_settings` (which is always set to +`true`). + +### Password authentication {#module-services-mosquitto-config-passwords} + +Mosquitto can be run in two modes, with a password file or without. Each listener has its own +password file, and different listeners may use different password files. Password file generation +can be disabled by setting `omitPasswordAuth = true` for a listener; in this case it is necessary +to either set `settings.allow_anonymous = true` to allow all logins, or to configure other +authentication methods like TLS client certificates with `settings.use_identity_as_username = true`. + +The default is to generate a password file for each listener from the users configured to that +listener. Users with no configured password will not be added to the password file and thus +will not be able to use the broker. + +### ACL format {#module-services-mosquitto-config-acl} + +Every listener has a Mosquitto `acl_file` attached to it. This ACL is configured via two +attributes of the config: + + * the `acl` attribute of the listener configures pattern ACL entries and topic ACL entries + for anonymous users. Each entry must be prefixed with `pattern` or `topic` to distinguish + between these two cases. + * the `acl` attribute of every user configures in the listener configured the ACL for that + given user. Only topic ACLs are supported by Mosquitto in this setting, so no prefix is + required or allowed. + +The default ACL for a listener is empty, disallowing all accesses from all clients. To configure +a completely open ACL, set `acl = [ "pattern readwrite #" ]` in the listener. diff --git a/nixos/modules/services/networking/mosquitto.nix b/nixos/modules/services/networking/mosquitto.nix index 5a573cbf4ac9..2d498d4dbbcf 100644 --- a/nixos/modules/services/networking/mosquitto.nix +++ b/nixos/modules/services/networking/mosquitto.nix @@ -257,18 +257,28 @@ let users = mkOption { type = attrsOf userOptions; - example = { john = { password = "123456"; acl = [ "topic readwrite john/#" ]; }; }; + example = { john = { password = "123456"; acl = [ "readwrite john/#" ]; }; }; description = '' A set of users and their passwords and ACLs. ''; default = {}; }; + omitPasswordAuth = mkOption { + type = bool; + description = '' + Omits password checking, allowing anyone to log in with any user name unless + other mandatory authentication methods (eg TLS client certificates) are configured. + ''; + default = false; + }; + acl = mkOption { type = listOf str; description = '' Additional ACL items to prepend to the generated ACL file. ''; + example = [ "pattern read #" "topic readwrite anon/report/#" ]; default = []; }; @@ -294,9 +304,9 @@ let formatListener = idx: listener: [ "listener ${toString listener.port} ${toString listener.address}" - "password_file ${cfg.dataDir}/passwd-${toString idx}" "acl_file ${makeACLFile idx listener.users listener.acl}" ] + ++ optional (! listener.omitPasswordAuth) "password_file ${cfg.dataDir}/passwd-${toString idx}" ++ formatFreeform {} listener.settings ++ concatMap formatAuthPlugin listener.authPlugins; @@ -645,5 +655,10 @@ in }; - meta.maintainers = with lib.maintainers; [ pennae ]; + meta = { + maintainers = with lib.maintainers; [ pennae ]; + # Don't edit the docbook xml directly, edit the md and generate it: + # `pandoc mosquitto.md -t docbook --top-level-division=chapter --extract-media=media -f markdown+smart > mosquitto.xml` + doc = ./mosquitto.xml; + }; } diff --git a/nixos/modules/services/networking/mosquitto.xml b/nixos/modules/services/networking/mosquitto.xml new file mode 100644 index 000000000000..d16ab28c0269 --- /dev/null +++ b/nixos/modules/services/networking/mosquitto.xml @@ -0,0 +1,147 @@ + + Mosquitto + + Mosquitto is a MQTT broker often used for IoT or home automation + data transport. + +
+ Quickstart + + A minimal configuration for Mosquitto is + + +services.mosquitto = { + enable = true; + listeners = [ { + acl = [ "pattern readwrite #" ]; + omitPasswordAuth = true; + settings.allow_anonymous = true; + } ]; +}; + + + This will start a broker on port 1883, listening on all interfaces + of the machine, allowing read/write access to all topics to any + user without password requirements. + + + User authentication can be configured with the + users key of listeners. A config that gives + full read access to a user monitor and + restricted write access to a user service could + look like + + +services.mosquitto = { + enable = true; + listeners = [ { + users = { + monitor = { + acl = [ "read #" ]; + password = "monitor"; + }; + service = { + acl = [ "write service/#" ]; + password = "service"; + }; + }; + } ]; +}; + + + TLS authentication is configured by setting TLS-related options of + the listener: + + +services.mosquitto = { + enable = true; + listeners = [ { + port = 8883; # port change is not required, but helpful to avoid mistakes + # ... + settings = { + cafile = "/path/to/mqtt.ca.pem"; + certfile = "/path/to/mqtt.pem"; + keyfile = "/path/to/mqtt.key"; + }; + } ]; + +
+
+ Configuration + + The Mosquitto configuration has four distinct types of settings: + the global settings of the daemon, listeners, plugins, and + bridges. Bridges and listeners are part of the global + configuration, plugins are part of listeners. Users of the broker + are configured as parts of listeners rather than globally, + allowing configurations in which a given user is only allowed to + log in to the broker using specific listeners (eg to configure an + admin user with full access to all topics, but restricted to + localhost). + + + Almost all options of Mosquitto are available for configuration at + their appropriate levels, some as NixOS options written in camel + case, the remainders under settings with their + exact names in the Mosquitto config file. The exceptions are + acl_file (which is always set according to the + acl attributes of a listener and its users) and + per_listener_settings (which is always set to + true). + +
+ Password authentication + + Mosquitto can be run in two modes, with a password file or + without. Each listener has its own password file, and different + listeners may use different password files. Password file + generation can be disabled by setting + omitPasswordAuth = true for a listener; in + this case it is necessary to either set + settings.allow_anonymous = true to allow all + logins, or to configure other authentication methods like TLS + client certificates with + settings.use_identity_as_username = true. + + + The default is to generate a password file for each listener + from the users configured to that listener. Users with no + configured password will not be added to the password file and + thus will not be able to use the broker. + +
+
+ ACL format + + Every listener has a Mosquitto acl_file + attached to it. This ACL is configured via two attributes of the + config: + + + + + the acl attribute of the listener + configures pattern ACL entries and topic ACL entries for + anonymous users. Each entry must be prefixed with + pattern or topic to + distinguish between these two cases. + + + + + the acl attribute of every user + configures in the listener configured the ACL for that given + user. Only topic ACLs are supported by Mosquitto in this + setting, so no prefix is required or allowed. + + + + + The default ACL for a listener is empty, disallowing all + accesses from all clients. To configure a completely open ACL, + set acl = [ "pattern readwrite #" ] + in the listener. + +
+
+
diff --git a/nixos/modules/virtualisation/libvirtd.nix b/nixos/modules/virtualisation/libvirtd.nix index 121e7286bc13..ab87394a30ee 100644 --- a/nixos/modules/virtualisation/libvirtd.nix +++ b/nixos/modules/virtualisation/libvirtd.nix @@ -254,7 +254,7 @@ in "allow ${e}") cfg.allowedBridges; systemPackages = with pkgs; [ libressl.nc iptables cfg.package cfg.qemu.package ]; - etc.ethertypes.source = "${pkgs.ebtables}/etc/ethertypes"; + etc.ethertypes.source = "${pkgs.iptables}/etc/ethertypes"; }; boot.kernelModules = [ "tun" ]; diff --git a/nixos/tests/mosquitto.nix b/nixos/tests/mosquitto.nix index eb47e97ba04b..36cc8e3e3d9b 100644 --- a/nixos/tests/mosquitto.nix +++ b/nixos/tests/mosquitto.nix @@ -3,6 +3,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: let port = 1888; tlsPort = 1889; + anonPort = 1890; password = "VERY_secret"; hashedPassword = "$7$101$/WJc4Mp+I+uYE9sR$o7z9rD1EYXHPwEP5GqQj6A7k4W1yVbePlb8TqNcuOLV9WNCiDgwHOB0JHC1WCtdkssqTBduBNUnUGd6kmZvDSw=="; topic = "test/foo"; @@ -63,7 +64,7 @@ in { }; in { server = { pkgs, ... }: { - networking.firewall.allowedTCPPorts = [ port tlsPort ]; + networking.firewall.allowedTCPPorts = [ port tlsPort anonPort ]; services.mosquitto = { enable = true; settings = { @@ -112,6 +113,18 @@ in { use_identity_as_username = true; }; } + { + port = anonPort; + omitPasswordAuth = true; + settings.allow_anonymous = true; + acl = [ "pattern read #" ]; + users = { + anonWriter = { + password = "" + password; + acl = [ "write ${topic}" ]; + }; + }; + } ]; }; }; @@ -136,9 +149,8 @@ in { def publish(args, user, topic="${topic}", port=${toString port}): return "{} {}".format(mosquitto_cmd("pub", user, topic, port), args) - def subscribe(args, user, topic="${topic}", port=${toString port}): - return "{} -C 1 {}".format(mosquitto_cmd("sub", user, topic, port), args) + return "{} -W 5 -C 1 {}".format(mosquitto_cmd("sub", user, topic, port), args) def parallel(*fns): from threading import Thread @@ -150,17 +162,15 @@ in { start_all() server.wait_for_unit("mosquitto.service") - def check_passwords(): + with subtest("check passwords"): client1.succeed(publish("-m test", "password_store")) client1.succeed(publish("-m test", "password_file")) client1.succeed(publish("-m test", "hashed_store")) client1.succeed(publish("-m test", "hashed_file")) - check_passwords() - - def check_acl(): + with subtest("check acl"): client1.succeed(subscribe("", "reader", topic="$SYS/#")) - client1.fail(subscribe("-W 5", "writer", topic="$SYS/#")) + client1.fail(subscribe("", "writer", topic="$SYS/#")) parallel( lambda: client1.succeed(subscribe("-i 3688cdd7-aa07-42a4-be22-cb9352917e40", "reader")), @@ -170,15 +180,13 @@ in { ]) parallel( - lambda: client1.fail(subscribe("-W 5 -i 24ff16a2-ae33-4a51-9098-1b417153c712", "reader")), + lambda: client1.fail(subscribe("-i 24ff16a2-ae33-4a51-9098-1b417153c712", "reader")), lambda: [ server.wait_for_console_text("24ff16a2-ae33-4a51-9098-1b417153c712"), client2.succeed(publish("-m test", "reader")) ]) - check_acl() - - def check_tls(): + with subtest("check tls"): client1.succeed( subscribe( "--cafile ${snakeOil}/ca.crt " @@ -188,6 +196,13 @@ in { port=${toString tlsPort}, user="no_such_user")) - check_tls() + with subtest("check omitPasswordAuth"): + parallel( + lambda: client1.succeed(subscribe("-i fd56032c-d9cb-4813-a3b4-6be0e04c8fc3", + "anonReader", port=${toString anonPort})), + lambda: [ + server.wait_for_console_text("fd56032c-d9cb-4813-a3b4-6be0e04c8fc3"), + client2.succeed(publish("-m test", "anonWriter", port=${toString anonPort})) + ]) ''; }) diff --git a/pkgs/applications/audio/ecasound/default.nix b/pkgs/applications/audio/ecasound/default.nix index 47db22016485..108be8726c50 100644 --- a/pkgs/applications/audio/ecasound/default.nix +++ b/pkgs/applications/audio/ecasound/default.nix @@ -1,5 +1,6 @@ { lib, stdenv , fetchurl +, fetchpatch , pkg-config , alsa-lib , audiofile @@ -28,6 +29,16 @@ stdenv.mkDerivation rec { sha256 = "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"; }; + patches = [ + # Pull patch pending upstream inclusion for ncurses-6.3: + # https://sourceforge.net/p/ecasound/bugs/54/ + (fetchpatch { + name = "ncursdes-6.3.patch"; + url = "https://sourceforge.net/p/ecasound/bugs/54/attachment/0001-ecasignalview.cpp-always-use-s-style-format-for-prin.patch"; + sha256 = "1x1gsjzd43lh19mhpmwrbq269h56s8bxgyv0yfi5yf0sqjf9vaq0"; + }) + ]; + nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/applications/editors/aewan/default.nix b/pkgs/applications/editors/aewan/default.nix index b9d350cbd438..8472a91c596f 100644 --- a/pkgs/applications/editors/aewan/default.nix +++ b/pkgs/applications/editors/aewan/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, zlib, ncurses }: +{ lib, stdenv, fetchurl, fetchpatch, zlib, ncurses }: stdenv.mkDerivation rec { pname = "aewan"; @@ -9,6 +9,17 @@ stdenv.mkDerivation rec { sha256 = "5266dec5e185e530b792522821c97dfa5f9e3892d0dca5e881d0c30ceac21817"; }; + patches = [ + # Pull patch pending upstream inclusion: + # https://sourceforge.net/p/aewan/bugs/13/ + (fetchpatch { + url = "https://sourceforge.net/p/aewan/bugs/13/attachment/aewan-cvs-ncurses-6.3.patch"; + sha256 = "0pgpk1l3d6d5y37lvvavipwnmv9gmpfdy21jkz6baxhlkgf43r4p"; + # patch is in CVS diff format, add 'a/' prefix + extraPrefix = ""; + }) + ]; + buildInputs = [ zlib ncurses ]; meta = { diff --git a/pkgs/applications/graphics/imgbrd-grabber/default.nix b/pkgs/applications/graphics/imgbrd-grabber/default.nix index c0115d95ac80..e9f415f722dc 100644 --- a/pkgs/applications/graphics/imgbrd-grabber/default.nix +++ b/pkgs/applications/graphics/imgbrd-grabber/default.nix @@ -6,6 +6,7 @@ , qttools , qtscript , qtdeclarative +, qtnetworkauth , qtbase , autogen , automake @@ -17,15 +18,16 @@ , rsync , typescript }: + stdenv.mkDerivation rec { pname = "imgbrd-grabber"; + version = "7.5.1"; - version = "7.3.2"; src = fetchFromGitHub { owner = "Bionus"; repo = "imgbrd-grabber"; rev = "v${version}"; - sha256 = "053rwvcr88fcba0447a6r115cgnqsm9rl066z8d5jacqnhdij58k"; + sha256 = "sha256-40JCdtRhAQpz2lBGmYh2MgA9rRzHmOZx7lWW0IbfjP4="; fetchSubmodules = true; }; @@ -41,6 +43,7 @@ stdenv.mkDerivation rec { qtbase qtdeclarative qttools + qtnetworkauth nodejs cmake wrapQtAppsHook @@ -67,6 +70,8 @@ stdenv.mkDerivation rec { # link the catch2 sources from nixpkgs ln -sf ${catch2.src} tests/src/vendor/catch + + sed "s|strict\": true|strict\": false|g" -i ./sites/tsconfig.json ''; postInstall = '' diff --git a/pkgs/applications/misc/bemenu/default.nix b/pkgs/applications/misc/bemenu/default.nix index 123d839341d6..d230606a3c38 100644 --- a/pkgs/applications/misc/bemenu/default.nix +++ b/pkgs/applications/misc/bemenu/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, cairo, libxkbcommon +{ stdenv, lib, fetchFromGitHub, fetchpatch, cairo, libxkbcommon , pango, fribidi, harfbuzz, pcre, pkg-config , ncursesSupport ? true, ncurses ? null , waylandSupport ? true, wayland ? null, wayland-protocols ? null @@ -20,6 +20,15 @@ stdenv.mkDerivation rec { sha256 = "sha256-U4IMfDvQ0rfEJhE3Uext2c/Cs0mjy1tw+k8uk441Ag8="; }; + patches = [ + # Pull upstream fix for build against ncurses-6.3 + (fetchpatch { + name = "ncurses-6.3.patch"; + url = "https://github.com/Cloudef/bemenu/commit/d31164db756989579468946aba62969e42c7ed28.patch"; + sha256 = "sha256-oyndQI7SaR8cK0IO5wIIxMpmakhfUzwUqLIKRbPkEdw="; + }) + ]; + nativeBuildInputs = [ pkg-config pcre ]; makeFlags = ["PREFIX=$(out)"]; diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix index a512c119d53a..c679b568736b 100644 --- a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix +++ b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix @@ -43,12 +43,11 @@ # Hardening , graphene-hardened-malloc -# crashes with intel driver -, useHardenedMalloc ? false +# Whether to use graphene-hardened-malloc +, useHardenedMalloc ? true -# Whether to disable multiprocess support to work around crashing tabs -# TODO: fix the underlying problem instead of this terrible work-around -, disableContentSandbox ? true +# Whether to disable multiprocess support +, disableContentSandbox ? false # Extra preferences , extraPrefs ? "" diff --git a/pkgs/applications/networking/instant-messengers/mcabber/default.nix b/pkgs/applications/networking/instant-messengers/mcabber/default.nix index 7c5bff940848..2ca94953c4f6 100644 --- a/pkgs/applications/networking/instant-messengers/mcabber/default.nix +++ b/pkgs/applications/networking/instant-messengers/mcabber/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, openssl, ncurses, pkg-config, glib, loudmouth, libotr +{ lib, stdenv, fetchurl, fetchpatch, openssl, ncurses, pkg-config, glib, loudmouth, libotr , gpgme }: @@ -11,6 +11,16 @@ stdenv.mkDerivation rec { sha256 = "0q1i5acyghsmzas88qswvki8kkk2nfpr8zapgnxbcd3lwcxl38f4"; }; + patches = [ + # Pull upstream patch for ncurses-6.3. + (fetchpatch { + name = "ncurses-6.3.patch"; + url = "https://github.com/McKael/mcabber/commit/5a0893d69023b77b7671731defbdca5d47731130.patch"; + sha256 = "01bc23z0mva9l9jv587sq2r9w3diachgkmb9ad99hlzgj02fmq4v"; + stripLen = 1; + }) + ]; + nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ncurses glib loudmouth libotr gpgme ]; diff --git a/pkgs/applications/networking/instant-messengers/toxic/default.nix b/pkgs/applications/networking/instant-messengers/toxic/default.nix index 3082748a3518..a6d6cac4ac76 100644 --- a/pkgs/applications/networking/instant-messengers/toxic/default.nix +++ b/pkgs/applications/networking/instant-messengers/toxic/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, libsodium, ncurses, curl +{ lib, stdenv, fetchFromGitHub, fetchpatch, libsodium, ncurses, curl , libtoxcore, openal, libvpx, freealut, libconfig, pkg-config, libopus , qrencode, gdk-pixbuf, libnotify }: @@ -13,6 +13,15 @@ stdenv.mkDerivation rec { sha256 = "sha256-5jLXXI+IMrYa7ZtdMjJrah1zB5TJ3GdHfvcMd1TYE4E="; }; + patches = [ + # Pending for upstream inclusion fix for ncurses-6.3 compatibility. + (fetchpatch { + name = "ncurses-6.3.patch"; + url = "https://github.com/JFreegman/toxic/commit/41e93adbdbd56db065166af5a6676a7996e9e451.patch"; + sha256 = "sha256-LYEseB5FmXFNifa1RZUxhkXeWlkEEMm3ASD55IoUPa0="; + }) + ]; + makeFlags = [ "PREFIX=$(out)"]; installFlags = [ "PREFIX=$(out)"]; diff --git a/pkgs/applications/science/electronics/picoscope/default.nix b/pkgs/applications/science/electronics/picoscope/default.nix new file mode 100644 index 000000000000..344d54d10a6d --- /dev/null +++ b/pkgs/applications/science/electronics/picoscope/default.nix @@ -0,0 +1,136 @@ +{ stdenv, lib, fetchurl, dpkg, makeWrapper , mono, gtk-sharp-3_0 +, glib, libusb1 , zlib, gtk3-x11, callPackage +, scopes ? [ + "picocv" + "ps2000" + "ps2000a" + "ps3000" + "ps3000a" + "ps4000" + "ps4000a" + "ps5000" + "ps5000a" + "ps6000" + "ps6000a" +] }: + +let + shared_meta = lib: + with lib; { + homepage = "https://www.picotech.com/downloads/linux"; + maintainers = with maintainers; [ expipiplus1 yorickvp wirew0rm ]; + platforms = [ "x86_64-linux" ]; + license = licenses.unfree; + }; + + libpicoipp = callPackage ({ stdenv, lib, fetchurl, autoPatchelfHook, dpkg }: + stdenv.mkDerivation rec { + pname = "libpicoipp"; + inherit (sources.libpicoipp) version; + src = fetchurl { inherit (sources.libpicoipp) url sha256; }; + nativeBuildInputs = [ dpkg autoPatchelfHook ]; + buildInputs = [ stdenv.cc.cc.lib ]; + sourceRoot = "."; + unpackCmd = "dpkg-deb -x $src ."; + installPhase = '' + runHook preInstall + mkdir -p $out/lib + cp -d opt/picoscope/lib/* $out/lib + install -Dt $out/usr/share/doc/libpicoipp usr/share/doc/libpicoipp/copyright + runHook postInstall + ''; + meta = with lib; + shared_meta lib // { + description = "library for picotech oscilloscope software"; + }; + }) { }; + + # If we don't have a platform available, put a dummy version here, so at + # least evaluation succeeds. + sources = + (lib.importJSON ./sources.json).${stdenv.system} or { picoscope.version = "unknown"; }; + + scopePkg = name: + { url, version, sha256 }: + stdenv.mkDerivation rec { + pname = "lib${name}"; + inherit version; + src = fetchurl { inherit url sha256; }; + # picoscope does a signature check, so we can't patchelf these + nativeBuildInputs = [ dpkg ]; + sourceRoot = "."; + unpackCmd = "dpkg-deb -x $src ."; + installPhase = '' + runHook preInstall + mkdir -p $out/lib + cp -d opt/picoscope/lib/* $out/lib + runHook postInstall + ''; + meta = with lib; + shared_meta lib // { + description = "library for picotech oscilloscope ${name} series"; + }; + }; + + scopePkgs = lib.mapAttrs scopePkg sources; + +in stdenv.mkDerivation rec { + pname = "picoscope"; + inherit (sources.picoscope) version; + + src = fetchurl { inherit (sources.picoscope) url sha256; }; + + nativeBuildInputs = [ dpkg makeWrapper ]; + buildInputs = [ gtk-sharp-3_0 mono glib libusb1 zlib ]; + + unpackCmd = "dpkg-deb -x $src ."; + sourceRoot = "."; + scopeLibs = lib.attrVals (map (x: "lib${x}") scopes) scopePkgs; + MONO_PATH = "${gtk-sharp-3_0}/lib/mono/gtk-sharp-3.0:" + (lib.makeLibraryPath + ([ + glib + gtk3-x11 + gtk-sharp-3_0 + libusb1 + zlib + libpicoipp + ] ++ scopeLibs)); + + installPhase = '' + runHook preInstall + mkdir -p $out/ + cp -dr usr/share $out/share + cp -dr opt/picoscope/* $out/ + makeWrapper "$(command -v mono)" $out/bin/picoscope \ + --add-flags $out/lib/PicoScope.GTK.exe \ + --prefix MONO_PATH : "$MONO_PATH" \ + --prefix LD_LIBRARY_PATH : "$MONO_PATH" + runHook postInstall + ''; + + # usage: + # services.udev.packages = [ pkgs.picoscope.rules ]; + # users.groups.pico = {}; + # users.users.you.extraGroups = [ "pico" ]; + passthru.rules = lib.writeTextDir "lib/udev/rules.d/95-pico.rules" '' + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ce9", MODE="664",GROUP="pico" + ''; + + meta = with lib; + shared_meta lib // { + description = + "Oscilloscope application that works with all PicoScope models"; + longDescription = '' + PicoScope for Linux is a powerful oscilloscope application that works + with all PicoScope models. The most important features from PicoScope + for Windows are included—scope, spectrum analyzer, advanced triggers, + automated measurements, interactive zoom, persistence modes and signal + generator control. More features are being added all the time. + + Waveform captures can be saved for off-line analysis, and shared with + PicoScope for Linux, PicoScope for macOS and PicoScope for Windows + users, or exported in text, CSV and MathWorks MATLAB 4 formats. + ''; + }; +} + diff --git a/pkgs/applications/science/electronics/picoscope/sources.json b/pkgs/applications/science/electronics/picoscope/sources.json new file mode 100644 index 000000000000..7404259b231e --- /dev/null +++ b/pkgs/applications/science/electronics/picoscope/sources.json @@ -0,0 +1,69 @@ +{ + "x86_64-linux": { + "libpicocv": { + "sha256": "c2e74c2b0679df0226993d063b38d0eda5b05ff59f29bbfa12ded5226df37024", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libpicocv/libpicocv_1.1.27-1r153_amd64.deb", + "version": "1.1.27-1r153" + }, + "libpicoipp": { + "sha256": "87ae49cd5e8dda4a73a835b95ea13e4c3fc4d1c4c9d6495c9affdf6fa6b1b4aa", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libpicoipp/libpicoipp_1.3.0-4r121_amd64.deb", + "version": "1.3.0-4r121" + }, + "libps2000": { + "sha256": "792e506c08cebbd617e833e1547d3e5a13a186f93cea3f84608b7ed9451fb077", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps2000/libps2000_3.0.75-3r2957_amd64.deb", + "version": "3.0.75-3r2957" + }, + "libps2000a": { + "sha256": "f31b3a8e9c6af14a59e348e4b302f12f582cdb08a47a3c04d8a6a612b4630305", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps2000a/libps2000a_2.1.75-5r2957_amd64.deb", + "version": "2.1.75-5r2957" + }, + "libps3000": { + "sha256": "27dce3c924bb0169768a4964ce567b4a18ce74079537ca1fcba61e9234691580", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps3000/libps3000_4.0.75-3r2957_amd64.deb", + "version": "4.0.75-3r2957" + }, + "libps3000a": { + "sha256": "31cf00ce136526af6e8b211a44a56b221d137de6eaec4d6fd7f31593b4245d62", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps3000a/libps3000a_2.1.75-6r2957_amd64.deb", + "version": "2.1.75-6r2957" + }, + "libps4000": { + "sha256": "c976f09647f1fd2c980aafd1efe7f557bfc7c283fb9c135725c38dd59cc297e9", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps4000/libps4000_2.1.75-2r2957_amd64.deb", + "version": "2.1.75-2r2957" + }, + "libps4000a": { + "sha256": "727f24fa74759385902d41d52a26a4636b3e3f08a8743901d15cc49622207b97", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps4000a/libps4000a_2.1.75-2r2957_amd64.deb", + "version": "2.1.75-2r2957" + }, + "libps5000": { + "sha256": "3237c1dfdb384079b7039d2b4a8e0b0126e804830b29d60e89ae018182667edb", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps5000/libps5000_2.1.75-3r2957_amd64.deb", + "version": "2.1.75-3r2957" + }, + "libps5000a": { + "sha256": "27947f8461a16cf59d64cd23d7a78ddd27826e38dfe9fca3902e3b553591fb19", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps5000a/libps5000a_2.1.75-5r2957_amd64.deb", + "version": "2.1.75-5r2957" + }, + "libps6000": { + "sha256": "d65e923db969e306fb9f3f3892229a297d6187574d901dde44375270cc1e1404", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps6000/libps6000_2.1.75-6r2957_amd64.deb", + "version": "2.1.75-6r2957" + }, + "libps6000a": { + "sha256": "eff8644ad44f9cc1cf9052e27786a1480a4ab599766c1c01e370fef40a76b224", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps6000a/libps6000a_1.0.75-0r2957_amd64.deb", + "version": "1.0.75-0r2957" + }, + "picoscope": { + "sha256": "3d2a0e360c8143fc03c29b394c16bfc2387164e33099a46b6905af992cfab440", + "url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/p/picoscope/picoscope_7.0.83-1r9320_amd64.deb", + "version": "7.0.83-1r9320" + } + } +} diff --git a/pkgs/applications/science/electronics/picoscope/update.py b/pkgs/applications/science/electronics/picoscope/update.py new file mode 100755 index 000000000000..ecbd2292030d --- /dev/null +++ b/pkgs/applications/science/electronics/picoscope/update.py @@ -0,0 +1,44 @@ +#!/usr/bin/env nix-shell +#!nix-shell --pure -i python3 -p "python3.withPackages (ps: with ps; [ requests ])" +import json +import os +import requests +import sys + +def parse_packages(text): + res = [] + for package in resp.text.split("\n\n"): + if not package: continue + pkg = {} + for field in package.split("\n"): + if field.startswith(" "): # multiline string + pkg[k] += "\n" + field[1:] + else: + [k, v] = field.split(": ", 1) + pkg[k] = v + res.append(pkg) + return res + +def generate_sources(packages): + sources_spec = {} + for pkg in pkgs: + sources_spec[pkg['Package']] = { + "url": "https://labs.picotech.com/rc/picoscope7/debian/" + pkg["Filename"], + "sha256": pkg["SHA256"], + "version": pkg["Version"] + } + return sources_spec + +out = {} +for nix_system, release in {"x86_64-linux": "amd64"}.items(): + resp = requests.get("https://labs.picotech.com/rc/picoscope7/debian//dists/picoscope/main/binary-"+release+"/Packages") + if resp.status_code != 200: + print("error: could not fetch data for release {} (code {})".format(release, resp.code), file=sys.stderr) + sys.exit(1) + pkgs = parse_packages(resp.text) + out[nix_system] = generate_sources(pkgs) + +with open(os.path.dirname(__file__) + "/sources.json", "w") as f: + json.dump(out, f, indent=2, sort_keys=True) + f.write('\n') + diff --git a/pkgs/development/python-modules/mailman-hyperkitty/default.nix b/pkgs/development/python-modules/mailman-hyperkitty/default.nix index 3bf996fa714a..2d3ec976d64b 100644 --- a/pkgs/development/python-modules/mailman-hyperkitty/default.nix +++ b/pkgs/development/python-modules/mailman-hyperkitty/default.nix @@ -1,26 +1,50 @@ -{ lib, buildPythonPackage, fetchPypi, mailman, mock }: +{ lib +, buildPythonPackage +, fetchPypi +, mailman +, mock +, nose2 +, python +, requests +, zope_interface +}: buildPythonPackage rec { pname = "mailman-hyperkitty"; version = "1.1.0"; + format = "setuptools"; src = fetchPypi { inherit pname version; sha256 = "1lfqa9admhvdv71f528jmz2wl0i5cv77v6l64px2pm4zqr9ckkjx"; }; - propagatedBuildInputs = [ mailman ]; - checkInputs = [ mock ]; + propagatedBuildInputs = [ + mailman + requests + zope_interface + ]; + + checkInputs = [ + mock + nose2 + ]; checkPhase = '' - python -m nose2 -v + ${python.interpreter} -m nose2 -v ''; + + # There is an AssertionError doCheck = false; + pythonImportsCheck = [ + "mailman_hyperkitty" + ]; + meta = with lib; { description = "Mailman archiver plugin for HyperKitty"; homepage = "https://gitlab.com/mailman/mailman-hyperkitty"; - license = licenses.gpl3; + license = licenses.gpl3Plus; maintainers = with maintainers; [ globin qyliss ]; }; } diff --git a/pkgs/development/python-modules/mypy-boto3-s3/default.nix b/pkgs/development/python-modules/mypy-boto3-s3/default.nix index 587cf0bd68f3..496a94e776e9 100644 --- a/pkgs/development/python-modules/mypy-boto3-s3/default.nix +++ b/pkgs/development/python-modules/mypy-boto3-s3/default.nix @@ -8,13 +8,13 @@ buildPythonPackage rec { pname = "mypy-boto3-s3"; - version = "1.19.8"; + version = "1.19.12"; disabled = pythonOlder "3.6"; src = fetchPypi { inherit pname version; - sha256 = "60481cae38e01273d09a6159e4ff8c36d5d7e335319117a16cdb3d887928a7b4"; + sha256 = "sha256-xgcGbWcrdFwFPQLJHmgRdY2XbwAiInZxmw6RiFVJ5F4="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/prov/default.nix b/pkgs/development/python-modules/prov/default.nix index 9844b018518b..101ea7e2e939 100644 --- a/pkgs/development/python-modules/prov/default.nix +++ b/pkgs/development/python-modules/prov/default.nix @@ -28,8 +28,15 @@ buildPythonPackage rec { pydot ]; + # Multiple tests are out-dated and failing + doCheck = false; + + pythonImportsCheck = [ + "prov" + ]; + meta = with lib; { - description = "A Python library for W3C Provenance Data Model (PROV)"; + description = "Python library for W3C Provenance Data Model (PROV)"; homepage = "https://github.com/trungdong/prov"; license = licenses.mit; maintainers = with maintainers; [ ashgillman ]; diff --git a/pkgs/development/python-modules/rdflib/default.nix b/pkgs/development/python-modules/rdflib/default.nix index 97a2fe532bc5..5f17bbd03c3e 100644 --- a/pkgs/development/python-modules/rdflib/default.nix +++ b/pkgs/development/python-modules/rdflib/default.nix @@ -1,36 +1,62 @@ -{ buildPythonPackage +{ lib +, buildPythonPackage , fetchPypi -, isodate , html5lib -, SPARQLWrapper +, isodate , networkx , nose -, python +, pyparsing +, tabulate +, pandas +, pytestCheckHook +, pythonOlder +, SPARQLWrapper }: buildPythonPackage rec { pname = "rdflib"; - version = "6.0.1"; + version = "6.0.2"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - sha256 = "f071caff0b68634e4a7bd1d66ea3416ac98f1cc3b915938147ea899c32608728"; + sha256 = "sha256-YTauBWABR07ir/X8W5VuYqEcOpxmuw89nAqqX7tWhU4="; }; - propagatedBuildInputs = [isodate html5lib SPARQLWrapper ]; + propagatedBuildInputs = [ + isodate + html5lib + pyparsing + SPARQLWrapper + ]; - checkInputs = [ networkx nose ]; + checkInputs = [ + networkx + pandas + nose + tabulate + pytestCheckHook + ]; - # Python 2 syntax - # Failing doctest - doCheck = false; + disabledTests = [ + # Requires network access + "api_key" + "BerkeleyDBTestCase" + "test_bad_password" + "test_service" + "testGuessFormatForParse" + ]; - checkPhase = '' - ${python.interpreter} run_tests.py - ''; + pythonImportsCheck = [ + "rdflib" + ]; - meta = { - description = "A Python library for working with RDF, a simple yet powerful language for representing information"; - homepage = "http://www.rdflib.net/"; + meta = with lib; { + description = "Python library for working with RDF"; + homepage = "https://rdflib.readthedocs.io"; + license = licenses.bsd3; + maintainers = with maintainers; [ ]; }; } diff --git a/pkgs/development/python-modules/smbprotocol/default.nix b/pkgs/development/python-modules/smbprotocol/default.nix index a0192ed9acea..50caecaa97cb 100644 --- a/pkgs/development/python-modules/smbprotocol/default.nix +++ b/pkgs/development/python-modules/smbprotocol/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "smbprotocol"; - version = "1.8.1"; + version = "1.8.2"; disabled = pythonOlder "3.6"; src = fetchFromGitHub { owner = "jborean93"; repo = pname; rev = "v${version}"; - sha256 = "sha256-HhyOGRwDnLwrXPjvF04MlgSxGZc0w3nDek9Mnv49cG4="; + sha256 = "sha256-NBwfWW02lzR4Xk+7qodQX+eIXMTtdy9WOtLzsf30d4c="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/starkbank-ecdsa/default.nix b/pkgs/development/python-modules/starkbank-ecdsa/default.nix index df45883b9b05..c22862f53df9 100644 --- a/pkgs/development/python-modules/starkbank-ecdsa/default.nix +++ b/pkgs/development/python-modules/starkbank-ecdsa/default.nix @@ -6,13 +6,13 @@ buildPythonPackage rec { pname = "starkbank-ecdsa"; - version = "2.0.0"; + version = "2.0.1"; src = fetchFromGitHub { owner = "starkbank"; repo = "ecdsa-python"; rev = "v${version}"; - sha256 = "sha256-MTd9aeX6UavRua0hnuy5qY5kltzSoyvv+LcL5EvU5Sc="; + sha256 = "sha256-TYp8eIzO8Bn1hgye7PpIywVEV0tQtJ3HaYjCnn4/57w="; }; checkInputs = [ diff --git a/pkgs/development/tools/analysis/checkov/default.nix b/pkgs/development/tools/analysis/checkov/default.nix index 19ca44143ff6..9426d6c8f485 100644 --- a/pkgs/development/tools/analysis/checkov/default.nix +++ b/pkgs/development/tools/analysis/checkov/default.nix @@ -56,7 +56,7 @@ with py.pkgs; buildPythonApplication rec { pname = "checkov"; - version = "2.0.528"; + version = "2.0.549"; disabled = python3.pythonOlder "3.7"; @@ -64,7 +64,7 @@ buildPythonApplication rec { owner = "bridgecrewio"; repo = pname; rev = version; - sha256 = "sha256-RcQVm3ppe3c4G/32Dgf6UhwtxJyQWgS4vD5wMYIfwKY="; + sha256 = "sha256-nxvUxjqzBUPbOkMhdQhkdlMRGFj6vhMU3BjXpSwBb8s="; }; nativeBuildInputs = with py.pkgs; [ diff --git a/pkgs/development/tools/build-managers/gradle/default.nix b/pkgs/development/tools/build-managers/gradle/default.nix index 5e2ef7ef9442..c0c576d6d462 100644 --- a/pkgs/development/tools/build-managers/gradle/default.nix +++ b/pkgs/development/tools/build-managers/gradle/default.nix @@ -65,24 +65,21 @@ rec { gradle_latest = gradle_7; - gradle_7 = gradleGen (gradleSpec { - version = "7.2"; - nativeVersion = "0.22-milestone-21"; - sha256 = "1pg6w5czysywsgdvmll5bwd2p6y99cn5sn3gw69cps9mkjd710gm"; - }); + # NOTE: 7.3 is a candidate. + gradle_7 = gradle_7_2; - gradle_6_8 = gradleGen (gradleSpec { - version = "6.8.3"; - nativeVersion = "0.22-milestone-9"; - sha256 = "01fjrk5nfdp6mldyblfmnkq2gv1rz1818kzgr0k2i1wzfsc73akz"; - }); + gradle_7_3 = gradleGen (gradleSpec (import ./gradle-7.3-rc-3-spec.nix)); + gradle_7_2 = gradleGen (gradleSpec (import ./gradle-7.2-spec.nix)); + gradle_6_9 = gradleGen (gradleSpec (import ./gradle-6.9.1-spec.nix)); + # NOTE: No GitHub Release for this release, so update.sh does not work. gradle_5_6 = gradleGen (gradleSpec { version = "5.6.4"; nativeVersion = "0.18"; - sha256 = "1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d"; + sha256 = "03d86bbqd19h9xlanffcjcy3vg1k5905vzhf9mal9g21603nfc0z"; }); + # NOTE: No GitHub Release for this release, so update.sh does not work. gradle_4_10 = gradleGen (gradleSpec { version = "4.10.3"; nativeVersion = "0.14"; diff --git a/pkgs/development/tools/build-managers/gradle/gradle-6.9.1-spec.nix b/pkgs/development/tools/build-managers/gradle/gradle-6.9.1-spec.nix new file mode 100644 index 000000000000..d343d6bf2726 --- /dev/null +++ b/pkgs/development/tools/build-managers/gradle/gradle-6.9.1-spec.nix @@ -0,0 +1,5 @@ +{ + version = "6.9.1"; + nativeVersion = "0.22-milestone-20"; + sha256 = "1zmjfwlh34b65rdx9izgavw3qwqqwm39h5siyj2bf0m55111a4lc"; +} diff --git a/pkgs/development/tools/build-managers/gradle/gradle-7.2-spec.nix b/pkgs/development/tools/build-managers/gradle/gradle-7.2-spec.nix new file mode 100644 index 000000000000..1237fb562bdb --- /dev/null +++ b/pkgs/development/tools/build-managers/gradle/gradle-7.2-spec.nix @@ -0,0 +1,5 @@ +{ + version = "7.2"; + nativeVersion = "0.22-milestone-21"; + sha256 = "1pg6w5czysywsgdvmll5bwd2p6y99cn5sn3gw69cps9mkjd710gm"; +} diff --git a/pkgs/development/tools/build-managers/gradle/gradle-7.3-rc-3-spec.nix b/pkgs/development/tools/build-managers/gradle/gradle-7.3-rc-3-spec.nix new file mode 100644 index 000000000000..c9542d98e816 --- /dev/null +++ b/pkgs/development/tools/build-managers/gradle/gradle-7.3-rc-3-spec.nix @@ -0,0 +1,5 @@ +{ + version = "7.3-rc-3"; + nativeVersion = "0.22-milestone-21"; + sha256 = "0401q4qpl36a2vnlrlsblflfiiy3b95gyj2wj62hzc1x00hbfznm"; +} diff --git a/pkgs/development/tools/build-managers/gradle/update.sh b/pkgs/development/tools/build-managers/gradle/update.sh new file mode 100755 index 000000000000..03c914bbdaf4 --- /dev/null +++ b/pkgs/development/tools/build-managers/gradle/update.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix-prefetch curl jq + +# Generates Gradle release specs from GitHub Releases. +# +# As of 2021-11, this script has very poor error handling, +# it is expected to be run by maintainers as one-off job +# only. +# +# NOTE: The earliest Gradle release that has a +# corresponding entry as GitHub Release is 6.8-rc-1. + +for v in $(curl -s "https://api.github.com/repos/gradle/gradle/releases" | jq -r '.[].tag_name' | sort -n -r) +do + # Tag names and download filenames are not the same, + # we modify the tag name slightly to translate it + # to the naming scheme of download filenames. + # This translation assumes a tag naming scheme. + # As of 2021-11 it works from 6.8-rc-1 to 7.3-rc-3. + + # Remove first letter (assumed to be "v"). + v=${v:1} + + # To lower case. + v=${v,,} + + # Add dash after "rc". + v=${v/-rc/-rc-} + + # Remove trailing ".0" + v=${v%.0} + + # Remove trailing ".0" for release candidates. + v=${v/.0-rc/-rc} + + f="gradle-${v}-spec.nix" + + if [ -f "$f" ] + then + echo "$v SKIP" + continue + fi + + url="https://services.gradle.org/distributions/gradle-${v}-bin.zip" + read -d "\n" gradle_hash gradle_path < <(nix-prefetch-url --print-path $url) + + # Prefix and suffix for "native-platform" dependency. + gradle_native_prefix="gradle-$v/lib/native-native-" + gradle_native_suffix=".jar" + gradle_native=$(zipinfo -1 "$gradle_path" "$gradle_native_prefix*$gradle_native_suffix" | head -n1) + gradle_native=${gradle_native#"$gradle_native_prefix"} + gradle_native=${gradle_native%"$gradle_native_suffix"} + + echo -e "{\\n version = \"$v\";\\n nativeVersion = \"$gradle_native\";\\n sha256 = \"$gradle_hash\";\\n}" > $f + + echo "$v DONE" +done diff --git a/pkgs/development/tools/scenebuilder/default.nix b/pkgs/development/tools/scenebuilder/default.nix index 6bac5a95fcb7..b2e1e69487ed 100644 --- a/pkgs/development/tools/scenebuilder/default.nix +++ b/pkgs/development/tools/scenebuilder/default.nix @@ -1,6 +1,6 @@ { lib, stdenv, fetchFromGitHub, jdk11, gradleGen, makeDesktopItem, copyDesktopItems, perl, writeText, runtimeShell, makeWrapper, glib, wrapGAppsHook }: let - gradle = (gradleGen.override (old: { java = jdk11; })).gradle_6_8; + gradle = (gradleGen.override (old: { java = jdk11; })).gradle_6_9; pname = "scenebuilder"; version = "15.0.1"; diff --git a/pkgs/games/bastet/default.nix b/pkgs/games/bastet/default.nix index 053eca57528b..0b9f41507303 100644 --- a/pkgs/games/bastet/default.nix +++ b/pkgs/games/bastet/default.nix @@ -18,6 +18,14 @@ stdenv.mkDerivation rec { url = "https://github.com/fph/bastet/commit/0e03f8d4d6bc6949cf1c447e632ce0d1b98c4be1.patch"; sha256 = "1475hisbm44jirsrhdlnddppsyn83xmvcx09gfkm9drcix05alzj"; }) + + # Fix pending upstream inclusion for ncurses-6.3: + # https://github.com/fph/bastet/pull/21 + (fetchpatch { + name = "ncurses-6.3.patch"; + url = "https://github.com/fph/bastet/commit/54a6d127351ea2c62f50efafe97c5b02e23e86a7.patch"; + sha256 = "14v95b0m16m6ycd82i3wpp81kbmj6qz029b1m5483dkk6mwz98iy"; + }) ]; installPhase = '' diff --git a/pkgs/games/mindustry/default.nix b/pkgs/games/mindustry/default.nix index 732079238395..2dbf32e82575 100644 --- a/pkgs/games/mindustry/default.nix +++ b/pkgs/games/mindustry/default.nix @@ -88,7 +88,7 @@ let ''; # The default one still uses jdk8 (#89731) - gradle_6 = (gradleGen.override (old: { java = jdk; })).gradle_6_8; + gradle_6 = (gradleGen.override (old: { java = jdk; })).gradle_6_9; # fake build to pre-download deps into fixed-output derivation deps = stdenv.mkDerivation { diff --git a/pkgs/misc/pylode/default.nix b/pkgs/misc/pylode/default.nix index 18e112346912..b37ff2366694 100644 --- a/pkgs/misc/pylode/default.nix +++ b/pkgs/misc/pylode/default.nix @@ -1,11 +1,14 @@ { lib -, python3Packages +, python3 , fetchFromGitHub }: -python3Packages.buildPythonApplication rec { - pname = "pyLODE"; +python3.pkgs.buildPythonApplication rec { + pname = "pylode"; version = "2.12.0"; + format = "setuptools"; + + disabled = python3.pythonOlder "3.6"; src = fetchFromGitHub { owner = "RDFLib"; @@ -14,22 +17,32 @@ python3Packages.buildPythonApplication rec { sha256 = "sha256-X/YiJduAJNiceIrlCFwD2PFiMn3HVlzr9NzyDvYcql8="; }; - propagatedBuildInputs = with python3Packages; [ - python-dateutil + propagatedBuildInputs = with python3.pkgs; [ + beautifulsoup4 falcon - gunicorn - isodate jinja2 markdown + python-dateutil rdflib requests - six - beautifulsoup4 + ]; + + postPatch = '' + substituteInPlace requirements.txt \ + --replace "rdflib==6.0.0" "rdflib" + ''; + + # Path issues with the tests + doCheck = false; + + pythonImportsCheck = [ + "pylode" ]; meta = with lib; { - description = "An OWL ontology documentation tool using Python and templating, based on LODE"; + description = "OWL ontology documentation tool using Python and templating, based on LODE"; homepage = "https://github.com/RDFLib/pyLODE"; + # Next release will move to BSD3 license = licenses.gpl3Only; maintainers = with maintainers; [ koslambrou ]; }; diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index 31c721086938..5f3ac1a2d6f5 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -320,6 +320,7 @@ in with py.pkgs; buildPythonApplication rec { "ecobee" "econet" "ee_brightbox" + "efergy" "elgato" "elkm1" "emonitor" diff --git a/pkgs/tools/misc/riemann-c-client/default.nix b/pkgs/tools/misc/riemann-c-client/default.nix index bce293d7cf8d..1a81372d7f60 100644 --- a/pkgs/tools/misc/riemann-c-client/default.nix +++ b/pkgs/tools/misc/riemann-c-client/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "riemann-c-client"; - version = "1.10.4"; + version = "1.10.5"; src = fetchFromGitHub { owner = "algernon"; repo = "riemann-c-client"; rev = "riemann-c-client-${version}"; - sha256 = "01gzqxqm1xvki2vd78c7my2kgp4fyhkcf5j5fmy8z0l93lgj82rr"; + sha256 = "sha256-LuI9XFDPx0qw/+kkpXd0FOMESERAp31R1+ttkGuJnPA="; }; nativeBuildInputs = [ autoreconfHook pkg-config ]; diff --git a/pkgs/tools/networking/bwm-ng/default.nix b/pkgs/tools/networking/bwm-ng/default.nix index 97f0d1823af2..cfe0d4176a6f 100644 --- a/pkgs/tools/networking/bwm-ng/default.nix +++ b/pkgs/tools/networking/bwm-ng/default.nix @@ -2,6 +2,7 @@ , stdenv , autoreconfHook , fetchurl +, fetchpatch , ncurses }: @@ -14,6 +15,17 @@ stdenv.mkDerivation rec { sha256 = "0ikzyvnb73msm9n7ripg1dsw9av1i0c7q2hi2173xsj8zyv559f1"; }; + patches = [ + # Pull upstream fix for ncurses-6.3 support. + (fetchpatch { + name = "ncurses-6.3.patch"; + url = "https://github.com/vgropp/bwm-ng/commit/6a2087db6cc7ac5b5f667fcd17c262c079e8dcf2.patch"; + sha256 = "1l5dii9d52v0x0sq458ybw7m9p8aan2vl94gwx5s8mgxsnbcmzzx"; + # accidentally committed changes + excludes = [ "config.h.in~" "configure.in" "configure~" ]; + }) + ]; + nativeBuildInputs = [ autoreconfHook ]; diff --git a/pkgs/tools/security/metasploit/Gemfile b/pkgs/tools/security/metasploit/Gemfile index 9214b7837f75..0c6318dc4353 100644 --- a/pkgs/tools/security/metasploit/Gemfile +++ b/pkgs/tools/security/metasploit/Gemfile @@ -1,4 +1,4 @@ # frozen_string_literal: true source "https://rubygems.org" -gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.1.12" +gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.1.13" diff --git a/pkgs/tools/security/metasploit/Gemfile.lock b/pkgs/tools/security/metasploit/Gemfile.lock index 809c17e914e5..a080cfa68df9 100644 --- a/pkgs/tools/security/metasploit/Gemfile.lock +++ b/pkgs/tools/security/metasploit/Gemfile.lock @@ -1,9 +1,9 @@ GIT remote: https://github.com/rapid7/metasploit-framework - revision: bde342fd8293e49a45ba837ca9a1fdea505bc919 - ref: refs/tags/6.1.12 + revision: 643afb56f7f86a858e3da144fd367575a2f0b2c6 + ref: refs/tags/6.1.13 specs: - metasploit-framework (6.1.12) + metasploit-framework (6.1.13) actionpack (~> 6.0) activerecord (~> 6.0) activesupport (~> 6.0) @@ -31,7 +31,7 @@ GIT metasploit-concern metasploit-credential metasploit-model - metasploit-payloads (= 2.0.58) + metasploit-payloads (= 2.0.60) metasploit_data_models metasploit_payloads-mettle (= 1.0.15) mqtt @@ -128,23 +128,23 @@ GEM arel-helpers (2.12.1) activerecord (>= 3.1.0, < 7) aws-eventstream (1.2.0) - aws-partitions (1.521.0) - aws-sdk-core (3.121.5) + aws-partitions (1.525.0) + aws-sdk-core (3.122.0) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.520.1) + aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-ec2 (1.275.0) - aws-sdk-core (~> 3, >= 3.121.2) + aws-sdk-ec2 (1.277.0) + aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) - aws-sdk-iam (1.62.0) - aws-sdk-core (~> 3, >= 3.121.2) + aws-sdk-iam (1.63.0) + aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) - aws-sdk-kms (1.50.0) - aws-sdk-core (~> 3, >= 3.121.2) + aws-sdk-kms (1.51.0) + aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.104.0) - aws-sdk-core (~> 3, >= 3.121.2) + aws-sdk-s3 (1.105.1) + aws-sdk-core (~> 3, >= 3.122.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) aws-sigv4 (1.4.0) @@ -212,7 +212,7 @@ GEM domain_name (~> 0.5) http_parser.rb (0.8.0) httpclient (2.8.3) - i18n (1.8.10) + i18n (1.8.11) concurrent-ruby (~> 1.0) io-console (0.5.9) irb (1.3.6) @@ -247,7 +247,7 @@ GEM activemodel (~> 6.0) activesupport (~> 6.0) railties (~> 6.0) - metasploit-payloads (2.0.58) + metasploit-payloads (2.0.60) metasploit_data_models (5.0.4) activerecord (~> 6.0) activesupport (~> 6.0) diff --git a/pkgs/tools/security/metasploit/default.nix b/pkgs/tools/security/metasploit/default.nix index e0348a156974..9ce3f56b58d8 100644 --- a/pkgs/tools/security/metasploit/default.nix +++ b/pkgs/tools/security/metasploit/default.nix @@ -14,13 +14,13 @@ let }; in stdenv.mkDerivation rec { pname = "metasploit-framework"; - version = "6.1.12"; + version = "6.1.13"; src = fetchFromGitHub { owner = "rapid7"; repo = "metasploit-framework"; rev = version; - sha256 = "sha256-I7wk8DBN7i4zE4bEIMVGcZi4OMIsbh0Ay2RsAh0VRrw="; + sha256 = "sha256-ncmLizpX1yEtr8biUoWVVK4Ziv3QMiKWsj694yubA1M="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/tools/security/metasploit/gemset.nix b/pkgs/tools/security/metasploit/gemset.nix index 91d1e2aa60fb..411be2a11277 100644 --- a/pkgs/tools/security/metasploit/gemset.nix +++ b/pkgs/tools/security/metasploit/gemset.nix @@ -104,60 +104,60 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0zfwynw6d4lbq63lwk94insrjmgxwfp1lic4913a9ik00wnf90wd"; + sha256 = "181a2xf9zs0hz77jkpmxidvkjzs65vsyqv1a31fcali7f0kvh4h9"; type = "gem"; }; - version = "1.521.0"; + version = "1.525.0"; }; aws-sdk-core = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0akv0jyr4crs4r5vdzc18j5drqgpcckm0gnpgi0bzpqyyk6m16hq"; + sha256 = "0krx8cfajc72gv6mpyb67vnhd2m2iya19846jgipgfris194gjm2"; type = "gem"; }; - version = "3.121.5"; + version = "3.122.0"; }; aws-sdk-ec2 = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "13kbrl8r9cm7i9cb6w5ayji1vqaca6h0inxpyx8bhbrwkscrbh2s"; + sha256 = "0qy318swkl3393gl5031n634z8msb7rghhp7zdnawvs39c0fbmxd"; type = "gem"; }; - version = "1.275.0"; + version = "1.277.0"; }; aws-sdk-iam = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0vnhcgr5pjkkplh4z2lbwp4w13kbwp236p0y1b1qiia28ra2isxv"; + sha256 = "0ms76yn9iprmvjw1ijrgasss70398i8wmkwmgpghn5wc37z59x2s"; type = "gem"; }; - version = "1.62.0"; + version = "1.63.0"; }; aws-sdk-kms = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0prj048lcbkmxc6k2p7vibn3vw7cy1104dljqjvmwz12h9ds1qlf"; + sha256 = "0qac9dd6qriz6ldghkr8ga74zz28jl109kmvhvag74a3qf7k9dwj"; type = "gem"; }; - version = "1.50.0"; + version = "1.51.0"; }; aws-sdk-s3 = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1h8yzrzinckrfs8ahzqg7fs356vs1ksi5bva1bpfp0i65fjh9mw0"; + sha256 = "12j7i6l52b6hsnj59grn0m1s9pn6l38zmra6ad8i12vdsvd185w7"; type = "gem"; }; - version = "1.104.0"; + version = "1.105.1"; }; aws-sigv4 = { groups = ["default"]; @@ -544,10 +544,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0g2fnag935zn2ggm5cn6k4s4xvv53v2givj1j90szmvavlpya96a"; + sha256 = "0vdd1kii40qhbr9n8qx71k2gskq6rkl8ygy8hw5hfj8bb5a364xf"; type = "gem"; }; - version = "1.8.10"; + version = "1.8.11"; }; io-console = { groups = ["default"]; @@ -664,12 +664,12 @@ platforms = []; source = { fetchSubmodules = false; - rev = "bde342fd8293e49a45ba837ca9a1fdea505bc919"; - sha256 = "1g262lfh4v34rc01svicq8wbi63i8v2j1i462crjxvjd63q29g13"; + rev = "643afb56f7f86a858e3da144fd367575a2f0b2c6"; + sha256 = "0lq3kcmy7g9ynab24cnhzn51kbjljn2m5qn6mwnj3msp7a5qpjcx"; type = "git"; url = "https://github.com/rapid7/metasploit-framework"; }; - version = "6.1.12"; + version = "6.1.13"; }; metasploit-model = { groups = ["default"]; @@ -686,10 +686,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "05z0lqa2w6n1nqw3k2s0cxfbqa7bf1p199gccfahjyxjn9xzhcf7"; + sha256 = "1rg11gjy590cixfy6lmwgd76ai0s2gs4w8m379bkkx2f12lkibhn"; type = "gem"; }; - version = "2.0.58"; + version = "2.0.60"; }; metasploit_data_models = { groups = ["default"]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5b526321e593..dc9ebf76fa5d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4512,6 +4512,8 @@ with pkgs; tk = tk-8_5; }; + picoscope = callPackage ../applications/science/electronics/picoscope { }; + picotts = callPackage ../tools/audio/picotts { }; wgetpaste = callPackage ../tools/text/wgetpaste { }; @@ -14550,7 +14552,7 @@ with pkgs; gradle_4_10 = res.gradleGen.gradle_4_10; gradle_4 = gradle_4_10; gradle_5 = res.gradleGen.gradle_5_6; - gradle_6 = res.gradleGen.gradle_6_8; + gradle_6 = res.gradleGen.gradle_6_9; gradle_7 = res.gradleGen.gradle_7; gperf = callPackage ../development/tools/misc/gperf { }; @@ -33028,7 +33030,7 @@ with pkgs; inherit wineBuild; inherit (callPackage ./wine-packages.nix {}) - minimal base full stable unstable staging fonts; + minimal base full stable stableFull unstable unstableFull staging stagingFull fonts; }); winePackages = recurseIntoAttrs (winePackagesFor (config.wine.build or "wine32")); diff --git a/pkgs/top-level/wine-packages.nix b/pkgs/top-level/wine-packages.nix index b26bc361cf5e..fff2d73110c3 100644 --- a/pkgs/top-level/wine-packages.nix +++ b/pkgs/top-level/wine-packages.nix @@ -51,6 +51,11 @@ rec { }; stable = base.override { wineRelease = "stable"; }; + stableFull = full.override { wineRelease = "stable"; }; + unstable = base.override { wineRelease = "unstable"; }; + unstableFull = full.override { wineRelease = "unstable"; }; + staging = base.override { wineRelease = "staging"; }; + stagingFull = full.override { wineRelease = "staging"; }; }