snapcraft.yaml 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. name: home-assistant-snap
  2. title: Home assistant
  3. version: '2023.5.4'
  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. layout:
  59. /usr/local/lib:
  60. bind: $SNAP/usr/lib/${SNAPCRAFT_ARCH_TRIPLET}
  61. /etc/pip.conf:
  62. bind-file: $SNAP_COMMON/pip.conf
  63. /etc/openzwave:
  64. bind: $SNAP/openzwave
  65. /etc/ethertypes:
  66. bind-file: $SNAP/etc/ethertypes
  67. /etc/protocols:
  68. bind-file: $SNAP/etc/protocols
  69. /etc/services:
  70. bind-file: $SNAP/etc/services
  71. plugs:
  72. bin:
  73. interface: content
  74. content: executables
  75. target: $SNAP/shared-bin
  76. slots:
  77. components:
  78. interface: content
  79. content: components
  80. write:
  81. - $SNAP_DATA/custom_components
  82. configurations:
  83. interface: content
  84. content: configurations
  85. write:
  86. - $SNAP_DATA
  87. vscs-content:
  88. interface: content
  89. content: vscs-content
  90. write:
  91. - $SNAP_DATA
  92. apps:
  93. home-assistant-snap:
  94. command: bin/hass --config $SNAP_DATA
  95. command-chain:
  96. - bin/snapcraft-preload
  97. - bin/plug-bin
  98. daemon: simple
  99. environment:
  100. PIP_USER: 1
  101. PIP_ROOT_USER_ACTION: ignore
  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. PIP_ROOT_USER_ACTION: ignore
  125. command: bin/hass --script check_config --config $SNAP_DATA -i
  126. package-repositories:
  127. - type: apt
  128. ppa: deadsnakes/ppa
  129. parts:
  130. snapcraft-preload:
  131. source: https://github.com/sergiusens/snapcraft-preload.git
  132. plugin: cmake
  133. cmake-parameters:
  134. - -DCMAKE_INSTALL_PREFIX=/
  135. build-packages:
  136. - on amd64:
  137. - gcc-multilib
  138. - g++-multilib
  139. #- lib32stdc++6
  140. homeassistant:
  141. plugin: python-wot-plugin
  142. source: https://github.com/home-assistant/core.git
  143. source-tag: ${SNAPCRAFT_PROJECT_VERSION}
  144. build-environment:
  145. - SNAPCRAFT_PYTHON_INTERPRETER: python3.10
  146. python-packages:
  147. - setuptools #<58
  148. - wheel
  149. - Cython
  150. - pip
  151. - build
  152. build-packages:
  153. - autoconf
  154. - build-essential
  155. - cmake
  156. - cython3
  157. - ffmpeg
  158. - libavcodec-dev
  159. - libavdevice-dev
  160. - libavfilter-dev
  161. - libavformat-dev
  162. - libavresample-dev # Needed?
  163. - libavutil-dev
  164. - libcrypt-dev
  165. - libffi-dev
  166. - libglib2.0-dev
  167. - libglu1-mesa-dev
  168. - libgpiod-dev
  169. - libjpeg-dev
  170. - libpcap0.8-dev
  171. - libswresample-dev
  172. - libssl-dev
  173. - libswscale-dev
  174. - libudev-dev
  175. - libxml2-dev
  176. - libxslt1-dev
  177. - pkg-config
  178. - python3.10-dev
  179. - zlib1g-dev
  180. # - on arm64:
  181. # - cargo
  182. # - rustc
  183. - on armhf:
  184. - gfortran
  185. - libatlas-base-dev
  186. - rustc
  187. # - cargo
  188. # - rustc
  189. # - on ppc64el:
  190. # - cargo
  191. # - rustc
  192. stage-packages:
  193. - freeglut3
  194. - ffmpeg
  195. - libglu1-mesa
  196. - libpcap0.8
  197. - libpcap0.8-dev
  198. - libpulse0
  199. - libturbojpeg
  200. - netbase
  201. - tcpdump
  202. - zlib1g
  203. - python3.10-venv
  204. - nmap
  205. stage:
  206. - -lib/python3.10/site-packages/homeassistant/components/updater
  207. - -lib/python3.10/site-packages/aiogithubapi*
  208. - -lib/python3.10/site-packages/icalendar
  209. requirements:
  210. - requirements.txt
  211. - requirements_all.txt
  212. constraints:
  213. - homeassistant/package_constraints.txt
  214. override-build: |
  215. snapcraftctl build
  216. override-stage: |
  217. snapcraftctl stage
  218. find $SNAPCRAFT_STAGE/bin -type f -executable -exec sed -i 's/!\/usr\/bin\/env python3.10/!\/usr\/bin\/env python3/' {} \;
  219. sed -i 's/include-system-site-packages = false/include-system-site-packages = true/g' $SNAPCRAFT_STAGE/pyvenv.cfg
  220. updater:
  221. after: [homeassistant]
  222. plugin: dump
  223. source: ./src/components
  224. source-type: local
  225. organize:
  226. '*': lib/python3.10/site-packages/homeassistant/components/
  227. bins:
  228. plugin: dump
  229. source: ./src/bin
  230. source-type: local
  231. organize:
  232. open-localhost: bin/open-localhost
  233. hooks:
  234. plugin: dump
  235. source: ./src/hooks
  236. source-type: local
  237. stage-packages:
  238. - uuid
  239. organize:
  240. install: snap/hooks/install
  241. configure: snap/hooks/configure
  242. post-refresh: snap/hooks/post-refresh
  243. connect-plug-bin: snap/hooks/connect-plug-bin
  244. config:
  245. plugin: dump
  246. source: ./src/config
  247. source-type: local
  248. organize:
  249. plug-bin: bin/plug-bin