diff --git a/nixos/doc/manual/release-notes/rl-1909.xml b/nixos/doc/manual/release-notes/rl-1909.xml
index e63a6d10a86..4ad81f42b4b 100644
--- a/nixos/doc/manual/release-notes/rl-1909.xml
+++ b/nixos/doc/manual/release-notes/rl-1909.xml
@@ -468,6 +468,16 @@
(which will place the parameters in /etc/sysctl.d/60-nixos.conf).
+
+
+ Coredumps are now acquired by systemd-coredump by default.
+ systemd-coredump behaviour can still be modified via
+ .
+ To stick to the old behaviour (having the kernel dump to a file called core
+ in the working directory), without piping it through systemd-coredump, set
+ to "core".
+
+
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index a167336c156..d2de162f70c 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -862,7 +862,6 @@
./system/activation/activation-script.nix
./system/activation/top-level.nix
./system/boot/binfmt.nix
- ./system/boot/coredump.nix
./system/boot/emergency-mode.nix
./system/boot/grow-partition.nix
./system/boot/initrd-network.nix
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index 3ea139fc5ce..e32fa6fded4 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -226,6 +226,7 @@ with lib;
(mkRemovedOptionModule [ "services" "mysql" "rootPassword" ] "Use socket authentication or set the password outside of the nix store.")
(mkRemovedOptionModule [ "services" "zabbixServer" "dbPassword" ] "Use services.zabbixServer.database.passwordFile instead.")
(mkRemovedOptionModule [ "systemd" "generator-packages" ] "Use systemd.packages instead.")
+ (mkRemovedOptionModule [ "systemd" "coredump" "enable" ] "Enabled by default. Set boot.kernel.sysctl.\"kernel.core_pattern\" = \"core\"; to disable.")
# ZSH
(mkRenamedOptionModule [ "programs" "zsh" "enableSyntaxHighlighting" ] [ "programs" "zsh" "syntaxHighlighting" "enable" ])
diff --git a/nixos/modules/system/boot/coredump.nix b/nixos/modules/system/boot/coredump.nix
deleted file mode 100644
index 30f367da766..00000000000
--- a/nixos/modules/system/boot/coredump.nix
+++ /dev/null
@@ -1,66 +0,0 @@
-{ 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
- and the limits.conf(5)
- man page (these specify the core dump limits for user login sessions)
- and (where e.g.
- DefaultLimitCORE=1000000 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:
- #
- 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
- '';
- })
- ];
-
-}
diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix
index e84b1ffbfc1..23a2dd45d49 100644
--- a/nixos/modules/system/boot/systemd.nix
+++ b/nixos/modules/system/boot/systemd.nix
@@ -76,6 +76,10 @@ let
"systemd-journald-dev-log.socket"
"syslog.socket"
+ # Coredumps.
+ "systemd-coredump.socket"
+ "systemd-coredump@.service"
+
# SysV init compatibility.
"systemd-initctl.socket"
"systemd-initctl.service"
@@ -540,6 +544,16 @@ in
'';
};
+ systemd.coredump.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.
+ '';
+ };
+
systemd.extraConfig = mkOption {
default = "";
type = types.lines;
@@ -795,6 +809,7 @@ in
DefaultMemoryAccounting=yes
DefaultTasksAccounting=yes
''}
+ DefaultLimitCORE=infinity
${config.systemd.extraConfig}
'';
@@ -818,6 +833,12 @@ in
${config.services.journald.extraConfig}
'';
+ "systemd/coredump.conf".text =
+ ''
+ [Coredump]
+ ${config.systemd.coredump.extraConfig}
+ '';
+
"systemd/logind.conf".text = ''
[Login]
KillUserProcesses=${if config.services.logind.killUserProcesses then "yes" else "no"}