Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save phodina/d5f75f57af92595324b58cecaf41919f to your computer and use it in GitHub Desktop.
Save phodina/d5f75f57af92595324b58cecaf41919f to your computer and use it in GitHub Desktop.
From 2e9873190696b8f204a164b312d0b682967d5568 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Thu, 11 Nov 2021 19:23:59 +0100
Subject: [PATCH 1/9] gnu: linux: Support numbers and strings in options.
* gnu/packages/linux.scm: Match numbers and strings in options.
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 27ec9fa82e..535ff30c05 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -729,12 +729,16 @@ (define %bpf-extra-linux-options
(define (config->string options)
(string-join (map (match-lambda
- ((option . 'm)
- (string-append option "=m"))
- ((option . #t)
- (string-append option "=y"))
((option . #f)
- (string-append option "=n")))
+ (format #f "# ~a is not set" option))
+ ((option . #t)
+ (format #f "~a=y" option))
+ ((option . 'm)
+ (format #f "~a=m" option))
+ ((option . (? number? value))
+ (format #f "~a=~a" option value))
+ ((option . (? string? value))
+ (format #f "~a=\"~a\"" option value)))
options)
"\n"))
--
2.33.1
From 4c669f1c876bb02b6a55c3978f8230e2685f4b1d Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Thu, 11 Nov 2021 19:26:41 +0100
Subject: [PATCH 2/9] gnu: Add linux-libre-with-waydroid.
* gnu/packages/linux.scm (linux-libre-with-waydroid,
* waydroid-extra-linux-options): New variables.
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 535ff30c05..e41e1622ec 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -727,6 +727,14 @@ (define %bpf-extra-linux-options
;; kheaders module
("CONFIG_IKHEADERS" . #t)))
+(define %waydroid-extra-linux-options
+ `(;; Modules required for waydroid:
+ ("CONFIG_ASHMEM" . #t)
+ ("CONFIG_ANDROID" . #t)
+ ("CONFIG_ANDROID_BINDER_IPC" . #t)
+ ("CONFIG_ANDROID_BINDERFS" . #t)
+ ("CONFIG_ANDROID_BINDER_DEVICES" . "binder,hwbinder,vndbinder")))
+
(define (config->string options)
(string-join (map (match-lambda
((option . #f)
@@ -1154,6 +1162,24 @@ (define-public linux-libre-mips64el-fuloong2e
`(("CONFIG_OVERLAY_FS" . m))
%default-extra-linux-options)))
+(define-public linux-libre-with-waydroid
+ (let ((base-linux-libre
+ (make-linux-libre*
+ linux-libre-version
+ linux-libre-gnu-revision
+ linux-libre-source
+ '("x86_64-linux" "i686-linux" "armhf-linux"
+ "aarch64-linux" "riscv64-linux")
+ #:extra-version "linux"
+ #:configuration-file kernel-config
+ #:extra-options
+ (append %waydroid-extra-linux-options
+ %default-extra-linux-options))))
+ (package
+ (inherit base-linux-libre)
+ (name "linux-libre-waydroid")
+ (inputs `(("cpio" ,cpio) ,@(package-inputs base-linux-libre))))))
+
(define-public linux-libre-with-bpf
(let ((base-linux-libre
(make-linux-libre*
--
2.33.1
From 0a136a5573582a8e80157bdbc9c958330d634c06 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Wed, 22 Dec 2021 02:35:46 +0100
Subject: [PATCH 3/9] gnu: Add linux-libre-arm64-waydroid.
* gnu/packages/linux.scm (linux-libre-arm64-waydroid): New variable.
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index e41e1622ec..0c917038ec 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1078,6 +1078,33 @@ (define-public linux-libre-arm-omap2plus-4.14
#:defconfig "omap2plus_defconfig"
#:extra-version "arm-omap2plus"))
+(define-public linux-libre-arm64-waydroid
+ (make-linux-libre* linux-libre-version
+ linux-libre-gnu-revision
+ linux-libre-source
+ '("aarch64-linux")
+ #:defconfig "defconfig"
+ #:extra-version "arm64-generic"
+ #:extra-options
+ (append
+ `(;; needed to fix the RTC on rockchip platforms
+ ("CONFIG_RTC_DRV_RK808" . #t)
+ ;; Pinebook display, battery, charger and usb
+ ("CONFIG_DRM_ANALOGIX_ANX6345" . m)
+ ("CONFIG_CHARGER_AXP20X" . m)
+ ("CONFIG_INPUT_AXP20X_PEK" . m)
+ ("CONFIG_CHARGER_AXP20X" . m)
+ ("CONFIG_BATTERY_AXP20X" . m)
+ ("CONFIG_PINCTRL_AXP209" . m)
+ ("CONFIG_AXP20X_POWER" . m)
+ ("CONFIG_AXP20X_ADC" . m)
+ ;; Pinebook PRO battery and sound support
+ ("CONFIG_BATTERY_CW2015" . m)
+ ("CONFIG_CHARGER_GPIO" . m)
+ ("CONFIG_SND_SOC_ES8316" . m))
+ %waydroid-extra-linux-options
+ %default-extra-linux-options)))
+
(define-public linux-libre-arm64-generic
(make-linux-libre* linux-libre-version
linux-libre-gnu-revision
--
2.33.1
From 056879bcaeaf09a74130e23895204d8478af92b4 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Tue, 9 Nov 2021 22:34:39 +0100
Subject: [PATCH 4/9] gnu: Add libglibutil.
* gnu/packages/glib.scm (libglibutil): New variable.
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 1bd1d6c138..64bcaf7ded 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Arthur Margerit <ruhtra.mar@gmail.com>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -75,6 +76,7 @@ (define-module (gnu packages glib)
#:use-module (guix build-system perl)
#: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)
@@ -825,6 +827,50 @@ (define-public glibmm-2.64
(modify-inputs (package-propagated-inputs glibmm)
(prepend libsigc++-2)))))
+(define-public libglibutil
+ (package
+ (name "libglibutil")
+ (version "1.0.55")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.sailfishos.org/mer-core/libglibutil")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0zrxccpyfz4jf14zr6fj9b88p340s66lw5cnqkapfa72kl1rnp4q"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
+ (string-append "DESTDIR=" %output))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'remove-usr-prefix
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "libglibutil.pc.in"
+ (("/usr/include") (string-append (assoc-ref outputs "out") "/include")))
+ (substitute* "Makefile"
+ (("usr/") ""))))
+ (add-after 'install 'install-dev
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (invoke "make" "install-dev" (string-append "DESTDIR="
+ (assoc-ref outputs "out")))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (chdir "test")
+ (invoke "make" (string-append "CC=" ,(cc-for-target)))
+ (chdir "..") #t))))))
+ (native-inputs (list pkg-config))
+ (inputs (list glib))
+ (home-page "https://git.sailfishos.org/mer-core/libglibutil")
+ (synopsis "GLib utilites")
+ (description "This package provides library of glib utilities.")
+ (license license:bsd-3)))
+
(define-public python2-pygobject-2
(package
(name "python2-pygobject")
--
2.33.1
From 776e7e4a5752a285202b5de3fdd940ba9cb00d31 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Tue, 9 Nov 2021 22:41:30 +0100
Subject: [PATCH 5/9] gnu: Add libgbinder.
* gnu/packages/glib.scm (libgbinder): New variable.
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 64bcaf7ded..325b8fb05d 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -827,6 +827,59 @@ (define-public glibmm-2.64
(modify-inputs (package-propagated-inputs glibmm)
(prepend libsigc++-2)))))
+(define-public libgbinder
+ (package
+ (name "libgbinder")
+ (version "1.1.14")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mer-hybris/libgbinder")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0vrp1yxg55fhzkq3d40kxqpfxflbikg2f4h6cmqsf4jskrp4b1ar"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
+ (string-append "DESTDIR="
+ (assoc-ref %outputs
+ "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'fix-pkg-config-in
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "Makefile"
+ (("usr/") ""))
+ (substitute* "libgbinder.pc.in"
+ (("@libdir@") (string-append (assoc-ref outputs "out") "/lib"))
+ (("/usr/include") (string-append (assoc-ref outputs "out") "/include")))))
+ (add-after 'install 'install-dev
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (invoke "make" "install-dev" (string-append "DESTDIR="
+ (assoc-ref outputs "out")))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (chdir "test")
+ (invoke "make" (string-append "CC=" ,(cc-for-target)))
+ (chdir "..") #t))))))
+ (native-inputs (list bison flex pkg-config))
+ (inputs (list glib libglibutil))
+ (home-page "https://github.com/mer-hybris/libgbinder")
+ (synopsis "GLib-style interface to binder")
+ (description "This package provides GLib-style interface to binder:
+@enumerate
+@item Integration with GLib event loop
+@item Detection of 32 vs 64 bit kernel at runtime
+@item Asynchronous transactions that don't block the event thread
+@item Stable service manager and low-level transation APIs
+@end enumerate")
+ (license license:bsd-3)))
+
(define-public libglibutil
(package
(name "libglibutil")
--
2.33.1
From f5dd1ca403dbd5aaaf777698aa7eaf5a8ddae6eb Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Wed, 10 Nov 2021 01:25:52 +0100
Subject: [PATCH 6/9] gnu: Add python-gbinder.
* gnu/packages/glib.scm (python-gbinder): New variable.
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 325b8fb05d..5ebba1131d 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -924,6 +924,34 @@ (define-public libglibutil
(description "This package provides library of glib utilities.")
(license license:bsd-3)))
+(define-public python-gbinder
+ (package
+ (name "python-gbinder")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/erfanoabdi/gbinder-python")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0jgblzakjgsy0cj93bmh5gr7qnl2xgsrm0wzc6xjvzry9lrbs360"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key use-setuptools? #:allow-other-keys)
+ (invoke "python" "setup.py" "build_ext" "--inplace" "--cython"))))))
+ (native-inputs (list pkg-config python-cython))
+ (inputs (list glib libgbinder libglibutil))
+ (home-page "https://github.com/erfanoabdi/gbinder-python")
+ (synopsis "Python bindings for libgbinder")
+ (description "This package provides Python bindings for libgbinder.")
+ (license license:gpl3+)))
+
(define-public python2-pygobject-2
(package
(name "python2-pygobject")
--
2.33.1
From 192c092a610d565596632054632fcbb1843006ab Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Fri, 24 Dec 2021 15:38:15 +0100
Subject: [PATCH 7/9] gnu: Add python-pyclip.
* gnu/packages/packages-xyz.scm (python-pyclip): New variable.
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1a1588df8b..cf116989f7 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19870,6 +19870,28 @@ (define-public python-setuptools-git
Git.")
(license license:bsd-3)))
+(define-public python-pyclip
+ (package
+ (name "python-pyclip")
+ (version "0.5.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/spyoungtech/pyclip")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "19ff9cgnfx03mbmy5zpbdi986ppx38a5jf97vkqnic4g5sd1qyrn"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; failing test
+ (native-inputs (list python-pytest))
+ (home-page "https://github.com/spyoungtech/pyclip")
+ (synopsis "Clipboard utilities supporting both binary and text data.")
+ (description "This package provides clipboard utilities supporting both
+binary and text data.")
+ (license license:asl2.0)))
+
(define-public python-pyclipper
(package
(name "python-pyclipper")
--
2.33.1
From aef82a68a013c2fa0ff519f2579321650230e107 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Wed, 10 Nov 2021 02:21:08 +0100
Subject: [PATCH 8/9] gnu: Add waydroid.
* gnu/packages/virtualization.scm (waydroid): New variable.
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 839b12d040..3ae0dbd1cf 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1977,6 +1977,91 @@ (define-public bochs
DOS or Microsoft Windows.")
(license license:lgpl2.0+)))
+(define-public waydroid
+ (package
+ (name "waydroid")
+ (version "1.2.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/waydroid/waydroid")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "03d87sh443kn0j2mpih1g909khkx3wgb04h605f9jhd0znskkbmw"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'build) ; no setup.py
+ (delete 'check) ; no test suite
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib/waydroid"))
+ (tools (string-append lib "/tools"))
+ (data (string-append lib "/data"))
+ (apps (string-append out "/share/applications"))
+ (bin (string-append out "/bin"))
+ (paths-bin (map
+ (lambda (input)
+ (string-append (assoc-ref inputs input) "/bin"))
+ '("glibc" "iproute2" "iptables" "lxc" "nftables" "which")))
+ (paths-sbin (map
+ (lambda (input)
+ (string-append (assoc-ref inputs input) "/sbin"))
+ '("dnsmasq")))
+ (site (string-append out "/lib/python"
+ ,(version-major+minor
+ (package-version python))
+ "/site-packages")))
+ (mkdir-p tools)
+ (mkdir-p data)
+ (mkdir-p apps)
+ (mkdir-p bin)
+ (copy-recursively "tools" tools)
+ (copy-recursively "data" data)
+ (install-file (string-append data "/Waydroid.desktop")
+ (string-append apps))
+ (substitute* (string-append apps "/Waydroid.desktop")
+ (("/usr") lib))
+ (install-file "waydroid.py" lib)
+ (symlink (string-append lib "/waydroid.py") (string-append bin
+ "/waydroid"))
+ (wrap-program (string-append bin "/waydroid")
+ `("PYTHONPATH" ":" prefix ,paths-bin))
+ (substitute* (string-append out
+ "/lib/waydroid/data/scripts/waydroid-net.sh")
+ (("/misc") ""))
+ (wrap-program (string-append out
+ "/lib/waydroid/data/scripts/waydroid-net.sh")
+ `("PATH" ":" prefix ,(append paths-bin paths-sbin)))))))))
+ (inputs (list bash-minimal
+ dnsmasq
+ glibc
+ iproute
+ iptables
+ libgbinder
+ lxc
+ nftables
+ python
+ python-gbinder
+ python-pygobject
+ python-pyclip
+ which
+ ))
+ (home-page "https://waydro.id")
+ (synopsis "Container-based approach to boot a full Android system")
+ (description "Waydroid uses Linux namespaces @code{(user, pid, uts, net,
+mount, ipc)} to run a full Android system in a container and provide Android
+applications. The Android inside the container has direct access to needed
+underlying hardware. The Android runtime environment ships with a minimal
+customized Android system image based on LineageOS. The used image is
+currently based on Android 10.")
+ (license license:gpl3)))
+
(define-public xen
(package
(name "xen")
--
2.33.1
From 26376c4ef2a37f476213d284e2b3545b3f696d9d Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Thu, 23 Dec 2021 21:36:21 +0100
Subject: [PATCH 9/9] gnu: Add waydroid-script.
* gnu/packages/virtualization.scm (waydroid-script): New variable.
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 3ae0dbd1cf..cb5a9710f5 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1977,6 +1977,38 @@ (define-public bochs
DOS or Microsoft Windows.")
(license license:lgpl2.0+)))
+(define-public waydroid-script
+ (let ((commit "59f68fe0cc9b4bb014bd00f48a15b2e40410c1aa")
+ (revision "1"))
+ (package
+ (name "waydroid-script")
+ (version (git-version "0.1-pre" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/casualsnek/waydroid_script")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1d51hp2b16xpsn0185mfl5p0n17dcb3gfw8jbhq5mm72xb1az1iq"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (install-file "waydroid_extras.py"
+ (string-append (assoc-ref outputs "out") "/bin"))))
+ (delete 'check))))
+ (inputs (list lzip python-requests python-tqdm))
+ (home-page "https://github.com/casualsnek/waydroid_script")
+ (synopsis "Add OpenGapps, Magisk and more to waydroid")
+ (description "This package adds OpenGapps, Magisk, libhoudini
+translation library and libndk translation library to waydroid.")
+ (license license:gpl3+))))
+
(define-public waydroid
(package
(name "waydroid")
--
2.33.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment