Skip to content

Commit

Permalink
feat: add sunshine
Browse files Browse the repository at this point in the history
wait until LizardByte/Sunshine#2885 for output_name
  • Loading branch information
sg-qwt committed Feb 22, 2025
1 parent ff6d684 commit 991c12b
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 39 deletions.
140 changes: 103 additions & 37 deletions modules/profiles/sway.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,39 @@
s@{ config, pkgs, lib, self, ... }:
let
modifier = "Mod4";
systemctl = lib.getExe' config.systemd.package "systemctl";
swaymsg = lib.getExe' config.myhomecfg.wayland.windowManager.sway.package "swaymsg";
status = lib.getExe config.myhomecfg.programs.i3status-rust.package;
swayr = lib.getExe config.myhomecfg.programs.swayr.package;
pavucontrol = lib.getExe pkgs.pavucontrol;
grim = lib.getExe pkgs.grim;
slurp = lib.getExe pkgs.slurp;
status-config = "${config.myhomecfg.xdg.configHome}/i3status-rust/config-default.toml";
wallpaper = self + "/resources/wallpapers/wr.jpg";
wpctl = lib.getExe' pkgs.wireplumber "wpctl";
bento = lib.getExe' self.packages.${pkgs.system}.bbscripts "bento";
curl = lib.getExe pkgs.curl;
jq = lib.getExe pkgs.jq;
swaylock = lib.getExe config.myhomecfg.programs.swaylock.package;
loginctl = lib.getExe' pkgs.systemd "loginctl";
wl-copy = lib.getExe' pkgs.wl-clipboard "wl-copy";
fcitx5 = lib.getExe config.i18n.inputMethod.package;
blueman-applet = lib.getExe' pkgs.blueman "blueman-applet";

monitor = {
main = "Dell Inc. DELL U2718QM MYPFK89J15HL";
internal = "California Institute of Technology 0x1303 Unknown";
headless = "HEADLESS-1";
};

queryCoin = symbol: {
block = "custom";
command = "${curl} --silent https://api.coinbase.com/v2/prices/${symbol}-USD/spot | ${jq} -r .data.amount";
hide_when_empty = true;
interval = 300;
format = " ${symbol} $text ";
};
in
lib.mkProfile s "sway"
{
myos.desktop.enable = true;
Expand Down Expand Up @@ -35,40 +70,57 @@ lib.mkProfile s "sway"
};
};

myhome = { config, lib, osConfig, ... }:
let
modifier = config.wayland.windowManager.sway.config.modifier;
status = lib.getExe config.programs.i3status-rust.package;
swayr = lib.getExe config.programs.swayr.package;
pavucontrol = lib.getExe pkgs.pavucontrol;
grim = lib.getExe pkgs.grim;
slurp = lib.getExe pkgs.slurp;
status-config = "${config.xdg.configHome}/i3status-rust/config-default.toml";
wallpaper = self + "/resources/wallpapers/wr.jpg";
wpctl = lib.getExe' pkgs.wireplumber "wpctl";
bento = lib.getExe' self.packages.${pkgs.system}.bbscripts "bento";
curl = lib.getExe pkgs.curl;
jq = lib.getExe pkgs.jq;
swaylock = lib.getExe config.programs.swaylock.package;
loginctl = lib.getExe' pkgs.systemd "loginctl";
wl-copy = lib.getExe' pkgs.wl-clipboard "wl-copy";
fcitx5 = lib.getExe' osConfig.i18n.inputMethod.package "fcitx5";
blueman-applet = lib.getExe' pkgs.blueman "blueman-applet";

monitor = {
main = "Dell Inc. DELL U2718QM MYPFK89J15HL";
side = "ICD Inc GX259F Unknown";
internal = "California Institute of Technology 0x1303 Unknown";
};
sops.secrets.sunshine-pass = {
sopsFile = self + "/secrets/secrets.yaml";
};

queryCoin = symbol: {
block = "custom";
command = "${curl} --silent https://api.coinbase.com/v2/prices/${symbol}-USD/spot | ${jq} -r .data.amount";
hide_when_empty = true;
interval = 300;
format = " ${symbol} $text ";
};
in
sops.secrets.sunshine-salt = {
sopsFile = self + "/secrets/secrets.yaml";
};

sops.templates.sunshine-cred = {
content = builtins.toJSON {
username = config.myos.user.mainUser;
password = config.sops.placeholder.sunshine-pass;
salt = config.sops.placeholder.sunshine-salt;
};
owner = config.myos.user.mainUser;
};

services.sunshine = {
enable = true;
# package = (lib.addPatches pkgs.sunshine [
# (pkgs.fetchpatch {
# url = "https://github.com/LizardByte/Sunshine/pull/2885.patch";
# hash = "sha256-bMFmnHGosFOfStbeTBHxdfkYHDZFoWytMuZ9+O6W0LQ=";
# })
# ]);
autoStart = false;
capSysAdmin = true;
openFirewall = true;
settings = {
# TODO wait https://github.com/LizardByte/Sunshine/pull/2885
# output_name = monitor.headless;
output_name = 2;
credentials_file = config.sops.templates.sunshine-cred.path;
};
applications = {
apps = [
{
name = "tablet monitor";
auto-detach = "true";
prep-cmd = [
{
do = "${swaymsg} output HEADLESS-1 enable";
undo = "${swaymsg} output HEADLESS-1 disable";
}
];
}
];
};
};

myhome = { config, lib, osConfig, ... }:
{
home.pointerCursor = {
package = pkgs.adwaita-icon-theme;
Expand Down Expand Up @@ -205,17 +257,19 @@ lib.mkProfile s "sway"
};

config = {
inherit modifier;

workspaceAutoBackAndForth = true;

modifier = "Mod4";

terminal = lib.getExe config.programs.alacritty.package;

startup = [
{ command = "emacs"; }
{ command = "\"${swaymsg} create_output; ${swaymsg} output ${monitor.headless} disable\""; }
] ++ (lib.optional config.services.kanshi.enable
# workaround for https://github.com/emersion/kanshi/issues/43
{ command = "systemctl --user restart kanshi.service"; always = true; }
{ command = "${systemctl} --user restart kanshi.service"; always = true; }
) ++ (lib.optional osConfig.services.blueman.enable
{ command = "${blueman-applet}"; always = true; }
) ++ (lib.optional osConfig.i18n.inputMethod.enable
Expand Down Expand Up @@ -265,6 +319,10 @@ lib.mkProfile s "sway"
resolution = "2160x1350";
scale = "1.5";
};
"${monitor.headless}" = {
resolution = "2800x1752@60Hz";
scale = "2.0";
};
};

workspaceOutputAssign = [
Expand All @@ -276,7 +334,7 @@ lib.mkProfile s "sway"
{ workspace = "6"; output = monitor.internal; }
{ workspace = "7"; output = monitor.internal; }
{ workspace = "8"; output = monitor.internal; }
{ workspace = "9"; output = monitor.internal; }
{ workspace = "9"; output = monitor.headless; }
];

input = {
Expand Down Expand Up @@ -339,7 +397,7 @@ lib.mkProfile s "sway"
timeouts = [
{
timeout = 3600;
command = "systemctl suspend";
command = "${systemctl} suspend";
}
];
events = [
Expand All @@ -366,6 +424,10 @@ lib.mkProfile s "sway"
position = "0,0";
scale = 1.5;
}
{
criteria = "${monitor.headless}";
status = "disable";
}
];
}
{
Expand All @@ -381,6 +443,10 @@ lib.mkProfile s "sway"
position = "1920,0";
scale = 1.5;
}
{
criteria = "${monitor.headless}";
status = "disable";
}
];
}
];
Expand Down
7 changes: 7 additions & 0 deletions modules/profiles/user.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ in
default = { };
};

options.myhomecfg = lib.mkOption {
type = with lib.types; attrsOf anything;
default = { };
};

options.myos.user = {
mainUser = mkOption {
type = types.str;
Expand Down Expand Up @@ -46,6 +51,8 @@ in

home-manager.users."${cfg.mainUser}" = lib.mkAliasDefinitions options.myhome;

myhomecfg = config.home-manager.users."${cfg.mainUser}";

myhome = {
home.stateVersion = state-version;
systemd.user.startServices = "sd-switch";
Expand Down
6 changes: 4 additions & 2 deletions secrets/secrets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ github-pat: ENC[AES256_GCM,data:reRhhYADhVIqOwHtRve/G85sGiu0IvYFimxzfvBEFQQajP4V
atuin-key: ENC[AES256_GCM,data:TKuFfQxlfriiCeVYn/f/jeUTuPhFxQ4tbEhgDWvu/LTRLQbA6H+dZN1P1gXm7SRkQ0bjg26A69FBSJtaKjfbWN8GX0xmZcag,iv:PXqfx2Hj0axFK8B+IeD887cldeMcRCUoS9Bm54XWum8=,tag:lsZWRzHphi6GA43TJGkfow==,type:str]
atuin-session: ENC[AES256_GCM,data:0mLZFenCeLJSPa5ZCjjwbtQwhcpD8zcayATNHuL3guw=,iv:YUUCs9gCz8KuPdFWAyAl6gdbQVbftpLkSWyj7gMlcBk=,tag:G7z1gsG9rvoxLdSROGM2aw==,type:str]
github-ai-pat: ENC[AES256_GCM,data:7NnIq6acA1fB4BB3e4MZj/FUu7SunEFRMn8KMRXhzBEEZ4RcIhcvlQ==,iv:XBffDj2vzLaklWzNm3okMXqIroaSd9F0stFNT70omEg=,tag:bFL0AYiRsnRTQ3Es3r3FOQ==,type:str]
sunshine-pass: ENC[AES256_GCM,data:uwKV3OazIR4TAsCQqYa0yMzgVvFJDoIBwXCfRnxOdazVYnPNNhpyyZpngCK73e9jiak/So1KtNeiBm55O852EQ==,iv:1UAUQM/PEy/kwpD3i6/NMGHvgAUSOh/nKt2jmzUbju8=,tag:RjLYNGm3rvrlUTeuyZyW7A==,type:str]
sunshine-salt: ENC[AES256_GCM,data:FOJoLUYP6KksGbaIfgFfJQ==,iv:hXbDrR4it+EumLxZJXf3p/zHV69d+pzDqFUXEOZ9QK4=,tag:8/1P15y4gfv1x+QXSfTL5g==,type:str]
sops:
kms: []
gcp_kms: []
Expand Down Expand Up @@ -79,8 +81,8 @@ sops:
WXVrSkdkbEJ2WlR3ZEpjSHJmcWNIWkUK7z6Vpqufg9qO0sG3djOq4zEL3MkxJ96a
K1/t08qZt2OfqykutJ00lo0rQe7U16qw8BNPJEQjEnHwwdRsPtm71A==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-02-11T18:30:43Z"
mac: ENC[AES256_GCM,data:K/rvCxIFOkudnnAGYq7qfvwBbf8M5RnHKvVLItGexXiM7sAJx5YyXHSfNro3hofCdfxfQ/kAx+hPDixb9vKFbIJA7+zCR5DqvrRY6UOor/vE3Thn8PLaQHFKk/p8WozoYL2jGnMvC/dLXkotTPNaJnif2S5EULU1veafiw9eoZE=,iv:LJprW4YTtyUuDDVHm7RdKnNA351MoUYUxasUIXCOj8k=,tag:G8Q8xbJA0Zdu+uSld1GnKQ==,type:str]
lastmodified: "2025-02-22T19:38:27Z"
mac: ENC[AES256_GCM,data:K2Qi/6a3OOXvl7bEk3PKanSB0BiF7KCs4DgLcuekHLfYUZxmCu3hHInupCZgU8it28F47z7ajYoJqgX5qEVv28L2josu8S4fKRDCPfkdEpEFlO93Mz3/38es9oXQsTsFdJlFsAuVks7I7UcvE8GngWCa/sm07fqvOWoBVAtUNOw=,iv:xIujHkXArGkTeYvg5+Cffk2Si4XTwYmHpd84qCRzsHc=,tag:cU4Sevo9Eykl8en7sNa7ZA==,type:str]
pgp:
- created_at: "2024-10-31T18:23:15Z"
enc: |-
Expand Down

0 comments on commit 991c12b

Please sign in to comment.