summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/desktops/gnome3/rygel.nix30
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix1
-rw-r--r--pkgs/desktops/gnome-3/core/rygel/default.nix54
-rw-r--r--pkgs/desktops/gnome-3/default.nix2
-rw-r--r--pkgs/development/libraries/gssdp/default.nix18
-rw-r--r--pkgs/development/libraries/gupnp-av/default.nix25
-rw-r--r--pkgs/development/libraries/gupnp-dlna/default.nix30
-rw-r--r--pkgs/development/libraries/gupnp-igd/default.nix29
-rw-r--r--pkgs/development/libraries/gupnp/default.nix41
-rw-r--r--pkgs/development/libraries/gupnp/fix-requires.patch9
11 files changed, 191 insertions, 49 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 2b14f769ae42..3f3123798f59 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -245,6 +245,7 @@
   ./services/desktops/gnome3/gnome-user-share.nix
   ./services/desktops/gnome3/gpaste.nix
   ./services/desktops/gnome3/gvfs.nix
+  ./services/desktops/gnome3/rygel.nix
   ./services/desktops/gnome3/seahorse.nix
   ./services/desktops/gnome3/sushi.nix
   ./services/desktops/gnome3/tracker.nix
diff --git a/nixos/modules/services/desktops/gnome3/rygel.nix b/nixos/modules/services/desktops/gnome3/rygel.nix
new file mode 100644
index 000000000000..55d5e703aa19
--- /dev/null
+++ b/nixos/modules/services/desktops/gnome3/rygel.nix
@@ -0,0 +1,30 @@
+# rygel service.
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+  ###### interface
+  options = {
+    services.gnome3.rygel = {
+      enable = mkOption {
+        default = false;
+        description = ''
+          Whether to enable Rygel UPnP Mediaserver.
+
+          You will need to also allow UPnP connections in firewall, see the following <link xlink:href="https://github.com/NixOS/nixpkgs/pull/45045#issuecomment-416030795">comment</link>.
+        '';
+        type = types.bool;
+      };
+    };
+  };
+
+  ###### implementation
+  config = mkIf config.services.gnome3.rygel.enable {
+    environment.systemPackages = [ pkgs.gnome3.rygel ];
+
+    services.dbus.packages = [ pkgs.gnome3.rygel ];
+
+    systemd.packages = [ pkgs.gnome3.rygel ];
+  };
+}
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index faf5214130db..eb86f7b53bb6 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -110,6 +110,7 @@ in {
     services.gnome3.gnome-terminal-server.enable = mkDefault true;
     services.gnome3.gnome-user-share.enable = mkDefault true;
     services.gnome3.gvfs.enable = true;
+    services.gnome3.rygel.enable = mkDefault true;
     services.gnome3.seahorse.enable = mkDefault true;
     services.gnome3.sushi.enable = mkDefault true;
     services.gnome3.tracker.enable = mkDefault true;
diff --git a/pkgs/desktops/gnome-3/core/rygel/default.nix b/pkgs/desktops/gnome-3/core/rygel/default.nix
new file mode 100644
index 000000000000..ef0886328974
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/rygel/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, pkgconfig, vala, gettext, libxml2, gobjectIntrospection, gtk-doc, wrapGAppsHook, glib, gssdp, gupnp, gupnp-av, gupnp-dlna, gst_all_1, libgee, libsoup, gtk3, libmediaart, sqlite, systemd, tracker, shared-mime-info, gnome3 }:
+
+let
+  pname = "rygel";
+  version = "0.36.2";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  # TODO: split out lib
+  outputs = [ "out" "dev" "devdoc" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "0i12z6bzfzgcjidhxa2jsvpm4hqpab0s032z13jy2vbifrncfcnk";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig vala gettext libxml2 gobjectIntrospection gtk-doc wrapGAppsHook
+  ];
+  buildInputs = [
+    glib gssdp gupnp gupnp-av gupnp-dlna libgee libsoup gtk3 libmediaart sqlite systemd tracker shared-mime-info
+  ] ++ (with gst_all_1; [
+    gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly
+  ]);
+
+  configureFlags = [
+    "--with-systemduserunitdir=$(out)/lib/systemd/user"
+    "--enable-apidocs"
+    "--sysconfdir=/etc"
+  ];
+
+  installFlags = [
+    "sysconfdir=$(out)/etc"
+  ];
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A home media solution (UPnP AV MediaServer) that allows you to easily share audio, video and pictures to other devices";
+    homepage = https://wiki.gnome.org/Projects/Rygel;
+    license = licenses.lgpl21Plus;
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/default.nix b/pkgs/desktops/gnome-3/default.nix
index d90440d5f557..5112f8b496f5 100644
--- a/pkgs/desktops/gnome-3/default.nix
+++ b/pkgs/desktops/gnome-3/default.nix
@@ -216,6 +216,8 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   rest = callPackage ./core/rest { };
 
+  rygel = callPackage ./core/rygel { };
+
   simple-scan = callPackage ./core/simple-scan { };
 
   sushi = callPackage ./core/sushi { };
diff --git a/pkgs/development/libraries/gssdp/default.nix b/pkgs/development/libraries/gssdp/default.nix
index d48ba9082af2..0d77018eee5f 100644
--- a/pkgs/development/libraries/gssdp/default.nix
+++ b/pkgs/development/libraries/gssdp/default.nix
@@ -1,22 +1,30 @@
-{ stdenv, fetchurl, pkgconfig, libsoup, glib }:
+{ stdenv, fetchurl, pkgconfig, gobjectIntrospection, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, libsoup, gtk3, glib }:
 
 stdenv.mkDerivation rec {
   name = "gssdp-${version}";
   version = "1.0.2";
 
+  outputs = [ "out" "bin" "dev" "devdoc" ];
+
   src = fetchurl {
-    url = "mirror://gnome/sources/gssdp/1.0/${name}.tar.xz";
+    url = "mirror://gnome/sources/gssdp/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
     sha256 = "1p1m2m3ndzr2whipqw4vfb6s6ia0g7rnzzc4pnq8b8g1qw4prqd1";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ libsoup ];
+  nativeBuildInputs = [ pkgconfig gobjectIntrospection vala gtk-doc docbook_xsl docbook_xml_dtd_412 ];
+  buildInputs = [ libsoup gtk3 ];
   propagatedBuildInputs = [ glib ];
 
+  configureFlags = [
+    "--enable-gtk-doc"
+  ];
+
+  doCheck = true;
+
   meta = with stdenv.lib; {
     description = "GObject-based API for handling resource discovery and announcement over SSDP";
     homepage = http://www.gupnp.org/;
-    license = licenses.lgpl2;
+    license = licenses.lgpl2Plus;
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/libraries/gupnp-av/default.nix b/pkgs/development/libraries/gupnp-av/default.nix
index 9b61f4b648e1..7491da7c3e2f 100644
--- a/pkgs/development/libraries/gupnp-av/default.nix
+++ b/pkgs/development/libraries/gupnp-av/default.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, gupnp, glib, libxml2 }:
+{ stdenv, fetchurl, pkgconfig, gobjectIntrospection, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, gupnp, glib, libxml2 }:
 
 stdenv.mkDerivation rec {
   name = "gupnp-av-${version}";
-  majorVersion = "0.12";
-  version = "${majorVersion}.10";
+  version = "0.12.10";
+
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gupnp-av/${majorVersion}/${name}.tar.xz";
+    url = "mirror://gnome/sources/gupnp-av/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
     sha256 = "0nmq6wlbfsssanv3jgv2z0nhfkv8vzfr3gq5qa8svryvvn2fyf40";
   };
-  
-  nativeBuildInputs = [ pkgconfig ];
+
+  nativeBuildInputs = [ pkgconfig gobjectIntrospection vala gtk-doc docbook_xsl docbook_xml_dtd_412 ];
   buildInputs = [ gupnp glib libxml2 ];
 
-  meta = {
+  configureFlags = [
+    "--enable-gtk-doc"
+  ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
     homepage = http://gupnp.org/;
     description = "A collection of helpers for building AV (audio/video) applications using GUPnP";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/gupnp-dlna/default.nix b/pkgs/development/libraries/gupnp-dlna/default.nix
index 75818f756921..aba95889b698 100644
--- a/pkgs/development/libraries/gupnp-dlna/default.nix
+++ b/pkgs/development/libraries/gupnp-dlna/default.nix
@@ -1,22 +1,34 @@
-{ stdenv, fetchurl, pkgconfig,  gobjectIntrospection, gupnp, gst-plugins-base }:
+{ stdenv, fetchurl, pkgconfig, gobjectIntrospection, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, gupnp, gst_all_1 }:
 
 stdenv.mkDerivation rec {
   name = "gupnp-dlna-${version}";
-  majorVersion = "0.10";
-  version = "${majorVersion}.5";
+  version = "0.10.5";
+
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gupnp-dlna/${majorVersion}/${name}.tar.xz";
+    url = "mirror://gnome/sources/gupnp-dlna/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
     sha256 = "0spzd2saax7w776p5laixdam6d7smyynr9qszhbmq7f14y13cghj";
   };
 
-  nativeBuildInputs = [ pkgconfig gobjectIntrospection ];
-  buildInputs = [ gupnp gst-plugins-base ];
+  nativeBuildInputs = [ pkgconfig gobjectIntrospection vala gtk-doc docbook_xsl docbook_xml_dtd_412 ];
+  buildInputs = [ gupnp gst_all_1.gst-plugins-base ];
+
+  configureFlags = [
+    "--enable-gtk-doc"
+  ];
+
+  doCheck = true;
+
+  postPatch = ''
+    chmod +x tests/test-discoverer.sh.in
+    patchShebangs tests/test-discoverer.sh.in
+  '';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/GUPnP/;
     description = "Library to ease DLNA-related bits for applications using GUPnP";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/gupnp-igd/default.nix b/pkgs/development/libraries/gupnp-igd/default.nix
index 182905e9546a..50107959786d 100644
--- a/pkgs/development/libraries/gupnp-igd/default.nix
+++ b/pkgs/development/libraries/gupnp-igd/default.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, glib, gupnp }:
- 
+{ stdenv, fetchurl, pkgconfig, gettext, gobjectIntrospection, gtk-doc, docbook_xsl, docbook_xml_dtd_412, glib, gupnp }:
+
 stdenv.mkDerivation rec {
   name = "gupnp-igd-${version}";
-  majorVersion = "0.2";
-  version = "${majorVersion}.4";
+  version = "0.2.5";
+
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gupnp-igd/${majorVersion}/${name}.tar.xz";
-    sha256 = "38c4a6d7718d17eac17df95a3a8c337677eda77e58978129ad3182d769c38e44";
+    url = "mirror://gnome/sources/gupnp-igd/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "081v1vhkbz3wayv49xfiskvrmvnpx93k25am2wnarg5cifiiljlb";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig gettext gobjectIntrospection gtk-doc docbook_xsl docbook_xml_dtd_412 ];
   propagatedBuildInputs = [ glib gupnp ];
 
-  meta = {
+  configureFlags = [
+    "--enable-gtk-doc"
+  ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Library to handle UPnP IGD port mapping";
     homepage = http://www.gupnp.org/;
-    license = stdenv.lib.licenses.lgpl21;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
   };
 }
-
diff --git a/pkgs/development/libraries/gupnp/default.nix b/pkgs/development/libraries/gupnp/default.nix
index 963b93ef6917..45adf46ff36f 100644
--- a/pkgs/development/libraries/gupnp/default.nix
+++ b/pkgs/development/libraries/gupnp/default.nix
@@ -1,28 +1,39 @@
-{ stdenv, fetchurl, pkgconfig, glib, gssdp, libsoup, libxml2, libuuid }:
- 
+{ stdenv, fetchurl, pkgconfig, gobjectIntrospection, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, docbook_xml_dtd_44, glib, gssdp, libsoup, libxml2, libuuid }:
+
 stdenv.mkDerivation rec {
   name = "gupnp-${version}";
-  majorVersion = "1.0";
-  version = "${majorVersion}.2";
+  version = "1.0.3";
+
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gupnp/${majorVersion}/gupnp-${version}.tar.xz";
-    sha256 = "043nqxlj030a3wvd6x4c9z8fjarjjjsl2pjarl0nn70ig6kzswsi";
+    url = "mirror://gnome/sources/gupnp/${stdenv.lib.versions.majorMinor version}/gupnp-${version}.tar.xz";
+    sha256 = "1fyb6yn75vf2y1b8nbc1df572swzr74yiwy3v3g5xn36wlp1cjvr";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  patches = [
+    # Nix’s pkg-config ignores Requires.private
+    # https://github.com/NixOS/nixpkgs/commit/1e6622f4d5d500d6e701bd81dd4a22977d10637d
+    # We are essentialy reverting the following patch for now
+    # https://bugzilla.gnome.org/show_bug.cgi?id=685477
+    # at least until Requires.internal or something is implemented
+    # https://gitlab.freedesktop.org/pkg-config/pkg-config/issues/7
+    ./fix-requires.patch
+  ];
+
+  nativeBuildInputs = [ pkgconfig gobjectIntrospection vala gtk-doc docbook_xsl docbook_xml_dtd_412 docbook_xml_dtd_44 ];
   propagatedBuildInputs = [ glib gssdp libsoup libxml2 libuuid ];
 
-  postInstall = ''
-    ln -sv ${libsoup.dev}/include/libsoup-2*/libsoup $out/include
-    ln -sv ${libxml2.dev}/include/*/libxml $out/include
-    ln -sv ${gssdp}/include/*/libgssdp $out/include
-  '';
+  configureFlags = [
+    "--enable-gtk-doc"
+  ];
+
+  doCheck = true;
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.gupnp.org/;
     description = "An implementation of the UPnP specification";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/gupnp/fix-requires.patch b/pkgs/development/libraries/gupnp/fix-requires.patch
new file mode 100644
index 000000000000..4538fc55460f
--- /dev/null
+++ b/pkgs/development/libraries/gupnp/fix-requires.patch
@@ -0,0 +1,9 @@
+--- a/gupnp-1.0.pc.in
++++ b/gupnp-1.0.pc.in
+@@ -8,4 +8,5 @@
+ Version: @VERSION@
+ Libs: -L${libdir} -lgupnp-1.0
+ Cflags: -I${includedir}/gupnp-1.0
+-Requires.private: gssdp-1.0 libxml-2.0 libsoup-2.4 @UUID_LIBS@
++Requires: glib-2.0 gobject-2.0 gssdp-1.0 libxml-2.0 libsoup-2.4
++Requires.private: @UUID_LIBS@