diff --git a/flake.nix b/flake.nix index fdd330c..cad3c3c 100644 --- a/flake.nix +++ b/flake.nix @@ -3,82 +3,75 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - flake-parts = { - url = "github:hercules-ci/flake-parts"; - inputs.nixpkgs-lib.follows = "nixpkgs"; - }; + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; }; - outputs = inputs@{flake-parts, ... }: - flake-parts.lib.mkFlake { inherit inputs; } { - # flake = let - # in { - # }; - # devShells."x86_64-linux".default = pkgs.mkShell { - # packages = with pkgs; [ - # (python3.withPackages (pypkgs: with pypkgs; [ - # amaranth - # amaranth-boards - # ])) - # yosys - # nextpnr - # # simulators - # iverilog - # verilator - # # support package - # trellis - # # loader - # openfpgaloader - # ecpdap # easier to poke probes. - # ]; - # }; - # }; + outputs = + inputs@{ flake-parts, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { - systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; + systems = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + "x86_64-darwin" + ]; - perSystem = {config, self', inputs', pkgs, system, ...}: { - packages.default = pkgs.python3.pkgs.buildPythonPackage { - name = "groovylight"; - version = "0.0.1"; - src = ./.; - format = "pyproject"; + perSystem = + { + config, + self', + inputs', + pkgs, + system, + ... + }: + { + formatter = pkgs.nixfmt-rfc-style; + packages.default = pkgs.python3.pkgs.buildPythonPackage { + name = "groovylight"; + version = "0.0.1"; + src = ./.; + format = "pyproject"; - build-system = [pkgs.python3.pkgs.pdm-backend]; + build-system = [ pkgs.python3.pkgs.pdm-backend ]; - propagatedBuildInputs = [ - pkgs.python3.pkgs.amaranth - pkgs.python3.pkgs.amaranth-boards - ]; + propagatedBuildInputs = [ + pkgs.python3.pkgs.amaranth + pkgs.python3.pkgs.amaranth-boards + ]; - doCheck = true; - nativeCheckInputs = with pkgs; [ - python3.pkgs.pytestCheckHook - yosys - nextpnr - trellis - openfpgaloader - ]; - - }; - devShells.default = pkgs.mkShell { - packages = with pkgs; [ - (python3.withPackages (pypkgs: with pypkgs; [ - amaranth - amaranth-boards - ])) - self'.packages.default - yosys - nextpnr - # simulators - iverilog - verilator - # support package - trellis - # loader - openfpgaloader - ecpdap # easier to poke probes. - ]; - }; - }; - }; + doCheck = true; + nativeCheckInputs = with pkgs; [ + python3.pkgs.pytestCheckHook + yosys + nextpnr + trellis + openfpgaloader + ]; + + }; + devShells.default = pkgs.mkShell { + packages = with pkgs; [ + (python3.withPackages ( + pypkgs: with pypkgs; [ + amaranth + amaranth-boards + self'.packages.default + ] + )) + yosys + nextpnr + # support package + trellis + # loader + openfpgaloader + ecpdap # easier to poke probes. + ]; + }; + }; + }; } diff --git a/litex/default.nix b/litex/default.nix index 4ae6aa5..62c828a 100644 --- a/litex/default.nix +++ b/litex/default.nix @@ -1,20 +1,24 @@ -# an overlay to -let +# an overlay to +let tag = "2023.12"; -in final: prev: { - wishbone-tool = prev.callPackage(import ./wishbone-tool.nix) { }; +in +final: prev: { + wishbone-tool = prev.callPackage (import ./wishbone-tool.nix) { }; pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ (python-final: python-prev: { - litex = python-final.callPackage(import ./litex.nix tag) { }; - litedram = python-final.callPackage(import ./litedram.nix tag) { }; - liteeth = python-final.callPackage(import ./liteeth.nix tag) { }; - litescope = python-final.callPackage(import ./litescope.nix tag) { }; - litespi = python-final.callPackage(import ./litespi.nix tag) { }; - liteiclink = python-final.callPackage(import ./liteiclink.nix tag) { }; - pythondata-cpu-vexriscv = python-final.callPackage(import ./pythondata-cpu-vexriscv.nix tag) { }; - pythondata-software-compiler_rt = python-final.callPackage(import ./pythondata-software-compiler_rt.nix tag) { }; - pythondata-software-picolibc = python-final.callPackage(import ./pythondata-software-picolibc.nix tag) { }; + litex = python-final.callPackage (import ./litex.nix tag) { }; + litedram = python-final.callPackage (import ./litedram.nix tag) { }; + liteeth = python-final.callPackage (import ./liteeth.nix tag) { }; + litescope = python-final.callPackage (import ./litescope.nix tag) { }; + litespi = python-final.callPackage (import ./litespi.nix tag) { }; + liteiclink = python-final.callPackage (import ./liteiclink.nix tag) { }; + pythondata-cpu-vexriscv = python-final.callPackage (import ./pythondata-cpu-vexriscv.nix tag) { }; + pythondata-software-compiler_rt = + python-final.callPackage (import ./pythondata-software-compiler_rt.nix tag) + { }; + pythondata-software-picolibc = + python-final.callPackage (import ./pythondata-software-picolibc.nix tag) + { }; }) ]; } - diff --git a/litex/litedram.nix b/litex/litedram.nix index 7eb6c18..0569270 100644 --- a/litex/litedram.nix +++ b/litex/litedram.nix @@ -1,10 +1,12 @@ -tag: { - pkgs -, lib -, buildPythonPackage -, migen -, pyyaml -}: buildPythonPackage { +tag: +{ + pkgs, + lib, + buildPythonPackage, + migen, + pyyaml, +}: +buildPythonPackage { pname = "litedram"; version = "${tag}"; diff --git a/litex/liteeth.nix b/litex/liteeth.nix index dfb1f43..922a958 100644 --- a/litex/liteeth.nix +++ b/litex/liteeth.nix @@ -1,12 +1,14 @@ -tag: { - pkgs -, lib -, buildPythonPackage -, migen -, setuptools -, litex -, pyyaml -}: buildPythonPackage { +tag: +{ + pkgs, + lib, + buildPythonPackage, + migen, + setuptools, + litex, + pyyaml, +}: +buildPythonPackage { pname = "liteeth"; version = "${tag}"; @@ -17,17 +19,11 @@ tag: { hash = "sha256-DUNwDzcFLVmL5F/ZWmok7T7jO7ixC9IuDr1WUarnAqk="; }; - buildInputs = [ - litex - ]; + buildInputs = [ litex ]; - propagatedBuildInputs = [ - migen - ]; + propagatedBuildInputs = [ migen ]; - nativeCheckInputs = [ - pyyaml - ]; + nativeCheckInputs = [ pyyaml ]; checkPhase = '' python -m unittest test diff --git a/litex/liteiclink.nix b/litex/liteiclink.nix index f6a32b7..6483444 100644 --- a/litex/liteiclink.nix +++ b/litex/liteiclink.nix @@ -1,8 +1,10 @@ -tag: { - pkgs -, buildPythonPackage -, litex -}: buildPythonPackage { +tag: +{ + pkgs, + buildPythonPackage, + litex, +}: +buildPythonPackage { pname = "liteiclink"; version = "${tag}"; @@ -13,9 +15,7 @@ tag: { hash = "sha256-5Hp5vFqmfkXo1q60FvOkToTy952svirChIPIvkam04M="; }; - buildInputs = [ - litex - ]; + buildInputs = [ litex ]; checkPhase = '' python -m unittest test diff --git a/litex/litescope.nix b/litex/litescope.nix index a731763..1f62bbe 100644 --- a/litex/litescope.nix +++ b/litex/litescope.nix @@ -1,11 +1,13 @@ -tag: { - pkgs -, lib -, buildPythonPackage -, migen -, setuptools -, litex -}: buildPythonPackage { +tag: +{ + pkgs, + lib, + buildPythonPackage, + migen, + setuptools, + litex, +}: +buildPythonPackage { pname = "litescope"; version = "${tag}"; @@ -16,9 +18,7 @@ tag: { hash = "sha256-OWC+XwB+BzlCQkPKJCbQ0W4T6JbsInldrn9jYYjWypM="; }; - buildInputs = [ - litex - ]; + buildInputs = [ litex ]; checkPhase = '' python -m unittest test diff --git a/litex/litespi.nix b/litex/litespi.nix index 9437817..5029533 100644 --- a/litex/litespi.nix +++ b/litex/litespi.nix @@ -1,11 +1,13 @@ -tag: { - pkgs -, lib -, buildPythonPackage -, migen -, setuptools -, litex -}: buildPythonPackage { +tag: +{ + pkgs, + lib, + buildPythonPackage, + migen, + setuptools, + litex, +}: +buildPythonPackage { pname = "litespi"; version = "${tag}"; @@ -16,16 +18,11 @@ tag: { hash = "sha256-XYeWokF1IGtZWRK+6jhRSN91MOV5vyh5aO08sbtFBxw="; }; - buildInputs = [ - litex - ]; + buildInputs = [ litex ]; - propagatedBuildInputs = [ - migen - ]; + propagatedBuildInputs = [ migen ]; - nativeCheckInputs = [ - ]; + nativeCheckInputs = [ ]; checkPhase = '' python -m unittest test diff --git a/litex/litex.nix b/litex/litex.nix index 15255a5..d0ff621 100644 --- a/litex/litex.nix +++ b/litex/litex.nix @@ -1,13 +1,15 @@ -tag: { - pkgs -, lib -, buildPythonPackage -, pyserial -, migen -, requests -, packaging -, pexpect -}: buildPythonPackage { +tag: +{ + pkgs, + lib, + buildPythonPackage, + pyserial, + migen, + requests, + packaging, + pexpect, +}: +buildPythonPackage { pname = "litex"; version = "${tag}"; @@ -18,9 +20,7 @@ tag: { hash = "sha256-OcwqYLQ7ec2vTewdIJqP/aTCJ4yI43OIOkTMD/hIKO0="; }; - buildInputs = [ - migen - ]; + buildInputs = [ migen ]; propagatedBuildInputs = [ requests diff --git a/litex/pythondata-cpu-vexriscv.nix b/litex/pythondata-cpu-vexriscv.nix index 4f93207..4865684 100644 --- a/litex/pythondata-cpu-vexriscv.nix +++ b/litex/pythondata-cpu-vexriscv.nix @@ -1,7 +1,6 @@ -tag: { - pkgs -, buildPythonPackage -}: buildPythonPackage rec { +tag: +{ pkgs, buildPythonPackage }: +buildPythonPackage rec { pname = "pythondata-cpu-vexriscv"; version = "${tag}"; diff --git a/litex/pythondata-software-compiler_rt.nix b/litex/pythondata-software-compiler_rt.nix index 9629e9e..c107c1f 100644 --- a/litex/pythondata-software-compiler_rt.nix +++ b/litex/pythondata-software-compiler_rt.nix @@ -1,7 +1,6 @@ -tag: { - pkgs -, buildPythonPackage -}: buildPythonPackage rec { +tag: +{ pkgs, buildPythonPackage }: +buildPythonPackage rec { pname = "pythondata-software-compiler_rt"; version = "${tag}"; diff --git a/litex/pythondata-software-picolibc.nix b/litex/pythondata-software-picolibc.nix index ecd294a..d9351df 100644 --- a/litex/pythondata-software-picolibc.nix +++ b/litex/pythondata-software-picolibc.nix @@ -1,7 +1,6 @@ -tag: { - pkgs -, buildPythonPackage -}: buildPythonPackage rec { +tag: +{ pkgs, buildPythonPackage }: +buildPythonPackage rec { pname = "pythondata-software-picolibc"; version = "${tag}"; diff --git a/litex/wishbone-tool.nix b/litex/wishbone-tool.nix index 8099892..958203f 100644 --- a/litex/wishbone-tool.nix +++ b/litex/wishbone-tool.nix @@ -1,4 +1,8 @@ -{ lib, fetchFromGitHub, rustPlatform }: +{ + lib, + fetchFromGitHub, + rustPlatform, +}: rustPlatform.buildRustPackage rec { pname = "wishbone-tool"; @@ -12,6 +16,5 @@ rustPlatform.buildRustPackage rec { }; sourceRoot = "${src.name}/wishbone-tool"; - cargoHash = "sha256-kWvtZEXtb5bZ7/hd8jsr41UGSDOuDU4tyKWAL0kDoIg="; } diff --git a/python.nix b/python.nix index 8b2cff1..54bc1ae 100644 --- a/python.nix +++ b/python.nix @@ -1,30 +1,30 @@ # overlay python patched version with amaranth/boards updated. final: prev: { - python3 = prev.python3.override { - packageOverrides = pyfinal: pyprev: { - amaranth = pyprev.amaranth.overridePythonAttrs { - version = "0.6.0.dev53"; - src = prev.pkgs.fetchFromGitHub { - owner = "amaranth-lang"; - repo = "amaranth"; - rev = "e30d822a7d93ee615e70e95a9958051dcc794802"; - # hash = "sha256-A46CMWGvqUFTp3geFFccUM9M7iECmNndzWm2GxA8XbE"; - hash = "sha256-sCUipI7HcuTg3sJscoSI0UdIutnxGWSwbgpwWyZuFxk="; - }; - doCheck = false; - # installCheckPhase = "${prev.python3.interpreter} -m unittest discover -t . -s tests -v"; - }; - amaranth-boards = pyprev.amaranth-boards.overridePythonAttrs { - version = "0.1.dev250"; - src = prev.pkgs.fetchFromGitHub { - owner = "amaranth-lang"; - repo = "amaranth-boards"; - rev = "19b97324ecf9111c5d16377af79f82aad761c476"; - hash = "sha256-0uvn91i/yuIY75lL5Oxvozdw7Q2Uw83JWo7srgEYEpI="; - }; - build-system = [pyprev.pdm-backend]; - dontCheckRuntimeDeps = 1; - }; - }; - }; + python3 = prev.python3.override { + packageOverrides = pyfinal: pyprev: { + amaranth = pyprev.amaranth.overridePythonAttrs { + version = "0.6.0.dev53"; + src = prev.pkgs.fetchFromGitHub { + owner = "amaranth-lang"; + repo = "amaranth"; + rev = "e30d822a7d93ee615e70e95a9958051dcc794802"; + # hash = "sha256-A46CMWGvqUFTp3geFFccUM9M7iECmNndzWm2GxA8XbE"; + hash = "sha256-sCUipI7HcuTg3sJscoSI0UdIutnxGWSwbgpwWyZuFxk="; + }; + doCheck = false; + # installCheckPhase = "${prev.python3.interpreter} -m unittest discover -t . -s tests -v"; + }; + amaranth-boards = pyprev.amaranth-boards.overridePythonAttrs { + version = "0.1.dev250"; + src = prev.pkgs.fetchFromGitHub { + owner = "amaranth-lang"; + repo = "amaranth-boards"; + rev = "19b97324ecf9111c5d16377af79f82aad761c476"; + hash = "sha256-0uvn91i/yuIY75lL5Oxvozdw7Q2Uw83JWo7srgEYEpI="; + }; + build-system = [ pyprev.pdm-backend ]; + dontCheckRuntimeDeps = 1; + }; + }; + }; }