diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 3b6305179f0d..cd679f8e93c4 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -406,6 +406,7 @@
./services/x11/xserver.nix
./system/activation/activation-script.nix
./system/activation/top-level.nix
+ ./system/boot/coredump.nix
./system/boot/emergency-mode.nix
./system/boot/kernel.nix
./system/boot/kexec.nix
diff --git a/nixos/modules/system/boot/coredump.nix b/nixos/modules/system/boot/coredump.nix
new file mode 100644
index 000000000000..25b11ed9c8a9
--- /dev/null
+++ b/nixos/modules/system/boot/coredump.nix
@@ -0,0 +1,51 @@
+{ 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
+ as well as the limits.conf(5)
+ man page.
+ '';
+ };
+
+ 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 = mkIf config.systemd.coredump.enable {
+
+ 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 %e";
+
+ };
+
+}