{ inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.flake-parts.flakeModules.easyOverlay ]; systems = [ "x86_64-linux" "aarch64-linux" ]; perSystem = { self', system, lib, config, pkgs, ... }: { overlayAttrs = { inherit (config.packages) ha-mqtt-agent; }; packages.ha-mqtt-agent = pkgs.python3Packages.buildPythonApplication { pname = "ha-mqtt-agent"; version = "0.3.12"; src = ./.; build-system = with pkgs.python3Packages; [ setuptools ]; pythonImportsCheck = [ "ha_mqtt_agent" ]; propagatedBuildInputs = with pkgs.python3Packages; [ pkgs.wirelesstools pkgs.xorg.xset aiofiles coloredlogs configargparse evdev ha-mqtt-discoverable psutil ]; }; checks = let fmt-check = pkgs.stdenvNoCC.mkDerivation { name = "nixfmt-check"; src = ./.; nativeBuildInputs = with pkgs; [ black treefmt ]; doCheck = true; dontBuild = true; checkPhase = '' treefmt --no-cache --on-unmatched info --fail-on-change ''; installPhase = '' mkdir "$out" ''; }; in { inherit fmt-check; }; devShells.default = pkgs.mkShell { name = "development shell"; nativeBuildInputs = with pkgs.python3Packages; [ pkgs.black pkgs.treefmt pkgs.wirelesstools pkgs.xorg.xset aiofiles coloredlogs configargparse evdev ha-mqtt-discoverable psutil ]; }; }; } // {nixosModules.default = ./module.nix;}; }