85 lines
2.1 KiB
Nix
85 lines
2.1 KiB
Nix
{ pkgs, ... }:
|
|
|
|
{
|
|
services.openssh = {
|
|
enable = true;
|
|
ports = [ 22 ];
|
|
settings = {
|
|
# Authentication
|
|
PermitRootLogin = "no";
|
|
PasswordAuthentication = false;
|
|
KbdInteractiveAuthentication = false;
|
|
PermitEmptyPasswords = false;
|
|
|
|
# Security hardening
|
|
X11Forwarding = false;
|
|
AllowTcpForwarding = false;
|
|
AllowAgentForwarding = false;
|
|
AllowStreamLocalForwarding = false;
|
|
|
|
# Session settings
|
|
ClientAliveInterval = 300;
|
|
ClientAliveCountMax = 2;
|
|
MaxAuthTries = 3;
|
|
MaxSessions = 2;
|
|
LoginGraceTime = 30;
|
|
};
|
|
};
|
|
|
|
# Tailscale
|
|
services.tailscale.enable = true;
|
|
|
|
# Fwupd
|
|
services.fwupd.enable = true;
|
|
|
|
# UDEV
|
|
services.udev.packages = [
|
|
pkgs.qmk-udev-rules
|
|
pkgs.game-devices-udev-rules
|
|
pkgs.keychron-udev-rules
|
|
pkgs.via
|
|
];
|
|
|
|
services.udev.extraRules = ''
|
|
# Keychron keyboards USB access
|
|
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="3434", MODE="0660", GROUP="plugdev"
|
|
|
|
# Keychron keyboards HIDRAW access for regular keys
|
|
ACTION=="add", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", MODE="0660", GROUP="plugdev"
|
|
|
|
# Keychron analog/gamepad interface (interface 2, vendor-specific)
|
|
ACTION=="add", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0e20", MODE="0666"
|
|
|
|
# Other USB/HID devices (ASUS etc)
|
|
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0660", GROUP="plugdev"
|
|
ACTION=="add", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0b05", MODE="0660", GROUP="plugdev"
|
|
'';
|
|
|
|
# Sunshine
|
|
services.sunshine = {
|
|
enable = true;
|
|
autoStart = true;
|
|
capSysAdmin = true;
|
|
openFirewall = true;
|
|
applications = {
|
|
apps = [
|
|
{
|
|
name = "Steam Big Picture";
|
|
cmd = "${pkgs.steam}/bin/steam -gamepadui";
|
|
}
|
|
{
|
|
name = "Desktop";
|
|
cmd = "${pkgs.coreutils}/bin/true";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
virtualisation.docker = {
|
|
enable = true;
|
|
};
|
|
|
|
services.avahi.publish.enable = true;
|
|
services.avahi.publish.userServices = true;
|
|
}
|