diff --git a/manifests/screensaver/disable.pp b/manifests/screensaver/disable.pp
new file mode 100644
index 0000000000000000000000000000000000000000..e33c69ac648fddb7167c95540a5169ba97ccd08b
--- /dev/null
+++ b/manifests/screensaver/disable.pp
@@ -0,0 +1,53 @@
+# Copyright © 2017   Thomas Bellman, Linköping, Sweden
+# Licensed under the GNU LGPL v3+; see the README file for more information.
+
+
+/*
+ * Turn off the screensaver on the VGA console.
+ * This is useful in case of kernel crashes; if the screensaver was activated
+ * at the time of the crash, you can't see the crash message, and you can't
+ * deactivate the screensaver, since the kernel has died...
+ */
+class console::screensaver::disable
+{
+    # Need redirection to tty1 in case we have console=ttyS1
+    $setterm_cmd = 'TERM=linux setterm -blank 0 -powerdown 0 >/dev/tty1'
+
+    case $::initsystem
+    {
+	'sysvinit', 'upstart': {
+	    ensure_line {
+		'console::screensaver::disable::setterm':
+		    file => '/etc/rc.d/rc.local',
+		    line => $setterm_cmd,
+		    pattern => '(TERM=\S*\s)?(setterm.*-blank|setterm.*-powerdown).*';
+	    }
+	}
+	'systemd': {
+	    $lines = [
+		'# This file is under Puppet control',
+		'',
+		'[Unit]',
+		'Description=Disable screensaver on the console',
+		'',
+		'[Service]',
+		'Type=oneshot',
+		"ExecStart=/bin/sh -c '${setterm_cmd}'",
+		'',
+		'[Install]',
+		'WantedBy=basic.target',
+	    ]
+	    file {
+		'/etc/systemd/system/screensaver-disable.service':
+		    ensure => file,
+		    content => inline_template('<%=@lines.join("\n")+"\n" %>'),
+		    owner => 'root', group => 'root', mode => '0444',
+		    before => Service['screensaver-disable'];
+	    }
+	    service {
+		'screensaver-disable':
+		    enable => true, ensure => running;
+	    }
+	}
+    }
+}