From 5638a1c71738013e96a51b07ce7a39d76a33448c Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Fri, 1 Mar 2019 18:53:45 +0800 Subject: [PATCH 1/2] mosquitto: 1.5.5 -> 1.5.8 and add systemd support --- pkgs/servers/mqtt/mosquitto/default.nix | 28 ++++++++++++++++--------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/pkgs/servers/mqtt/mosquitto/default.nix b/pkgs/servers/mqtt/mosquitto/default.nix index a8203ce1b168..75a0498dd3f1 100644 --- a/pkgs/servers/mqtt/mosquitto/default.nix +++ b/pkgs/servers/mqtt/mosquitto/default.nix @@ -1,23 +1,29 @@ -{ stdenv, fetchFromGitHub, fetchpatch, cmake, docbook_xsl, libxslt -, openssl, libuuid, libwebsockets, c-ares, libuv }: +{ stdenv, lib, fetchFromGitHub, fetchpatch, cmake, docbook_xsl, libxslt +, openssl, libuuid, libwebsockets, c-ares, libuv +, systemd ? null }: -stdenv.mkDerivation rec { +let + withSystemd = stdenv.isLinux; + +in stdenv.mkDerivation rec { name = "mosquitto-${version}"; - version = "1.5.5"; + version = "1.5.8"; src = fetchFromGitHub { owner = "eclipse"; repo = "mosquitto"; rev = "v${version}"; - sha256 = "1sfwmvrglfy5gqfk004kvbjldqr36dqz6xmppbgfhr47j5zs66xc"; + sha256 = "1rf8g6fq7g1mhwsajsgvvlynasybgc51v0qg5j6ynsxfh8yi7s6r"; }; postPatch = '' - substituteInPlace man/manpage.xsl \ - --replace /usr/share/xml/docbook/stylesheet/ ${docbook_xsl}/share/xml/ + for f in html manpage ; do + substituteInPlace man/$f.xsl \ + --replace http://docbook.sourceforge.net/release/xsl/current ${docbook_xsl}/share/xml/docbook-xsl + done for f in {lib,lib/cpp,src}/CMakeLists.txt ; do - substituteInPlace $f --replace /sbin/ldconfig ldconfig + substituteInPlace $f --replace /sbin/ldconfig true done # the manpages are not generated when using cmake @@ -26,7 +32,9 @@ stdenv.mkDerivation rec { popd ''; - buildInputs = [ openssl libuuid libwebsockets c-ares libuv ]; + buildInputs = [ + openssl libuuid libwebsockets c-ares libuv + ] ++ lib.optional withSystemd systemd; nativeBuildInputs = [ cmake docbook_xsl libxslt ]; @@ -35,7 +43,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DWITH_THREADING=ON" "-DWITH_WEBSOCKETS=ON" - ]; + ] ++ lib.optional withSystemd "-DWITH_SYSTEMD=ON"; meta = with stdenv.lib; { description = "An open source MQTT v3.1/3.1.1 broker"; From 0e40b7bfc2004a5448aa3883a528e2b381d9d877 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Fri, 1 Mar 2019 18:54:24 +0800 Subject: [PATCH 2/2] mosquitto (nixos): notify systemd when started --- nixos/modules/services/networking/mosquitto.nix | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/nixos/modules/services/networking/mosquitto.nix b/nixos/modules/services/networking/mosquitto.nix index 332dc541345e..9974cbd89d1e 100644 --- a/nixos/modules/services/networking/mosquitto.nix +++ b/nixos/modules/services/networking/mosquitto.nix @@ -17,7 +17,6 @@ let ''; mosquittoConf = pkgs.writeText "mosquitto.conf" '' - pid_file /run/mosquitto/pid acl_file ${aclFile} persistence true allow_anonymous ${boolToString cfg.allowAnonymous} @@ -196,15 +195,15 @@ in wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; serviceConfig = { - Type = "forking"; + Type = "notify"; + NotifyAccess = "main"; User = "mosquitto"; Group = "mosquitto"; RuntimeDirectory = "mosquitto"; WorkingDirectory = cfg.dataDir; Restart = "on-failure"; - ExecStart = "${pkgs.mosquitto}/bin/mosquitto -c ${mosquittoConf} -d"; + ExecStart = "${pkgs.mosquitto}/bin/mosquitto -c ${mosquittoConf}"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; - PIDFile = "/run/mosquitto/pid"; }; preStart = '' rm -f ${cfg.dataDir}/passwd @@ -214,7 +213,7 @@ in if c.hashedPassword != null then "echo '${n}:${c.hashedPassword}' >> ${cfg.dataDir}/passwd" else optionalString (c.password != null) - "${pkgs.mosquitto}/bin/mosquitto_passwd -b ${cfg.dataDir}/passwd ${n} ${c.password}" + "${pkgs.mosquitto}/bin/mosquitto_passwd -b ${cfg.dataDir}/passwd ${n} '${c.password}'" ) cfg.users); };