tahani: add headless niri workstation with Sunshine streaming

This commit is contained in:
2026-02-02 21:16:21 +00:00
parent 6ec2bbe02d
commit 631e32469f
7 changed files with 123 additions and 38 deletions

View File

@@ -36,44 +36,44 @@
};
};
on-window-detected = [
{
"if" = {
"app-id" = "com.apple.systempreferences";
};
run = "layout floating";
}
{
"if" = {
"app-id" = "com.mitchellh.ghostty";
};
run = ["layout tiling" "move-node-to-workspace 3"];
}
{
"if" = {
"app-id" = "net.imput.helium";
};
run = "move-node-to-workspace 2";
}
{
"if" = {
"app-id" = "com.tinyspeck.slackmacgap";
};
run = "move-node-to-workspace 5";
}
{
"if" = {
"app-id" = "net.whatsapp.WhatsApp";
};
run = "move-node-to-workspace 5";
}
{
"if" = {
"app-id" = "com.tidal.desktop";
};
run = "move-node-to-workspace 6";
}
];
on-window-detected = [
{
"if" = {
"app-id" = "com.apple.systempreferences";
};
run = "layout floating";
}
{
"if" = {
"app-id" = "com.mitchellh.ghostty";
};
run = ["layout tiling" "move-node-to-workspace 3"];
}
{
"if" = {
"app-id" = "net.imput.helium";
};
run = "move-node-to-workspace 2";
}
{
"if" = {
"app-id" = "com.tinyspeck.slackmacgap";
};
run = "move-node-to-workspace 5";
}
{
"if" = {
"app-id" = "net.whatsapp.WhatsApp";
};
run = "move-node-to-workspace 5";
}
{
"if" = {
"app-id" = "com.tidal.desktop";
};
run = "move-node-to-workspace 6";
}
];
mode = {
main.binding = {

View File

@@ -4,6 +4,7 @@
casks = [
"ghostty@tip"
"helium-browser"
"moonlight"
"tidal"
];
};

18
profiles/niri.nix Normal file
View File

@@ -0,0 +1,18 @@
{...}: {
xdg.configFile."niri/config.kdl".text = ''
input {
keyboard {
xkb {
layout "us"
}
}
}
binds {
Mod+Return { spawn "ghostty"; }
Mod+B { spawn "firefox"; }
Mod+Shift+Q { close-window; }
Mod+Shift+E { quit; }
}
'';
}

View File

@@ -61,6 +61,8 @@ with pkgs;
]
++ lib.optionals stdenv.isLinux [
gcc15
ghostty
ghostty.terminfo
google-chrome
lm_sensors
]

View File

@@ -0,0 +1,21 @@
{...}: {
services.sunshine = {
enable = true;
openFirewall = false;
capSysAdmin = true;
};
networking.firewall.interfaces.tailscale0 = {
allowedTCPPorts = [
47984
47989
47990
];
allowedUDPPorts = [
47998
47999
48000
48002
];
};
}

View File

@@ -0,0 +1,39 @@
{
pkgs,
user,
...
}: {
services.seatd.enable = true;
services.pipewire = {
enable = true;
wireplumber.enable = true;
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
];
};
programs.niri.enable = true;
users.users.${user}.linger = true;
systemd.user.services.niri-headless = {
description = "Niri headless session";
environment = {
WLR_BACKENDS = "headless";
WLR_HEADLESS_OUTPUTS = "1";
WAYLAND_DISPLAY = "wayland-1";
};
serviceConfig = {
ExecStart = "${pkgs.niri}/bin/niri --session";
Restart = "always";
RestartSec = 2;
};
wantedBy = ["default.target"];
};
}