In Nixpkgs, the attribute in all-packages.nix corresponding to a
package is usually equal to the package name.  However, this doesn't
work if the package contains a dash, which is fairly common.  The
convention is to replace the dash with an underscore (e.g. "dbus-lib"
becomes "dbus_glib"), but that's annoying.  So now dashes are valid in
variable / attribute names, allowing you to write:
  dbus-glib = callPackage ../development/libraries/dbus-glib { };
and
  buildInputs = [ dbus-glib ];
Since we don't have a negation or subtraction operation in Nix, this
is unambiguous.
		
	
			
		
			
				
	
	
		
			21 lines
		
	
	
	
		
			405 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
	
		
			405 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| with import ./lib.nix;
 | |
| 
 | |
| let
 | |
| 
 | |
|   as = { x.y.z = 123; a.b.c = 456; };
 | |
| 
 | |
|   bs = { f-o-o.bar = "foo"; };
 | |
| 
 | |
|   or = x: y: x || y;
 | |
|   
 | |
| in
 | |
|   [ as.x.y.z
 | |
|     as.foo or "foo"
 | |
|     as.x.y.bla or as.a.b.c
 | |
|     as.a.b.c or as.x.y.z
 | |
|     as.x.y.bla or bs.f-o-o.bar or "xyzzy"
 | |
|     as.x.y.bla or bs.bar.foo or "xyzzy"
 | |
|     123.bla or null.foo or "xyzzy"
 | |
|     # Backwards compatibility test.
 | |
|     (fold or [] [true false false])
 | |
|   ]
 |