diff --git a/vivado.nix b/vivado.nix new file mode 100644 index 0000000..6309252 --- /dev/null +++ b/vivado.nix @@ -0,0 +1,37 @@ +# Install Vivado in /opt and add to /etc/nixos/configuration.nix: +# nix.sandboxPaths = ["/opt"]; + +{ pkgs ? import {}}: +let + vivadoEnv = pkgs.buildFHSUserEnv { + name = "vivado-env"; + targetPkgs = pkgs: ( + with pkgs; [ + ncurses5 + zlib + libuuid + xorg.libSM + xorg.libICE + xorg.libXrender + xorg.libX11 + xorg.libXext + xorg.libXtst + xorg.libXi + ] + ); + }; +in + { + buildBitstream = { name, src, vivadoPath ? "/opt/Xilinx/Vivado/2018.3" }: + pkgs.stdenv.mkDerivation { + inherit name src; + phases = [ "buildPhase" ]; + buildPhase = + '' + cp --no-preserve=mode,ownership -R $src/* . + ${vivadoEnv}/bin/vivado-env -c "source ${vivadoPath}/settings64.sh && vivado -mode batch -source top.tcl" + mkdir $out + cp *.dcp *.rpt *.bit $out + ''; + }; + }