anchor.diff:    # App ID in your Apple developer account.
     hosts ? []
   
  +# Function taking set of plist keys-value pairs and returns a new set with changes applied.
  +#
  +# For example: (super: super // { AnotherKey: "<string>value</string>"; })
  +, overrideInfoPlistByKey ? (super: super)
  +
   , extraInfoPlistContent ? ""
   }:
  -
  +let
  +  inherit (nixpkgs.lib) mapAttrsToList concatStringsSep;
  +
  +  # TODO: Move more things into this overridable default set.
  +  defaultPliskByKey = {
  +    NSPhotoLibraryUsageDescription = "<string>Allow access to photo library.</string>";
  +    NSCameraUsageDescription = "<string>Allow access to camera.</string>";
  +  };
  +
  +in
   nixpkgs.runCommand "${executableName}-app" (rec {
     exePath = package ghcIosArm64;
     infoPlist = builtins.toFile "Info.plist" (''
  
positive.code:     cp -RL "$icon" "$out/${executableName}.app/"
    done
    set +x
  ''
  
negative.code:       <string>10.2</string>
        <key>DTPlatformBuild</key>
        <string>14C89</string>
  
        ${concatStringsSep "\n" (mapAttrsToList
          (k: v: "<key>${k}</key>${v}")
          (overrideInfoPlistByKey defaultPliskByKey)
        )}
  
        ${extraInfoPlistContent}
      </dict>
      </plist>
    '');
  