mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	fix ci and make it reproducible
This commit is contained in:
		
							
								
								
									
										97
									
								
								tests/flake.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								tests/flake.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
			
		||||
{
 | 
			
		||||
  description = "Test flake for nixos-hardware";
 | 
			
		||||
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixos-unstable-small.url = "github:NixOS/nixpkgs/nixos-unstable-small";
 | 
			
		||||
    nixos-stable.url = "github:NixOS/nixpkgs/nixos-24.05";
 | 
			
		||||
    # override in the test
 | 
			
		||||
    nixos-hardware.url = "github:NixOS/nixos-hardware";
 | 
			
		||||
    flake-parts.url = "github:hercules-ci/flake-parts";
 | 
			
		||||
    flake-parts.inputs.nixpkgs-lib.follows = "nixos-unstable-small";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs =
 | 
			
		||||
    inputs@{ flake-parts, ... }:
 | 
			
		||||
    flake-parts.lib.mkFlake { inherit inputs; } {
 | 
			
		||||
      systems = [
 | 
			
		||||
        "aarch64-linux"
 | 
			
		||||
        "x86_64-linux"
 | 
			
		||||
        "riscv64-linux"
 | 
			
		||||
      ];
 | 
			
		||||
      perSystem =
 | 
			
		||||
        {
 | 
			
		||||
          system,
 | 
			
		||||
          lib,
 | 
			
		||||
          pkgs,
 | 
			
		||||
          inputs',
 | 
			
		||||
          ...
 | 
			
		||||
        }:
 | 
			
		||||
        let
 | 
			
		||||
          blackList = [
 | 
			
		||||
            # does import-from-derivation
 | 
			
		||||
            "toshiba-swanky"
 | 
			
		||||
            # uses custom nixpkgs config
 | 
			
		||||
            "raspberry-pi-2"
 | 
			
		||||
 | 
			
		||||
            # deprecated profiles
 | 
			
		||||
            "framework"
 | 
			
		||||
            "asus-zephyrus-ga402x"
 | 
			
		||||
            "lenovo-yoga-7-14ARH7"
 | 
			
		||||
          ];
 | 
			
		||||
 | 
			
		||||
          # There are more, but for those we need to force it.
 | 
			
		||||
          # In future we should probably already define it in our module.
 | 
			
		||||
          aarch64Systems = [
 | 
			
		||||
            "raspberry-pi-3"
 | 
			
		||||
            "raspberry-pi-4"
 | 
			
		||||
            "raspberry-pi-5"
 | 
			
		||||
          ];
 | 
			
		||||
 | 
			
		||||
          matchArch =
 | 
			
		||||
            moduleName:
 | 
			
		||||
            if builtins.elem moduleName aarch64Systems then
 | 
			
		||||
              pkgs.hostPlatform.system == "aarch64-linux"
 | 
			
		||||
            else
 | 
			
		||||
              # TODO also add riscv64
 | 
			
		||||
              pkgs.hostPlatform.system == "x86_64-linux";
 | 
			
		||||
 | 
			
		||||
          modules = lib.filterAttrs (
 | 
			
		||||
            name: _: !(builtins.elem name blackList || lib.hasPrefix "common-" name) && matchArch name
 | 
			
		||||
          ) inputs.nixos-hardware.nixosModules;
 | 
			
		||||
          buildProfile = import ./build-profile.nix;
 | 
			
		||||
 | 
			
		||||
          unfreeNixpkgs =
 | 
			
		||||
            importPath:
 | 
			
		||||
            import inputs.nixos-unstable-small {
 | 
			
		||||
              config = {
 | 
			
		||||
                allowBroken = true;
 | 
			
		||||
                allowUnfree = true;
 | 
			
		||||
                nvidia.acceptLicense = true;
 | 
			
		||||
              };
 | 
			
		||||
              overlays = [ ];
 | 
			
		||||
              inherit system;
 | 
			
		||||
            };
 | 
			
		||||
          nixpkgsUnstable = unfreeNixpkgs inputs'.nixos-unstable-small;
 | 
			
		||||
          nixpkgsStable = unfreeNixpkgs inputs.nixos-stable;
 | 
			
		||||
 | 
			
		||||
          checksForNixpkgs =
 | 
			
		||||
            channel: nixpkgs:
 | 
			
		||||
            lib.mapAttrs' (
 | 
			
		||||
              name: module:
 | 
			
		||||
              lib.nameValuePair "${channel}-${name}" (buildProfile {
 | 
			
		||||
                pkgs = nixpkgs;
 | 
			
		||||
                profile = module;
 | 
			
		||||
              })
 | 
			
		||||
            ) modules;
 | 
			
		||||
        in
 | 
			
		||||
        {
 | 
			
		||||
          _module.args.pkgs = nixpkgsUnstable;
 | 
			
		||||
          checks = checksForNixpkgs "nixos-unstable" nixpkgsUnstable // checksForNixpkgs "nixos-stable" nixpkgsStable;
 | 
			
		||||
          packages.run = pkgs.writeShellScriptBin "run.py" ''
 | 
			
		||||
            #!${pkgs.bash}/bin/bash
 | 
			
		||||
            export PATH=${lib.makeBinPath [ pkgs.nix-eval-jobs pkgs.nix-eval-jobs.nix ]}
 | 
			
		||||
            exec ${pkgs.python3.interpreter} ${./.}/run.py --nixos-hardware "$@"
 | 
			
		||||
          '';
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user