diff --git a/modules/system/upstart/upstart.nix b/modules/system/upstart/upstart.nix
index 5761ed4c5a4..33f2775b496 100644
--- a/modules/system/upstart/upstart.nix
+++ b/modules/system/upstart/upstart.nix
@@ -94,7 +94,9 @@ let
             if job.daemonType == "none" then { } else
             throw "invalid daemon type `${job.daemonType}'")
         // optionalAttrs (!job.task && job.respawn)
-          { Restart = "always"; };
+          { Restart = "always"; }
+        // optionalAttrs job.task
+          { Type = "oneshot"; RemainAfterExit = false; };
     };