summaryrefslogtreecommitdiff
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+)))