summary refs log tree commit diff
path: root/gnu/packages/sugar.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/sugar.scm')
-rw-r--r--gnu/packages/sugar.scm322
1 files changed, 322 insertions, 0 deletions
diff --git a/gnu/packages/sugar.scm b/gnu/packages/sugar.scm
new file mode 100644
index 0000000000..c9b8433f01
--- /dev/null
+++ b/gnu/packages/sugar.scm
@@ -0,0 +1,322 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Ricardo Wurmus <rekado@elephly.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages sugar)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gstreamer)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages search)
+  #:use-module (gnu packages time)
+  #:use-module (gnu packages webkit)
+  #:use-module (gnu packages xorg)
+  #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix gexp))
+
+(define-public sugar
+  (package
+    (name "sugar")
+    (version "0.120")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sugarlabs/sugar")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0imhaj49n7ain33kmrqk19rzlfr50m84fbc011vgg1010ddp3vdw"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     (list
+      #:imported-modules
+      `(,@%glib-or-gtk-build-system-modules
+        (guix build python-build-system))
+      #:modules
+      '((guix build glib-or-gtk-build-system)
+        ((guix build python-build-system) #:prefix python:)
+        (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-build-system
+            (lambda _
+              (substitute* "autogen.sh"
+                (("^\"\\$srcdir/configure" m)
+                 (string-append "#" m)))))
+          (add-after 'unpack 'fix-references
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "bin/sugar.in"
+                (("exec python3")
+                 (string-append "exec " (which "python3"))))
+              (substitute* "extensions/cpsection/datetime/model.py"
+                (("/usr/share/zoneinfo/zone.tab")
+                 (search-input-file inputs "/share/zoneinfo/zone.tab")))
+              (substitute* "extensions/cpsection/modemconfiguration/model.py"
+                (("/usr/share/zoneinfo/iso3166.tab")
+                 (search-input-file inputs "/share/zoneinfo/iso3166.tab"))
+                (("/usr/share/mobile-broadband-provider-info")
+                 (dirname
+                  (search-input-file inputs
+                                     "/share/mobile-broadband-provider-info/serviceproviders.xml"))))
+              ;; TODO: these locations should be set to places that exist on
+              ;; Guix System.
+              #;
+              (substitute* "extensions/cpsection/background/model.py"
+                (("\\('/usr', 'share', 'backgrounds'\\)")
+                 "('TODO')"))
+              #;
+              (substitute* "src/jarabe/view/viewhelp.py"
+                (("/usr/share/sugar/activities/Help.activity")
+                 "TODO"))))
+          (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (for-each
+               (lambda (executable)
+                 (wrap-program executable
+                   `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                          ,(python:site-packages inputs outputs)))
+                   `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
+               (find-files (string-append #$output "/bin") "^sugar.*")))))))
+    (inputs
+     (list gtk+
+           mobile-broadband-provider-info
+           python
+           sugar-artwork
+           sugar-datastore
+           sugar-toolkit-gtk3
+           tzdata))
+    (propagated-inputs
+     (list gstreamer
+           gtk+
+           gtksourceview-3
+           libsoup-minimal-2
+           libwnck
+           libxklavier
+           network-manager
+           telepathy-glib
+           webkitgtk-with-libsoup2
+           python-gwebsockets))
+    (native-inputs
+     (list autoconf automake
+           gettext-minimal
+           intltool
+           (list glib "bin")
+           libtool
+           pkg-config
+           python-empy))
+    (home-page "https://www.sugarlabs.org/")
+    (synopsis "Sugar GTK shell")
+    (description "Sugar is the desktop environment component of a worldwide
+effort to provide every child with an equal opportunity for a quality
+education.  Available in more than twenty-five languages, Sugar Activities are
+used every school day by children in more than forty countries.")
+    (license license:gpl3+)))
+
+(define-public sugar-artwork
+  (package
+    (name "sugar-artwork")
+    (version "0.120")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sugarlabs/sugar-artwork")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1mjydyx7kbk429s3kswfb8x7g5smjwnai924avwxab1kjsjjksm9"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      '(list "--without-gtk2")
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'patch-build-system
+           (lambda _
+             (substitute* "autogen.sh"
+               (("^\"\\$srcdir/configure" m)
+                (string-append "#" m))))))))
+    (inputs (list cairo gtk+))
+    (native-inputs
+     (list autoconf automake
+           icon-naming-utils
+           libtool
+           pkg-config
+           python
+           python-empy
+           xcursorgen))
+    (home-page "https://www.sugarlabs.org/")
+    (synopsis "Sugar icons and themes")
+    (description "Sugar Artwork provides icons, and GTK+ CSS to build
+activities and other Sugar components.")
+    (license (list license:lgpl2.1+
+                   license:asl2.0))))
+
+(define-public sugar-datastore
+  (package
+    (name "sugar-datastore")
+    (version "0.120")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sugarlabs/sugar-datastore")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1wf33w6dm26i8a1zpb40339fj3l9vxjznagls9bc845nld318sqc"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     (list
+      #:imported-modules
+      `(,@%glib-or-gtk-build-system-modules
+        (guix build python-build-system))
+      #:modules
+      '((guix build glib-or-gtk-build-system)
+        ((guix build python-build-system) #:prefix python:)
+        (guix build utils))
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'patch-build-system
+           (lambda _
+             (substitute* "autogen.sh"
+               (("^\"\\$srcdir/configure" m)
+                (string-append "#" m)))))
+         (add-after 'unpack 'patch-reference-to-du
+           (lambda _
+             (substitute* "src/carquinyol/datastore.py"
+               (("/usr/bin/du") (which "du")))))
+         (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (for-each
+              (lambda (executable)
+                (wrap-program executable
+                  `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                         ,(python:site-packages inputs outputs)))
+                  `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
+              (list (search-input-file outputs "bin/copy-from-journal")
+                    (search-input-file outputs "bin/copy-to-journal")
+                    (search-input-file outputs "bin/datastore-service"))))))))
+    (inputs
+     (list python
+           sugar-toolkit-gtk3))
+    (propagated-inputs
+     (list python-dbus
+           python-pygobject
+           python-xapian-bindings))
+    (native-inputs
+     (list autoconf automake
+           libtool
+           pkg-config))
+    (home-page "https://www.sugarlabs.org/")
+    (synopsis "Service for Sugar activities to store and retrieve data")
+    (description "Sugar Datastore provides activities with a way to store data
+and metadata, and the journal with querying and full text search.")
+    (license license:gpl2+)))
+
+(define-public sugar-toolkit-gtk3
+  (package
+    (name "sugar-toolkit-gtk3")
+    (version "0.120")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sugarlabs/sugar-toolkit-gtk3")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1wqanc38zplyiq1vxda4bj1n0xd78zqlwml6lzklsrbz923llykz"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     (list
+      #:imported-modules
+      `(,@%glib-or-gtk-build-system-modules
+        (guix build python-build-system))
+      #:modules
+      '((guix build glib-or-gtk-build-system)
+        ((guix build python-build-system) #:prefix python:)
+        (guix build utils))
+      #:phases
+      '(modify-phases %standard-phases
+         (add-after 'unpack 'patch-build-system
+           (lambda _
+             (substitute* "autogen.sh"
+               (("^\"\\$srcdir/configure" m)
+                (string-append "#" m)))))
+         (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-program (search-input-file outputs "bin/sugar-activity3")
+               `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                      ,(python:site-packages inputs outputs)))
+               `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
+    (inputs
+     (list alsa-lib
+           libice
+           libsm
+           libx11
+           libxfixes
+           libxi
+           python))
+    (propagated-inputs
+     ;; The gi typelib files are needed by users of this library.
+     (list gdk-pixbuf
+           gobject-introspection
+           gtk+
+           (librsvg-for-system)
+
+           ;; This package is used as a Python library by users, so these must
+           ;; be propagated.
+           python-pycairo
+           python-dateutil
+           python-dbus
+           python-decorator
+           python-pygobject
+           python-six))
+    (native-inputs
+     (list autoconf automake
+           gettext-minimal
+           glib
+           (list glib "bin")
+           intltool
+           libtool
+           pkg-config))
+    (home-page "https://www.sugarlabs.org/")
+    (synopsis "GTK+ widgets and services for Sugar components")
+    (description "Sugar Toolkit provides services and a set of GTK+ widgets to
+build activities and other Sugar components.  This is the GTK+ 3 binding of
+the Sugar Toolkit.")
+    (license license:lgpl2.1+)))