about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-02-07 08:42:12 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-02-07 12:15:36 -0500
commit2c1fc43a4331a91deb72c1fd1e711ce170e15d90 (patch)
tree5631707ec2bee34e960072faf064cb0d92179beb
parentf0636c60556efb4c0330ba69a0ecdce4a6f60b93 (diff)
libappindicator: Clean up code a bit
- Properly through on unsupported GTK versions.

- Mark mono suport broken rather than just having a comment.
-rw-r--r--pkgs/development/libraries/libappindicator/default.nix36
1 files changed, 24 insertions, 12 deletions
diff --git a/pkgs/development/libraries/libappindicator/default.nix b/pkgs/development/libraries/libappindicator/default.nix
index d1d882dd4eb5f..0819d004017c2 100644
--- a/pkgs/development/libraries/libappindicator/default.nix
+++ b/pkgs/development/libraries/libappindicator/default.nix
@@ -1,5 +1,3 @@
-# TODO: Resolve the issues with the Mono bindings.
-
 { stdenv, fetchgit, lib
 , pkg-config, autoreconfHook
 , glib, dbus-glib
@@ -7,12 +5,16 @@
 , gtk2, libindicator-gtk2, libdbusmenu-gtk2
 , gtk3, libindicator-gtk3, libdbusmenu-gtk3
 , gtk-doc, vala, gobject-introspection
-, monoSupport ? false, mono, gtk-sharp-2_0
+, monoSupport ? false, mono, gtk-sharp-2_0, gtk-sharp-3_0
 , testers
 }:
 
+let
+  throwBadGtkVersion = throw "unknown GTK version ${gtkVersion}";
+in
+
 stdenv.mkDerivation (finalAttrs: {
-  pname = let postfix = if gtkVersion == "2" && monoSupport then "sharp" else "gtk${gtkVersion}";
+  pname = let postfix = if monoSupport then "sharp" else "gtk${gtkVersion}";
           in "libappindicator-${postfix}";
   version = "12.10.1+20.10.20200706.1";
 
@@ -26,16 +28,24 @@ stdenv.mkDerivation (finalAttrs: {
 
   nativeBuildInputs = [ pkg-config autoreconfHook vala gobject-introspection gtk-doc ];
 
-  propagatedBuildInputs =
-    if gtkVersion == "2"
-    then [ gtk2 libdbusmenu-gtk2 ]
-    else [ gtk3 libdbusmenu-gtk3 ];
+  propagatedBuildInputs = {
+    "2" = [ gtk2 libdbusmenu-gtk2 ];
+    "3" = [ gtk3 libdbusmenu-gtk3 ];
+  }.${gtkVersion} or throwBadGtkVersion;
 
   buildInputs = [
     glib dbus-glib
-  ] ++ (if gtkVersion == "2"
-    then [ libindicator-gtk2 ] ++ lib.optionals monoSupport [ mono gtk-sharp-2_0 ]
-    else [ libindicator-gtk3 ]);
+    {
+      "2" = libindicator-gtk2;
+      "3" = libindicator-gtk3;
+    }.${gtkVersion} or throwBadGtkVersion
+  ] ++ lib.optionals monoSupport [
+    mono
+    {
+      "2" = gtk-sharp-2_0;
+      "3" = gtk-sharp-3_0;
+    }.${gtkVersion} or throwBadGtkVersion
+  ];
 
   preAutoreconf = ''
     gtkdocize
@@ -64,8 +74,10 @@ stdenv.mkDerivation (finalAttrs: {
     pkgConfigModules = {
       "2" = [ "appindicator-0.1" ];
       "3" = [ "appindicator3-0.1" ];
-    }.${gtkVersion} or [];
+    }.${gtkVersion} or throwBadGtkVersion;
     platforms = platforms.linux;
     maintainers = [ maintainers.msteen ];
+    # TODO: Resolve the issues with the Mono bindings.
+    broken = monoSupport && (gtkVersion != "2");
   };
 })