anchor.diff:  
     cfg = config.services.compton;
   
  -  configFile = let
  -    opacityRules = optionalString (length cfg.opacityRules != 0)
  -      (concatStringsSep "\n"
  -        (map (a: "opacity-rule = [ \"${a}\" ];") cfg.opacityRules)
  -      );
  -  in pkgs.writeText "compton.conf"
  +  floatBetween = a: b: with lib; with types;
  +    addCheck str (x: versionAtLeast x a && versionOlder x b);
  +
  +  pairOf = x: with types; addCheck (listOf x) (y: lib.length y == 2);
  +
  +  opacityRules = optionalString (length cfg.opacityRules != 0)
  +    (concatMapStringsSep ",\n" (rule: ''"${rule}"'') cfg.opacityRules);
  +
  +  configFile = pkgs.writeText "compton.conf"
       (optionalString cfg.fade ''
         # fading
         fading = true;
  
positive.code:     };
  
      fadeDelta = mkOption {
        type = types.int;
        default = 10;
        example = 5;
        description = ''
  
negative.code:     };
  
      vSync = mkOption {
        type = types.enum [
          "none" "drm" "opengl"
          "opengl-oml" "opengl-swc" "opengl-mswc"
        ];
        default = "none";
        example = "opengl-swc";
        description = ''
          Enable vertical synchronization using the specified method.
          See <literal>compton(1)</literal> man page an explanation.
        '';
      };
  
      refreshRate = mkOption {
        type = types.addCheck types.int (x: x >= 0);
        default = 0;
        example = 60;
        description = ''
  