This CL can be used to compare the style of nixpkgs-fmt against other formatters (nixpkgs, alejandra). Change-Id: I87c6abff6bcb546b02ead15ad0405f81e01b6d9e Reviewed-on: https://cl.tvl.fyi/c/depot/+/4397 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: wpcarro <wpcarro@gmail.com> Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: cynthia <cynthia@tvl.fyi> Reviewed-by: edef <edef@edef.eu> Reviewed-by: eta <tvl@eta.st> Reviewed-by: grfn <grfn@gws.fyi>
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			952 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			952 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { depot, lib, ... }:
 | |
| 
 | |
| # Convert an attrset of strings to a list of key/value netstring pairs.
 | |
| # A good minimally viable json replacement if all you need is to iterate.
 | |
| # You can use e.g. `forstdin -Ed '' item` in execline to split the items
 | |
| # and then get the key and value via `multidefine -d '' $item { key value }`
 | |
| #
 | |
| # Example:
 | |
| #   { foo = "bar"; x = "abc"; }
 | |
| #   => "12:3:foo,3:bar,,10:1:x,3:abc,,"
 | |
| #
 | |
| # Example with runExecline:
 | |
| #   nix.runExecline "test" {
 | |
| #     stdin = nix.netstring.attrsToKeyValList {
 | |
| #       foo = "bar";
 | |
| #       x = "abc";
 | |
| #     };
 | |
| #   } [
 | |
| #     "forstdin" "-Ed" "" "item"
 | |
| #     "multidefine" "-d" "" "$item" [ "key" "value" ]
 | |
| #     "${pkgs.coreutils}/bin/echo" "\${key} -> \${value}"
 | |
| #   ]
 | |
| 
 | |
| #   will print:
 | |
| #     foo -> bar
 | |
| #     x -> abc
 | |
| attrs:
 | |
| lib.concatStrings
 | |
|   (lib.mapAttrsToList
 | |
|     (k: v: depot.nix.netstring.fromString
 | |
|       (depot.nix.netstring.fromString k
 | |
|         + depot.nix.netstring.fromString v))
 | |
|     attrs)
 |