Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • embedded-graphics
  • api
  • 5-implement-client-c-in-plain-rust
  • 4-fix-card10-l0dable-on-crates-io
  • build-from-root
6 results

default.nix

Blame
  • Forked from Astro / rust-card10
    114 commits behind the upstream repository.
    default.nix 1.57 KiB
    let
      mozillaOverlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
      pkgs = import <nixpkgs> { overlays = [ mozillaOverlay ]; };
    in
    with pkgs;
    let
      rust = rustChannelOfTargets "nightly" null [ "thumbv7em-none-eabi" ];
      rustPlatform = makeRustPlatform {
        rustc = rust;
        cargo = rust;
      };
      epic-stubs = stdenv.mkDerivation {
        name = "epic-stubs";
        src = ./card10-sys/firmware;
        buildInputs = [ gcc python3 ];
        buildPhase = ''
          ${python3}/bin/python epicardium/api/genapi.py -H epicardium/epicardium.h -c client.c -s server.c
        '';
        installPhase = ''
          mkdir $out
          cp client.c server.c $out/
        '';
      };
      l0dables = rustPlatform.buildRustPackage rec {
        name = "rust-card10";
        version = "0.0.0";
        src = ./.;
        cargoSha256 = "10nims5j9r0d7pcfbbj8ycqxhcx7n07958jvkib29b0sf9c6qh3z";
        buildInputs = [ pkgsCross.arm-embedded.stdenv.cc ];
        prePatch = ''
          cp ${epic-stubs}/client.c card10-sys/vendor/
        '';
        NIX_DEBUG=1;
        LIBCLANG_PATH="${llvmPackages.libclang}/lib";
        CARGO_HOME="$(mktemp -d cargo-home.XXX)";
        preBuild = ''
          export CPATH="${glibc_multi.dev}/include:${stdenv.cc.cc}/lib/gcc/$(cc -dumpmachine)/${lib.getVersion pkgsCross.arm-embedded.stdenv.cc.cc}/include"
        '';
        doCheck = false;
        installPhase = ''
          mkdir -p $out/apps
          for f in target/thumbv7em-none-eabi/release/* ; do
            if [ -x $f ] && [ ! -d $f ] ; then
              cp $f $out/apps/$(basename $f).elf
            fi
          done
        '';
      };
    in {
      inherit rust rustPlatform l0dables epic-stubs;
    }