# vim: ft=nix : { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; flake-utils.url = "github:numtide/flake-utils/main"; nix-filter.url = "github:numtide/nix-filter/main"; cq = { url = "github:vinszent/cq-flake/main"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; }; description = "tiny kite-borne sensor node"; outputs = { self, nixpkgs, flake-utils, ... } @ inputs: let kicadOverlay = final: prev: { opencascade-occt_7_6 = prev.opencascade-occt_7_6.overrideAttrs (finalAttrs: prevAttrs: { buildInputs = (prevAttrs.buildInputs or []) ++ [ prev.rapidjson ]; cmakeFlags = (prevAttrs.cmakeFlags or []) ++ [ "-DUSE_RAPIDJSON=1" ]; }); kicad = prev.kicad.override { with3d = true; withI18n = false; addons = with prev.kicadAddons; [ kikit kikit-library ]; }; kikit = let version = "1.6.0"; in prev.kikit.overridePythonAttrs { inherit version; src = final.fetchFromGitHub { owner = "yaqwsx"; repo = "KiKit"; rev = "refs/tags/v${version}"; hash = "sha256-r8LQcy3I6hmcrU/6HfPAYJd+cEZdhad6DUldC9HvXZU="; }; doCheck = false; }; }; mkPkgs = system: import nixpkgs { inherit system; overlays = [ kicadOverlay (final: prev: { nix-filter = inputs.nix-filter.lib; }) (final: prev: { inherit (inputs.cq.packages.${system}) cadquery; }) ]; }; mkPackages = pkgs: pkgs.callPackages ./nix {}; in (flake-utils.lib.eachDefaultSystem (system: let pkgs = mkPkgs system; packages = mkPackages pkgs; full_package = (pkgs.emptyFile).overrideAttrs ({ passthru = packages; }); in { packages = { default = full_package; ocularium = full_package; }; 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}; kicad = kicadOverlay; }; }; }