;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2023 Ricardo Wurmus ;;; ;;; 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 . (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* "src/jarabe/main.py" (("'metacity'") (string-append "'" (search-input-file inputs "/bin/metacity") "'")) (("'metacity-message") (string-append "'" (search-input-file inputs "/bin/metacity-message")))) (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+ metacity 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+)))