diff options
author | Teal Gaure <~@Teal.Gr> | 2017-10-04 17:11:52 +0200 |
---|---|---|
committer | Teal Gaure <~@Teal.Gr> | 2017-10-04 17:11:52 +0200 |
commit | ed35c0761fe2433eb1a2187eea3b4ad488f817da (patch) | |
tree | 7b355e8d185a1d075911d58c9fa758181a37e4fd /pkgs/applications/audio/axoloti/default.nix | |
parent | 2b70f5e251e39a4dfb7150362dcb12f08e0ee6b3 (diff) | |
download | nixpkgs-ed35c0761fe2433eb1a2187eea3b4ad488f817da.tar nixpkgs-ed35c0761fe2433eb1a2187eea3b4ad488f817da.tar.gz nixpkgs-ed35c0761fe2433eb1a2187eea3b4ad488f817da.tar.bz2 nixpkgs-ed35c0761fe2433eb1a2187eea3b4ad488f817da.tar.lz nixpkgs-ed35c0761fe2433eb1a2187eea3b4ad488f817da.tar.xz nixpkgs-ed35c0761fe2433eb1a2187eea3b4ad488f817da.tar.zst nixpkgs-ed35c0761fe2433eb1a2187eea3b4ad488f817da.zip |
axoloti: init at 1.0.12-1
Diffstat (limited to 'pkgs/applications/audio/axoloti/default.nix')
-rw-r--r-- | pkgs/applications/audio/axoloti/default.nix | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/pkgs/applications/audio/axoloti/default.nix b/pkgs/applications/audio/axoloti/default.nix new file mode 100644 index 00000000000..b976d31a27f --- /dev/null +++ b/pkgs/applications/audio/axoloti/default.nix @@ -0,0 +1,101 @@ +{ stdenv, fetchFromGitHub, fetchurl, makeWrapper, unzip +, gnumake, gcc-arm-embedded, dfu-util-axoloti, jdk, ant, libfaketime }: + +stdenv.mkDerivation rec { + version = "1.0.12-1"; + name = "axoloti-${version}"; + + src = fetchFromGitHub { + owner = "axoloti"; + repo = "axoloti"; + rev = "${version}"; + sha256 = "13njmv8zac0kaaxgkv4y4zfjcclafn9cw0m8lj2k4926wnwjmf50"; + }; + + chibi_version = "2.6.9"; + chibi_name = "ChibiOS_${chibi_version}"; + + chibios = fetchurl { + url = "mirror://sourceforge/project/chibios/ChibiOS_RT%20stable/Version%20${chibi_version}/${chibi_name}.zip"; + sha256 = "0lb5s8pkj80mqhsy47mmq0lqk34s2a2m3xagzihalvabwd0frhlj"; + }; + + buildInputs = [ makeWrapper unzip gcc-arm-embedded dfu-util-axoloti jdk ant libfaketime ]; + + patchPhase = '' + unzip ${chibios} + mv ${chibi_name} chibios + (cd chibios/ext; unzip -q -o fatfs-0.9-patched.zip) + + # Remove source of non-determinism in ChibiOS + substituteInPlace "chibios/os/various/shell.c" \ + --replace "#ifdef __DATE__" "#if 0" + + # Hardcode full path to compiler tools + for f in "firmware/Makefile.patch" \ + "firmware/Makefile" \ + "firmware/flasher/Makefile" \ + "firmware/mounter/Makefile"; do + substituteInPlace "$f" \ + --replace "arm-none-eabi-" "${gcc-arm-embedded}/bin/arm-none-eabi-" + done + + # Hardcode path to "make" + for f in "firmware/compile_firmware_linux.sh" \ + "firmware/compile_patch_linux.sh"; do + substituteInPlace "$f" \ + --replace "make" "${gnumake}/bin/make" + done + + # Hardcode dfu-util path + substituteInPlace "platform_linux/upload_fw_dfu.sh" \ + --replace "/bin/dfu-util" "" + substituteInPlace "platform_linux/upload_fw_dfu.sh" \ + --replace "./dfu-util" "${dfu-util-axoloti}/bin/dfu-util" + + # Fix build version + substituteInPlace "build.xml" \ + --replace "(git missing)" "${version}" + + # Remove build time + substituteInPlace "build.xml" \ + --replace "<tstamp>" "" + substituteInPlace "build.xml" \ + --replace \ + '<format property="build.time" pattern="dd/MM/yyyy HH:mm:ss z"/>' \ + '<property name="build.time" value=""/>' + substituteInPlace "build.xml" \ + --replace "</tstamp>" "" + substituteInPlace "build.xml" \ + --replace \ + '{line.separator}</echo>' \ + '{line.separator}</echo> <touch file="src/main/java/axoloti/Version.java" millis="0" />' + ''; + + buildPhase = '' + find . -exec touch -d '1970-01-01 00:00' {} \; + (cd platform_linux; sh compile_firmware.sh) + faketime "1970-01-01 00:00:00" ant -Dbuild.runtime=true + ''; + + installPhase = '' + mkdir -p $out/bin $out/share/axoloti + + cp -r doc firmware chibios platform_linux CMSIS *.txt $out/share/axoloti/ + install -vD dist/Axoloti.jar $out/share/axoloti/ + + makeWrapper ${jdk}/bin/java $out/bin/axoloti --add-flags "-Daxoloti_release=$out/share/axoloti -Daxoloti_runtime=$out/share/axoloti -jar $out/share/axoloti/Axoloti.jar" + ''; + + meta = with stdenv.lib; { + homepage = http://www.axoloti.com; + description = '' + Sketching embedded digital audio algorithms. + + To fix permissions of the Axoloti USB device node, add a similar udev rule to <literal>services.udev.extraRules</literal>: + <literal>SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="0442", OWNER="someuser", GROUP="somegroup"</literal> + ''; + license = licenses.gpl3; + maintainers = with lib.maintainers; [ TealG ]; + }; +} |