{ inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; outputs = { self, nixpkgs, }: let supportedSystems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f { pkgs = import nixpkgs { inherit system; config.allowUnfree = true; config.segger-jlink.acceptLicense = true; config.permittedInsecurePackages = [ "segger-jlink-qt4-796s" ]; }; }); in { devShells = forEachSupportedSystem ({pkgs}: { default = pkgs.mkShell.override { # Override stdenv in order to change compiler: # stdenv = pkgs.clangStdenv; # stdenv = pkgs.pkgsCross.arm-embedded.stdenv; } { packages = with pkgs; [ # pkgsCross.arm-embedded.stdenv.cc # pkgsCross.arm-embedded.buildPackages.gdb gcc-arm-embedded-13 # replaces above packages since gcc compiles libc in arm, not thumb2 segger-jlink clang-tools cmake codespell conan cppcheck ] ++ ( if system == "aarch64-darwin" then [] else [gdb] ); }; }); }; }