{ inputs = { darknet = { url = "github:pjreddie/darknet"; flake = false; }; nixpkgs.url = "nixpkgs/nixos-22.11"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, darknet, utils, ... }: utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages."${system}"; pythonYolo = pkgs.python3.withPackages (pyPkgs: with pyPkgs; [ fastapi opencv4 python-multipart ]); in { packages = rec { objectifier = pkgs.callPackage ./objectifier.nix { }; yolo-cli = pkgs.callPackage ./yolo-cli.nix { inherit yolov3-data; }; yolov3-data = pkgs.callPackage ./yolo-data.nix { inherit darknet; }; }; devShells = { default = pkgs.mkShell { buildInputs = let pythonYolo = pkgs.python3.withPackages (pyPkgs: with pyPkgs; [ fastapi gunicorn opencv4 python-multipart uvicorn ]); in [ pythonYolo ]; }; yolo-cli = pkgs.mkShell { buildInputs = [ self.packages."${system}".yolo-cli ]; }; }; }) // { nixosModules = rec { default = objectifier; objectifier = { imports = [ ./objectifier-module.nix ]; config.nixpkgs.settings.overlays = [ self.overlays.objectifier ]; }; }; overlays = rec { default = final: prev: { inherit (self.packages."${prev.system}") objectifier yolo-cli; }; objectifier = final: prev: { inherit (self.packages."${prev.system}") objectifier; }; yolo-cli = final: prev: { inherit (self.packages."${prev.system}") yolo-cli; }; }; }; }