{ description = "Elixir system monitor daemon"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, }: flake-utils.lib.eachDefaultSystem ( system: let pkgs = import nixpkgs { system = system; config.allowUnfree = true; }; in { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ # Elixir/Erlang for server elixir erlang # AI/Development tools claude-code aider-chat # Node.js tools nodejs_20 yarn deno # Python for Home Assistant integration python311 python311Packages.pip python311Packages.ipython python311Packages.pytest python311Packages.black python311Packages.isort python311Packages.flake8 python311Packages.mypy # Home Assistant for development home-assistant ]; shellHook = '' echo "Systant development environment loaded" echo "Elixir: $(elixir --version | head -1)" echo "Python: $(python --version)" echo "Home Assistant: $(hass --version)" echo "" echo "Available tools: pytest, black, isort, flake8, mypy" echo "" echo "Directories:" echo " server/ - Elixir systant daemon" echo " home-assistant-integration/ - Home Assistant custom integration" echo " dev-config/ - Home Assistant development configuration" echo "" echo "Commands:" echo " hass --config ./dev-config - Start HA dev instance (uses mqtt.home)" ''; }; packages = { default = pkgs.callPackage ./nix/package.nix { src = ./server; }; systant = pkgs.callPackage ./nix/package.nix { src = ./server; }; }; apps = { default = { type = "app"; program = "${self.packages.${system}.default}/bin/systant"; }; }; } ) // { nixosModules.default = import ./nix/nixos-module.nix; }; }