mirror of
				https://github.com/nmasur/dotfiles
				synced 2025-11-04 11:43:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			855 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			855 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
_inputs: _final: prev:
 | 
						|
 | 
						|
let
 | 
						|
  listToAttrsByPnameOrName =
 | 
						|
    list:
 | 
						|
    builtins.listToAttrs (
 | 
						|
      map (v: {
 | 
						|
        name = v."pname" or v."name";
 | 
						|
        value = v;
 | 
						|
      }) list
 | 
						|
    );
 | 
						|
  lib = prev.lib;
 | 
						|
  # [ package1/package.nix package2/package.nix package2/hello.sh ]
 | 
						|
  packages = lib.pipe (lib.filesystem.listFilesRecursive ../pkgs) [
 | 
						|
    # Get only files called package.nix
 | 
						|
    # [ package1/package.nix package2/package.nix ]
 | 
						|
    (builtins.filter (name: lib.hasSuffix "package.nix" name))
 | 
						|
 | 
						|
    # Apply callPackage to create a derivation
 | 
						|
    # Must use final.callPackage to avoid infinite recursion
 | 
						|
    # [ package1.drv package2.drv ]
 | 
						|
    (builtins.map (name: prev.callPackage name { }))
 | 
						|
 | 
						|
    # Convert the list to an attrset
 | 
						|
    # { package1 = package1.drv, package2 = package2.drv }
 | 
						|
    listToAttrsByPnameOrName
 | 
						|
  ];
 | 
						|
in
 | 
						|
 | 
						|
{
 | 
						|
  nmasur = packages;
 | 
						|
}
 |