anchor.diff:  
   in
   
  -{
  +mkIf cfg.enable {
     require = [
       options
  +    copyOldOptions
     ];
   
     services = {
  
positive.code: let
    xcfg = config.services.xserver;
    dmcfg = xcfg.displayManager;
    cfg = xcfg.slim;
  
    slimConfig = pkgs.writeText "slim.cfg" ''
      xauth_path ${dmcfg.xauthBin}
  
negative.code: let
    inherit (pkgs.lib) mkOption;
  
    slimOptions = {
  
      theme = mkOption {
        default = null;
        example = pkgs.fetchurl {
          url = http://download.berlios.de/slim/slim-wave.tar.gz;
          sha256 = "0ndr419i5myzcylvxb89m9grl2xyq6fbnyc3lkd711mzlmnnfxdy";
        };
        description = "
          The theme for the SLiM login manager.  If not specified, SLiM's
          default theme is used.  See <link
          xlink:href='http://slim.berlios.de/themes01.php'/> for a
          collection of themes.
        ";
      };
  
      defaultUser = mkOption {
        default = "";
        example = "login";
        description = "
          The default user to load. If you put a username here you
          get it automatically loaded into the username field, and
          the focus is placed on the password.
        ";
      };
  
      hideCursor = mkOption {
        default = false;
        example = true;
        description = "
          Hide the mouse cursor on the login screen.
        ";
      };
  
    };
  
    options = { services = { xserver = { displayManager = {
  
      slim = slimOptions // {
  
        enable = mkOption {
          default = true;
          description = "
            Whether to enable slim as the display manager.
          ";
        };
  
      };
  
    }; /* displayManager */ }; /* xserver */ }; /* services */ };
  
    copyOldOptions = { services = { xserver = {
  
      # Declare old options.
      slim = slimOptions;
  
      # Copy the old options into the new options.
      displayManager = {
        slim = config.services.xserver.slim;
      };
  
    }; /* xserver */ }; /* services */ };
  