snapcraft.yaml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. name: home-assistant-snap
  2. title: Home assistant
  3. version: '2022.4.7'
  4. icon: snap/gui/home-assistant-snap.svg
  5. summary: Open source home automation that puts local control and privacy first
  6. description: |
  7. Home Assistant is a free and open-source software for home automation that is designed to be the central control system for smart home devices with focus on local control and privacy.
  8. It can be accessed via a web-based user interface, via companion apps for Android and iOS, or using voice commands via a supported virtual assistant like Google Assistant or Amazon Alexa.
  9. Home Assistant integrates with over a thousand different devices and services.
  10. Read more about Home Assistant at
  11. - https://en.wikipedia.org/wiki/Home_Assistant
  12. - https://www.home-assistant.io/
  13. **NOTE!** This is Home Assistant Core (not Supervised).
  14. Your new installation will be available through your browser at http://localhost:8123/ (or any other IP address where this packages is installed). You will get a launcher available in your application menu on desktops.
  15. **Important information about updates**
  16. Each major versions of Home Assistant might bring breaking changes so you will **only** auto-update for minor releases. Each major release must be upgraded manually by switching channel.
  17. See available channels in the software center or with
  18. `snap info home-assistant-snap`
  19. Please use the stable versions, e.g `2021.8/stable`.
  20. You can switch channel with:
  21. ```
  22. $ snap switch home-assistant-snap --channel=<channel>
  23. ```
  24. where `<channel>` could be `2021.8/stable`.
  25. There is a binary sensor `binary_sensor.updater` that will flip to `true` whenever there are updates available in a newer channel. Use this to show a notification whenever a new major release is available.
  26. **Need help?**
  27. Please use https://www.home-assistant.io/docs/ for documentation and https://community.home-assistant.io for help.
  28. **Necessary plugs**
  29. See `snap connections home-assistant-snap` for necessary plugs (such as access to USB, removable media etc) and connect them with
  30. `$ snap connect home-assistant-snap:<plug>`
  31. where `<plug>` can be in example `raw-usb` (needed for Zigbee, Z-wave and other USB dongles).
  32. **Required plugs**
  33. - *network-control:* enables the configuration of networking and network namespaces via `ip netns`, providing a wide, privileged access to networking. This is required for the DHCP discovery integration to work which will watch the network for DHCP requests for supported devices and services. To disable this feature you will have to disable the `default_config` from you `configuration.yaml` and disconnect the `network-control` plug with `snap disconnect home-assistant-snap:network-control`.
  34. **NOTE!** Removing the `default_config` will require you to build up a whole new configuration for Home Assistant. More on what is enabled by default at this link: https://www.home-assistant.io/integrations/default_config/
  35. **Optional plugs**
  36. - *raw-usb:* allows access to all connected USB devices via a raw interface.
  37. - *removable-media*: allows read/write access to mounted removable storage in /media, /run/media and /mnt.
  38. - *serial-port*: enables access to a specific serial port. This interface is restricted because it provides privileged access to configure serial port hardware. Might require hot-plug support `snap set system experimental.hotplug=true` followed by `systemctl restart snapd`.
  39. - *hardware-observe*: required to use the `usb` discovery component.
  40. **Available slots**
  41. - *components:* Load custom components to Home Assistant. You will find the Home Assistant Community Store package here: https://snapcraft.io/home-assistant-hacs - Installations on own risk and note that provided integrations are not tested or guaranteed to work.
  42. - *bin:* Missing binaries might be in the Home Assistant Toolbox, such as cURL etc. See https://snapcraft.io/home-assistant-toolbox
  43. - *configurations:* Edit your configuration files with `code-server` (VS Code) or HASS configurator:
  44. - https://snapcraft.io/code-server
  45. - https://snapcraft.io/home-assistant-configurator.
  46. # source-code: "https://github.com/home-assistant-snap/home-assistant-snap"
  47. # website: "https://github.com/home-assistant-snap/home-assistant-snap"
  48. # issues: "https://github.com/home-assistant-snap/home-assistant-snap/issues"
  49. # donation: "https://www.paypal.com/donate/?hosted_button_id=69NA8SXXFBDBN"
  50. license: Apache-2.0
  51. base: core20
  52. grade: stable
  53. confinement: strict
  54. architectures:
  55. - build-on: amd64
  56. - build-on: arm64
  57. - build-on: armhf
  58. - build-on: ppc64el
  59. layout:
  60. /usr/local/lib:
  61. bind: $SNAP/usr/lib/${SNAPCRAFT_ARCH_TRIPLET}
  62. /etc/pip.conf:
  63. bind-file: $SNAP_COMMON/pip.conf
  64. /etc/openzwave:
  65. bind: $SNAP/openzwave
  66. /etc/ethertypes:
  67. bind-file: $SNAP/etc/ethertypes
  68. /etc/protocols:
  69. bind-file: $SNAP/etc/protocols
  70. /etc/services:
  71. bind-file: $SNAP/etc/services
  72. plugs:
  73. bin:
  74. interface: content
  75. content: executables
  76. target: $SNAP/shared-bin
  77. slots:
  78. components:
  79. interface: content
  80. content: components
  81. write:
  82. - $SNAP_DATA/custom_components
  83. # read:
  84. # - $SNAP_DATA/home-assistant.log
  85. configurations:
  86. interface: content
  87. write:
  88. - $SNAP_DATA
  89. vscs-content:
  90. interface: content
  91. write:
  92. - $SNAP_DATA
  93. apps:
  94. home-assistant-snap:
  95. command: bin/hass --config $SNAP_DATA
  96. command-chain:
  97. - bin/plug-bin
  98. daemon: simple
  99. environment:
  100. PIP_USER: 1
  101. #PYTHONPATH: "$PYTHONPATH:$SNAP/lib/python3.9/site-packages"
  102. restart-condition: always
  103. plugs:
  104. - bluez
  105. - network
  106. - network-bind
  107. - network-control
  108. - hardware-observe
  109. - raw-usb
  110. - serial-port
  111. - physical-memory-control
  112. - removable-media
  113. slots:
  114. - components
  115. open-localhost:
  116. command: bin/open-localhost
  117. plugs:
  118. - desktop
  119. check-config:
  120. plugs:
  121. - network
  122. environment:
  123. PIP_USER: 1
  124. command: bin/hass --script check_config --config $SNAP_DATA -i
  125. # package-repositories:
  126. # - type: apt
  127. # ppa: deadsnakes/ppa
  128. parts:
  129. python:
  130. plugin: autotools
  131. source: https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tgz
  132. autotools-configure-parameters:
  133. - --enable-optimizations
  134. build-packages:
  135. - build-essential
  136. - gdb
  137. - lcov
  138. - pkg-config
  139. - libbz2-dev
  140. - libffi-dev
  141. - libgdbm-dev
  142. - libgdbm-compat-dev
  143. - liblzma-dev
  144. - libncurses5-dev
  145. - libreadline6-dev
  146. - libsqlite3-dev
  147. - libssl-dev
  148. - lzma
  149. - lzma-dev
  150. - tk-dev
  151. - uuid-dev
  152. - zlib1g-dev
  153. override-stage: |
  154. snapcraftctl stage
  155. [ ! -d "${SNAPCRAFT_STAGE}/bin" ] && mkdir ${SNAPCRAFT_STAGE}/bin
  156. ln -s ../usr/local/bin/python3.9 "${SNAPCRAFT_STAGE}/bin/python3.9"
  157. ln -s ../usr/local/bin/python3.9 "${SNAPCRAFT_STAGE}/usr/bin/python3"
  158. stage-packages:
  159. - libfontconfig1
  160. - libfreetype6
  161. - libgdbm-compat4
  162. - libgdbm6
  163. - libpng16-16
  164. - libtcl8.6
  165. - libtk8.6
  166. - libx11-6
  167. - libxau6
  168. - libxcb1
  169. - libxdmcp6
  170. - libxext6
  171. - libxft2
  172. - libxrender1
  173. - libxss1
  174. - bluetooth
  175. - libbluetooth-dev
  176. homeassistant:
  177. after: [python]
  178. plugin: python-wot-plugin
  179. source: https://github.com/home-assistant/core.git
  180. source-tag: ${SNAPCRAFT_PROJECT_VERSION}
  181. build-environment:
  182. - SNAPCRAFT_PYTHON_INTERPRETER: python3.9
  183. python-packages:
  184. - setuptools #<58
  185. - wheel
  186. - Cython
  187. - pip
  188. - build
  189. build-packages:
  190. - autoconf
  191. - build-essential
  192. - cmake
  193. - cython3
  194. - ffmpeg
  195. - libavcodec-dev
  196. - libavdevice-dev
  197. - libavfilter-dev
  198. - libavformat-dev
  199. - libavresample-dev
  200. - libavutil-dev
  201. - libcrypt-dev
  202. - libffi-dev
  203. - libglib2.0-dev
  204. - libglu1-mesa-dev
  205. - libgpiod-dev
  206. - libjpeg-dev
  207. - libopenzwave1.5-dev
  208. - libpcap0.8-dev
  209. - libswresample-dev
  210. - libssl-dev
  211. - libswscale-dev
  212. - libudev-dev
  213. - libxml2-dev
  214. - libxslt1-dev
  215. - pkg-config
  216. #- python3-pip
  217. - python3.9-dev
  218. - zlib1g-dev
  219. - on arm64:
  220. - cargo
  221. - rustc
  222. - on armhf:
  223. - cargo
  224. - gfortran
  225. - rustc
  226. - on ppc64el:
  227. - cargo
  228. - rustc
  229. stage-packages:
  230. - freeglut3
  231. - ffmpeg
  232. - libglu1-mesa
  233. - libpcap0.8
  234. - libpcap0.8-dev
  235. - libpulse0
  236. - libturbojpeg
  237. - netbase
  238. - tcpdump
  239. - zlib1g
  240. stage:
  241. - -lib/python3.9/site-packages/homeassistant/components/updater
  242. - -lib/python3.9/site-packages/aiogithubapi*
  243. requirements:
  244. - requirements.txt
  245. - requirements_all.txt
  246. constraints:
  247. - homeassistant/package_constraints.txt
  248. override-stage: |
  249. snapcraftctl stage
  250. sed -i 's/include-system-site-packages = false/include-system-site-packages = true/g' $SNAPCRAFT_STAGE/pyvenv.cfg
  251. updater:
  252. after: [homeassistant]
  253. plugin: dump
  254. source: ./src/components
  255. source-type: local
  256. organize:
  257. '*': lib/python3.9/site-packages/homeassistant/components/
  258. bins:
  259. plugin: dump
  260. source: ./src/bin
  261. source-type: local
  262. organize:
  263. open-localhost: bin/open-localhost
  264. hooks:
  265. plugin: dump
  266. source: ./src/hooks
  267. source-type: local
  268. stage-packages:
  269. - uuid
  270. organize:
  271. install: snap/hooks/install
  272. configure: snap/hooks/configure
  273. post-refresh: snap/hooks/post-refresh
  274. connect-plug-bin: snap/hooks/connect-plug-bin
  275. config:
  276. plugin: dump
  277. source: ./src/config
  278. source-type: local
  279. organize:
  280. plug-bin: bin/plug-bin