Hi,
I'd love to add Home assistant to Guix to liberate our homes :-D
However, it has one nasty problem. There's one Python module 'orjson' which depends on rust package [1]. Since it would mean to add a lot of Rust packages I'd like to ask for help if there isn't a better way to build the package 'orjson'? [2]
FIY Marius I saw you patch set where you mentioned module 'orjson' as test dependency [3]
Just out of curiosity have you been able to package the Home assistant? [4]
$ /gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/bin/hass
Traceback (most recent call last):
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/bin/.hass-real", line 5, in <module>
sys.exit (mod.main ())
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/lib/python3.9/site-packages/homeassistant/__main__.py", line 169, in main
args = get_arguments()
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/lib/python3.9/site-packages/homeassistant/__main__.py", line 69, in get_arguments
from . import config as config_util
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/lib/python3.9/site-packages/homeassistant/config.py", line 20, in <module>
from . import auth
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/lib/python3.9/site-packages/homeassistant/auth/__init__.py", line 12, in <module>
from homeassistant import data_entry_flow
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/lib/python3.9/site-packages/homeassistant/data_entry_flow.py", line 16, in <module>
from .core import HomeAssistant, callback
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/lib/python3.9/site-packages/homeassistant/core.py", line 46, in <module>
from . import block_async_io, loader, util
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/lib/python3.9/site-packages/homeassistant/loader.py", line 34, in <module>
from .helpers.json import JSON_DECODE_EXCEPTIONS, json_loads
File "/gnu/store/8dgdzxj7vvawbd77q405fbjm4rnjdxld-homeassistant-2022.12.8/lib/python3.9/site-packages/homeassistant/helpers/json.py", line 7, in <module>
import orjsonModuleNotFoundError: No module named 'orjson'
2 https://github.com/ijl/orjson/blob/master/pyproject.toml3https://issues.guix.gnu.org/58587
----
Petr
From ca6bdd2758e02c239e2c31a64997b8022f7c43bf Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 16:56:06 +0100
Subject: [PATCH 02/11] gnu: Add python-lru-dict.
* gnu/packages/python-xyz.scm (python-lru-dict): New variable.
Toggle diff (31 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3ea2763b49..b1b0bb46fb 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -5704,6 +5704,24 @@ (define-public python-feedgenerator
which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
(license license:bsd-3)))
+(define-public python-lru-dict
+ (package
+ (name "python-lru-dict")
+ (version "1.1.8")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "lru-dict" version))
+ (sha256
+ (base32
+ "059i1c6yw02dwfynl4602jwfhhfvhm2wzhfzafwwzrbk83pwi2w7"))))
+ (build-system python-build-system)
+ (native-inputs (list python-pytest))
+ (home-page "https://github.com/amitdev/lru-dict")
+ (synopsis "Fixed size dict like container")
+ (description "This package provides fixed size dict like container which
+evicts Least Recently Used (LRU) items once size limit is exceeded.")
+ (license license:expat)))
+
(define-public python-lsp-jsonrpc
(package
(name "python-lsp-jsonrpc")
--
2.38.1
From 65217ed1fb1d4cf3667a6ce1ca270504dc7fa585 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 17:04:43 +0100
Subject: [PATCH 11/11] ! gnu: Add homeassistant.
* gnu/packages/engineering.scm (homeassistant): New variable.
Toggle diff (92 lines)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index ee224ad173..ab225f398f 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -69,9 +69,11 @@ (define-module (gnu packages engineering)
#:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (guix build-system python)
+ #:use-module (guix build-system pyproject)
#:use-module (guix build-system qt)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
+ #:use-module (gnu packages astronomy)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
@@ -130,6 +132,7 @@ (define-module (gnu packages engineering)
#:use-module (gnu packages pretty-print)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-build)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-science)
@@ -146,6 +149,7 @@ (define-module (gnu packages engineering)
#:use-module (gnu packages tcl)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages text-editors)
+ #:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (gnu packages tex)
#:use-module (gnu packages version-control)
@@ -1440,6 +1444,57 @@ (define-public harminv
determines the frequencies, decay constants, amplitudes, and phases of those sinusoids.")
(license license:gpl2+)))
+(define-public homeassistant
+ (package
+ (name "homeassistant")
+ (version "2022.12.8")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/home-assistant/core")
+ (commit version)))
+ (sha256
+ (base32
+ "0cjw73i2ix6zpy6bagwbasyfphllqsq8hmzxkldh75hbh78h1750"))))
+ (build-system pyproject-build-system)
+ ;; TODO: Remove once python-orjson is packaged
+ (arguments
+ (list #:tests? #f ;missing orjson
+ #:phases #~(modify-phases %standard-phases
+ (delete 'sanity-check))))
+ (native-inputs (list python-pytest-socket python-requests-mock python-pip))
+ (propagated-inputs (list python-aiohttp
+ python-astral
+ python-async-timeout
+ python-atomicwrites
+ python-attrs
+ python-awesomeversion
+ python-bcrypt
+ python-certifi
+ python-ciso8601
+ python-cryptography
+ python-home-assistant-bluetooth
+ python-httpx
+ python-ifaddr
+ python-jinja2
+ python-lru-dict
+ python-freezegun
+ ;; python-orjson
+ python-pyjwt
+ python-pyyaml
+ python-requests
+ python-slugify-4
+ python-typing-extensions
+ python-voluptuous
+ python-voluptuous-serialize
+ python-yarl))
+ (home-page "https://www.home-assistant.io/")
+ (synopsis "home automation platform")
+ (description
+ "This package provides home automation that puts local control
+and privacy first.")
+ (license license:asl2.0)))
+
(define-public guile-libctl
(package
(name "guile-libctl")
--
2.38.1
From 65e2961c4af21ffac88871ce1d9a4c0944ce7b18 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 16:56:44 +0100
Subject: [PATCH 03/11] gnu: Add python-awesomeversion.
* gnu/pacakges/python-xyz.scm (python-awesomeversion): New variable.
Toggle diff (30 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index b1b0bb46fb..3baa1b0b01 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -9464,6 +9464,23 @@ (define-public python-asttokens
for automated refactoring or highlighting.")
(license license:asl2.0)))
+(define-public python-awesomeversion
+ (package
+ (name "python-awesomeversion")
+ (version "22.9.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "awesomeversion" version))
+ (sha256
+ (base32
+ "0zkzl6kpl19rp98rszm63pqzb5imvc6iamp1ljr107p86g9r0h9g"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/ludeeus/awesomeversion")
+ (synopsis "Version parsing and comparison")
+ (description "This package provides semantic version parsing and
+comparison.")
+ (license license:expat)))
+
(define-public python-littleutils
(package
(name "python-littleutils")
--
2.38.1
From 341ab116cd6a697583a4a47e391d771c81439a90 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 17:02:03 +0100
Subject: [PATCH 08/11] gnu: Add python-yarl: Update to 1.8.1.
* gnu/packages/python-web.scm (python-yarl): Update to 1.8.1.
Toggle diff (23 lines)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 15f22925f6..922be35c68 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -4685,14 +4685,14 @@ (define-public python-pycares
(define-public python-yarl
(package
(name "python-yarl")
- (version "1.6.3")
+ (version "1.8.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "yarl" version))
(sha256
(base32
- "045z4ssg8g5h0qhz8hnx74hswgkndaldqq1xi5l1n5s0j996d44a"))
+ "1gxba93lyccxv0zkfy8kfrxananxyav75zq5avmn1q62p12pi25g"))
(modules '((guix build utils)))
(snippet
#~(begin
--
2.38.1
From 9d91f8ecb760e115a77e6de2f552900aee4820ec Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 17:00:11 +0100
Subject: [PATCH 06/11] gnu: python-voluptuous: Update to 0.13.1.
* gnu/packages/python-xyz.scm (python-voluptuous): Update 0.13.1.
Toggle diff (23 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 5bf30c0184..be971d3bc1 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -27119,14 +27119,14 @@ (define-public python-osc
(define-public python-voluptuous
(package
(name "python-voluptuous")
- (version "0.11.7")
+ (version "0.13.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "voluptuous" version))
(sha256
(base32
- "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a"))))
+ "08wp91dn1ibsmjd0660hpldq5ii9xqmg9h6l2k5p6rqxc0h1rlz8"))))
(build-system python-build-system)
(native-inputs
(list python-nose))
--
2.38.1
From 2dc08ab845aef62453e2a5afa0975e64ee8d8e87 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 16:58:53 +0100
Subject: [PATCH 05/11] gnu: python-typing-extensions-next: Update to 4.4.0.
* gnu/packages/python-xyz.scm (python-typing-extensions-next): Update to
4.4.0.
[arguments]: Remove phase 'enter-source-directory.
Toggle diff (28 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 32e37b4eed..5bf30c0184 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -22510,7 +22510,7 @@ (define-public python-typing-extensions-next
(package
(inherit python-typing-extensions)
(name "python-typing-extensions")
- (version "4.2.0")
+ (version "4.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -22519,7 +22519,11 @@ (define-public python-typing-extensions-next
(file-name (git-file-name name version))
(sha256
(base32
- "1bbry1rg7q5ppkgzdk4nwl7q1w8bbhajm4q68wb9dm6rf7hg1023"))))))
+ "1al7634rq9zqw1s7d1nbry0l23c05s0wrc8jihcxvy1bp55l648m"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments python-typing-extensions)
+ ((#:phases phases)
+ (delete 'enter-source-directory))))))
(define-public bpython
(package
--
2.38.1
From fbf092a0023c1dd7b570d41e254420cb2e048d10 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 16:57:17 +0100
Subject: [PATCH 04/11] gnu: Add python-dbus-fast.
* gnu/packages/python-xyz.scm (python-dbus-fast): New variable.
Toggle diff (30 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3baa1b0b01..32e37b4eed 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -9912,6 +9912,23 @@ (define-public python-dbus-next
mobile environments.")
(license license:expat)))
+(define-public python-dbus-fast
+ (package
+ (name "python-dbus-fast")
+ (version "1.83.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "dbus_fast" version))
+ (sha256
+ (base32
+ "0cwdxs3sj4czcjy1x1yjxwacacxjdfqc1jpc034crcrhbpp9n9ij"))))
+ (build-system python-build-system)
+ (propagated-inputs (list python-async-timeout))
+ (home-page "https://github.com/bluetooth-devices/dbus-fast")
+ (synopsis "Faster version of dbus-next")
+ (description "This package provides a faster version of dbus-next")
+ (license license:expat)))
+
(define-public python-notify2
(package
(name "python-notify2")
--
2.38.1
From 62dbbb1af6b2817d1c5c1fbbcec441a6376121ec Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 16:46:09 +0100
Subject: [PATCH 01/11] gnu: Add python-slugify-4.
* gnu/package/python-web.scm (python-slugify-4): New variable.
Toggle diff (25 lines)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 18c0b47b67..15f22925f6 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -5060,6 +5060,18 @@ (define-public python-slugify
library to create slugs from unicode strings while keeping it DRY.")
(license license:expat)))
+(define-public python-slugify-4
+ (package
+ (inherit python-slugify)
+ (name "python-slugify")
+ (version "4.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "python-slugify" version))
+ (sha256
+ (base32
+ "0w22fapghmzk3xdasc4dn7h8sl58l08d1h5zbf72dh80drv1g9b9"))))))
+
(define-public python-branca
(package
(name "python-branca")
--
2.38.1
From 0c9a3d85178c14cfa1aa9e3c85ce1968bafb4829 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 17:02:48 +0100
Subject: [PATCH 09/11] gnu: Add python-bleak.
* gnu/packages/python-xyz.scm (python-bleak): New variable.
Toggle diff (35 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 655724d95a..bb734ee6ea 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -13789,6 +13789,28 @@ (define-public python-bleach
(description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
(license license:asl2.0)))
+(define-public python-bleak
+ (package
+ (name "python-bleak")
+ (version "0.19.5")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "bleak" version))
+ (sha256
+ (base32
+ "126dwfd9w4aflwxz5lxw6h2q0miigd548df7668c2n1w8nb5m147"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:tests? #f))
+ (propagated-inputs (list python-async-timeout
+ python-dbus-fast
+ python-typing-extensions))
+ (home-page "https://github.com/hbldh/bleak")
+ (synopsis "Bluetooth Low Energy platform Agnostic Klient")
+ (description "This package provides GATT client software using
+asyncio.")
+ (license license:expat)))
+
(define-public python-entrypoints
(package
(name "python-entrypoints")
--
2.38.1
From bff394cbce48b9e59b72b5b4c2bfefd2ede2d595 Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 17:01:13 +0100
Subject: [PATCH 07/11] gnu: Add python-voluptuous-serialize.
* gnu/packages/python-xyz.scm (python-voluptuous-serialize): New variable.
[native-inputs]: Use python-pytest instead of python-nose.
Toggle diff (40 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index be971d3bc1..655724d95a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -27129,7 +27129,7 @@ (define-public python-voluptuous
"08wp91dn1ibsmjd0660hpldq5ii9xqmg9h6l2k5p6rqxc0h1rlz8"))))
(build-system python-build-system)
(native-inputs
- (list python-nose))
+ (list python-pytest))
(home-page "https://github.com/alecthomas/voluptuous")
(synopsis "Python data validation library")
(description
@@ -27137,6 +27137,24 @@ (define-public python-voluptuous
intended for validating data coming into Python as JSON, YAML, etc.")
(license license:bsd-3)))
+(define-public python-voluptuous-serialize
+ (package
+ (name "python-voluptuous-serialize")
+ (version "2.5.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "voluptuous-serialize" version))
+ (sha256
+ (base32
+ "0ys43byjwhsmzjj9q2dgn8k94p3my2s7f1vf0q1swwprlkhg4nak"))))
+ (build-system python-build-system)
+ (propagated-inputs (list python-voluptuous))
+ (home-page "https://github.com/home-assistant-libs/voluptuous-serialize")
+ (synopsis "Convert voluptuous schemas to dictionaries")
+ (description "This package provides library for converting
+voluptuous schemas to dictionaries")
+ (license license:asl2.0)))
+
(define-public python-cmd2
(package
(name "python-cmd2")
--
2.38.1
From 8859d65e8236009ebe605ab8089958ae2c1ef35a Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Sun, 25 Dec 2022 17:04:06 +0100
Subject: [PATCH 10/11] gnu: Add python-home-assistant-bluetooth.
* gnu/packages/python-xyz.scm (python-home-assistant-bluetooth): New
variable.
Toggle diff (32 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index bb734ee6ea..c4eb7aaba6 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -8479,6 +8479,25 @@ (define-public python-gridmap
cluster without needing to write any wrapper code yourself.")
(license license:gpl3+)))
+(define-public python-home-assistant-bluetooth
+ (package
+ (name "python-home-assistant-bluetooth")
+ (version "1.9.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "home_assistant_bluetooth" version))
+ (sha256
+ (base32
+ "0jcb7l8pn30dsh3rhkcmd5h9b7r7igpqi4kk9wz0lzlqi0568a45"))))
+ (build-system python-build-system)
+ (propagated-inputs (list python-bleak))
+ (home-page
+ "https://github.com/home-assistant-libs/home-assistant-bluetooth")
+ (synopsis "Home Assistant Bluetooth Models and Helpers")
+ (description "This package provides helpers for accessing Home
+Assistant Bluetooth models.")
+ (license license:asl2.0)))
+
(define-public python-honcho
(package
(name "python-honcho")
--
2.38.1