# vim: ft=nix : { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; flake-utils.url = "github:numtide/flake-utils/main"; call-flake.url = "github:divnix/call-flake"; }; description = "tiny kite-borne sensor node"; outputs = { self, nixpkgs, flake-utils, ... } @ inputs: let clef = (inputs.call-flake ./hw/clef).outputs; mkPkgs = system: import nixpkgs { inherit system; overlays = [ clef.overlays.default ]; }; mkPkg = pkgs: pkgs.clef { name = "ocularium"; src = ./hw; main_pcb = "ocularium.kicad_pcb"; main_sch = "ocularium.kicad_sch"; layers = 4; outPath = "share/npry/ocularium"; }; in (flake-utils.lib.eachDefaultSystem (system: let pkgs = mkPkgs system; pkg = mkPkg pkgs; in { packages = { default = pkg; ocularium = pkg; }; devShells.default = pkgs.mkShell { name = "devshell"; version = self.rev or "dirty"; packages = with pkgs; [ kicad kikit ]; }; legacyPackages = pkgs // self.packages; }) ) // { overlays = { default = final: prev: self.packages.${prev.system}; }; }; }