50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  inputs = {
 | 
						|
    flake-parts.url = "github:hercules-ci/flake-parts";
 | 
						|
    devshell.url = "github:numtide/devshell";
 | 
						|
    devshell.inputs.nixpkgs.follows = "nixpkgs";
 | 
						|
    devenv.url = "github:cachix/devenv";
 | 
						|
    devenv.inputs.nixpkgs.follows = "nixpkgs";
 | 
						|
 | 
						|
    rootdir = {
 | 
						|
      url = "file+file:///dev/null";
 | 
						|
      flake = false;
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  outputs = inputs@{ nixpkgs, flake-parts, devenv, rootdir, ... }:
 | 
						|
    flake-parts.lib.mkFlake { inherit inputs; } {
 | 
						|
      imports = [
 | 
						|
        devenv.flakeModule
 | 
						|
      ];
 | 
						|
      systems = [ "x86_64-linux" ];
 | 
						|
 | 
						|
      perSystem = { inputs', system, pkgs, config, ... }:
 | 
						|
      let
 | 
						|
        rootdirOpt =
 | 
						|
          let
 | 
						|
            rootFileContent = builtins.readFile rootdir.outPath;
 | 
						|
          in
 | 
						|
          pkgs.lib.mkIf (rootFileContent != "") rootFileContent;
 | 
						|
      in
 | 
						|
      {
 | 
						|
        devenv.shells.mcu = {
 | 
						|
          devenv.root = rootdirOpt;
 | 
						|
 | 
						|
          packages = with pkgs; [
 | 
						|
            gnumake
 | 
						|
            cmake
 | 
						|
            gcc-arm-embedded
 | 
						|
            python3
 | 
						|
            picotool
 | 
						|
            openocd-rp2040
 | 
						|
          ];
 | 
						|
 | 
						|
          env = {
 | 
						|
            PICO_SDK_PATH = "${pkgs.pico-sdk}/lib/pico-sdk";
 | 
						|
          };
 | 
						|
        };
 | 
						|
      };
 | 
						|
    };
 | 
						|
}
 |