Go to file
Esteban Blanc 76a0197bb6 Fix devShells in the example flake.nix
When trying to use the example flake.nix, the following error is given: "error: flake output attribute 'devShell.x86_64-linux' is not a derivation or path"
This is due to a missing 's' in 'devShells.x86_64-linux'
2024-03-02 15:10:03 +13:00
.github/workflows Remove macos from testing matrix 2024-02-09 12:48:38 +13:00
README.md Fix devShells in the example flake.nix 2024-03-02 15:10:03 +13:00
default.nix Add openocd with zephyr patches 2024-02-09 13:56:59 +13:00
flake.lock Pin nixpkgs to stable 2024-02-20 16:50:20 +13:00
flake.nix Pin nixpkgs to stable 2024-02-20 16:50:20 +13:00
python.nix Add compat hacks, make python version constraints a warning 2024-02-06 19:42:29 +13:00
sdk.json Initial 2024-02-06 16:48:31 +13:00
update-sdk Initial 2024-02-06 16:48:31 +13:00

README.md

zephyr-nix

Develop Zephyr projects using Nix

Features

  • SDK packaging

    • sdk

    The minimal SDK. Can be overriden with additional targets.

    sdk.override {
      targets = [
        "arm-zephyr-eabi"
      ];
    }
    
    • sdkFull

    SDK with all targets enabled.

  • Host tools packaging

    • hosttools

    Binary hosttools from the Zephyr SDK. Because of libc incompatibilities not all binaries in this derivation actually works.

    • hosttools-nix

    A re-packaging of the Zephyr SDK hosttools using nixpkgs packages.

Basic usage

  • shell.nix
{ mkShell
, zephyr
, callPackage
, cmake
, ninja
, lib
}:

mkShell {
  packages = [
    (zephyr.sdk.override {
      targets = [
        "arm-zephyr-eabi"
      ];
    })
    zephyr.pythonEnv
    # Use zephyr.hosttools-nix to use nixpkgs built tooling instead of official Zephyr binaries
    zephyr.hosttools
    cmake
    ninja
  ];

}

Flakes usage

  • flake.nix
{
  description = "A very basic Zephyr flake";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

    # Customize the version of Zephyr used by the flake here
    zephyr.url = "github:zephyrproject-rtos/zephyr/v3.5.0";
    zephyr.flake = false;

    zephyr-nix.url = "github:adisbladis/zephyr-nix";
    zephyr-nix.inputs.nixpkgs.follows = "nixpkgs";
    zephyr-nix.inputs.zephyr.follows = "zephyr";
  };

  outputs = { self, nixpkgs, zephyr-nix, ... }: let
    pkgs = nixpkgs.legacyPackages.x86_64-linux;
    zephyr = zephyr-nix.packages.x86_64-linux;
  in {
    devShells.x86_64-linux.default = pkgs.mkShell {
      # Use the same mkShell as documented above
    };
  };
}