 7f79a4fe11
			
		
	
	
		7f79a4fe11
		
	
	
	
	
		
			
			Say how systemd services can be set instead. Sources: * https://bugzilla.redhat.com/show_bug.cgi?id=754285 * https://ro-che.info/articles/2017-03-26-increase-open-files-limit Signed-off-by: Niklas Hambüchen <mail@nh2.me>
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| {
 | |
| 
 | |
|   options = {
 | |
| 
 | |
|     systemd.coredump = {
 | |
| 
 | |
|       enable = mkOption {
 | |
|         default = false;
 | |
|         type = types.bool;
 | |
|         description = ''
 | |
|           Enables storing core dumps in systemd.
 | |
|           Note that this alone is not enough to enable core dumps. The maximum
 | |
|           file size for core dumps must be specified in limits.conf as well. See
 | |
|           <option>security.pam.loginLimits</option> and the limits.conf(5)
 | |
|           man page (these specify the core dump limits for user login sessions)
 | |
|           and <option>systemd.extraConfig</option> (where e.g.
 | |
|           <literal>DefaultLimitCORE=1000000</literal> can be specified to set
 | |
|           the core dump limit for systemd system-level services).
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       extraConfig = mkOption {
 | |
|         default = "";
 | |
|         type = types.lines;
 | |
|         example = "Storage=journal";
 | |
|         description = ''
 | |
|           Extra config options for systemd-coredump. See coredump.conf(5) man page
 | |
|           for available options.
 | |
|         '';
 | |
|       };
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
|   config = mkMerge [
 | |
|     (mkIf config.systemd.coredump.enable {
 | |
| 
 | |
|       systemd.additionalUpstreamSystemUnits = [ "systemd-coredump.socket" "systemd-coredump@.service" ];
 | |
| 
 | |
|       environment.etc."systemd/coredump.conf".text =
 | |
|         ''
 | |
|           [Coredump]
 | |
|           ${config.systemd.coredump.extraConfig}
 | |
|         '';
 | |
| 
 | |
|       # Have the kernel pass core dumps to systemd's coredump helper binary.
 | |
|       # From systemd's 50-coredump.conf file. See:
 | |
|       # <https://github.com/systemd/systemd/blob/v218/sysctl.d/50-coredump.conf.in>
 | |
|       boot.kernel.sysctl."kernel.core_pattern" = "|${pkgs.systemd}/lib/systemd/systemd-coredump %P %u %g %s %t %c %e";
 | |
|     })
 | |
| 
 | |
|     (mkIf (!config.systemd.coredump.enable) {
 | |
|       boot.kernel.sysctl."kernel.core_pattern" = mkDefault "core";
 | |
| 
 | |
|       systemd.extraConfig =
 | |
|         ''
 | |
|           DefaultLimitCORE=0:infinity
 | |
|         '';
 | |
|     })
 | |
|   ];
 | |
| 
 | |
| }
 |