summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cargo/config.toml3
-rw-r--r--flake.lock107
-rw-r--r--flake.nix39
-rw-r--r--src/main.rs5
4 files changed, 128 insertions, 26 deletions
diff --git a/.cargo/config.toml b/.cargo/config.toml
index e5798f8..637097c 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -1,5 +1,6 @@
[target.riscv32imac-unknown-none-elf]
-runner = "sudo espflash flash --monitor --chip esp32c6"
+# UPDATE flake.nix to reflect any changes here in the wrapper script
+runner = "espflash flash --monitor --chip esp32c6"
[env]
ESP_LOG="info"
diff --git a/flake.lock b/flake.lock
index 3db9376..dd312e0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,69 @@
{
"nodes": {
+ "fenix": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "rust-analyzer-src": "rust-analyzer-src"
+ },
+ "locked": {
+ "lastModified": 1775462255,
+ "narHash": "sha256-YRzdvh6nvMebcgO2nDpr8dqVwKHpp1BBRUHeMxX9UAY=",
+ "owner": "nix-community",
+ "repo": "fenix",
+ "rev": "f90343f1ed330243d4bbdbce51acbd93b776a797",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "fenix",
+ "type": "github"
+ }
+ },
+ "fenix_2": {
+ "inputs": {
+ "nixpkgs": [
+ "naersk",
+ "nixpkgs"
+ ],
+ "rust-analyzer-src": "rust-analyzer-src_2"
+ },
+ "locked": {
+ "lastModified": 1752475459,
+ "narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
+ "owner": "nix-community",
+ "repo": "fenix",
+ "rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "fenix",
+ "type": "github"
+ }
+ },
+ "naersk": {
+ "inputs": {
+ "fenix": "fenix_2",
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1769799857,
+ "narHash": "sha256-88IFXZ7Sa1vxbz5pty0Io5qEaMQMMUPMonLa3Ls/ss4=",
+ "owner": "nix-community",
+ "repo": "naersk",
+ "rev": "9d4ed44d8b8cecdceb1d6fd76e74123d90ae6339",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "naersk",
+ "type": "github"
+ }
+ },
"nixpkgs": {
"locked": {
"lastModified": 1775403759,
@@ -18,27 +82,42 @@
},
"root": {
"inputs": {
- "nixpkgs": "nixpkgs",
- "rust-overlay": "rust-overlay"
+ "fenix": "fenix",
+ "naersk": "naersk",
+ "nixpkgs": "nixpkgs"
}
},
- "rust-overlay": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
+ "rust-analyzer-src": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1775429583,
+ "narHash": "sha256-bFC/p7Ywyd9QIr9DbU3Q75c7AcaCm9wVmEvcI3702cY=",
+ "owner": "rust-lang",
+ "repo": "rust-analyzer",
+ "rev": "38fb8f92ac15853d7fa9fb47fc2d81fdd5cd6c7e",
+ "type": "github"
},
+ "original": {
+ "owner": "rust-lang",
+ "ref": "nightly",
+ "repo": "rust-analyzer",
+ "type": "github"
+ }
+ },
+ "rust-analyzer-src_2": {
+ "flake": false,
"locked": {
- "lastModified": 1775445266,
- "narHash": "sha256-3fgIj85WHQbOamrpIw9WY3ZL1PoEvjPOjmzMYNsEQJo=",
- "owner": "oxalica",
- "repo": "rust-overlay",
- "rev": "61747bc3cf2da179b9af356ae9e70f3b895b0c24",
+ "lastModified": 1752428706,
+ "narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
+ "owner": "rust-lang",
+ "repo": "rust-analyzer",
+ "rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
"type": "github"
},
"original": {
- "owner": "oxalica",
- "repo": "rust-overlay",
+ "owner": "rust-lang",
+ "ref": "nightly",
+ "repo": "rust-analyzer",
"type": "github"
}
}
diff --git a/flake.nix b/flake.nix
index 08806f4..9d42c39 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,32 +1,53 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
- rust-overlay = {
+ fenix = {
inputs.nixpkgs.follows = "nixpkgs";
- url = "github:oxalica/rust-overlay";
+ url = "github:nix-community/fenix";
+ };
+ naersk = {
+ inputs.nixpkgs.follows = "nixpkgs";
+ url = "github:nix-community/naersk";
};
};
outputs = {
+ fenix,
+ naersk,
nixpkgs,
- rust-overlay,
...
}: let
- pkgs = import nixpkgs {
- system = "x86_64-linux";
- overlays = [(import rust-overlay)];
+ pkgs = nixpkgs.legacyPackages.x86_64-linux;
+ toolchain = fenix.packages.x86_64-linux.fromToolchainFile {
+ file = ./rust-toolchain.toml;
+ sha256 = "sha256-zC8E38iDVJ1oPIzCqTk/Ujo9+9kx9dXq7wAwPMpkpg0=";
};
- rust-bin = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
in {
devShells.x86_64-linux.default = pkgs.mkShell {
buildInputs = [
pkgs.espflash
pkgs.esp-generate
pkgs.rust-analyzer
- rust-bin
+ toolchain
];
shellHook = ''
- export RUSTUP_TOOLCHAIN=${rust-bin}
+ export RUSTUP_TOOLCHAIN=${toolchain}
'';
};
+ packages.x86_64-linux.default =
+ (naersk.lib.x86_64-linux.override {
+ cargo = toolchain;
+ rustc = toolchain;
+ }).buildPackage {
+ src = ./.;
+ # UPDATE .cargo/config.toml to reflect changes here in the runner
+ postInstall = ''
+ mv $out/bin/esp32c6-play $out/bin/.esp32c6-play
+ cat<<EOF>$out/bin/esp32c6-play
+ #!/usr/bin/bash
+ ${pkgs.lib.getExe pkgs.espflash} flash --monitor --chip esp32c6 $(echo $out)/bin/.esp32c6-play
+ EOF
+ chmod +x $out/bin/esp32c6-play
+ '';
+ };
};
}
diff --git a/src/main.rs b/src/main.rs
index 312fe20..960438f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -16,9 +16,9 @@ esp_bootloader_esp_idf::esp_app_desc!();
fn main() -> ! {
let peripherals = init();
- let mut led_buffer = smart_led_buffer!(1);
+ let mut led_buffer = smart_led_buffer!(1 /* # of leds */);
let mut rgb_led = {
- let frequency = Rate::from_mhz(80);
+ let frequency = Rate::from_mhz(80); // max frequency of RMT
let rmt = Rmt::new(peripherals.RMT, frequency).expect("failed to initialize RMT0");
SmartLedsAdapter::new(rmt.channel0, peripherals.GPIO8, &mut led_buffer)
};
@@ -28,6 +28,7 @@ fn main() -> ! {
let r: u8 = i;
let g: u8 = i + 255 / 3; // phase shifted a third
let b: u8 = i + 2 * (255 / 3); // phase shifted two thirds
+
write_rgb(&mut rgb_led, RGB::new(sin(r), sin(g), sin(b)));
wait_ms(8);