73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
|   cfg = config.system.nixos;
 | |
| in
 | |
| 
 | |
| {
 | |
| 
 | |
|   options.system = {
 | |
| 
 | |
|     nixos.label = mkOption {
 | |
|       type = types.str;
 | |
|       description = ''
 | |
|         NixOS version name to be used in the names of generated
 | |
|         outputs and boot labels.
 | |
| 
 | |
|         If you ever wanted to influence the labels in your GRUB menu,
 | |
|         this is the option for you.
 | |
| 
 | |
|         The default is <option>system.nixos.tags</option> separated by
 | |
|         "-" + "-" + <envar>NIXOS_LABEL_VERSION</envar> environment
 | |
|         variable (defaults to the value of
 | |
|         <option>system.nixos.version</option>).
 | |
| 
 | |
|         Can be overriden by setting <envar>NIXOS_LABEL</envar>.
 | |
| 
 | |
|         Useful for not loosing track of configurations built from different
 | |
|         nixos branches/revisions, e.g.:
 | |
| 
 | |
|         <screen>
 | |
|         #!/bin/sh
 | |
|         today=`date +%Y%m%d`
 | |
|         branch=`(cd nixpkgs ; git branch 2>/dev/null | sed -n '/^\* / { s|^\* ||; p; }')`
 | |
|         revision=`(cd nixpkgs ; git rev-parse HEAD)`
 | |
|         export NIXOS_LABEL_VERSION="$today.$branch-''${revision:0:7}"
 | |
|         nixos-rebuild switch</screen>
 | |
|       '';
 | |
|     };
 | |
| 
 | |
|     nixos.tags = mkOption {
 | |
|       type = types.listOf types.str;
 | |
|       default = [];
 | |
|       example = [ "with-xen" ];
 | |
|       description = ''
 | |
|         Strings to prefix to the default
 | |
|         <option>system.nixos.label</option>.
 | |
| 
 | |
|         Useful for not loosing track of configurations built with
 | |
|         different options, e.g.:
 | |
| 
 | |
|         <screen>
 | |
|         {
 | |
|           system.nixos.tags = [ "with-xen" ];
 | |
|           virtualisation.xen.enable = true;
 | |
|         }
 | |
|         </screen>
 | |
|       '';
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
|   config = {
 | |
|     # This is set here rather than up there so that changing it would
 | |
|     # not rebuild the manual
 | |
|     system.nixos.label = mkDefault (maybeEnv "NIXOS_LABEL"
 | |
|                                              (concatStringsSep "-" ((sort (x: y: x < y) cfg.tags)
 | |
|                                               ++ [ (maybeEnv "NIXOS_LABEL_VERSION" cfg.version) ])));
 | |
|   };
 | |
| 
 | |
| }
 | 
