at 23.05-pre 1.6 kB view raw
1{ config, lib, pkgs, utils, ... }: 2 3with lib; 4 5let 6 cfg = config.systemd.coredump; 7 systemd = config.systemd.package; 8in { 9 options = { 10 systemd.coredump.enable = mkOption { 11 default = true; 12 type = types.bool; 13 description = lib.mdDoc '' 14 Whether core dumps should be processed by 15 {command}`systemd-coredump`. If disabled, core dumps 16 appear in the current directory of the crashing process. 17 ''; 18 }; 19 20 systemd.coredump.extraConfig = mkOption { 21 default = ""; 22 type = types.lines; 23 example = "Storage=journal"; 24 description = lib.mdDoc '' 25 Extra config options for systemd-coredump. See coredump.conf(5) man page 26 for available options. 27 ''; 28 }; 29 }; 30 31 config = mkMerge [ 32 33 (mkIf cfg.enable { 34 systemd.additionalUpstreamSystemUnits = [ 35 "systemd-coredump.socket" 36 "systemd-coredump@.service" 37 ]; 38 39 environment.etc = { 40 "systemd/coredump.conf".text = 41 '' 42 [Coredump] 43 ${cfg.extraConfig} 44 ''; 45 46 # install provided sysctl snippets 47 "sysctl.d/50-coredump.conf".source = "${systemd}/example/sysctl.d/50-coredump.conf"; 48 "sysctl.d/50-default.conf".source = "${systemd}/example/sysctl.d/50-default.conf"; 49 }; 50 51 users.users.systemd-coredump = { 52 uid = config.ids.uids.systemd-coredump; 53 group = "systemd-coredump"; 54 }; 55 users.groups.systemd-coredump = {}; 56 }) 57 58 (mkIf (!cfg.enable) { 59 boot.kernel.sysctl."kernel.core_pattern" = mkDefault "core"; 60 }) 61 62 ]; 63 64}