Compare commits

..

2 commits

Author SHA1 Message Date
Saji ccdbc98cb0 add flake/nix formatter (nixfmt)
Some checks failed
Verilator Unit Tests / Test (push) Failing after 3m35s
2024-09-26 01:46:28 -05:00
Saji 79927f0cbd flake now works with pyproject and flake-parts 2024-09-25 19:21:38 -05:00
15 changed files with 212 additions and 206 deletions

View file

@ -1,29 +1,32 @@
{ {
"nodes": { "nodes": {
"flake-utils": { "flake-parts": {
"inputs": { "inputs": {
"systems": "systems" "nixpkgs-lib": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1726560853, "lastModified": 1726153070,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=",
"owner": "numtide", "owner": "hercules-ci",
"repo": "flake-utils", "repo": "flake-parts",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "flake-utils", "owner": "hercules-ci",
"type": "indirect" "repo": "flake-parts",
"type": "github"
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1723637854, "lastModified": 1726937504,
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "rev": "9357f4f23713673f310988025d9dc261c20e70c6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -35,24 +38,9 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-parts": "flake-parts",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -3,53 +3,68 @@
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
}; };
outputs = inputs@{ self, nixpkgs, flake-utils, ... }: outputs =
let inputs@{ flake-parts, ... }:
python-overlay = import ./python.nix; flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ];
forAllSystems = function: systems = [
nixpkgs.lib.genAttrs systems (system: function ( "x86_64-linux"
import nixpkgs { "aarch64-linux"
inherit system; "aarch64-darwin"
config.allowUnfree = true; "x86_64-darwin"
overlays = [
python-overlay
]; ];
}
)); perSystem =
in { {
packages = forAllSystems (pkgs: { config,
niar = pkgs.python3.buildPythonPackage { self',
name = "niar"; inputs',
version = pyproject-toml.project.version; pkgs,
system,
...
}:
{
formatter = pkgs.nixfmt-rfc-style;
packages.default = pkgs.python3.pkgs.buildPythonPackage {
name = "groovylight";
version = "0.0.1";
src = ./.; src = ./.;
pyproject = true; format = "pyproject";
build-system = [pkgs.python3.pdm-backend]; build-system = [ pkgs.python3.pkgs.pdm-backend ];
propagatedBuildInpusts = [ propagatedBuildInputs = [
pkgs.python3.amaranth pkgs.python3.pkgs.amaranth
pkgs.python3.amaranth-boards pkgs.python3.pkgs.amaranth-boards
]; ];
doCheck = true; doCheck = true;
nativeCheckInputs = [python3.pkgs.pytestCheckHook]; nativeCheckInputs = with pkgs; [
}; python3.pkgs.pytestCheckHook
}); yosys
devShells = forAllSystems (pkgs: { nextpnr
default = pkgs.mkShell { trellis
packages = with pkgs; [ openfpgaloader
(python3.withPackages (pypkgs: with pypkgs; [ ];
amaranth
amaranth-boards };
])) devShells.default = pkgs.mkShell {
packages = with pkgs; [
(python3.withPackages (
pypkgs: with pypkgs; [
amaranth
amaranth-boards
self'.packages.default
]
))
yosys yosys
nextpnr nextpnr
# simulators
iverilog
verilator
# support package # support package
trellis trellis
# loader # loader
@ -57,6 +72,6 @@
ecpdap # easier to poke probes. ecpdap # easier to poke probes.
]; ];
}; };
}); };
}; };
} }

View file

@ -1,7 +1,8 @@
# an overlay to # an overlay to
let let
tag = "2023.12"; tag = "2023.12";
in final: prev: { in
final: prev: {
wishbone-tool = prev.callPackage (import ./wishbone-tool.nix) { }; wishbone-tool = prev.callPackage (import ./wishbone-tool.nix) { };
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
(python-final: python-prev: { (python-final: python-prev: {
@ -12,9 +13,12 @@ in final: prev: {
litespi = python-final.callPackage (import ./litespi.nix tag) { }; litespi = python-final.callPackage (import ./litespi.nix tag) { };
liteiclink = python-final.callPackage (import ./liteiclink.nix tag) { }; liteiclink = python-final.callPackage (import ./liteiclink.nix tag) { };
pythondata-cpu-vexriscv = python-final.callPackage (import ./pythondata-cpu-vexriscv.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-compiler_rt =
pythondata-software-picolibc = python-final.callPackage(import ./pythondata-software-picolibc.nix tag) { }; python-final.callPackage (import ./pythondata-software-compiler_rt.nix tag)
{ };
pythondata-software-picolibc =
python-final.callPackage (import ./pythondata-software-picolibc.nix tag)
{ };
}) })
]; ];
} }

View file

@ -1,10 +1,12 @@
tag: { tag:
pkgs {
, lib pkgs,
, buildPythonPackage lib,
, migen buildPythonPackage,
, pyyaml migen,
}: buildPythonPackage { pyyaml,
}:
buildPythonPackage {
pname = "litedram"; pname = "litedram";
version = "${tag}"; version = "${tag}";

View file

@ -1,12 +1,14 @@
tag: { tag:
pkgs {
, lib pkgs,
, buildPythonPackage lib,
, migen buildPythonPackage,
, setuptools migen,
, litex setuptools,
, pyyaml litex,
}: buildPythonPackage { pyyaml,
}:
buildPythonPackage {
pname = "liteeth"; pname = "liteeth";
version = "${tag}"; version = "${tag}";
@ -17,17 +19,11 @@ tag: {
hash = "sha256-DUNwDzcFLVmL5F/ZWmok7T7jO7ixC9IuDr1WUarnAqk="; hash = "sha256-DUNwDzcFLVmL5F/ZWmok7T7jO7ixC9IuDr1WUarnAqk=";
}; };
buildInputs = [ buildInputs = [ litex ];
litex
];
propagatedBuildInputs = [ propagatedBuildInputs = [ migen ];
migen
];
nativeCheckInputs = [ nativeCheckInputs = [ pyyaml ];
pyyaml
];
checkPhase = '' checkPhase = ''
python -m unittest test python -m unittest test

View file

@ -1,8 +1,10 @@
tag: { tag:
pkgs {
, buildPythonPackage pkgs,
, litex buildPythonPackage,
}: buildPythonPackage { litex,
}:
buildPythonPackage {
pname = "liteiclink"; pname = "liteiclink";
version = "${tag}"; version = "${tag}";
@ -13,9 +15,7 @@ tag: {
hash = "sha256-5Hp5vFqmfkXo1q60FvOkToTy952svirChIPIvkam04M="; hash = "sha256-5Hp5vFqmfkXo1q60FvOkToTy952svirChIPIvkam04M=";
}; };
buildInputs = [ buildInputs = [ litex ];
litex
];
checkPhase = '' checkPhase = ''
python -m unittest test python -m unittest test

View file

@ -1,11 +1,13 @@
tag: { tag:
pkgs {
, lib pkgs,
, buildPythonPackage lib,
, migen buildPythonPackage,
, setuptools migen,
, litex setuptools,
}: buildPythonPackage { litex,
}:
buildPythonPackage {
pname = "litescope"; pname = "litescope";
version = "${tag}"; version = "${tag}";
@ -16,9 +18,7 @@ tag: {
hash = "sha256-OWC+XwB+BzlCQkPKJCbQ0W4T6JbsInldrn9jYYjWypM="; hash = "sha256-OWC+XwB+BzlCQkPKJCbQ0W4T6JbsInldrn9jYYjWypM=";
}; };
buildInputs = [ buildInputs = [ litex ];
litex
];
checkPhase = '' checkPhase = ''
python -m unittest test python -m unittest test

View file

@ -1,11 +1,13 @@
tag: { tag:
pkgs {
, lib pkgs,
, buildPythonPackage lib,
, migen buildPythonPackage,
, setuptools migen,
, litex setuptools,
}: buildPythonPackage { litex,
}:
buildPythonPackage {
pname = "litespi"; pname = "litespi";
version = "${tag}"; version = "${tag}";
@ -16,16 +18,11 @@ tag: {
hash = "sha256-XYeWokF1IGtZWRK+6jhRSN91MOV5vyh5aO08sbtFBxw="; hash = "sha256-XYeWokF1IGtZWRK+6jhRSN91MOV5vyh5aO08sbtFBxw=";
}; };
buildInputs = [ buildInputs = [ litex ];
litex
];
propagatedBuildInputs = [ propagatedBuildInputs = [ migen ];
migen
];
nativeCheckInputs = [ nativeCheckInputs = [ ];
];
checkPhase = '' checkPhase = ''
python -m unittest test python -m unittest test

View file

@ -1,13 +1,15 @@
tag: { tag:
pkgs {
, lib pkgs,
, buildPythonPackage lib,
, pyserial buildPythonPackage,
, migen pyserial,
, requests migen,
, packaging requests,
, pexpect packaging,
}: buildPythonPackage { pexpect,
}:
buildPythonPackage {
pname = "litex"; pname = "litex";
version = "${tag}"; version = "${tag}";
@ -18,9 +20,7 @@ tag: {
hash = "sha256-OcwqYLQ7ec2vTewdIJqP/aTCJ4yI43OIOkTMD/hIKO0="; hash = "sha256-OcwqYLQ7ec2vTewdIJqP/aTCJ4yI43OIOkTMD/hIKO0=";
}; };
buildInputs = [ buildInputs = [ migen ];
migen
];
propagatedBuildInputs = [ propagatedBuildInputs = [
requests requests

View file

@ -1,7 +1,6 @@
tag: { tag:
pkgs { pkgs, buildPythonPackage }:
, buildPythonPackage buildPythonPackage rec {
}: buildPythonPackage rec {
pname = "pythondata-cpu-vexriscv"; pname = "pythondata-cpu-vexriscv";
version = "${tag}"; version = "${tag}";

View file

@ -1,7 +1,6 @@
tag: { tag:
pkgs { pkgs, buildPythonPackage }:
, buildPythonPackage buildPythonPackage rec {
}: buildPythonPackage rec {
pname = "pythondata-software-compiler_rt"; pname = "pythondata-software-compiler_rt";
version = "${tag}"; version = "${tag}";

View file

@ -1,7 +1,6 @@
tag: { tag:
pkgs { pkgs, buildPythonPackage }:
, buildPythonPackage buildPythonPackage rec {
}: buildPythonPackage rec {
pname = "pythondata-software-picolibc"; pname = "pythondata-software-picolibc";
version = "${tag}"; version = "${tag}";

View file

@ -1,4 +1,8 @@
{ lib, fetchFromGitHub, rustPlatform }: {
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "wishbone-tool"; pname = "wishbone-tool";
@ -12,6 +16,5 @@ rustPlatform.buildRustPackage rec {
}; };
sourceRoot = "${src.name}/wishbone-tool"; sourceRoot = "${src.name}/wishbone-tool";
cargoHash = "sha256-kWvtZEXtb5bZ7/hd8jsr41UGSDOuDU4tyKWAL0kDoIg="; cargoHash = "sha256-kWvtZEXtb5bZ7/hd8jsr41UGSDOuDU4tyKWAL0kDoIg=";
} }

View file

@ -13,6 +13,10 @@ requires-python = "==3.12.*"
readme = "README.md" readme = "README.md"
license = {text = "MIT"} license = {text = "MIT"}
[build-system]
requires = ["pdm-backend"]
build-backend = "pdm.backend"
[tool.pdm.dev-dependencies] [tool.pdm.dev-dependencies]
dev = [ dev = [
"basedpyright", "basedpyright",