76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| 
								 | 
							
								<section xmlns="http://docbook.org/ns/docbook"
							 | 
						||
| 
								 | 
							
								        xmlns:xlink="http://www.w3.org/1999/xlink"
							 | 
						||
| 
								 | 
							
								        xmlns:xi="http://www.w3.org/2001/XInclude"
							 | 
						||
| 
								 | 
							
								        version="5.0"
							 | 
						||
| 
								 | 
							
								        xml:id="sec-replace-modules">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<title>Replace Modules</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>Modules that are imported can also be disabled.  The option
							 | 
						||
| 
								 | 
							
								  declarations and config implementation of a disabled module will be
							 | 
						||
| 
								 | 
							
								  ignored, allowing another to take it's place.  This can be used to
							 | 
						||
| 
								 | 
							
								  import a set of modules from another channel while keeping the rest
							 | 
						||
| 
								 | 
							
								  of the system on a stable release.</para>
							 | 
						||
| 
								 | 
							
								<para><literal>disabledModules</literal> is a top level attribute like
							 | 
						||
| 
								 | 
							
								  <literal>imports</literal>, <literal>options</literal> and
							 | 
						||
| 
								 | 
							
								  <literal>config</literal>.  It contains a list of modules that will
							 | 
						||
| 
								 | 
							
								  be disabled. This can either be the full path to the module or a
							 | 
						||
| 
								 | 
							
								  string with the filename relative to the modules path
							 | 
						||
| 
								 | 
							
								  (eg. <nixpkgs/nixos/modules> for nixos).
							 | 
						||
| 
								 | 
							
								  </para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>This example will replace the existing postgresql module with
							 | 
						||
| 
								 | 
							
								  the version defined in the nixos-unstable channel while keeping the
							 | 
						||
| 
								 | 
							
								  rest of the modules and packages from the original nixos channel.
							 | 
						||
| 
								 | 
							
								  This only overrides the module definition, this won't use postgresql
							 | 
						||
| 
								 | 
							
								  from nixos-unstable unless explicitly configured to do so.</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<programlisting>
							 | 
						||
| 
								 | 
							
								{ config, lib, pkgs, ... }:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  disabledModules = [ "services/databases/postgresql.nix" ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  imports =
							 | 
						||
| 
								 | 
							
								    [ # Use postgresql service from nixos-unstable channel.
							 | 
						||
| 
								 | 
							
								      # sudo nix-channel --add http://nixos.org/channels/nixos-unstable nixos-unstable
							 | 
						||
| 
								 | 
							
								      <nixos-unstable/nixos/modules/services/databases/postgresql.nix>
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  services.postgresql.enable = true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								</programlisting>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<para>This example shows how to define a custom module as a
							 | 
						||
| 
								 | 
							
								  replacement for an existing module. Importing this module will
							 | 
						||
| 
								 | 
							
								  disable the original module without having to know it's
							 | 
						||
| 
								 | 
							
								  implementation details.</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<programlisting>
							 | 
						||
| 
								 | 
							
								{ config, lib, pkgs, ... }:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								with lib;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								  cfg = config.programs.man;
							 | 
						||
| 
								 | 
							
								in
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  disabledModules = [ "services/programs/man.nix" ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  options = {
							 | 
						||
| 
								 | 
							
								    programs.man.enable = mkOption {
							 | 
						||
| 
								 | 
							
								      type = types.bool;
							 | 
						||
| 
								 | 
							
								      default = true;
							 | 
						||
| 
								 | 
							
								      description = "Whether to enable manual pages.";
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  config = mkIf cfg.enabled {
							 | 
						||
| 
								 | 
							
								    warnings = [ "disabled manpages for production deployments." ];
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								</programlisting>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</section>
							 |