libinfinity: modernize expression

* Use multiple outputs to reduce the number of rebuilds necessary.
* Fix build with GTK+ support

Changed files
+44 -45
nixos
modules
services
editors
pkgs
development
libraries
libinfinity
top-level
+4 -4
nixos/modules/services/editors/infinoted.nix
···
package = mkOption {
type = types.package;
-
default = pkgs.libinfinity.override { daemon = true; };
-
defaultText = "pkgs.libinfinity.override { daemon = true; }";
+
default = pkgs.libinfinity;
+
defaultText = "pkgs.libinfinity";
description = ''
Package providing infinoted
'';
···
users.groups = optional (cfg.group == "infinoted")
{ name = "infinoted";
};
-
+
systemd.services.infinoted =
{ description = "Gobby Dedicated Server";
···
serviceConfig = {
Type = "simple";
Restart = "always";
-
ExecStart = "${cfg.package}/bin/infinoted-${versions.majorMinor cfg.package.version} --config-file=/var/lib/infinoted/infinoted.conf";
+
ExecStart = "${cfg.package.infinoted} --config-file=/var/lib/infinoted/infinoted.conf";
User = cfg.user;
Group = cfg.group;
PermissionsStartOnly = true;
+39 -38
pkgs/development/libraries/libinfinity/default.nix
···
{ gtkWidgets ? false # build GTK widgets for libinfinity
-
, daemon ? false # build infinote daemon
-
, documentation ? false # build documentation
, avahiSupport ? false # build support for Avahi in libinfinity
, stdenv, fetchurl, pkgconfig, glib, libxml2, gnutls, gsasl
-
, gtk2 ? null, gtkdoc ? null, avahi ? null, libdaemon ? null, libidn, gss
+
, gobjectIntrospection
+
, gtk3 ? null, gtk-doc, docbook_xsl, docbook_xml_dtd_412, avahi ? null, libdaemon, libidn, gss
, libintl }:
+
assert avahiSupport -> avahi != null;
+
assert gtkWidgets -> gtk3 != null;
+
let
-
edf = flag: feature: (if flag then "--with-" else "--without-") + feature;
-
optional = cond: elem: assert cond -> elem != null; if cond then [elem] else [];
+
mkFlag = flag: feature: (if flag then "--with-" else "--without-") + feature;
-
in stdenv.mkDerivation rec {
+
self = stdenv.mkDerivation rec {
+
name = "libinfinity-${version}";
+
version = "0.7.1";
+
src = fetchurl {
+
url = "http://releases.0x539.de/libinfinity/${name}.tar.gz";
+
sha256 = "1jw2fhrcbpyz99bij07iyhy9ffyqdn87vl8cb1qz897y3f2f0vk2";
+
};
-
name = "libinfinity-${version}";
-
version = "0.7.1";
-
src = fetchurl {
-
url = "http://releases.0x539.de/libinfinity/${name}.tar.gz";
-
sha256 = "1jw2fhrcbpyz99bij07iyhy9ffyqdn87vl8cb1qz897y3f2f0vk2";
-
};
+
outputs = [ "bin" "out" "dev" "man" "devdoc" ];
-
nativeBuildInputs = [ pkgconfig ];
-
buildInputs = [ glib libxml2 gsasl libidn gss libintl ]
-
++ optional gtkWidgets gtk2
-
++ optional documentation gtkdoc
-
++ optional avahiSupport avahi
-
++ optional daemon libdaemon;
+
nativeBuildInputs = [ pkgconfig gtk-doc docbook_xsl docbook_xml_dtd_412 gobjectIntrospection ];
+
buildInputs = [ glib libxml2 gsasl libidn gss libintl libdaemon ]
+
++ stdenv.lib.optional gtkWidgets gtk3
+
++ stdenv.lib.optional avahiSupport avahi;
-
propagatedBuildInputs = [ gnutls ];
+
propagatedBuildInputs = [ gnutls ];
-
configureFlags = ''
-
${if documentation then "--enable-gtk-doc" else "--disable-gtk-doc"}
-
${edf gtkWidgets "inftextgtk"}
-
${edf gtkWidgets "infgtk"}
-
${edf daemon "infinoted"}
-
${edf daemon "libdaemon"}
-
${edf avahiSupport "avahi"}
-
'';
+
configureFlags = [
+
"--enable-gtk-doc"
+
"--enable-introspection"
+
(mkFlag gtkWidgets "inftextgtk")
+
(mkFlag gtkWidgets "infgtk")
+
"--with-infinoted"
+
"--with-libdaemon"
+
(mkFlag avahiSupport "avahi")
+
];
-
passthru = {
-
inherit version;
-
};
+
passthru = {
+
infinoted = "${self.bin}/bin/infinoted-${stdenv.lib.versions.majorMinor version}";
+
};
-
meta = {
-
homepage = http://gobby.0x539.de/;
-
description = "An implementation of the Infinote protocol written in GObject-based C";
-
license = stdenv.lib.licenses.lgpl2Plus;
-
maintainers = [ stdenv.lib.maintainers.phreedom ];
-
platforms = with stdenv.lib.platforms; linux ++ darwin;
+
meta = {
+
homepage = http://gobby.0x539.de/;
+
description = "An implementation of the Infinote protocol written in GObject-based C";
+
license = stdenv.lib.licenses.lgpl2Plus;
+
maintainers = [ stdenv.lib.maintainers.phreedom ];
+
platforms = with stdenv.lib.platforms; linux ++ darwin;
+
};
};
-
-
}
+
in self
+1 -3
pkgs/top-level/all-packages.nix
···
libiec61883 = callPackage ../development/libraries/libiec61883 { };
-
libinfinity = callPackage ../development/libraries/libinfinity {
-
inherit (gnome2) gtkdoc;
-
};
+
libinfinity = callPackage ../development/libraries/libinfinity { };
libinput = callPackage ../development/libraries/libinput {
graphviz = graphviz-nox;