diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 07774dd1d29..4a63a09ab84 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -682,6 +682,7 @@ ./services/networking/i2p.nix ./services/networking/icecream/scheduler.nix ./services/networking/icecream/daemon.nix + ./services/networking/inspircd.nix ./services/networking/iodine.nix ./services/networking/iperf3.nix ./services/networking/ircd-hybrid/default.nix diff --git a/nixos/modules/services/networking/inspircd.nix b/nixos/modules/services/networking/inspircd.nix new file mode 100644 index 00000000000..8cb2b406ee2 --- /dev/null +++ b/nixos/modules/services/networking/inspircd.nix @@ -0,0 +1,62 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.inspircd; + + configFile = pkgs.writeText "inspircd.conf" cfg.config; + +in { + meta = { + maintainers = [ lib.maintainers.sternenseemann ]; + }; + + options = { + services.inspircd = { + enable = lib.mkEnableOption "InspIRCd"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.inspircd; + defaultText = lib.literalExample "pkgs.inspircd"; + example = lib.literalExample "pkgs.inspircdMinimal"; + description = '' + The InspIRCd package to use. This is mainly useful + to specify an overridden version of the + pkgs.inspircd dervivation, for + example if you want to use a more minimal InspIRCd + distribution with less modules enabled or with + modules enabled which can't be distributed in binary + form due to licensing issues. + ''; + }; + + config = lib.mkOption { + type = lib.types.lines; + description = '' + Verbatim inspircd.conf file. + For a list of options, consult the + InspIRCd documentation, the + Module documentation + and the example configuration files distributed + with pkgs.inspircd.doc + ''; + }; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.services.inspircd = { + description = "InspIRCd - the stable, high-performance and modular Internet Relay Chat Daemon"; + wantedBy = [ "multi-user.target" ]; + requires = [ "network.target" ]; + + serviceConfig = { + Type = "simple"; + ExecStart = '' + ${lib.getBin cfg.package}/bin/inspircd start --config ${configFile} --nofork --nopid + ''; + DynamicUser = true; + }; + }; + }; +} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 4c5a2b39bd9..fb45ec1a310 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -176,6 +176,7 @@ in initrd-network-ssh = handleTest ./initrd-network-ssh {}; initrdNetwork = handleTest ./initrd-network.nix {}; initrd-secrets = handleTest ./initrd-secrets.nix {}; + inspircd = handleTest ./inspircd.nix {}; installer = handleTest ./installer.nix {}; iodine = handleTest ./iodine.nix {}; ipfs = handleTest ./ipfs.nix {}; diff --git a/nixos/tests/inspircd.nix b/nixos/tests/inspircd.nix new file mode 100644 index 00000000000..f4d82054011 --- /dev/null +++ b/nixos/tests/inspircd.nix @@ -0,0 +1,93 @@ +let + clients = [ + "ircclient1" + "ircclient2" + ]; + server = "inspircd"; + ircPort = 6667; + channel = "nixos-cat"; + iiDir = "/tmp/irc"; +in + +import ./make-test-python.nix ({ pkgs, lib, ... }: { + name = "inspircd"; + nodes = { + "${server}" = { + networking.firewall.allowedTCPPorts = [ ircPort ]; + services.inspircd = { + enable = true; + package = pkgs.inspircdMinimal; + config = '' + + + ''; + }; + }; + } // lib.listToAttrs (builtins.map (client: lib.nameValuePair client { + imports = [ + ./common/user-account.nix + ]; + + systemd.services.ii = { + requires = [ "network.target" ]; + wantedBy = [ "default.target" ]; + + serviceConfig = { + Type = "simple"; + ExecPreStartPre = "mkdir -p ${iiDir}"; + ExecStart = '' + ${lib.getBin pkgs.ii}/bin/ii -n ${client} -s ${server} -i ${iiDir} + ''; + User = "alice"; + }; + }; + }) clients); + + testScript = + let + msg = client: "Hello, my name is ${client}"; + clientScript = client: [ + '' + ${client}.wait_for_unit("network.target") + ${client}.systemctl("start ii") + ${client}.wait_for_unit("ii") + ${client}.wait_for_file("${iiDir}/${server}/out") + '' + # wait until first PING from server arrives before joining, + # so we don't try it too early + '' + ${client}.wait_until_succeeds("grep 'PING' ${iiDir}/${server}/out") + '' + # join ${channel} + '' + ${client}.succeed("echo '/j #${channel}' > ${iiDir}/${server}/in") + ${client}.wait_for_file("${iiDir}/${server}/#${channel}/in") + '' + # send a greeting + '' + ${client}.succeed( + "echo '${msg client}' > ${iiDir}/${server}/#${channel}/in" + ) + '' + # check that all greetings arrived on all clients + ] ++ builtins.map (other: '' + ${client}.succeed( + "grep '${msg other}$' ${iiDir}/${server}/#${channel}/out" + ) + '') clients; + + # foldl', but requires a non-empty list instead of a start value + reduce = f: list: + builtins.foldl' f (builtins.head list) (builtins.tail list); + in '' + start_all() + ${server}.wait_for_open_port(${toString ircPort}) + + # run clientScript for all clients so that every list + # entry is executed by every client before advancing + # to the next one. + '' + lib.concatStrings + (reduce + (lib.zipListsWith (cs: c: cs + c)) + (builtins.map clientScript clients)); +}) diff --git a/pkgs/applications/blockchains/monero/default.nix b/pkgs/applications/blockchains/monero/default.nix index 41931bc9ec3..3be8b908c7a 100644 --- a/pkgs/applications/blockchains/monero/default.nix +++ b/pkgs/applications/blockchains/monero/default.nix @@ -63,6 +63,6 @@ stdenv.mkDerivation rec { homepage = "https://getmonero.org/"; license = licenses.bsd3; platforms = platforms.all; - maintainers = with maintainers; [ ehmry rnhmjoj ]; + maintainers = with maintainers; [ rnhmjoj ]; }; } diff --git a/pkgs/applications/misc/electrum/default.nix b/pkgs/applications/misc/electrum/default.nix index 273077b3bda..edce14d0573 100644 --- a/pkgs/applications/misc/electrum/default.nix +++ b/pkgs/applications/misc/electrum/default.nix @@ -150,6 +150,6 @@ python3.pkgs.buildPythonApplication { homepage = "https://electrum.org/"; license = licenses.mit; platforms = platforms.all; - maintainers = with maintainers; [ ehmry joachifm np prusnak ]; + maintainers = with maintainers; [ joachifm np prusnak ]; }; } diff --git a/pkgs/applications/misc/qtbitcointrader/default.nix b/pkgs/applications/misc/qtbitcointrader/default.nix index fafd91f7811..1bdcd6ea8a6 100644 --- a/pkgs/applications/misc/qtbitcointrader/default.nix +++ b/pkgs/applications/misc/qtbitcointrader/default.nix @@ -31,6 +31,5 @@ mkDerivation { homepage = "https://centrabit.com/"; license = licenses.gpl3; platforms = qt5.qtbase.meta.platforms; - maintainers = [ maintainers.ehmry ]; }; } diff --git a/pkgs/applications/networking/browsers/firefox/packages.nix b/pkgs/applications/networking/browsers/firefox/packages.nix index 925374d38e8..7a3fc9b9a07 100644 --- a/pkgs/applications/networking/browsers/firefox/packages.nix +++ b/pkgs/applications/networking/browsers/firefox/packages.nix @@ -7,16 +7,16 @@ in rec { firefox = common rec { pname = "firefox"; - ffversion = "86.0.1"; + ffversion = "87.0"; src = fetchurl { url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; - sha512 = "e613cdcadfd71a01800a72c08c590032605ca8a8a0ba93326ffba93c2819f629fd620c23d00ca1274b203adc20acfe5d7913fee240ff14819fb1377ed08b1214"; + sha512 = "c1c08be2283e7a162c8be2f2647ec2bb85cab592738dc45e4b4ffb72969229cc0019a30782a4cb27f09a13b088c63841071dd202b3543dfba295140a7d6246a4"; }; meta = { description = "A web browser built from Firefox source tree"; homepage = "http://www.mozilla.com/en-US/firefox/"; - maintainers = with lib.maintainers; [ eelco lovesegfault ]; + maintainers = with lib.maintainers; [ eelco lovesegfault hexa ]; platforms = lib.platforms.unix; badPlatforms = lib.platforms.darwin; broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory". @@ -32,16 +32,16 @@ rec { firefox-esr-78 = common rec { pname = "firefox-esr"; - ffversion = "78.8.0esr"; + ffversion = "78.9.0esr"; src = fetchurl { url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; - sha512 = "0160aa6c408c2af66d24b74cf98e1a07ab1604e7b93ffcde79201f9d68e41e896ef965f1904de52d5dd82ffedae33ac96e93b871727bf5dd5983c5af2f1f439f"; + sha512 = "28582fc0a03fb50c0a817deb1083817bb7f2f5d38e98439bf655ed4ee18c83568b3002a59ef76edf357bfb11f55832a221d14130f116aac19d850768fba3ac8b"; }; meta = { description = "A web browser built from Firefox Extended Support Release source tree"; homepage = "http://www.mozilla.com/en-US/firefox/"; - maintainers = with lib.maintainers; [ eelco ]; + maintainers = with lib.maintainers; [ eelco hexa ]; platforms = lib.platforms.unix; badPlatforms = lib.platforms.darwin; broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory". diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 4ec886a34fc..8e15238f10c 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -511,10 +511,12 @@ }, "kubernetes-alpha": { "owner": "hashicorp", + "provider-source-address": "registry.terraform.io/hashicorp/kubernetes-alpha", "repo": "terraform-provider-kubernetes-alpha", - "rev": "nightly20200608", - "sha256": "1g171sppf3kq5qlp6g0qqdm0x8lnpizgw8bxjlhp9b6cl4kym70m", - "version": "nightly20200608" + "rev": "v0.3.2", + "sha256": "0lgh42fvfwvj6cw8i7800k016ay4babqiz38q0y7apq4s7vs62sb", + "vendorSha256": null, + "version": "0.3.2" }, "launchdarkly": { "owner": "terraform-providers", diff --git a/pkgs/applications/networking/ftp/filezilla/default.nix b/pkgs/applications/networking/ftp/filezilla/default.nix index b4c1e95087e..f8e9fcc87b0 100644 --- a/pkgs/applications/networking/ftp/filezilla/default.nix +++ b/pkgs/applications/networking/ftp/filezilla/default.nix @@ -17,11 +17,11 @@ stdenv.mkDerivation rec { pname = "filezilla"; - version = "3.52.2"; + version = "3.53.0"; src = fetchurl { url = "https://download.filezilla-project.org/client/FileZilla_${version}_src.tar.bz2"; - sha256 = "sha256-wHiIFpKKJuiGPH3CaxWGROcb7ylAbffS7aN9xIENbN8="; + sha256 = "sha256-MJXnYN9PVADttNqj3hshLElHk2Dy9FzE67clMMh85CA="; }; # https://www.linuxquestions.org/questions/slackware-14/trouble-building-filezilla-3-47-2-1-current-4175671182/#post6099769 diff --git a/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix b/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix index 0174d133011..f86eefe668f 100644 --- a/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix +++ b/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, boost, bzip2, libX11 +{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, bzip2, libX11 , mkDerivation, qtbase, qttools, qtmultimedia, qtscript , libiconv, pcre-cpp, libidn, lua5, miniupnpc, aspell, gettext, perl }: @@ -14,30 +14,32 @@ mkDerivation rec { }; nativeBuildInputs = [ cmake pkg-config ]; - buildInputs = [ qtbase qttools qtmultimedia qtscript boost bzip2 libX11 pcre-cpp libidn lua5 miniupnpc aspell gettext + buildInputs = [ qtbase qttools qtmultimedia qtscript bzip2 libX11 pcre-cpp libidn lua5 miniupnpc aspell gettext (perl.withPackages (p: with p; [ GetoptLong - RpcXML TermShellUI ])) ] ++ lib.optional stdenv.isDarwin libiconv; cmakeFlags = [ - "-DUSE_ASPELL=ON" - "-DFREE_SPACE_BAR_C=ON" - "-DUSE_MINIUPNP=ON" - "-DLOCAL_MINIUPNP=ON" "-DDBUS_NOTIFY=ON" - "-DUSE_JS=ON" - "-DPERL_REGEX=ON" - "-DUSE_CLI_XMLRPC=ON" - "-DWITH_SOUNDS=ON" + "-DFREE_SPACE_BAR_C=ON" "-DLUA_SCRIPT=ON" + "-DPERL_REGEX=ON" + "-DUSE_ASPELL=ON" + "-DUSE_CLI_JSONRPC=ON" + "-DUSE_MINIUPNP=ON" + "-DUSE_JS=ON" "-DWITH_LUASCRIPTS=ON" + "-DWITH_SOUNDS=ON" ]; + postInstall = '' + ln -s $out/bin/$pname-qt $out/bin/$pname + ''; + preFixup = '' - substituteInPlace $out/bin/eiskaltdcpp-cli-xmlrpc \ + substituteInPlace $out/bin/eiskaltdcpp-cli-jsonrpc \ --replace "/usr/local" "$out" ''; diff --git a/pkgs/applications/science/logic/coq/default.nix b/pkgs/applications/science/logic/coq/default.nix index 2ac5a7dd671..560e8dd733a 100644 --- a/pkgs/applications/science/logic/coq/default.nix +++ b/pkgs/applications/science/logic/coq/default.nix @@ -8,7 +8,7 @@ { lib, stdenv, fetchzip, writeText, pkg-config, gnumake42 , customOCamlPackages ? null , ocamlPackages_4_05, ocamlPackages_4_09, ocamlPackages_4_10, ncurses -, buildIde ? !(stdenv.isDarwin && lib.versionAtLeast version "8.10") +, buildIde ? true , glib, gnome3, wrapGAppsHook , csdp ? null , version, coq-version ? null, diff --git a/pkgs/applications/version-management/gitea/default.nix b/pkgs/applications/version-management/gitea/default.nix index c9570bb134d..cc36dc9ff52 100644 --- a/pkgs/applications/version-management/gitea/default.nix +++ b/pkgs/applications/version-management/gitea/default.nix @@ -9,11 +9,11 @@ with lib; buildGoPackage rec { pname = "gitea"; - version = "1.13.4"; + version = "1.13.5"; src = fetchurl { url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz"; - sha256 = "sha256-Q9wM+TGgE9oFFzg6516bG7iFNjhxOxPMLKtTHghA/OU="; + sha256 = "08c5gp4qp65mnq4ggzfmyc7n3zcp0js86fz4nj5p249zs9vn1ypd"; }; unpackPhase = '' diff --git a/pkgs/development/ocaml-modules/extlib/default.nix b/pkgs/development/ocaml-modules/extlib/default.nix index 2a437cd29d3..5c7d36fcc08 100644 --- a/pkgs/development/ocaml-modules/extlib/default.nix +++ b/pkgs/development/ocaml-modules/extlib/default.nix @@ -1,35 +1,29 @@ -{ stdenv, lib, fetchurl, fetchpatch, ocaml, findlib, cppo, minimal ? true }: +{ stdenv, lib, fetchurl, ocaml, findlib, cppo +# De facto, option minimal seems to be the default. See the README. +, minimal ? true +}: -assert lib.versionAtLeast (lib.getVersion ocaml) "3.11"; - -stdenv.mkDerivation { - name = "ocaml${ocaml.version}-extlib-1.7.7"; +stdenv.mkDerivation rec { + pname = "ocaml${ocaml.version}-extlib"; + version = "1.7.8"; src = fetchurl { - url = "http://ygrek.org.ua/p/release/ocaml-extlib/extlib-1.7.7.tar.gz"; - sha256 = "1sxmzc1mx3kg62j8kbk0dxkx8mkf1rn70h542cjzrziflznap0s1"; + url = "https://ygrek.org/p/release/ocaml-extlib/extlib-${version}.tar.gz"; + sha256 = "0npq4hq3zym8nmlyji7l5cqk6drx2rkcx73d60rxqh5g8dla8p4k"; }; - patches = [ - (fetchpatch { - url = "https://github.com/ygrek/ocaml-extlib/pull/55.patch"; - sha256 = "0mj3xii56rh8j8brdyv5d06rbs6jjjcy4ib9chafkq3f3sbq795p"; - }) - ]; - buildInputs = [ ocaml findlib cppo ]; createFindlibDestdir = true; + dontConfigure = true; - dontConfigure = true; # Skip configure - # De facto, option minimal=1 seems to be the default. See the README. - buildPhase = "make ${if minimal then "minimal=1" else ""} build"; - installPhase = "make ${if minimal then "minimal=1" else ""} install"; + makeFlags = lib.optional minimal "minimal=1"; meta = { homepage = "https://github.com/ygrek/ocaml-extlib"; description = "Enhancements to the OCaml Standard Library modules"; - license = lib.licenses.lgpl21; + license = lib.licenses.lgpl21Only; platforms = ocaml.meta.platforms or []; + maintainers = [ lib.maintainers.sternenseemann ]; }; } diff --git a/pkgs/development/python-modules/tatsu/default.nix b/pkgs/development/python-modules/tatsu/default.nix index a663b6e21dd..d5dfda53c08 100644 --- a/pkgs/development/python-modules/tatsu/default.nix +++ b/pkgs/development/python-modules/tatsu/default.nix @@ -5,13 +5,13 @@ buildPythonPackage rec { pname = "tatsu"; - version = "5.6.0"; + version = "5.6.1"; src = fetchFromGitHub { owner = "neogeny"; repo = "TatSu"; rev = "v${version}"; - sha256 = "sha256-kC2MxMebS4TQEZBgTmYRBWaWSF36rVS3bXIsQgRrF0Y="; + sha256 = "149ra1lwax5m1svlv4dwjfqw00lc5vwyfj6zw2v0ammmfm1b94x9"; }; disabled = pythonOlder "3.8"; diff --git a/pkgs/development/tools/analysis/radare2/default.nix b/pkgs/development/tools/analysis/radare2/default.nix index 3623893ea63..287321804e2 100644 --- a/pkgs/development/tools/analysis/radare2/default.nix +++ b/pkgs/development/tools/analysis/radare2/default.nix @@ -105,12 +105,12 @@ in { # # DO NOT EDIT! Automatically generated by ./update.py radare2 = generic { - version_commit = "25480"; - gittap = "5.0.0"; - gittip = "a476454c00f64acbb7425c178c98714ef76e26d7"; - rev = "5.0.0"; - version = "5.0.0"; - sha256 = "0aa7c27kd0l55fy5qfvxqmakp4pz6240v3hn84095qmqkzcbs420"; + version_commit = "25741"; + gittap = "5.1.1"; + gittip = "a86f8077fc148abd6443384362a3717cd4310e64"; + rev = "5.1.1"; + version = "5.1.1"; + sha256 = "0hv9x31iabasj12g8f04incr1rbcdkxi3xnqn3ggp8gl4h6pf2f3"; cs_ver = "4.0.2"; cs_sha256 = "0y5g74yjyliciawpn16zhdwya7bd3d7b1cccpcccc2wg8vni1k2w"; }; diff --git a/pkgs/development/tools/analysis/radare2/update.py b/pkgs/development/tools/analysis/radare2/update.py index ebd6e073fe5..a9a0a234317 100755 --- a/pkgs/development/tools/analysis/radare2/update.py +++ b/pkgs/development/tools/analysis/radare2/update.py @@ -124,6 +124,7 @@ def main() -> None: radare2_info = get_repo_info(dirname, radare2_rev) + git(dirname, "fetch", r2_cutter_rev) git(dirname, "checkout", r2_cutter_rev) timestamp = git(dirname, "log", "-n1", "--format=%at") diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix index 095db2d31cc..533c2e3f4a0 100644 --- a/pkgs/misc/vscode-extensions/default.nix +++ b/pkgs/misc/vscode-extensions/default.nix @@ -604,7 +604,7 @@ let buildInputs = [ jdk ]; meta = { license = lib.licenses.epl20; - broken = lib.versionAtLeast jdk.version "11"; + broken = lib.versionOlder jdk.version "11"; }; }; diff --git a/pkgs/os-specific/linux/acpi-call/default.nix b/pkgs/os-specific/linux/acpi-call/default.nix index b79f0bd84f2..f986ed790a1 100644 --- a/pkgs/os-specific/linux/acpi-call/default.nix +++ b/pkgs/os-specific/linux/acpi-call/default.nix @@ -2,13 +2,14 @@ stdenv.mkDerivation rec { pname = "acpi-call"; - version = "2020-04-07-${kernel.version}"; + version = "1.2.1"; + name = "${pname}-${version}-${kernel.version}"; src = fetchFromGitHub { owner = "nix-community"; repo = "acpi_call"; - rev = "fe4cd0124099b88b61f83006023bc0d95e742e75"; - sha256 = "1rksbg78i7y2wzam9p6kbhx8rmkaiq0kqg8nj7k0j6d25m79289s"; + rev = "v${version}"; + sha256 = "0mr4rjbv6fj4phf038addrgv32940bphghw2v9n1z4awvw7wzkbg"; }; hardeningDisable = [ "pic" ]; @@ -26,8 +27,9 @@ stdenv.mkDerivation rec { meta = with lib; { maintainers = with maintainers; [ raskin mic92 ]; - inherit (src.meta) homepage; + homepage = "https://github.com/nix-community/acpi_call"; platforms = platforms.linux; description = "A module allowing arbitrary ACPI calls; use case: hybrid video"; + license = licenses.gpl3Plus; }; } diff --git a/pkgs/servers/irc/inspircd/default.nix b/pkgs/servers/irc/inspircd/default.nix new file mode 100644 index 00000000000..f907e337ce6 --- /dev/null +++ b/pkgs/servers/irc/inspircd/default.nix @@ -0,0 +1,221 @@ +let + # inspircd ships a few extra modules that users can load + # via configuration. Upstream thus recommends to ship as + # many of them as possible. There is however a problem: + # inspircd is licensed under the GPL version 2 only and + # some modules link libraries that are incompatible with + # the GPL 2. Therefore we can't provide them as binaries + # via our binary-caches, but users should still be able + # to override this package and build the incompatible + # modules themselves. + # + # This means for us we need to a) prevent hydra from + # building a module set with a GPL incompatibility + # and b) dynamically figure out the largest possible + # set of modules to use depending on stdenv, because + # the used libc needs to be compatible as well. + # + # For an overview of all modules and their licensing + # situation, see https://docs.inspircd.org/packaging/ + + # Predicate for checking license compatibility with + # GPLv2. Since this is _only_ used for libc compatibility + # checking, only whitelist licenses used by notable + # libcs in nixpkgs (musl and glibc). + compatible = lib: drv: + lib.any (lic: lic == drv.meta.license) [ + lib.licenses.mit # musl + lib.licenses.lgpl2Plus # glibc + ]; + + # compatible if libc is compatible + libcModules = [ + "regex_posix" + "sslrehashsignal" + ]; + + # compatible if libc++ is compatible + # TODO(sternenseemann): + # we could enable "regex_stdlib" automatically, but only if + # we are using libcxxStdenv which is compatible with GPLv2, + # since the gcc libstdc++ license is GPLv2-incompatible + libcxxModules = [ + "regex_stdlib" + ]; + + compatibleModules = lib: stdenv: [ + # GPLv2 compatible dependencies + "argon2" + "ldap" + "mysql" + "pgsql" + "regex_pcre" + "regex_re2" + "regex_tre" + "sqlite3" + "ssl_gnutls" + ] ++ lib.optionals (compatible lib stdenv.cc.libc) libcModules; + +in + +{ lib +, stdenv +, fetchFromGitHub +, nixosTests +, perl +, pkg-config +, libargon2 +, openldap +, postgresql +, libmysqlclient +, pcre +, tre +, re2 +, sqlite +, gnutls +, libmaxminddb +, openssl +, mbedtls +# For a full list of module names, see https://docs.inspircd.org/packaging/ +, extraModules ? compatibleModules lib stdenv +}: + +let + extras = { + # GPLv2 compatible + argon2 = [ + (libargon2 // { + meta = libargon2.meta // { + # use libargon2 as CC0 since ASL20 is GPLv2-incompatible + # updating this here is important that meta.license is accurate + # libargon2 is licensed under either ASL20 or CC0. + license = lib.licenses.cc0; + }; + }) + ]; + ldap = [ openldap ]; + mysql = [ libmysqlclient ]; + pgsql = [ postgresql ]; + regex_pcre = [ pcre ]; + regex_re2 = [ re2 ]; + regex_tre = [ tre ]; + sqlite3 = [ sqlite ]; + ssl_gnutls = [ gnutls ]; + # depends on stdenv.cc.libc + regex_posix = []; + sslrehashsignal = []; + # depends on used libc++ + regex_stdlib = []; + # GPLv2 incompatible + geo_maxmind = [ libmaxminddb ]; + ssl_mbedtls = [ mbedtls ]; + ssl_openssl = [ openssl ]; + }; + + # buildInputs necessary for the enabled extraModules + extraInputs = lib.concatMap + (m: extras."${m}" or (builtins.throw "Unknown extra module ${m}")) + extraModules; + + # if true, we can't provide a binary version of this + # package without violating the GPL 2 + gpl2Conflict = + let + allowed = compatibleModules lib stdenv; + in + !lib.all (lib.flip lib.elem allowed) extraModules; + + # return list of the license(s) of the given derivation + getLicenses = drv: + let + lics = drv.meta.license or []; + in + if lib.isAttrs lics || lib.isString lics + then [ lics ] + else lics; + + # Whether any member of list1 is also member of list2, i. e. set intersection. + anyMembers = list1: list2: + lib.any (m1: lib.elem m1 list2) list1; + +in + +stdenv.mkDerivation rec { + pname = "inspircd"; + version = "3.9.0"; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "0x3paasf4ynx4ddky2nq613vyirbhfnxzkjq148k7154pz3q426s"; + }; + + outputs = [ "bin" "lib" "man" "doc" "out" ]; + + nativeBuildInputs = [ + perl + pkg-config + ]; + buildInputs = extraInputs; + + configurePhase = '' + patchShebangs configure make/*.pl + + # configure is executed twice, once to set the extras + # to use and once to do the Makefile setup + ./configure \ + --enable-extras \ + ${lib.escapeShellArg (lib.concatStringsSep " " extraModules)} + + # this manually sets the flags instead of using configureFlags, because otherwise stdenv passes flags like --bindir, which make configure fail + ./configure \ + --disable-auto-extras \ + --distribution-label nixpkgs${version} \ + --uid 0 \ + --gid 0 \ + --binary-dir ${placeholder "bin"}/bin \ + --config-dir /etc/inspircd \ + --data-dir ${placeholder "lib"}/lib/inspircd \ + --example-dir ${placeholder "doc"}/share/doc/inspircd \ + --log-dir /var/log/inspircd \ + --manual-dir ${placeholder "man"}/share/man/man1 \ + --module-dir ${placeholder "lib"}/lib/inspircd \ + --runtime-dir /var/run \ + --script-dir ${placeholder "bin"}/share/inspircd \ + ''; + + postInstall = '' + # for some reasons the executables are not executable + chmod +x $bin/bin/* + ''; + + enableParallelBuilding = true; + + passthru.tests = { + nixos-test = nixosTests.inspircd; + }; + + meta = { + description = "A modular C++ IRC server"; + license = [ lib.licenses.gpl2Only ] + ++ lib.concatMap getLicenses extraInputs + ++ lib.optionals (anyMembers extraModules libcModules) (getLicenses stdenv.cc.libc) + # FIXME(sternenseemann): get license of used lib(std)c++ somehow + ++ lib.optional (anyMembers extraModules libcxxModules) "Unknown" + # Hack: Definitely prevent a hydra from building this package on + # a GPL 2 incompatibility even if it is not in a top-level attribute, + # but pulled in indirectly somehow. + ++ lib.optional gpl2Conflict lib.licenses.unfree; + maintainers = [ lib.maintainers.sternenseemann ]; + # windows is theoretically possible, but requires extra work + # which I am not willing to do and can't test. + # https://github.com/inspircd/inspircd/blob/master/win/README.txt + platforms = lib.platforms.unix; + homepage = "https://www.inspircd.org/"; + } // lib.optionalAttrs gpl2Conflict { + # make sure we never distribute a GPLv2-violating module + # in binary form. They can be built locally of course. + hydraPlatforms = []; + }; +} diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix index a9954b4a147..468c46b1269 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.29.0"; + version = "1.30.0"; src = fetchPypi { inherit pname version; - sha256 = "sha256-BySztUwVqyaL0AvmJMWEbjVqf981ABKMAU9f9C/0wkU="; + sha256 = "1ca69v479537bbj2hjliwk9zzy9fqqsf7fm188k6xxj0a37q9y41"; }; patches = [ diff --git a/pkgs/servers/rippled/default.nix b/pkgs/servers/rippled/default.nix index cd19c77cab3..0b2a0e38f01 100644 --- a/pkgs/servers/rippled/default.nix +++ b/pkgs/servers/rippled/default.nix @@ -160,7 +160,7 @@ in stdenv.mkDerivation rec { meta = with lib; { description = "Ripple P2P payment network reference server"; homepage = "https://github.com/ripple/rippled"; - maintainers = with maintainers; [ ehmry offline RaghavSood ]; + maintainers = with maintainers; [ offline RaghavSood ]; license = licenses.isc; platforms = [ "x86_64-linux" ]; }; diff --git a/pkgs/tools/misc/cpuminer-multi/default.nix b/pkgs/tools/misc/cpuminer-multi/default.nix index a23675fe911..fac8fbcfee9 100644 --- a/pkgs/tools/misc/cpuminer-multi/default.nix +++ b/pkgs/tools/misc/cpuminer-multi/default.nix @@ -27,7 +27,6 @@ stdenv.mkDerivation { description = "Multi-algo CPUMiner"; homepage = "https://github.com/wolf9466/cpuminer-multi"; license = licenses.gpl2; - maintainers = [ maintainers.ehmry ]; # does not build on i686 https://github.com/lucasjones/cpuminer-multi/issues/27 platforms = [ "x86_64-linux" ]; }; diff --git a/pkgs/tools/misc/digitemp/default.nix b/pkgs/tools/misc/digitemp/default.nix new file mode 100644 index 00000000000..adf23e4bdf5 --- /dev/null +++ b/pkgs/tools/misc/digitemp/default.nix @@ -0,0 +1,53 @@ +{ fetchFromGitHub, lib, stdenv }: + +stdenv.mkDerivation rec { + pname = "digitemp"; + version = "3.7.2"; + + src = fetchFromGitHub { + owner = "bcl"; + repo = "digitemp"; + rev = "v${version}"; + sha256 = "19zka5fcdxhhginaspak76l984iqq9v2j6qrwvi5mvca7bcj8f72"; + }; + + enableParallelBuilding = true; + + makeFlags = [ + "LOCK=no" + "ds9097" + "ds9097u" + ]; + + installPhase = '' + runHook preInstall + install -D -m555 -t $out/bin digitemp_* + install -D -m444 -t $out/share/doc/${pname} FAQ README + runHook postInstall + ''; + + meta = with lib; { + description = "Temperature logging and reporting using Maxim's iButtons and 1-Wire protocol"; + longDescription = '' + DigiTemp is a command line application used for reading 1-wire sensors like + the DS18S20 temperature sensor, or DS2438 battery monitor. DigiTemp supports + the following devices: + + DS18S20 (and older DS1820) Temperature Sensor + DS18B20 Temperature Sensor + DS1822 Temperature Sensor + DS2438 Battery monitor + DS2409 1-wire coupler (used in 1-wire hubs) + DS2422 Counter + DS2423 Counter + + The output format can be customized and all settings are stored in a + configuration file (.digitemprc) in the current directory. DigiTemp can + repeatedly read the sensors and output to stdout and/or to a logfile. + ''; + homepage = "https://www.digitemp.com"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ zseri ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/tools/misc/libcpuid/default.nix b/pkgs/tools/misc/libcpuid/default.nix index cb02d87e22a..8c4cb5c1a75 100644 --- a/pkgs/tools/misc/libcpuid/default.nix +++ b/pkgs/tools/misc/libcpuid/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "libcpuid"; - version = "0.5.0"; + version = "0.5.1"; src = fetchFromGitHub { owner = "anrieff"; repo = "libcpuid"; rev = "v${version}"; - sha256 = "13v5x8gyka2v4kx52khwalb6ai328z7kk9jlipbbbys63p6nyddr"; + sha256 = "sha256-m10LdtwBk1Lx31AJ4HixEYaCkT7EHpF9+tOV1rSA6VU="; }; patches = [ diff --git a/pkgs/tools/package-management/home-manager/default.nix b/pkgs/tools/package-management/home-manager/default.nix index 8897a313e8d..db60d5e8429 100644 --- a/pkgs/tools/package-management/home-manager/default.nix +++ b/pkgs/tools/package-management/home-manager/default.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation rec { pname = "home-manager"; - version = "2021-01-16"; + version = "2021-03-21"; src = fetchFromGitHub { owner = "nix-community"; repo = "home-manager"; - rev = "8127799f79ee96129b295d78294f40a54078131f"; - sha256 = "0iji8nxa66s409pvjwi370ycsw4m74w6b3ywnjpfkl2filpapjns"; + rev = "ddcd476603dfd3388b1dc8234fa9d550156a51f5"; + sha256 = "sha256-E6ABXtzw6bHmrIirB1sJL6S2MEa3sfcvRLzRa92frCo="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/tools/typesetting/tex/texlive/combine.nix b/pkgs/tools/typesetting/tex/texlive/combine.nix index 9993263c1f6..f553908d9cc 100644 --- a/pkgs/tools/typesetting/tex/texlive/combine.nix +++ b/pkgs/tools/typesetting/tex/texlive/combine.nix @@ -52,6 +52,9 @@ in (buildEnv { buildInputs = [ makeWrapper ] ++ pkgList.extraInputs; + # This is set primarily to help find-tarballs.nix to do its job + passthru.packages = pkgList.all; + postBuild = '' cd "$out" mkdir -p ./bin diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 09856d67c95..b935c4196f2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2189,6 +2189,8 @@ in inherit (darwin.apple_sdk.frameworks) Security; }; + digitemp = callPackage ../tools/misc/digitemp { }; + dijo = callPackage ../tools/misc/dijo { inherit (darwin.apple_sdk.frameworks) CoreServices; }; @@ -18253,6 +18255,10 @@ in theme-spring = callPackage ../servers/icingaweb2/theme-spring { }; }; + inspircd = callPackage ../servers/irc/inspircd { }; + + inspircdMinimal = inspircd.override { extraModules = []; }; + imgproxy = callPackage ../servers/imgproxy { }; ircdog = callPackage ../applications/networking/irc/ircdog { }; diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 9606cd48720..30f6dca5f16 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1408,7 +1408,10 @@ let omake_rc1 = callPackage ../development/tools/ocaml/omake/0.9.8.6-rc1.nix { }; - google-drive-ocamlfuse = callPackage ../applications/networking/google-drive-ocamlfuse { }; + google-drive-ocamlfuse = callPackage ../applications/networking/google-drive-ocamlfuse { + # needs Base64 module + ocaml_extlib = ocaml_extlib.override { minimal = false; }; + }; hol_light = callPackage ../applications/science/logic/hol_light { }; diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 892cf79af95..711e98ea23d 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -10955,11 +10955,12 @@ let url = "mirror://cpan/authors/id/B/BR/BRMILLER/${pname}-${version}.tar.gz"; sha256 = "0dr69rgl4si9i9ww1r4dc7apgb7y6f7ih808w4g0924cvz823s0x"; }; - propagatedBuildInputs = [ ArchiveZip DBFile FileWhich IOString ImageSize JSONXS LWP ParseRecDescent PodParser TextUnidecode XMLLibXSLT ]; + propagatedBuildInputs = [ ArchiveZip DBFile FileWhich IOString ImageSize JSONXS LWP ParseRecDescent PerlMagick PodParser TextUnidecode XMLLibXSLT ]; preCheck = '' rm t/931_epub.t # epub test fails ''; nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang; + buildInputs = [ pkgs.makeWrapper ]; # shebangs need to be patched before executables are copied to $out preBuild = '' patchShebangs bin/ @@ -10968,6 +10969,12 @@ let shortenPerlShebang "$file" done ''; + postInstall = '' + for file in latexmlc latexmlmath latexmlpost ; do + # add runtime dependencies that cause silent failures when missing + wrapProgram $out/bin/$file --prefix PATH : ${lib.makeBinPath [ pkgs.ghostscript pkgs.potrace ]} + done + ''; meta = { description = "Transforms TeX and LaTeX into XML/HTML/MathML"; license = lib.licenses.free;