Skip to content

feat: add Input Leap KVM and enable Tailscale on matic#1288

Open
shunkakinoki wants to merge 7 commits into
mainfrom
feat/input-leap-tailscale
Open

feat: add Input Leap KVM and enable Tailscale on matic#1288
shunkakinoki wants to merge 7 commits into
mainfrom
feat/input-leap-tailscale

Conversation

@shunkakinoki
Copy link
Copy Markdown
Owner

@shunkakinoki shunkakinoki commented Mar 28, 2026

Summary

  • Add Input Leap to share keyboard/mouse between galactica (server) and matic (client) over Tailscale
  • Enable services.tailscale on matic NixOS config
  • Crypto disabled on Input Leap since Tailscale provides WireGuard encryption
  • Add docs/TAILSCALE.md and docs/INPUT_LEAP.md covering all three machines (galactica, matic, kyber)

Files

  • config/input-leap/server.conf — screen layout (galactica left, matic right) + hotkeys
  • config/input-leap/default.nix — deploys server config to macOS
  • home-manager/services/input-leap/default.nix — launchd agent (server) + systemd service (client)
  • named-hosts/matic/default.nix — enable Tailscale
  • docs/TAILSCALE.md — Tailscale setup for all machines
  • docs/INPUT_LEAP.md — Input Leap architecture, setup, and troubleshooting

Test plan

  • make switch-galactica builds successfully
  • make build HOST=matic && make switch HOST=matic builds successfully
  • sudo tailscale login on matic, verify tailscale status shows all nodes
  • Verify Input Leap server starts on galactica (cat /tmp/input-leap-server.log)
  • Verify Input Leap client connects on matic (journalctl --user -u input-leap-client)
  • Mouse moves from galactica right edge to matic screen

Summary by cubic

Add input-leap KVM over Tailscale: galactica runs the server and matic runs the client. Also enable services.tailscale on matic to connect both machines.

  • New Features
    • Deploy server config with screen layout (galactica left, matic right) and hotkeys.
    • macOS launchd agent starts input-leaps on :24800 with --disable-crypto.
    • NixOS systemd user service starts input-leapc on matic only (guarded by inputs.host.isMatic).
    • Add docs/TAILSCALE.md and docs/INPUT_LEAP.md for setup and troubleshooting.

Written for commit cf9582a. Summary will update on new commits.

Set up Input Leap to share keyboard/mouse between galactica (server)
and matic (client) over Tailscale. Crypto disabled since Tailscale
provides WireGuard encryption.

- Add server config with screen layout and hotkeys
- Add launchd agent (galactica) and systemd service (matic)
- Enable services.tailscale on matic NixOS config
- Add docs for Tailscale and Input Leap across all machines

Entire-Checkpoint: 13b99c1766fc
Copilot AI review requested due to automatic review settings March 28, 2026 01:36
@mesa-dot-dev
Copy link
Copy Markdown

mesa-dot-dev Bot commented Mar 28, 2026

You do not have enough credits to review this pull request. Please purchase more credits to continue.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 28, 2026

📝 Walkthrough

Walkthrough

Adds an InputLeap feature: new Nix config and Home Manager services to run an InputLeap server on macOS and a client on Linux, plus Tailscale enabling and documentation for setup and troubleshooting.

Changes

Cohort / File(s) Summary
Top-level Nix modules & config
config/default.nix, config/input-leap/default.nix, config/input-leap/server.conf
Registered ./input-leap in top-level modules and added a platform-aware module that deploys InputLeap.conf; new server config defines screens, links, and hotkeys.
Home Manager services
home-manager/services/default.nix, home-manager/services/input-leap/default.nix
Threaded inputs into services import and added inputLeap service: macOS launchd agent (input-leaps server) and Linux systemd --user client (input-leapc).
Host system change
named-hosts/matic/default.nix
Enabled services.tailscale.enable = true for matic to allow client connectivity.
Documentation
docs/INPUT_LEAP.md, docs/TAILSCALE.md
Added detailed setup, deployment, verification, and troubleshooting docs for InputLeap and Tailscale across involved hosts.

Sequence Diagram

sequenceDiagram
    actor User
    participant macOS as macOS Server\n(galactica)
    participant Tailscale
    participant Linux as Linux Client\n(matic)
    participant DE as Desktop Environment

    User->>macOS: make switch-galactica
    macOS->>macOS: launchd starts input-leaps\n(port 24800, --disable-crypto)
    User->>Linux: make build/switch HOST=matic
    Linux->>Linux: systemd --user starts input-leapc\n(--disable-crypto, connect galactica:24800)
    Linux->>Tailscale: resolve galactica hostname
    Tailscale-->>Linux: return galactica IP
    Linux->>macOS: connect to galactica:24800
    DE->>Linux: user input events
    Linux->>macOS: relay input via InputLeap
    macOS->>macOS: inject input to macOS
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

enhancement

Poem

🐰 I hopped from key to screen so bright,
Over Tailscale fields in silver light.
Server listens, client connects with glee,
A mouse's whisker guides the spree —
Two machines, one shared melody. 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main changes: adding Input Leap KVM functionality and enabling Tailscale on matic, which aligns with the core objectives of the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The pull request description clearly details the changeset: adding Input Leap for keyboard/mouse sharing between galactica and matic over Tailscale, enabling Tailscale on matic, providing comprehensive documentation, and listing all modified/added files with their purposes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/input-leap-tailscale

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@mesa-dot-dev
Copy link
Copy Markdown

mesa-dot-dev Bot commented Mar 28, 2026

Mesa Description

TL;DR

Added Input Leap for keyboard/mouse sharing between galactica (server) and matic (client) over Tailscale, disabling Input Leap crypto due to Tailscale's WireGuard encryption. Enabled Tailscale on matic and added comprehensive documentation for both Input Leap and Tailscale across all machines.

What changed?

  • config/default.nix: Added a new configuration module for input-leap.
  • config/input-leap/default.nix: New NixOS configuration for Input Leap server on macOS, setting up InputLeap.conf from ./server.conf.
  • config/input-leap/server.conf: New configuration defining "galactica" (left) and "matic" (right) screen layout and hotkeys.
  • docs/INPUT_LEAP.md: New documentation for Input Leap setup, architecture, configuration, and troubleshooting.
  • docs/TAILSCALE.md: New documentation with comprehensive instructions for configuring Tailscale VPN on macOS, NixOS, and Ubuntu.
  • home-manager/services/default.nix: Updated to include inputs and integrate the new inputLeap service.
  • home-manager/services/input-leap/default.nix: New file introducing Input Leap launchd server for macOS and systemd user client for Linux, both configured without crypto.
  • named-hosts/matic/default.nix: Enabled the Tailscale VPN service.
  • home-manager/default.nix: Updated services import to pass inputs and reformatted the inherit statement.

Description generated by Mesa. Update settings

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 8 files

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces Input Leap configuration and services to facilitate keyboard and mouse sharing between a macOS server and a Linux client over Tailscale. It includes new Nix modules for deploying server configurations, managing background services via launchd and systemd, and detailed documentation for the setup. Review feedback suggests several improvements for maintainability: removing redundant XDG paths on macOS, replacing hardcoded relative paths and hostnames with variables or passed arguments, and utilizing standard persistent log directories instead of temporary storage.

Comment on lines +14 to +17
# Server config on galactica (XDG fallback)
xdg.configFile."InputLeap/InputLeap.conf" = lib.mkIf isDarwin {
source = ./server.conf;
};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This xdg.configFile block for isDarwin seems redundant. The standard configuration path for Input Leap on macOS is ~/Library/Application Support/InputLeap/, which is correctly configured above. The XDG path is more common on Linux. Having two Nix-managed config files pointing to the same source for the same OS can be confusing. It's recommended to remove this block to stick to the platform's standard.

Comment thread home-manager/services/default.nix Outdated
sshAgent = import ./ssh-agent {
inherit config lib pkgs;
};
inputLeap = import ./input-leap { inherit pkgs; };
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To improve the maintainability of the inputLeap service, consider passing the config object and the path to the server configuration file. This will allow you to avoid hardcoded relative paths and use standard log locations within the service definition.

  inputLeap = import ./input-leap {
    inherit config pkgs;
    configFile = ../../config/input-leap/server.conf;
  };

Comment on lines +14 to +15
"--config"
"${../../../config/input-leap/server.conf}"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The hardcoded relative path to the config file is fragile. Following the suggestion to pass configFile to this module from home-manager/services/default.nix, you can make this more robust.

You'll also need to update the function signature at the top of this file to accept configFile:

{ pkgs, configFile, ... }:
...
        "--config"
        "${configFile}"

Comment on lines +22 to +23
StandardOutPath = "/tmp/input-leap-server.log";
StandardErrorPath = "/tmp/input-leap-server.error.log";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Storing log files in /tmp is not ideal as this directory is often cleared on reboot. A better practice is to use a standard logging location. On macOS, this would be ~/Library/Logs.

Following the suggestion to pass the config object to this module, you can define more robust log paths. You'll need to update the function signature to accept config:

{ config, pkgs, ... }:
...

With this change, also remember to update the log file paths in docs/INPUT_LEAP.md.

      StandardOutPath = "${config.home.homeDirectory}/Library/Logs/input-leap-server.log";
      StandardErrorPath = "${config.home.homeDirectory}/Library/Logs/input-leap-server.error.log";

};
Service = {
Type = "simple";
ExecStart = "${pkgs.input-leap}/bin/input-leapc --no-daemon --name matic --disable-crypto galactica:24800";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The server hostname galactica and client name matic are hardcoded in the ExecStart command. This reduces the reusability of this service definition. It's better to extract these into variables in the let block at the top of the file. This makes it easier to change them in the future.

# At the top of the file
let
  ...
  inputLeapServerHost = "galactica";
  inputLeapClientName = "matic";
in
...
      ExecStart = "${pkgs.input-leap}/bin/input-leapc --no-daemon --name ${inputLeapClientName} --disable-crypto ${inputLeapServerHost}:24800";

- Input-leap is now included for every host.
- Kept the exported service list unchanged.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Input Leap KVM plumbing across macOS (galactica) and NixOS (matic) over Tailscale, and documents setup for all machines (galactica/matic/kyber).

Changes:

  • Enable services.tailscale on the matic NixOS host.
  • Add Home Manager services for Input Leap (launchd server on macOS, systemd user client on Linux) plus server screen-layout config.
  • Add documentation for Tailscale and Input Leap setup/troubleshooting.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
named-hosts/matic/default.nix Enables the NixOS Tailscale service on matic.
home-manager/services/input-leap/default.nix Adds launchd agent for Input Leap server (macOS) and systemd user service for the client (Linux).
home-manager/services/default.nix Registers the new Input Leap service module.
config/input-leap/server.conf Defines screens, links, and hotkeys for galactica↔matic.
config/input-leap/default.nix Deploys Input Leap config to macOS config locations.
config/default.nix Includes the new config/input-leap module in the config set.
docs/TAILSCALE.md Documents Tailscale setup per machine.
docs/INPUT_LEAP.md Documents Input Leap architecture, setup, and troubleshooting.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +16 to +18
"--address"
":24800"
"--disable-crypto"
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The server is started with --disable-crypto while binding to :24800 (all interfaces). Even if the intended transport is Tailscale, this exposes an unauthenticated/unencrypted Input Leap port on any non-Tailscale networks the host is connected to (e.g., LAN/Wi‑Fi). Consider either enabling crypto, or binding explicitly to the Tailscale IP/interface (or otherwise firewalling the port to tailscale0 only) so plaintext traffic isn't reachable off-tailnet.

Copilot uses AI. Check for mistakes.
Comment thread docs/INPUT_LEAP.md
Comment on lines +3 to +4
Input Leap shares keyboard and mouse between machines over the network. Traffic flows over Tailscale (WireGuard-encrypted), so Input Leap's own TLS is disabled.

Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doc states Input Leap TLS is disabled because traffic goes over Tailscale, but the current server setup binds to :24800 (all interfaces). Unless the port is restricted to the Tailscale interface/IP (or firewalled accordingly), plaintext Input Leap traffic could be reachable from the local network. Please document the binding/firewall requirement (or update the service to bind only to the Tailscale address).

Copilot uses AI. Check for mistakes.
{ config, pkgs, ... }:
let
inherit (pkgs) lib;
inherit (pkgs.stdenv) isDarwin isLinux;
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isLinux is inherited but unused in this module. Please remove the unused binding (and consider dropping/renaming other unused args like config if you want to keep the module lint-clean).

Suggested change
inherit (pkgs.stdenv) isDarwin isLinux;
inherit (pkgs.stdenv) isDarwin;

Copilot uses AI. Check for mistakes.
Thread inputs through services to access isDesktop flag.

Entire-Checkpoint: 02243080c082
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
config/input-leap/default.nix (2)

4-4: Unused import: isLinux.

The isLinux binding is imported but never referenced in this module.

🧹 Remove unused import
-  inherit (pkgs.stdenv) isDarwin isLinux;
+  inherit (pkgs.stdenv) isDarwin;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@config/input-leap/default.nix` at line 4, Remove the unused binding by
editing the inherit list so it no longer imports isLinux from pkgs.stdenv;
update the line that currently reads "inherit (pkgs.stdenv) isDarwin isLinux;"
to only inherit isDarwin (referencing the symbols isLinux, isDarwin, pkgs.stdenv
to locate the expression).

7-17: Config deployment may be redundant with explicit --config in service.

The launchd agent in home-manager/services/input-leap/default.nix passes --config ${../../../config/input-leap/server.conf} (a Nix store path), so the server won't read from these deployed home directory locations. These files are still useful for manual runs or documentation purposes, but consider adding a comment clarifying this.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@config/input-leap/default.nix` around lines 7 - 17, The deployed config
entries home.file."Library/Application Support/InputLeap/InputLeap.conf" and
xdg.configFile."InputLeap/InputLeap.conf" are effectively redundant for the
launchd-managed service because the service binary is launched with an explicit
--config ${../../../config/input-leap/server.conf}; add a short clarifying
comment next to these two config declarations indicating they are provided only
for manual runs or documentation (not used by the launchd agent), and optionally
mention the authoritative path referenced by the service in
home-manager/services/input-leap/default.nix so future readers understand which
config is actually used.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@home-manager/services/input-leap/default.nix`:
- Around line 31-35: Add a Wants declaration for network-online.target to match
the repository pattern: in the systemd unit where you currently have After = [
"graphical-session.target" "network-online.target" ] and Requires = [
"graphical-session.target" ], add Wants = [ "network-online.target" ] so the
unit both orders after and expresses a weak dependency on the
network-online.target (alongside the existing Requires for
graphical-session.target).

---

Nitpick comments:
In `@config/input-leap/default.nix`:
- Line 4: Remove the unused binding by editing the inherit list so it no longer
imports isLinux from pkgs.stdenv; update the line that currently reads "inherit
(pkgs.stdenv) isDarwin isLinux;" to only inherit isDarwin (referencing the
symbols isLinux, isDarwin, pkgs.stdenv to locate the expression).
- Around line 7-17: The deployed config entries home.file."Library/Application
Support/InputLeap/InputLeap.conf" and xdg.configFile."InputLeap/InputLeap.conf"
are effectively redundant for the launchd-managed service because the service
binary is launched with an explicit --config
${../../../config/input-leap/server.conf}; add a short clarifying comment next
to these two config declarations indicating they are provided only for manual
runs or documentation (not used by the launchd agent), and optionally mention
the authoritative path referenced by the service in
home-manager/services/input-leap/default.nix so future readers understand which
config is actually used.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 98e17c47-5b1f-45a4-81f1-e2a00349d846

📥 Commits

Reviewing files that changed from the base of the PR and between c2c4d33 and f35e482.

📒 Files selected for processing (8)
  • config/default.nix
  • config/input-leap/default.nix
  • config/input-leap/server.conf
  • docs/INPUT_LEAP.md
  • docs/TAILSCALE.md
  • home-manager/services/default.nix
  • home-manager/services/input-leap/default.nix
  • named-hosts/matic/default.nix

Comment on lines +31 to +35
After = [
"graphical-session.target"
"network-online.target"
];
Requires = [ "graphical-session.target" ];
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if network-online.target exists in user session context
# This target is typically system-level only

echo "=== Checking systemd user targets documentation ==="
# Search for any existing services in the repo using network-online.target in user context
rg -n "network-online.target" --type nix

Repository: shunkakinoki/dotfiles

Length of output: 754


🏁 Script executed:

cat -n home-manager/services/input-leap/default.nix

Repository: shunkakinoki/dotfiles

Length of output: 1721


🏁 Script executed:

cat -n home-manager/services/neverssl-keepalive/default.nix

Repository: shunkakinoki/dotfiles

Length of output: 1863


Add Wants declaration for network-online.target to match repository pattern.

The After declaration alone is insufficient for ordering dependencies in systemd. Other services in the repository (neverssl-keepalive, tailscale, openclaw) correctly pair Wants with After when depending on network-online.target. Add Wants to ensure proper dependency handling.

🔧 Suggested fix
     Unit = {
       Description = "Input Leap client (connects to galactica)";
+      Wants = [ "network-online.target" ];
       After = [
         "graphical-session.target"
         "network-online.target"
       ];
       Requires = [ "graphical-session.target" ];
     };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@home-manager/services/input-leap/default.nix` around lines 31 - 35, Add a
Wants declaration for network-online.target to match the repository pattern: in
the systemd unit where you currently have After = [ "graphical-session.target"
"network-online.target" ] and Requires = [ "graphical-session.target" ], add
Wants = [ "network-online.target" ] so the unit both orders after and expresses
a weak dependency on the network-online.target (alongside the existing Requires
for graphical-session.target).

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
home-manager/services/input-leap/default.nix (1)

32-36: ⚠️ Potential issue | 🟡 Minor

Add Wants=network-online.target to match dependency intent.

Line 32–35 orders after network-online.target, but without Wants, this weak dependency is not expressed. This was already flagged previously and still appears unresolved.

#!/bin/bash
set -euo pipefail

echo "=== Input Leap user unit dependency block ==="
sed -n '29,38p' home-manager/services/input-leap/default.nix

echo
echo "=== Repo references using network-online.target in Home Manager services ==="
rg -n --type nix -C2 'network-online.target' home-manager/services

Expected verification result: this unit shows After for network-online.target but no Wants, while comparable service patterns often pair both.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@home-manager/services/input-leap/default.nix` around lines 32 - 36, The
systemd unit lists "After = [ \"network-online.target\" ]" without expressing
the weak dependency; update the unit's dependency block to include "Wants = [
\"network-online.target\" ]" (alongside the existing "Requires") so the service
will pull in network-online.target when available; locate the unit dependency
block that contains After/Requires in the input-leap unit and add the Wants
entry at the same level.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@home-manager/services/input-leap/default.nix`:
- Around line 32-36: The systemd unit lists "After = [ \"network-online.target\"
]" without expressing the weak dependency; update the unit's dependency block to
include "Wants = [ \"network-online.target\" ]" (alongside the existing
"Requires") so the service will pull in network-online.target when available;
locate the unit dependency block that contains After/Requires in the input-leap
unit and add the Wants entry at the same level.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1baed9aa-9289-44e5-aa35-5fe46888cf7e

📥 Commits

Reviewing files that changed from the base of the PR and between f35e482 and 2e69c77.

📒 Files selected for processing (4)
  • config/default.nix
  • home-manager/default.nix
  • home-manager/services/default.nix
  • home-manager/services/input-leap/default.nix
✅ Files skipped from review due to trivial changes (1)
  • config/default.nix
🚧 Files skipped from review as they are similar to previous changes (1)
  • home-manager/services/default.nix

Entire-Checkpoint: 1549a5e9b61a
Entire-Checkpoint: 0b832d3d6c80
@shunkakinoki shunkakinoki added enhancement Indicates new feature requests. size/m Pull request size: medium (< 500 lines). documentation Indicates a need for improvements or additions to documentation. labels Apr 6, 2026
@shunkakinoki
Copy link
Copy Markdown
Owner Author

Triage

Labels applied: enhancement, size/m, documentation

CI status:

  • All checks pass except docker-build-push (linux/arm64) which failed, causing docker-check to also fail
  • The ARM64 Docker build failure may be a flaky/infra issue or a real build problem - worth investigating before merge

Notes:

  • Well-structured PR with good description and test plan
  • Adds Input Leap KVM + Tailscale enablement for matic
  • Includes documentation (docs/TAILSCALE.md, docs/INPUT_LEAP.md)
  • Open since March 28 - needs attention on the Docker failure before merge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Indicates a need for improvements or additions to documentation. enhancement Indicates new feature requests. size/m Pull request size: medium (< 500 lines).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants