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;