From 15c5a533b54b335f48c2d841909730340978ec28 Mon Sep 17 00:00:00 2001
From: Artyom Shalkhakov <artyom.shalkhakov@gmail.com>
Date: Fri, 12 Dec 2014 22:58:21 +0600
Subject: [PATCH] gnustep: add gworkspace and systempreferences

Packaging some basic GNUstep apps: GWorkspace and SystemPreferences.

Unfortunately, GWorkspace doesn't work well, because gdomap, gdnc, gpbs
are not started. Also, there is some issue with fonts not being found.
---
 pkgs/applications/misc/gworkspace/default.nix | 32 +++++++++++++++++++
 .../misc/systempreferences/default.nix        | 27 ++++++++++++++++
 .../build-managers/gnustep-make/setup-hook.sh |  4 +--
 pkgs/top-level/all-packages.nix               |  3 ++
 4 files changed, 63 insertions(+), 3 deletions(-)
 create mode 100644 pkgs/applications/misc/gworkspace/default.nix
 create mode 100644 pkgs/applications/misc/systempreferences/default.nix

diff --git a/pkgs/applications/misc/gworkspace/default.nix b/pkgs/applications/misc/gworkspace/default.nix
new file mode 100644
index 00000000000..2081e1540a0
--- /dev/null
+++ b/pkgs/applications/misc/gworkspace/default.nix
@@ -0,0 +1,32 @@
+{ gnustep_back, gnustep_base, gnustep_gui, gnustep_make
+, fetchurl
+, sqlite
+, stdenv
+, system_preferences
+}:
+let
+  version = "0.9.2";
+in
+stdenv.mkDerivation {
+  name = "gworkspace-${version}";
+  src = fetchurl {
+    url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/gworkspace-${version}.tar.gz";
+    sha256 = "1yzlka2dl1gb353wf9kw6l26sdihdhgwvdfg5waqwdfl7ycfyfaj";
+  };
+  # additional dependencies:
+  # - PDFKit framework from http://gap.nongnu.org/
+  GNUSTEP_MAKEFILES = "${gnustep_make}/share/GNUstep/Makefiles";
+  buildInputs = [ gnustep_back gnustep_base gnustep_make gnustep_gui sqlite system_preferences ];
+  propagatedBuildInputs = [ gnustep_back gnustep_base gnustep_gui sqlite system_preferences ];
+  configureFlags = [ "--enable-gwmetadata" "--with-inotify" ];
+  meta = {
+    description = "GWorkspace is a workspace manager for GNUstep";
+
+    homepage = http://www.gnustep.org/experience/GWorkspace.html;
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+
+    maintainers = with stdenv.lib.maintainers; [ ashalkhakov ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/applications/misc/systempreferences/default.nix b/pkgs/applications/misc/systempreferences/default.nix
new file mode 100644
index 00000000000..13d4312213b
--- /dev/null
+++ b/pkgs/applications/misc/systempreferences/default.nix
@@ -0,0 +1,27 @@
+{ gnustep_back, gnustep_base, gnustep_gui, gnustep_make
+, fetchurl
+, stdenv
+}:
+let
+  version = "1.1.0";
+in
+stdenv.mkDerivation {
+  name = "system_preferences-${version}";
+  src = fetchurl {
+    url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/SystemPreferences-${version}.tar.gz";
+    sha256 = "1q68bs8rlq0dxkar01qs5wfyas4iivddnama371jd7ll6cxzmpy7";
+  };
+  GNUSTEP_MAKEFILES = "${gnustep_make}/share/GNUstep/Makefiles";
+  buildInputs = [ gnustep_back gnustep_base gnustep_make gnustep_gui ];
+  propagatedBuildInputs = [ gnustep_back gnustep_base gnustep_gui ];
+  meta = {
+    description = "System Preferences allows to manage the settings of many aspects of the GNUstep environment and its applications";
+
+    homepage = http://www.gnustep.org/experience/systempreferences.html;
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+
+    maintainers = with stdenv.lib.maintainers; [ ashalkhakov ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/tools/build-managers/gnustep-make/setup-hook.sh b/pkgs/development/tools/build-managers/gnustep-make/setup-hook.sh
index fa70b9ab5ca..7e55bae23bd 100644
--- a/pkgs/development/tools/build-managers/gnustep-make/setup-hook.sh
+++ b/pkgs/development/tools/build-managers/gnustep-make/setup-hook.sh
@@ -8,14 +8,12 @@ installFlagsArray=( \
   "GNUSTEP_SYSTEM_WEB_APPS=$out/lib/GNUstep/WebApplications" \
   "GNUSTEP_SYSTEM_TOOLS=$out/bin" \
   "GNUSTEP_SYSTEM_ADMIN_TOOLS=$out/sbin" \
-  "GNUSTEP_SYSTEM_LIBRARY=$out/lib" \
+  "GNUSTEP_SYSTEM_LIBRARY=$out/lib/GNUstep" \
   "GNUSTEP_SYSTEM_HEADERS=$out/include" \
   "GNUSTEP_SYSTEM_LIBRARIES=$out/lib" \
   "GNUSTEP_SYSTEM_DOC=$out/share/GNUstep/Documentation" \
   "GNUSTEP_SYSTEM_DOC_MAN=$out/share/man" \
   "GNUSTEP_SYSTEM_DOC_INFO=$out/share/info" \
-  "GNUSTEP_SYSTEM_LIBRARIES=$out/lib" \
-  "GNUSTEP_HEADERS=$out/include" \
 )
 
 addGSMakefilesPath () {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 6dc478945c8..8a795b8c37c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6471,6 +6471,7 @@ in
 
   guileLint = callPackage ../development/tools/guile/guile-lint { };
 
+  gworkspace = callPackage ../applications/misc/gworkspace { stdenv = clangStdenv; };
   gwrap = callPackage ../development/tools/guile/g-wrap { };
 
   help2man = callPackage ../development/tools/misc/help2man {
@@ -9500,6 +9501,8 @@ in
 
   biblesync = callPackage ../development/libraries/biblesync { };
 
+  system_preferences = callPackage ../applications/misc/systempreferences { stdenv = clangStdenv; };
+
   szip = callPackage ../development/libraries/szip { };
 
   t1lib = callPackage ../development/libraries/t1lib { };