Home Assistant On NixOS With Docker

The Home Assistant Docker container requires some extra options for network access and USB access. The USB access is especially important if you have a hub of some sort plugged into the USB port of your server that connects to all of your devices. It took me a while to figure out how to set all of this up on NixOS, so hopefully this is helpful.

This is the contents of my /etc/nixos/containers/homeassistant.nix file.

{ config, pkgs, ... }:

{
  # Home Assistant
  virtualisation.oci-containers.containers."homeassistant" = {
	autoStart = true;
	image = "ghcr.io/home-assistant/home-assistant:stable";
	volumes = [
	  "/home/ricky/HomeAssistant:/config"
	  "/etc/localtime:/etc/localtime:ro"
	];
	extraOptions = [
	  "--device=/dev/ttyUSB0"
	  "--network=host"
	  "--privileged"
	];
  };`	
}

Since that's in its own .nix file, we need to add it to the imports section of the /etc/nixos/configuration.nix, like so:

imports = [
  ./hardware-configuration.nix
  # Docker containers
  ./containers/homeassistant.nix
];

That's it! Run sudo nixos-rebuild switch and, once it downloads and starts, you should have a running Home Assistant instance on your NixOS box! Just got to http://[server_ip]:8123 to access the setup page.

My YouTube Channel

<< Articles