humpback-dds/shell.nix

91 lines
2.2 KiB
Nix
Raw Normal View History

2020-08-07 13:12:58 +08:00
let
mozillaOverlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
pkgs = import <nixpkgs> {overlays = [mozillaOverlay];};
in with pkgs;
let
2020-08-09 02:03:47 +08:00
migen = callPackage ./nix/migen.nix {};
openocd = callPackage ./nix/openocd.nix {};
rustPlatform = callPackage ./nix/rustPlatform.nix {};
itm = callPackage ./nix/itm.nix {inherit rustPlatform;};
2020-08-07 13:12:58 +08:00
runOpenOcd = writeShellScriptBin "run-openocd" ''
openocd \
2020-09-23 12:31:10 +08:00
-f openocd/openocd.cfg \
2020-08-07 13:12:58 +08:00
-c init &
sleep 1
'';
runOpenOcdBlock = writeShellScriptBin "run-openocd-block" ''
2020-09-10 10:27:52 +08:00
openocd -f openocd/openocd.cfg
2020-08-07 13:12:58 +08:00
'';
setGDBConfigFile = writeShellScriptBin "set-gdb-config-file" ''
if [[ $1 == "" ]]
then
sed -i "2s/.*/runner = \"gdb -q -x gdb_config\/openocd.gdb\"/" .cargo/config
echo "GDB config file: openocd.gdb"
else
sed -i "2s/.*/runner = \"gdb -q -x gdb_config\/$1.gdb\"/" .cargo/config
echo "GDB config file: $1.gdb"
fi
'';
runEthernetServer = writeShellScriptBin "run-ethernet-server" ''
set-gdb-config-file && cargo run --example ethernet
'';
2020-08-11 08:54:00 +08:00
compileMigenScript = writeShellScriptBin "compile-migen-script" ''
python3 migen/fpga_config.py
2020-08-07 13:12:58 +08:00
echo "Compiled fpga_config.py to top.bin"
'';
flashFPGAConfig = writeShellScriptBin "flash-fpga-config" ''
2020-09-17 13:19:23 +08:00
openocd-flash fpga-config
2020-08-07 13:12:58 +08:00
'';
configureFPGA = writeShellScriptBin "configure-fpga" ''
2020-09-17 13:19:23 +08:00
compile-migen-script \
&& cargo build --example fpga_config \
&& flash-fpga-config
2020-08-07 13:12:58 +08:00
'';
resetFlash = writeShellScriptBin "reset-flash" ''
gdb -batch -x gdb_config/reset.gdb
echo "Reset is complete, please reset the openocd server."
'';
2020-09-16 17:45:41 +08:00
openocdFlash = writeShellScriptBin "openocd-flash" ''
openocd -f openocd/openocd.cfg -f openocd/$1.cfg
'';
2020-09-23 12:31:10 +08:00
publishMqtt = writeShellScriptBin "publish-mqtt" ''
mosquitto_pub -h localhost -t $1 -m "$2" -d
'';
2020-08-07 13:12:58 +08:00
in
stdenv.mkDerivation {
name = "nix-shell";
buildInputs = with rustPlatform.rust; [
2020-08-11 08:54:00 +08:00
(pkgs.python3.withPackages(ps: [ migen ]))
2020-08-07 13:12:58 +08:00
pkgs.yosys
pkgs.nextpnr
pkgs.icestorm
pkgs.gdb
2020-09-23 10:40:55 +08:00
pkgs.mosquitto
2020-08-07 13:12:58 +08:00
openocd
rustc
cargo
itm
runOpenOcd
runOpenOcdBlock
setGDBConfigFile
runEthernetServer
2020-08-11 08:54:00 +08:00
compileMigenScript
2020-08-07 13:12:58 +08:00
flashFPGAConfig
configureFPGA
resetFlash
2020-09-16 17:45:41 +08:00
openocdFlash
2020-09-23 12:31:10 +08:00
publishMqtt
2020-08-07 13:12:58 +08:00
];
}