108 lines
2.9 KiB
Nix
108 lines
2.9 KiB
Nix
{
|
|
description = "CPLD/FPGA gateware on Urukul";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
|
src-migen = {
|
|
url = "github:m-labs/migen";
|
|
flake = false;
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
src-migen,
|
|
}:
|
|
let
|
|
pkgs = import nixpkgs {
|
|
system = "x86_64-linux";
|
|
};
|
|
|
|
migen = pkgs.python3Packages.buildPythonPackage rec {
|
|
name = "migen";
|
|
src = src-migen;
|
|
pyproject = true;
|
|
build-system = [ pkgs.python3Packages.setuptools ];
|
|
propagatedBuildInputs = [ pkgs.python3Packages.colorama ];
|
|
};
|
|
|
|
ise =
|
|
let
|
|
isePath = "/opt/Xilinx/14.7/ISE_DS";
|
|
makeXilinxEnv =
|
|
name:
|
|
pkgs.buildFHSEnv {
|
|
inherit name;
|
|
targetPkgs =
|
|
pkgs:
|
|
(with pkgs; [
|
|
ncurses5
|
|
zlib
|
|
libuuid
|
|
xorg.libSM
|
|
xorg.libICE
|
|
xorg.libXrender
|
|
xorg.libX11
|
|
xorg.libXext
|
|
xorg.libXtst
|
|
xorg.libXi
|
|
]);
|
|
profile = ''
|
|
source ${isePath}/common/.settings64.sh ${isePath}/common
|
|
source ${isePath}/ISE/.settings64.sh ${isePath}/ISE
|
|
'';
|
|
runScript = name;
|
|
};
|
|
in
|
|
pkgs.lib.attrsets.genAttrs [ "xst" "ngdbuild" "cpldfit" "taengine" "hprep6" ] makeXilinxEnv;
|
|
|
|
in
|
|
rec {
|
|
packages.x86_64-linux = {
|
|
inherit migen;
|
|
|
|
urukul-xc2c = pkgs.stdenv.mkDerivation {
|
|
name = "urukul-xc2c";
|
|
src = self;
|
|
buildInputs = [ (pkgs.python3.withPackages (ps: [ migen ])) ] ++ (builtins.attrValues ise);
|
|
buildPhase = "python xc2c/urukul_impl.py";
|
|
installPhase = ''
|
|
mkdir -p $out $out/nix-support
|
|
cp build/urukul.jed $out
|
|
echo file binary-dist $out/urukul.jed >> $out/nix-support/hydra-build-products
|
|
'';
|
|
};
|
|
|
|
urukul-ice40 = pkgs.stdenv.mkDerivation {
|
|
name = "urukul-ice40";
|
|
src = self;
|
|
buildInputs = [
|
|
(pkgs.python3.withPackages (ps: [ migen ]))
|
|
]
|
|
++ (with pkgs; [
|
|
yosys
|
|
nextpnr
|
|
icestorm
|
|
]);
|
|
buildPhase = ''
|
|
python ice40/urukul.py
|
|
python ice40/urukul.py --suservo
|
|
'';
|
|
installPhase = ''
|
|
mkdir -p $out $out/nix-support
|
|
cp build/urukul.bin $out
|
|
cp build/suservo.bin $out
|
|
echo file binary-dist $out/urukul.bin >> $out/nix-support/hydra-build-products
|
|
echo file binary-dist $out/suservo.bin >> $out/nix-support/hydra-build-products
|
|
'';
|
|
};
|
|
};
|
|
|
|
formatter.x86_64-linux = pkgs.nixfmt-tree;
|
|
|
|
hydraJobs = packages.x86_64-linux;
|
|
};
|
|
}
|