snapcraft.yaml 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. name: home-assistant-snap
  2. title: Home assistant
  3. version: '2021.11.1'
  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 change localhost to any other IP address where the snap packages is installed). You will get a launcher available in your application menu on desktops.
  15. **Important information about updates**
  16. Since each major versions of Home Assistant might bring breaking changes, 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` from `false` 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 from the community.
  28. **Necessary plugs**
  29. Can't connect to your USB (e.g Zigbee, Z-wave, removable drive)?
  30. See `snap connections home-assistant-snap` for necessary plugs (such as access to USB, removable media etc) and connect them with
  31. `$ snap connect home-assistant-snap:<plug>`
  32. where `<plug>` can be in example `raw-usb`.
  33. **Required plugs**
  34. - *network:* allows Home Assistant access to the network.
  35. - *network-bind:* allows operating as a network service, to run the Home Assistant server.
  36. - *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`.
  37. **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/
  38. **Optional plugs**
  39. - *raw-usb:* allows access to all connected USB devices via a raw interface.
  40. - *removable-media*: allows read/write access to mounted removable storage in /media, /run/media and /mnt.
  41. - *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`.
  42. **Available slots**
  43. - *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.
  44. - *bin:* Missing binaries might be in the Home Assistant Toolbox, such as cURL etc. See https://snapcraft.io/home-assistant-toolbox
  45. - *configurations:* Edit your configuration files with `code-server` (VS Code) or HASS configurator:
  46. - https://snapcraft.io/code-server
  47. - https://snapcraft.io/home-assistant-configurator.
  48. # source-code: "https://github.com/home-assistant-snap/home-assistant-snap"
  49. # website: "https://github.com/home-assistant-snap/home-assistant-snap"
  50. # issues: "https://github.com/home-assistant-snap/home-assistant-snap/issues"
  51. # donation: "https://www.paypal.com/donate/?hosted_button_id=69NA8SXXFBDBN"
  52. license: Apache-2.0
  53. base: core20
  54. grade: stable
  55. confinement: strict
  56. architectures:
  57. - build-on: amd64
  58. - build-on: arm64
  59. - build-on: armhf
  60. - build-on: ppc64el
  61. layout:
  62. /usr/local/lib:
  63. bind: $SNAP/usr/lib/${SNAPCRAFT_ARCH_TRIPLET}
  64. /etc/pip.conf:
  65. bind-file: $SNAP_COMMON/pip.conf
  66. /etc/openzwave:
  67. bind: $SNAP/openzwave
  68. /etc/ethertypes:
  69. bind-file: $SNAP/etc/ethertypes
  70. /etc/protocols:
  71. bind-file: $SNAP/etc/protocols
  72. /etc/services:
  73. bind-file: $SNAP/etc/services
  74. plugs:
  75. bin:
  76. interface: content
  77. content: executables
  78. target: $SNAP/shared-bin
  79. slots:
  80. components:
  81. interface: content
  82. content: components
  83. write:
  84. - $SNAP_DATA/custom_components
  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. - raw-usb
  109. - serial-port
  110. - physical-memory-control
  111. - removable-media
  112. slots:
  113. - components
  114. open-localhost:
  115. command: bin/open-localhost
  116. plugs:
  117. - desktop
  118. check-config:
  119. plugs:
  120. - network
  121. environment:
  122. PIP_USER: 1
  123. command: bin/hass --script check_config --config $SNAP_DATA -i
  124. # package-repositories:
  125. # - type: apt
  126. # ppa: deadsnakes/ppa
  127. parts:
  128. python:
  129. plugin: dump
  130. source: ./src/nil
  131. stage-packages:
  132. - python3.9-venv
  133. homeassistant:
  134. after: [python]
  135. plugin: python #-wot-plugin
  136. source: https://github.com/home-assistant/core.git
  137. source-tag: ${SNAPCRAFT_PROJECT_VERSION}
  138. build-environment:
  139. - SNAPCRAFT_PYTHON_INTERPRETER: python3.9
  140. # - SNAPCRAFT_PYTHON_VENV_ARGS: --without-pip
  141. python-packages:
  142. - setuptools<58
  143. - wheel
  144. - Cython
  145. - pip
  146. build-packages:
  147. - autoconf
  148. - build-essential
  149. - cmake
  150. - cython3
  151. - ffmpeg
  152. - libavcodec-dev
  153. - libavdevice-dev
  154. - libavfilter-dev
  155. - libavformat-dev
  156. - libavresample-dev
  157. - libavutil-dev
  158. - libcrypt-dev
  159. - libffi-dev
  160. - libglib2.0-dev
  161. - libglu1-mesa-dev
  162. - libgpiod-dev
  163. - libjpeg-dev
  164. - libopenzwave1.5-dev
  165. - libpcap0.8-dev
  166. - libswresample-dev
  167. - libssl-dev
  168. - libswscale-dev
  169. - libudev-dev
  170. - libxml2-dev
  171. - libxslt1-dev
  172. - pkg-config
  173. - python3-pip
  174. - python3.9-dev
  175. # - python3.9-venv
  176. - zlib1g-dev
  177. - on armhf:
  178. - rustc
  179. - cargo
  180. - make
  181. - gcc
  182. - dpkg-dev
  183. - on ppc64el:
  184. - rustc
  185. - cargo
  186. stage-packages:
  187. - freeglut3
  188. - ffmpeg
  189. - libglu1-mesa
  190. - libpcap0.8
  191. - libpcap0.8-dev
  192. - libpulse0
  193. - libturbojpeg
  194. - netbase
  195. - tcpdump
  196. - zlib1g
  197. # - python3.9-venv
  198. stage:
  199. - -lib/python3.9/site-packages/homeassistant/components/updater
  200. - -lib/python3.9/site-packages/aiogithubapi*
  201. requirements:
  202. - requirements_all.txt
  203. constraints:
  204. - homeassistant/package_constraints.txt
  205. # override-build: |
  206. # rm -rf $SNAPCRAFT_PART_INSTALL/usr/lib/python3.9/distutils
  207. # mkdir -p $SNAPCRAFT_PART_INSTALL/usr/lib/python3.9
  208. # cp -rf /usr/lib/python3.9/distutils $SNAPCRAFT_PART_INSTALL/usr/lib/python3.9/distutils
  209. # mkdir -p $SNAPCRAFT_PART_INSTALL/usr/include/
  210. # cp -rf /usr/include/python3.9 $SNAPCRAFT_PART_INSTALL/usr/include/python3.9
  211. # snapcraftctl build
  212. # sed -i 's/include-system-site-packages = false/include-system-site-packages = true/g' $SNAPCRAFT_PART_INSTALL/pyvenv.cfg
  213. updater:
  214. after: [homeassistant]
  215. plugin: dump
  216. source: ./src/components
  217. source-type: local
  218. organize:
  219. '*': lib/python3.9/site-packages/homeassistant/components/
  220. bins:
  221. plugin: dump
  222. source: ./src/bin
  223. source-type: local
  224. organize:
  225. open-localhost: bin/open-localhost
  226. hooks:
  227. plugin: dump
  228. source: ./src/hooks
  229. source-type: local
  230. stage-packages:
  231. - uuid
  232. organize:
  233. install: snap/hooks/install
  234. configure: snap/hooks/configure
  235. post-refresh: snap/hooks/post-refresh
  236. connect-plug-bin: snap/hooks/connect-plug-bin
  237. config:
  238. plugin: dump
  239. source: ./src/config
  240. source-type: local
  241. organize:
  242. plug-bin: bin/plug-bin