{ outputs = { self, nixpkgs, ... }: let lib = nixpkgs.lib; scan = base: lib.attrsets.mapAttrs' (name: _: { name = lib.strings.removeSuffix ".nix" (builtins.baseNameOf name); value = import "${base}/${name}"; }) (builtins.readDir base); sdk = fetch: fetch { owner = "NessieCircuits"; repo = "Riotee_SDK"; tag = "v1.2.0"; fetchSubmodules = true; hash = "sha256-oeJ+oYu2DiB39i1jMggqddPPssrd4QBthsUI6N82KOs="; }; apps = system: pkgs: { default = self.apps.${system}.probe; probe = { type = "app"; program = "${self.packages.${system}.riotee-probe}/bin/riotee-probe"; }; }; packages = let packages = scan ./packages; in system: pkgs: builtins.mapAttrs (_: fn: pkgs.callPackage fn {}) packages; devShells = system: pkgs: { default = pkgs.mkShell { buildInputs = with pkgs; [ self.packages.${system}.riotee-probe gnumake gcc-arm-embedded ]; shellHook = '' export RIOTEE_SDK_ROOT="${sdk pkgs.fetchFromGitHub}" ''; }; }; overlays = system: pkgs: { default = self.overlays.${system}.riotee; riotee = final: prev: prev // (packages system pkgs); }; in { apps = builtins.mapAttrs apps nixpkgs.legacyPackages; packages = builtins.mapAttrs packages nixpkgs.legacyPackages; devShells = builtins.mapAttrs devShells nixpkgs.legacyPackages; overlays = builtins.mapAttrs overlays nixpkgs.legacyPackages; }; }