{
description = "NSV stopwatch";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
poetry2nix = {
url = "github:nix-community/poetry2nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, poetry2nix, nixpkgs }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
system = "${system}";
};
inherit (poetry2nix.lib.mkPoetry2Nix {
inherit pkgs;
}) mkPoetryPackages defaultPoetryOverrides;
python-env = pkgs.python311.withPackages(ps: [
(ps.buildPythonPackage rec {
pname = "vunit-hdl";
version = "4.7.0";
src = pkgs.fetchFromGitHub {
owner = "VUnit";
repo = "vunit";
rev = "v4.7.0";
hash = "sha256-xhCPPnUXUdLg5kElbyJKW0tJOZMUoM1bV2siOsoz3Zs=";
};
doCheck = false;
nativeBuildInputs = [
ps.setuptoolsBuildHook
ps.setuptools
ps.pythonImportsCheckHook
pkgs.ghdl # VHDL simulator needed for build/testing
ps.pytest
];
buildInputs = [
ps.colorama
];
})
]);
vhdl-toolchain = pkgs.symlinkJoin {
name = "vhdl-toolchain";
meta.mainProgram = "nvc";
paths = [
pkgs.ghdl
pkgs.nvc
];
};
in {
packages.${system}.default = vhdl-toolchain;
devShells.${system}.default = pkgs.mkShell {
packages = [
vhdl-toolchain
pkgs.vhdl-ls
pkgs.gtkwave
python-env
];
VUNIT_SIMULATOR = "nvc";
};
};
}