Initial firmware infra
This commit is contained in:
		
							
								
								
									
										1
									
								
								firmware/.envrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								firmware/.envrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
use flake ..#firmware --override-input rootdir "file+file://"<(printf %s "$PWD")
 | 
			
		||||
							
								
								
									
										1
									
								
								firmware/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								firmware/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
/result
 | 
			
		||||
							
								
								
									
										19
									
								
								firmware/base.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								firmware/base.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
{ lib, ... }:
 | 
			
		||||
let
 | 
			
		||||
  inherit (lib) mkOption;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  options.my.build = {
 | 
			
		||||
    image = mkOption {
 | 
			
		||||
      description = "Final output image for distribution.";
 | 
			
		||||
      type = lib.types.unspecified;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    system = {
 | 
			
		||||
      stateVersion = "24.11";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										32
									
								
								firmware/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								firmware/default.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
{ inputs, ... }:
 | 
			
		||||
let
 | 
			
		||||
  mkSystem = target: inputs.nixpkgs.lib.nixosSystem {
 | 
			
		||||
    modules = [
 | 
			
		||||
      ./base.nix
 | 
			
		||||
      target
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  flake.nixosConfigurations = {
 | 
			
		||||
    qclk-rpi3 = mkSystem target/rpi3.nix;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  perSystem = { libMy, pkgs, ... }: {
 | 
			
		||||
    devenv.shells.firmware = libMy.withRootdir {
 | 
			
		||||
      packages = with pkgs; [
 | 
			
		||||
        nixos-rebuild
 | 
			
		||||
        nixVersions.latest
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      scripts = {
 | 
			
		||||
        build.exec = ''
 | 
			
		||||
          nix build "..#nixosConfigurations.qclk-$1.config.system.build.toplevel"
 | 
			
		||||
        '';
 | 
			
		||||
        build-image.exec = ''
 | 
			
		||||
          nix build "..#nixosConfigurations.qclk-$1.config.my.build.image"
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								firmware/target/rpi3.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								firmware/target/rpi3.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
{ pkgs, modulesPath, config, ... }: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    "${modulesPath}/installer/sd-card/sd-image-aarch64.nix"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  nixpkgs.system = "aarch64-linux";
 | 
			
		||||
  my.build.image = config.system.build.sdImage;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user