anchor.diff:    };
     stage1CommonUnitOptions = commonUnitOptions;
   
  -  serviceOptions = { name, config, ... }: { options = {
  -
  -    environment = mkOption {
  -      default = {};
  -      type = with types; attrsOf (nullOr (oneOf [ str path package ]));
  -      example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
  -      description = "Environment variables passed to the service's processes.";
  -    };
  -
  -    path = mkOption {
  -      default = [];
  -      type = with types; listOf (oneOf [ package str ]);
  -      description = ''
  -        Packages added to the service's <envar>PATH</envar>
  -        environment variable.  Both the <filename>bin</filename>
  -        and <filename>sbin</filename> subdirectories of each
  -        package are added.
  -      '';
  -    };
  -
  -    serviceConfig = mkOption {
  -      default = {};
  -      example =
  -        { RestartSec = 5;
  -        };
  -      type = types.addCheck (types.attrsOf unitOption) checkService;
  -      description = ''
  -        Each attribute in this set specifies an option in the
  -        <literal>[Service]</literal> section of the unit.  See
  -        <citerefentry><refentrytitle>systemd.service</refentrytitle>
  -        <manvolnum>5</manvolnum></citerefentry> for details.
  -      '';
  -    };
  -
  -    script = mkOption {
  -      type = types.lines;
  -      default = "";
  -      description = "Shell commands executed as the service's main process.";
  -    };
  -
  -    scriptArgs = mkOption {
  -      type = types.str;
  -      default = "";
  -      description = "Arguments passed to the main process script.";
  -    };
  -
  -    preStart = mkOption {
  -      type = types.lines;
  -      default = "";
  -      description = ''
  -        Shell commands executed before the service's main process
  -        is started.
  -      '';
  -    };
  -
  -    postStart = mkOption {
  -      type = types.lines;
  -      default = "";
  -      description = ''
  -        Shell commands executed after the service's main process
  -        is started.
  -      '';
  -    };
  -
  -    reload = mkOption {
  -      type = types.lines;
  -      default = "";
  -      description = ''
  -        Shell commands executed when the service's main process
  -        is reloaded.
  -      '';
  -    };
  -
  -    preStop = mkOption {
  -      type = types.lines;
  -      default = "";
  -      description = ''
  -        Shell commands executed to stop the service.
  -      '';
  -    };
  -
  -    postStop = mkOption {
  -      type = types.lines;
  -      default = "";
  -      description = ''
  -        Shell commands executed after the service's main process
  -        has exited.
  -      '';
  -    };
  -
  -    jobScripts = mkOption {
  -      type = with types; coercedTo path singleton (listOf path);
  -      internal = true;
  -      description = "A list of all job script derivations of this unit.";
  -      default = [];
  -    };
  -
  -  };
  -
  -  config = mkMerge [
  -    (mkIf (config.preStart != "") rec {
  -      jobScripts = makeJobScript "${name}-pre-start" config.preStart;
  -      serviceConfig.ExecStartPre = [ jobScripts ];
  -    })
  -    (mkIf (config.script != "") rec {
  -      jobScripts = makeJobScript "${name}-start" config.script;
  -      serviceConfig.ExecStart = jobScripts + " " + config.scriptArgs;
  -    })
  -    (mkIf (config.postStart != "") rec {
  -      jobScripts = (makeJobScript "${name}-post-start" config.postStart);
  -      serviceConfig.ExecStartPost = [ jobScripts ];
  -    })
  -    (mkIf (config.reload != "") rec {
  -      jobScripts = makeJobScript "${name}-reload" config.reload;
  -      serviceConfig.ExecReload = jobScripts;
  -    })
  -    (mkIf (config.preStop != "") rec {
  -      jobScripts = makeJobScript "${name}-pre-stop" config.preStop;
  -      serviceConfig.ExecStop = jobScripts;
  -    })
  -    (mkIf (config.postStop != "") rec {
  -      jobScripts = makeJobScript "${name}-post-stop" config.postStop;
  -      serviceConfig.ExecStopPost = jobScripts;
  -    })
  -  ];
  +  serviceOptions = { name, config, ... }: {
  +    options = {
  +
  +      environment = mkOption {
  +        default = {};
  +        type = with types; attrsOf (nullOr (oneOf [ str path package ]));
  +        example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
  +        description = "Environment variables passed to the service's processes.";
  +      };
  +
  +      path = mkOption {
  +        default = [];
  +        type = with types; listOf (oneOf [ package str ]);
  +        description = ''
  +          Packages added to the service's <envar>PATH</envar>
  +          environment variable.  Both the <filename>bin</filename>
  +          and <filename>sbin</filename> subdirectories of each
  +          package are added.
  +        '';
  +      };
  +
  +      serviceConfig = mkOption {
  +        default = {};
  +        example =
  +          { RestartSec = 5;
  +          };
  +        type = types.addCheck (types.attrsOf unitOption) checkService;
  +        description = ''
  +          Each attribute in this set specifies an option in the
  +          <literal>[Service]</literal> section of the unit.  See
  +          <citerefentry><refentrytitle>systemd.service</refentrytitle>
  +          <manvolnum>5</manvolnum></citerefentry> for details.
  +        '';
  +      };
  +
  +      script = mkOption {
  +        type = types.lines;
  +        default = "";
  +        description = "Shell commands executed as the service's main process.";
  +      };
  +
  +      scriptArgs = mkOption {
  +        type = types.str;
  +        default = "";
  +        description = "Arguments passed to the main process script.";
  +      };
  +
  +      preStart = mkOption {
  +        type = types.lines;
  +        default = "";
  +        description = ''
  +          Shell commands executed before the service's main process
  +          is started.
  +        '';
  +      };
  +
  +      postStart = mkOption {
  +        type = types.lines;
  +        default = "";
  +        description = ''
  +          Shell commands executed after the service's main process
  +          is started.
  +        '';
  +      };
  +
  +      reload = mkOption {
  +        type = types.lines;
  +        default = "";
  +        description = ''
  +          Shell commands executed when the service's main process
  +          is reloaded.
  +        '';
  +      };
  +
  +      preStop = mkOption {
  +        type = types.lines;
  +        default = "";
  +        description = ''
  +          Shell commands executed to stop the service.
  +        '';
  +      };
  +
  +      postStop = mkOption {
  +        type = types.lines;
  +        default = "";
  +        description = ''
  +          Shell commands executed after the service's main process
  +          has exited.
  +        '';
  +      };
  +
  +      jobScripts = mkOption {
  +        type = with types; coercedTo path singleton (listOf path);
  +        internal = true;
  +        description = "A list of all job script derivations of this unit.";
  +        default = [];
  +      };
  +
  +    };
  +
  +    config = mkMerge [
  +      (mkIf (config.preStart != "") rec {
  +        jobScripts = makeJobScript "${name}-pre-start" config.preStart;
  +        serviceConfig.ExecStartPre = [ jobScripts ];
  +      })
  +      (mkIf (config.script != "") rec {
  +        jobScripts = makeJobScript "${name}-start" config.script;
  +        serviceConfig.ExecStart = jobScripts + " " + config.scriptArgs;
  +      })
  +      (mkIf (config.postStart != "") rec {
  +        jobScripts = (makeJobScript "${name}-post-start" config.postStart);
  +        serviceConfig.ExecStartPost = [ jobScripts ];
  +      })
  +      (mkIf (config.reload != "") rec {
  +        jobScripts = makeJobScript "${name}-reload" config.reload;
  +        serviceConfig.ExecReload = jobScripts;
  +      })
  +      (mkIf (config.preStop != "") rec {
  +        jobScripts = makeJobScript "${name}-pre-stop" config.preStop;
  +        serviceConfig.ExecStop = jobScripts;
  +      })
  +      (mkIf (config.postStop != "") rec {
  +        jobScripts = makeJobScript "${name}-post-stop" config.postStop;
  +        serviceConfig.ExecStopPost = jobScripts;
  +      })
  +    ];
   
     };
   
  
positive.code: 
    };
  
    commonUnitOptions = { options = (sharedOptions // {
  
      description = mkOption {
        default = "";
        type = types.singleLineStr;
        description = "Description of this unit used in systemd messages and progress indicators.";
      };
  
      documentation = mkOption {
        default = [];
        type = types.listOf types.str;
        description = "A list of URIs referencing documentation for this unit or its configuration.";
      };
  
      requires = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          Start the specified units when this unit is started, and stop
          this unit when the specified units are stopped or fail.
        '';
      };
  
      wants = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          Start the specified units when this unit is started.
        '';
      };
  
      after = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          If the specified units are started at the same time as
          this unit, delay this unit until they have started.
        '';
      };
  
      before = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          If the specified units are started at the same time as
          this unit, delay them until this unit has started.
        '';
      };
  
      bindsTo = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          Like ‘requires’, but in addition, if the specified units
          unexpectedly disappear, this unit will be stopped as well.
        '';
      };
  
      partOf = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          If the specified units are stopped or restarted, then this
          unit is stopped or restarted as well.
        '';
      };
  
      conflicts = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          If the specified units are started, then this unit is stopped
          and vice versa.
        '';
      };
  
      requisite = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          Similar to requires. However if the units listed are not started,
          they will not be started and the transaction will fail.
        '';
      };
  
      unitConfig = mkOption {
        default = {};
        example = { RequiresMountsFor = "/data"; };
        type = types.attrsOf unitOption;
        description = ''
          Each attribute in this set specifies an option in the
          <literal>[Unit]</literal> section of the unit.  See
          <citerefentry><refentrytitle>systemd.unit</refentrytitle>
          <manvolnum>5</manvolnum></citerefentry> for details.
        '';
      };
  
      onFailure = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = ''
          A list of one or more units that are activated when
          this unit enters the "failed" state.
        '';
      };
  
      startLimitBurst = mkOption {
         type = types.int;
         description = ''
           Configure unit start rate limiting. Units which are started
           more than startLimitBurst times within an interval time
           interval are not permitted to start any more.
         '';
      };
  
      startLimitIntervalSec = mkOption {
         type = types.int;
         description = ''
           Configure unit start rate limiting. Units which are started
           more than startLimitBurst times within an interval time
           interval are not permitted to start any more.
         '';
      };
  
    }); };
  
    stage2CommonUnitOptions = {
      imports = [
  
negative.code:   };
  
  
    timerOptions = {
      options = {
  
        timerConfig = mkOption {
          default = {};
          example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
          type = types.attrsOf unitOption;
          description = ''
            Each attribute in this set specifies an option in the
            <literal>[Timer]</literal> section of the unit.  See
            <citerefentry><refentrytitle>systemd.timer</refentrytitle>
            <manvolnum>5</manvolnum></citerefentry> and
            <citerefentry><refentrytitle>systemd.time</refentrytitle>
            <manvolnum>7</manvolnum></citerefentry> for details.
          '';
        };
  
      };
    };
  
    stage2TimerOptions = {
      imports = [
  