From 22cc53d854b0dcec02daefe3351b3ced081f3723 Mon Sep 17 00:00:00 2001 From: mwojcik Date: Fri, 14 Jan 2022 16:44:47 +0800 Subject: [PATCH 1/7] introduced nix flakes --- cargosha256.nix | 1 - flake.lock | 44 +++++++++++++++++++++++++++ flake.nix | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ shell.nix | 23 -------------- 4 files changed, 125 insertions(+), 24 deletions(-) delete mode 100644 cargosha256.nix create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 shell.nix diff --git a/cargosha256.nix b/cargosha256.nix deleted file mode 100644 index b3d9617..0000000 --- a/cargosha256.nix +++ /dev/null @@ -1 +0,0 @@ -"0qb4s06jwgj3i9df6qq9gwcnyr3jq6dh4l5ygjghq5x1bmcqliix" diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..7fee722 --- /dev/null +++ b/flake.lock @@ -0,0 +1,44 @@ +{ + "nodes": { + "mozilla-overlay": { + "flake": false, + "locked": { + "lastModified": 1638887313, + "narHash": "sha256-FMYV6rVtvSIfthgC1sK1xugh3y7muoQcvduMdriz4ag=", + "owner": "mozilla", + "repo": "nixpkgs-mozilla", + "rev": "7c1e8b1dd6ed0043fb4ee0b12b815256b0b9de6f", + "type": "github" + }, + "original": { + "owner": "mozilla", + "repo": "nixpkgs-mozilla", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1641870998, + "narHash": "sha256-6HkxR2WZsm37VoQS7jgp6Omd71iw6t1kP8bDbaqCDuI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "386234e2a61e1e8acf94dfa3a3d3ca19a6776efb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "mozilla-overlay": "mozilla-overlay", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..cf24d81 --- /dev/null +++ b/flake.nix @@ -0,0 +1,81 @@ +{ + description = "Firmware for the Sinara 8451 Thermostat"; + + inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11; + inputs.mozilla-overlay = { url = github:mozilla/nixpkgs-mozilla; flake = false; }; + + outputs = { self, nixpkgs, mozilla-overlay }: + let + pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import mozilla-overlay) ]; }; + rustManifest = pkgs.fetchurl { + url = "https://static.rust-lang.org/dist/2020-10-30/channel-rust-nightly.toml"; + sha256 = "0iygcwzh8s0lfdghj5809krvzifc1ii1wm4sd3qqn7s0rz1s14hi"; + }; + + targets = [ + "thumbv7em-none-eabihf" + ]; + rustChannelOfTargets = _channel: _date: targets: + (pkgs.lib.rustLib.fromManifestFile rustManifest { + inherit (pkgs) stdenv lib fetchurl patchelf; + }).rust.override { + inherit targets; + extensions = ["rust-src"]; + }; + rust = rustChannelOfTargets "nightly" null targets; + rustPlatform = pkgs.recurseIntoAttrs (pkgs.makeRustPlatform { + rustc = rust; + cargo = rust; + }); + cargoSha256 = "0qb4s06jwgj3i9df6qq9gwcnyr3jq6dh4l5ygjghq5x1bmcqliix"; + buildStm32Firmware = { name, src, cargoDepsName ? name, patchPhase ? "", extraNativeBuildInputs ? [], checkPhase ? "", doCheck ? true, binaryName ? name, extraCargoBuildArgs ? "" }: + rustPlatform.buildRustPackage rec { + inherit name cargoDepsName; + version = "0.0.0"; + + inherit src; + inherit cargoSha256; + + inherit patchPhase; + nativeBuildInputs = [ pkgs.llvm ] ++ extraNativeBuildInputs; + buildPhase = '' + export CARGO_HOME=$(mktemp -d cargo-home.XXX) + cargo build --release --bin ${binaryName} ${extraCargoBuildArgs} + ''; + + inherit checkPhase doCheck; + # binaryName defaults to the `name` arg (i.e. the Rust package name); + # it is used as the Cargo binary filename + installPhase = '' + mkdir -p $out $out/nix-support + cp target/thumbv7em-none-eabihf/release/${binaryName} $out/${name}.elf + echo file binary-dist $out/${name}.elf >> $out/nix-support/hydra-build-products + llvm-objcopy -O binary target/thumbv7em-none-eabihf/release/${binaryName} $out/${name}.bin + echo file binary-dist $out/${name}.bin >> $out/nix-support/hydra-build-products + ''; + + dontFixup = true; + }; + in { + packages.x86_64-linux = rec { + thermostat = buildStm32Firmware { + name = "thermostat"; + src = self; + checkPhase = '' + cargo test --target=${pkgs.rust.toRustTarget pkgs.stdenv.targetPlatform}; + ''; + }; + }; + devShell.x86_64-linux = pkgs.mkShell { + name = "thermostat-dev-shell"; + buildInputs = with pkgs; [ + rustPlatform.rust.rustc + rustPlatform.rust.cargo + gcc openocd dfu-util + ] ++ (with python3Packages; [ + numpy matplotlib + ]); + }; + defaultPackage.x86_64-linux = pkgs.python3.withPackages(ps: [ ]); + }; +} \ No newline at end of file diff --git a/shell.nix b/shell.nix deleted file mode 100644 index d325fdc..0000000 --- a/shell.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ mozillaOverlay ? builtins.fetchTarball "https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz", - latestRustNightly ? false, -}: -let - pkgs = import { - overlays = [ (import mozillaOverlay) ]; - }; - rust = - if latestRustNightly - then pkgs.rustChannelOfTargets "nightly" null [ "thumbv7em-none-eabihf" ] - else (pkgs.recurseIntoAttrs ( - pkgs.callPackage (import ) {} - )).rust.cargo; -in -pkgs.mkShell { - name = "thermostat-env"; - buildInputs = with pkgs; [ - rust gcc - openocd dfu-util - ] ++ (with python3Packages; [ - numpy matplotlib - ]); -} -- 2.42.0 From e749a969710adb38022a8630aa6388f0aa369d5a Mon Sep 17 00:00:00 2001 From: mwojcik Date: Mon, 17 Jan 2022 16:44:42 +0800 Subject: [PATCH 2/7] flake: fix build, replace cargoSha256 -> cargoLock --- flake.nix | 80 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/flake.nix b/flake.nix index cf24d81..d5359ed 100644 --- a/flake.nix +++ b/flake.nix @@ -27,45 +27,51 @@ rustc = rust; cargo = rust; }); - cargoSha256 = "0qb4s06jwgj3i9df6qq9gwcnyr3jq6dh4l5ygjghq5x1bmcqliix"; - buildStm32Firmware = { name, src, cargoDepsName ? name, patchPhase ? "", extraNativeBuildInputs ? [], checkPhase ? "", doCheck ? true, binaryName ? name, extraCargoBuildArgs ? "" }: - rustPlatform.buildRustPackage rec { - inherit name cargoDepsName; - version = "0.0.0"; + thermostat = rustPlatform.buildRustPackage rec { + name = "thermostat"; + version = "0.0.0"; - inherit src; - inherit cargoSha256; - - inherit patchPhase; - nativeBuildInputs = [ pkgs.llvm ] ++ extraNativeBuildInputs; - buildPhase = '' - export CARGO_HOME=$(mktemp -d cargo-home.XXX) - cargo build --release --bin ${binaryName} ${extraCargoBuildArgs} - ''; - - inherit checkPhase doCheck; - # binaryName defaults to the `name` arg (i.e. the Rust package name); - # it is used as the Cargo binary filename - installPhase = '' - mkdir -p $out $out/nix-support - cp target/thumbv7em-none-eabihf/release/${binaryName} $out/${name}.elf - echo file binary-dist $out/${name}.elf >> $out/nix-support/hydra-build-products - llvm-objcopy -O binary target/thumbv7em-none-eabihf/release/${binaryName} $out/${name}.bin - echo file binary-dist $out/${name}.bin >> $out/nix-support/hydra-build-products - ''; - - dontFixup = true; - }; - in { - packages.x86_64-linux = rec { - thermostat = buildStm32Firmware { - name = "thermostat"; - src = self; - checkPhase = '' - cargo test --target=${pkgs.rust.toRustTarget pkgs.stdenv.targetPlatform}; - ''; + src = self; + cargoLock = { + lockFile = ./Cargo.lock; + outputHashes = { + "stm32-eth-0.2.0" = "sha256-HXRr/NDhdIKqyjdA4D8ZmcO1dDpDawdlYPUOwcEbPQk="; + "stm32f4xx-hal-0.8.3" = "sha256-MOv7tVtVMxr3IYMaN0Q8EQWxv3rubmCxjXMXuw/ZKAw="; + }; }; + + patchPhase = ""; + nativeBuildInputs = [ pkgs.llvm ]; + buildPhase = '' + export CARGO_HOME=$(mktemp -d cargo-home.XXX) + cargo build --release --bin thermostat + ''; + + checkPhase = '' + cargo test --target=${pkgs.rust.toRustTarget pkgs.stdenv.targetPlatform}; + ''; + + # binaryName defaults to the `name` arg (i.e. the Rust package name); + # it is used as the Cargo binary filename + installPhase = '' + mkdir -p $out $out/nix-support + cp target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.elf + echo file binary-dist $out/thermostat.elf >> $out/nix-support/hydra-build-products + llvm-objcopy -O binary target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.bin + echo file binary-dist $out/thermostat.bin >> $out/nix-support/hydra-build-products + ''; + + dontFixup = true; }; + in rec { + packages.x86_64-linux = rec { + inherit thermostat; + }; + + hydraJobs = { + inherit (packages.x86_64-linux) thermostat; + }; + devShell.x86_64-linux = pkgs.mkShell { name = "thermostat-dev-shell"; buildInputs = with pkgs; [ @@ -76,6 +82,6 @@ numpy matplotlib ]); }; - defaultPackage.x86_64-linux = pkgs.python3.withPackages(ps: [ ]); + defaultPackage.x86_64-linux = thermostat; }; } \ No newline at end of file -- 2.42.0 From af9f3903be49bc2d9fd779a64b53adaa54ac9393 Mon Sep 17 00:00:00 2001 From: mwojcik Date: Tue, 18 Jan 2022 10:55:26 +0800 Subject: [PATCH 3/7] flakes: cleanup --- flake.nix | 144 ++++++++++++++++++++++++++---------------------------- 1 file changed, 68 insertions(+), 76 deletions(-) diff --git a/flake.nix b/flake.nix index d5359ed..3bd8c51 100644 --- a/flake.nix +++ b/flake.nix @@ -1,87 +1,79 @@ { - description = "Firmware for the Sinara 8451 Thermostat"; + description = "Firmware for the Sinara 8451 Thermostat"; - inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11; - inputs.mozilla-overlay = { url = github:mozilla/nixpkgs-mozilla; flake = false; }; + inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11; + inputs.mozilla-overlay = { url = github:mozilla/nixpkgs-mozilla; flake = false; }; - outputs = { self, nixpkgs, mozilla-overlay }: - let - pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import mozilla-overlay) ]; }; - rustManifest = pkgs.fetchurl { - url = "https://static.rust-lang.org/dist/2020-10-30/channel-rust-nightly.toml"; - sha256 = "0iygcwzh8s0lfdghj5809krvzifc1ii1wm4sd3qqn7s0rz1s14hi"; - }; + outputs = { self, nixpkgs, mozilla-overlay }: + let + pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import mozilla-overlay) ]; }; + rustManifest = pkgs.fetchurl { + url = "https://static.rust-lang.org/dist/2020-10-30/channel-rust-nightly.toml"; + sha256 = "0iygcwzh8s0lfdghj5809krvzifc1ii1wm4sd3qqn7s0rz1s14hi"; + }; - targets = [ - "thumbv7em-none-eabihf" - ]; - rustChannelOfTargets = _channel: _date: targets: - (pkgs.lib.rustLib.fromManifestFile rustManifest { - inherit (pkgs) stdenv lib fetchurl patchelf; - }).rust.override { - inherit targets; - extensions = ["rust-src"]; - }; - rust = rustChannelOfTargets "nightly" null targets; - rustPlatform = pkgs.recurseIntoAttrs (pkgs.makeRustPlatform { - rustc = rust; - cargo = rust; - }); - thermostat = rustPlatform.buildRustPackage rec { - name = "thermostat"; - version = "0.0.0"; + targets = [ + "thumbv7em-none-eabihf" + ]; + rustChannelOfTargets = _channel: _date: targets: + (pkgs.lib.rustLib.fromManifestFile rustManifest { + inherit (pkgs) stdenv lib fetchurl patchelf; + }).rust.override { + inherit targets; + extensions = ["rust-src"]; + }; + rust = rustChannelOfTargets "nightly" null targets; + rustPlatform = pkgs.recurseIntoAttrs (pkgs.makeRustPlatform { + rustc = rust; + cargo = rust; + }); + thermostat = rustPlatform.buildRustPackage rec { + name = "thermostat"; + version = "0.0.0"; - src = self; - cargoLock = { - lockFile = ./Cargo.lock; - outputHashes = { - "stm32-eth-0.2.0" = "sha256-HXRr/NDhdIKqyjdA4D8ZmcO1dDpDawdlYPUOwcEbPQk="; - "stm32f4xx-hal-0.8.3" = "sha256-MOv7tVtVMxr3IYMaN0Q8EQWxv3rubmCxjXMXuw/ZKAw="; - }; - }; + src = self; + cargoLock = { + lockFile = ./Cargo.lock; + outputHashes = { + "stm32-eth-0.2.0" = "sha256-HXRr/NDhdIKqyjdA4D8ZmcO1dDpDawdlYPUOwcEbPQk="; + "stm32f4xx-hal-0.8.3" = "sha256-MOv7tVtVMxr3IYMaN0Q8EQWxv3rubmCxjXMXuw/ZKAw="; + }; + }; - patchPhase = ""; - nativeBuildInputs = [ pkgs.llvm ]; - buildPhase = '' - export CARGO_HOME=$(mktemp -d cargo-home.XXX) - cargo build --release --bin thermostat - ''; + nativeBuildInputs = [ pkgs.llvm ]; + buildPhase = '' + cargo build --release --bin thermostat + ''; - checkPhase = '' - cargo test --target=${pkgs.rust.toRustTarget pkgs.stdenv.targetPlatform}; - ''; + installPhase = '' + mkdir -p $out $out/nix-support + cp target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.elf + echo file binary-dist $out/thermostat.elf >> $out/nix-support/hydra-build-products + llvm-objcopy -O binary target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.bin + echo file binary-dist $out/thermostat.bin >> $out/nix-support/hydra-build-products + ''; - # binaryName defaults to the `name` arg (i.e. the Rust package name); - # it is used as the Cargo binary filename - installPhase = '' - mkdir -p $out $out/nix-support - cp target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.elf - echo file binary-dist $out/thermostat.elf >> $out/nix-support/hydra-build-products - llvm-objcopy -O binary target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.bin - echo file binary-dist $out/thermostat.bin >> $out/nix-support/hydra-build-products - ''; + dontFixup = true; + }; + in rec { + packages.x86_64-linux = rec { + inherit thermostat; + }; - dontFixup = true; - }; - in rec { - packages.x86_64-linux = rec { - inherit thermostat; - }; + hydraJobs = { + inherit (packages.x86_64-linux) thermostat; + }; - hydraJobs = { - inherit (packages.x86_64-linux) thermostat; - }; - - devShell.x86_64-linux = pkgs.mkShell { - name = "thermostat-dev-shell"; - buildInputs = with pkgs; [ - rustPlatform.rust.rustc - rustPlatform.rust.cargo - gcc openocd dfu-util - ] ++ (with python3Packages; [ - numpy matplotlib - ]); - }; - defaultPackage.x86_64-linux = thermostat; - }; + devShell.x86_64-linux = pkgs.mkShell { + name = "thermostat-dev-shell"; + buildInputs = with pkgs; [ + rustPlatform.rust.rustc + rustPlatform.rust.cargo + gcc openocd dfu-util + ] ++ (with python3Packages; [ + numpy matplotlib + ]); + }; + defaultPackage.x86_64-linux = thermostat; + }; } \ No newline at end of file -- 2.42.0 From 2108ab0782a643aff812d9f0f95a0ffaeaeb57c1 Mon Sep 17 00:00:00 2001 From: mwojcik Date: Tue, 18 Jan 2022 10:55:52 +0800 Subject: [PATCH 4/7] readme: update build instructions for flakes --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3d8acc5..91a0cf4 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,22 @@ ### Reproducible build with Nix -See the `mcu` folder of the [nix-scripts repository](https://git.m-labs.hk/M-Labs/nix-scripts). +Thermostat firmware is packaged using the [Nix](https://nixos.org) Flakes system. Install Nix 2.4+ and enable flakes by adding ``experimental-features = nix-command flakes`` to ``nix.conf`` (e.g. ``~/.config/nix/nix.conf``). + +Once you have Flakes enabled, you can use ``nix build`` to build the firmware. ### Development environment -Clone this repository and [nix-scripts](https://git.m-labs.hk/M-Labs/nix-scripts). +Clone this repository and with Nix Flakes enabled, use the following commands: ```shell -nix-shell -I nix-scripts=[path to nix-scripts checkout] +nix develop cargo build --release ``` -The resulting ELF file will be located under `target/thumbv7em-none-eabihf/release/thermostat` +The resulting ELF file will be located under `target/thumbv7em-none-eabihf/release/thermostat`. -Alternatively, you can install the Rust toolchain without Nix using rustup; see the channel manifest file in nix-scripts (`channel-rust-nightly.toml`) to determine which Rust version to use. +Alternatively, you can install the Rust toolchain without Nix using rustup; see the Rust manifest file pulled in `flake.nix` to determine which Rust version to use. ## Debugging -- 2.42.0 From 30b932127ad957319b233e7fed61c323d9014846 Mon Sep 17 00:00:00 2001 From: mwojcik Date: Tue, 18 Jan 2022 10:58:38 +0800 Subject: [PATCH 5/7] flakes: 2 spaces indent --- flake.nix | 116 +++++++++++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/flake.nix b/flake.nix index 3bd8c51..e0a7c9a 100644 --- a/flake.nix +++ b/flake.nix @@ -1,79 +1,79 @@ { - description = "Firmware for the Sinara 8451 Thermostat"; + description = "Firmware for the Sinara 8451 Thermostat"; - inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11; - inputs.mozilla-overlay = { url = github:mozilla/nixpkgs-mozilla; flake = false; }; + inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11; + inputs.mozilla-overlay = { url = github:mozilla/nixpkgs-mozilla; flake = false; }; - outputs = { self, nixpkgs, mozilla-overlay }: - let - pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import mozilla-overlay) ]; }; - rustManifest = pkgs.fetchurl { - url = "https://static.rust-lang.org/dist/2020-10-30/channel-rust-nightly.toml"; - sha256 = "0iygcwzh8s0lfdghj5809krvzifc1ii1wm4sd3qqn7s0rz1s14hi"; - }; + outputs = { self, nixpkgs, mozilla-overlay }: + let + pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import mozilla-overlay) ]; }; + rustManifest = pkgs.fetchurl { + url = "https://static.rust-lang.org/dist/2020-10-30/channel-rust-nightly.toml"; + sha256 = "0iygcwzh8s0lfdghj5809krvzifc1ii1wm4sd3qqn7s0rz1s14hi"; + }; - targets = [ - "thumbv7em-none-eabihf" - ]; - rustChannelOfTargets = _channel: _date: targets: - (pkgs.lib.rustLib.fromManifestFile rustManifest { - inherit (pkgs) stdenv lib fetchurl patchelf; - }).rust.override { - inherit targets; - extensions = ["rust-src"]; - }; + targets = [ + "thumbv7em-none-eabihf" + ]; + rustChannelOfTargets = _channel: _date: targets: + (pkgs.lib.rustLib.fromManifestFile rustManifest { + inherit (pkgs) stdenv lib fetchurl patchelf; + }).rust.override { + inherit targets; + extensions = ["rust-src"]; + }; rust = rustChannelOfTargets "nightly" null targets; rustPlatform = pkgs.recurseIntoAttrs (pkgs.makeRustPlatform { rustc = rust; cargo = rust; }); - thermostat = rustPlatform.buildRustPackage rec { - name = "thermostat"; - version = "0.0.0"; + thermostat = rustPlatform.buildRustPackage rec { + name = "thermostat"; + version = "0.0.0"; - src = self; - cargoLock = { - lockFile = ./Cargo.lock; - outputHashes = { - "stm32-eth-0.2.0" = "sha256-HXRr/NDhdIKqyjdA4D8ZmcO1dDpDawdlYPUOwcEbPQk="; - "stm32f4xx-hal-0.8.3" = "sha256-MOv7tVtVMxr3IYMaN0Q8EQWxv3rubmCxjXMXuw/ZKAw="; - }; - }; + src = self; + cargoLock = { + lockFile = ./Cargo.lock; + outputHashes = { + "stm32-eth-0.2.0" = "sha256-HXRr/NDhdIKqyjdA4D8ZmcO1dDpDawdlYPUOwcEbPQk="; + "stm32f4xx-hal-0.8.3" = "sha256-MOv7tVtVMxr3IYMaN0Q8EQWxv3rubmCxjXMXuw/ZKAw="; + }; + }; - nativeBuildInputs = [ pkgs.llvm ]; - buildPhase = '' - cargo build --release --bin thermostat - ''; + nativeBuildInputs = [ pkgs.llvm ]; + buildPhase = '' + cargo build --release --bin thermostat + ''; - installPhase = '' + installPhase = '' mkdir -p $out $out/nix-support cp target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.elf echo file binary-dist $out/thermostat.elf >> $out/nix-support/hydra-build-products llvm-objcopy -O binary target/thumbv7em-none-eabihf/release/thermostat $out/thermostat.bin echo file binary-dist $out/thermostat.bin >> $out/nix-support/hydra-build-products - ''; + ''; - dontFixup = true; - }; - in rec { - packages.x86_64-linux = rec { - inherit thermostat; - }; + dontFixup = true; + }; + in rec { + packages.x86_64-linux = rec { + inherit thermostat; + }; - hydraJobs = { - inherit (packages.x86_64-linux) thermostat; - }; + hydraJobs = { + inherit (packages.x86_64-linux) thermostat; + }; - devShell.x86_64-linux = pkgs.mkShell { - name = "thermostat-dev-shell"; - buildInputs = with pkgs; [ - rustPlatform.rust.rustc - rustPlatform.rust.cargo - gcc openocd dfu-util - ] ++ (with python3Packages; [ - numpy matplotlib - ]); - }; - defaultPackage.x86_64-linux = thermostat; - }; + devShell.x86_64-linux = pkgs.mkShell { + name = "thermostat-dev-shell"; + buildInputs = with pkgs; [ + rustPlatform.rust.rustc + rustPlatform.rust.cargo + gcc openocd dfu-util + ] ++ (with python3Packages; [ + numpy matplotlib + ]); + }; + defaultPackage.x86_64-linux = thermostat; + }; } \ No newline at end of file -- 2.42.0 From 5e42de5ed9a9c8eae8960042c04805a1e5e4c37d Mon Sep 17 00:00:00 2001 From: mwojcik Date: Tue, 18 Jan 2022 11:27:57 +0800 Subject: [PATCH 6/7] flake: removed unnecessary gcc --- flake.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index e0a7c9a..a55c902 100644 --- a/flake.nix +++ b/flake.nix @@ -41,6 +41,7 @@ }; nativeBuildInputs = [ pkgs.llvm ]; + buildPhase = '' cargo build --release --bin thermostat ''; @@ -69,7 +70,7 @@ buildInputs = with pkgs; [ rustPlatform.rust.rustc rustPlatform.rust.cargo - gcc openocd dfu-util + openocd dfu-util ] ++ (with python3Packages; [ numpy matplotlib ]); -- 2.42.0 From 7f427fbc2a049c468d7dd5068ca3f2a2c65038ca Mon Sep 17 00:00:00 2001 From: mwojcik Date: Wed, 19 Jan 2022 10:24:15 +0800 Subject: [PATCH 7/7] flake: remove unnecessary rec --- flake.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index a55c902..2c41e1e 100644 --- a/flake.nix +++ b/flake.nix @@ -56,13 +56,13 @@ dontFixup = true; }; - in rec { - packages.x86_64-linux = rec { + in { + packages.x86_64-linux = { inherit thermostat; }; hydraJobs = { - inherit (packages.x86_64-linux) thermostat; + inherit thermostat; }; devShell.x86_64-linux = pkgs.mkShell { -- 2.42.0