43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ pkgs, ... }:
 | 
						|
 | 
						|
with pkgs;
 | 
						|
 | 
						|
writeShellApplication {
 | 
						|
  name = "build-glove80";
 | 
						|
 | 
						|
  runtimeInputs = [
 | 
						|
    cachix
 | 
						|
    git
 | 
						|
    nix
 | 
						|
  ];
 | 
						|
 | 
						|
  text = ''
 | 
						|
    BRANCH="''${1:-main}"
 | 
						|
    SRC_DIR="''${PWD}/src"
 | 
						|
    CONFIG_DIR="''${PWD}/config"
 | 
						|
    NIX_FILE="''${CONFIG_DIR}/default.nix"
 | 
						|
 | 
						|
    # Ensure cachix is configured
 | 
						|
    echo "Using moergo-glove80-zmk-dev cache"
 | 
						|
    cachix use moergo-glove80-zmk-dev
 | 
						|
 | 
						|
    # Clone or update the ZMK repository
 | 
						|
    if [ ! -d "$SRC_DIR" ]; then
 | 
						|
      echo "Cloning ZMK repository into ./src..."
 | 
						|
      git clone https://github.com/moergo-sc/zmk "$SRC_DIR"
 | 
						|
    else
 | 
						|
      echo "Updating ZMK repository in ./src..."
 | 
						|
      git -C "$SRC_DIR" fetch --all
 | 
						|
    fi
 | 
						|
 | 
						|
    # Checkout the specified branch or tag
 | 
						|
    echo "Checking out branch/tag: $BRANCH in ./src"
 | 
						|
    git -C "$SRC_DIR" checkout -q --detach "$BRANCH"
 | 
						|
 | 
						|
    # Build firmware using Nix
 | 
						|
    echo "Building firmware from: $NIX_FILE"
 | 
						|
    nix-build "$NIX_FILE" --arg firmware "import ''${SRC_DIR}/default.nix {}" -j2 -o ./glove80.uf2 --show-trace
 | 
						|
 | 
						|
    echo "Firmware built successfully: $(realpath ./glove80.uf2)"
 | 
						|
  '';
 | 
						|
}
 |