anchor.diff:      serviceConfig = {
         ExecStart = ''
           ${cfg.package}/bin/kanata \
  -          --cfg ${mkConfig name keyboard}
  +          --cfg ${mkConfig name keyboard} \
  +          --symlink-path ''${RUNTIME_DIRECTORY}/${name} \
  +          ${optionalString (keyboard.port != null) "--port ${toString keyboard.port}"} \
  +          ${utils.escapeSystemdExecArgs keyboard.extraArgs}
         '';
   
         DynamicUser = true;
  +      RuntimeDirectory = mkName name;
         SupplementaryGroups = with config.users.groups; [
           input.name
           uinput.name
  
positive.code:       default = pkgs.kanata;
        defaultText = lib.literalExpression "pkgs.kanata";
        example = lib.literalExpression "pkgs.kanata-with-cmd";
        description = lib.mdDoc ''
          kanata package to use.
          If you enable danger-enable-cmd, pkgs.kanata-with-cmd should be used.
        '';
      };
      keyboards = mkOption {
        type = types.attrsOf (types.submodule keyboard);
        default = { };
        description = lib.mdDoc "Keyboard configurations.";
      };
    };
  
  
negative.code:             ;; tap within 100ms for capslk, hold more than 100ms for lctl
              cap (tap-hold 100 100 caps lctl))
          '';
          description = mdDoc ''
            Configuration other than `defcfg`. See [example config
            files](https://github.com/jtroo/kanata) for more information.
          '';
        };
        extraDefCfg = mkOption {
          type = types.lines;
          default = "";
          example = "danger-enable-cmd yes";
          description = mdDoc ''
            Configuration of `defcfg` other than `linux-dev`. See [example
            config files](https://github.com/jtroo/kanata) for more information.
          '';
        };
        extraArgs = mkOption {
          type = types.listOf types.str;
          default = [ ];
          description = mdDoc "Extra command line arguments passed to kanata.";
        };
        port = mkOption {
          type = types.nullOr types.port;
          default = null;
          example = 6666;
          description = mdDoc ''
            Port to run the notification server on. `null` will not run the
            server.
          '';
        };
      };
    };
  
    mkName = name: "kanata-${name}";
  
    mkDevices = devices: concatStringsSep ":" devices;
  
    mkConfig = name: keyboard: pkgs.writeText "${mkName name}-config.kdb" ''
      (defcfg
        ${keyboard.extraDefCfg}
        linux-dev ${mkDevices keyboard.devices})
  
      ${keyboard.config}
    '';
  
    mkService = name: keyboard: nameValuePair (mkName name) {
      description = "kanata for ${mkDevices keyboard.devices}";
  
      # Because path units are used to activate service units, which
      # will start the old stopped services during "nixos-rebuild
  