anchor.diff:          '';
       in {
   
  -      text =
  -        ''
  -          [Unit]
  -          Description=${job.description}
  -          ${if job.startOn == "stopped udevtrigger" then "After=systemd-udev-settle.service" else
  -            if job.startOn == "started udev" then "After=systemd-udev.service"
  -            else ""}
  -
  -          [Service]
  -          Environment=PATH=${job.path}
  -          ${concatMapStrings (n: "Environment=${n}=\"${getAttr n env}\"\n") (attrNames env)}
  -
  +      inherit (job) description path environment;
  +
  +      after =
  +        if job.startOn == "stopped udevtrigger" then [ "systemd-udev-settle.service" ] else
  +        if job.startOn == "started udev" then [ "systemd-udev.service" ] else
  +        [];
  +
  +      wantedBy = if job.startOn == "" then [ ] else [ "multi-user.target" ];
  +
  +      serviceConfig =
  +        ''
             ${optionalString (job.preStart != "" && (job.script != "" || job.exec != "")) ''
               ExecStartPre=${preStartScript}
             ''}
  
positive.code:     };
  
      path = mkOption {
        default = [ ];
        apply = ps: "${makeSearchPath "bin" ps}:${makeSearchPath "sbin" ps}";
        description = ''
          Packages added to the job's <envar>PATH</envar> environment variable.
          Both the <filename>bin</filename> and <filename>sbin</filename>
  
negative.code: 
      system.build.upstart = upstart;
  
      boot.systemd.services =
        flip mapAttrs' config.jobs (name: job:
          nameValuePair "${job.name}.service" job.unit);
          
  