{ description = "LiteX overlay to provide those packages"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; treefmt-nix.url = "github:numtide/treefmt-nix"; }; outputs = inputs@{ self, nixpkgs, treefmt-nix, ... }: let systems = [ "x86_64-linux" "aarch64-linux" "riscv64-linux" "aarch64-darwin" "x86_64-darwin" ]; forAllSystems = function: nixpkgs.lib.genAttrs systems ( system: function ( import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ self.overlays.default ]; } ) ); litex-pkgs = import ./pkgs; treefmtEval = forAllSystems (pkgs: treefmt-nix.lib.evalModule pkgs ./treefmt.nix); in { overlays.default = final: prev: { pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ ( python-final: python-prev: builtins.mapAttrs (name: value: python-final.callPackage value { }) litex-pkgs ) ]; }; formatter = forAllSystems (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper); checks = forAllSystems (pkgs: { formatting = treefmtEval.${pkgs.system}.config.build.check self; packages = pkgs.symlinkJoin { name = "all"; paths = pkgs.lib.attrsets.attrValues self.packages.${pkgs.system}; }; }); # this is mainly so that nix-update works. I have no idea if this works without it. # use at your own peril. packages = forAllSystems ( pkgs: builtins.mapAttrs (name: value: pkgs.python3Packages.callPackage value { }) litex-pkgs ); templates.default = { path = ./templates/default; description = "basic template to get started with an ecp5"; }; }; }