diff --git a/derivations.nix b/derivations.nix index 7f2a3d8..df22d6f 100644 --- a/derivations.nix +++ b/derivations.nix @@ -17,4 +17,6 @@ rec { binutils-riscv = pkgs.callPackage ./compilers/binutils.nix { platform = "riscv32"; }; rust-riscv32imc-crates = pkgs.callPackage ./compilers/rust-riscv32imc-crates.nix { }; + + helloworld = pkgs.callPackage ./firmware { inherit rust-riscv32imc-crates binutils-riscv; }; } diff --git a/firmware/.cargo/config b/firmware/.cargo/config deleted file mode 100644 index 5b46eb4..0000000 --- a/firmware/.cargo/config +++ /dev/null @@ -1,2 +0,0 @@ -[build] -target = "riscv32imc-unknown-none-elf" diff --git a/firmware/default.nix b/firmware/default.nix new file mode 100644 index 0000000..226a502 --- /dev/null +++ b/firmware/default.nix @@ -0,0 +1,21 @@ +{ rustPlatform, rust-riscv32imc-crates, binutils-riscv }: + +rustPlatform.buildRustPackage rec { + name = "helloworld"; + version = "0.0.0"; + + src = ./.; + cargoSha256 = "1j8ipk7mwf6jqjnddpvkdydhgl7lfddxkv6p1vhzlfhqlf8am42j"; + + buildPhase = '' + export CARGO_HOME=$(mktemp -d cargo-home.XXX) + export RUSTFLAGS="-L ${rust-riscv32imc-crates}/lib/rustlib/riscv32imc-unknown-none-elf/lib -C linker=${binutils-riscv}/bin/riscv32-unknown-elf-ld -C link-arg=-Tlink.x" + cargo build --release --target riscv32imc-unknown-none-elf + ''; + + doCheck = false; + installPhase = '' + mkdir -p $out + cp target/riscv32imc-unknown-none-elf/release/helloworld $out + ''; +} diff --git a/shell-firmware.nix b/shell-firmware.nix deleted file mode 100644 index 3743033..0000000 --- a/shell-firmware.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ }: -let - pkgs = import { overlays = [ import ./overlay.nix ]; }; - hx = import ./derivations.nix { inherit pkgs; }; -in - pkgs.mkShell { - buildInputs = [ hx.rustc hx.rust-riscv32imc-crates hx.binutils-riscv hx.cargo ]; - RUSTFLAGS="-L ${hx.rust-riscv32imc-crates}/lib/rustlib/riscv32imc-unknown-none-elf/lib -C linker=riscv32-unknown-elf-ld -C link-arg=-Tlink.x"; - }