feat(desktop): move desktop services config to nixos modules
This commit is contained in:
parent
3040105f9c
commit
527a166a86
6 changed files with 98 additions and 114 deletions
|
@ -1,36 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
osConfig,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.desktop;
|
|
||||||
upstreamCfg = osConfig.desktop;
|
|
||||||
inherit (lib) mkMerge mkIf mkEnableOption;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
config = mkIf upstreamCfg.enable (mkMerge [
|
|
||||||
(lib.mkIf (osConfig.hardware.gpu == "nvidia") {
|
|
||||||
})
|
|
||||||
(lib.mkIf osConfig.desktop.enableSpotifyd {
|
|
||||||
services.spotifyd.enable = true;
|
|
||||||
services.spotifyd.settings.global = {
|
|
||||||
device_name = "${osConfig.system.hostname}";
|
|
||||||
device_type = "computer";
|
|
||||||
zeroconf_port = 5353;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(lib.mkIf osConfig.desktop.enableSteam {
|
|
||||||
home.persistence."/persist/home/${config.snowfallorg.user.name}".directories = [
|
|
||||||
".local/share/Steam"
|
|
||||||
];
|
|
||||||
})
|
|
||||||
(lib.mkIf osConfig.desktop.enableSunshine {
|
|
||||||
home.persistence."/persist/home/${config.snowfallorg.user.name}".directories = [
|
|
||||||
".config/sunshine"
|
|
||||||
];
|
|
||||||
})
|
|
||||||
]);
|
|
||||||
}
|
|
|
@ -5,9 +5,14 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (lib) mkEnableOption mkIf singleton;
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
singleton
|
||||||
|
optional
|
||||||
|
;
|
||||||
inherit (lib.pantheon) mkStrOption;
|
inherit (lib.pantheon) mkStrOption;
|
||||||
inherit (pkgs) wl-clipboard-rs;
|
inherit (pkgs) font-awesome wl-clipboard-rs;
|
||||||
cfg = config.desktop;
|
cfg = config.desktop;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
@ -16,49 +21,16 @@ in
|
||||||
enableWaylandUtilities = mkEnableOption "";
|
enableWaylandUtilities = mkEnableOption "";
|
||||||
mainMonitor = {
|
mainMonitor = {
|
||||||
id = mkStrOption;
|
id = mkStrOption;
|
||||||
scale = lib.pantheon.mkStrOption;
|
scale = mkStrOption;
|
||||||
resolution = lib.pantheon.mkStrOption;
|
resolution = mkStrOption;
|
||||||
refresh-rate = lib.pantheon.mkStrOption;
|
refresh-rate = mkStrOption;
|
||||||
};
|
};
|
||||||
enableSpotifyd = lib.mkEnableOption "";
|
|
||||||
enableSteam = lib.mkEnableOption "";
|
|
||||||
enableVR = lib.mkEnableOption "";
|
|
||||||
enableSunshine = lib.mkEnableOption "";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkMerge [
|
config = mkIf cfg.enable {
|
||||||
{
|
fonts.packages = singleton font-awesome;
|
||||||
fonts.packages = with pkgs; [
|
home-manager.sharedModules = optional cfg.enableWaylandUtilities {
|
||||||
font-awesome
|
home.packages = [ wl-clipboard-rs ];
|
||||||
];
|
};
|
||||||
}
|
};
|
||||||
(mkIf cfg.enableWaylandUtilities {
|
|
||||||
home-manager.sharedModules = singleton { home.packages = [ wl-clipboard-rs ]; };
|
|
||||||
})
|
|
||||||
(lib.mkIf config.desktop.enableSteam {
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
gamescopeSession.enable = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(lib.mkIf config.desktop.enableVR {
|
|
||||||
programs.alvr = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [ pkgs.android-tools ];
|
|
||||||
})
|
|
||||||
(lib.mkIf config.desktop.enableSunshine {
|
|
||||||
services.sunshine = {
|
|
||||||
enable = true;
|
|
||||||
capSysAdmin = true;
|
|
||||||
openFirewall = true;
|
|
||||||
settings = {
|
|
||||||
sunshine_name = config.system.hostname;
|
|
||||||
origin_web_ui_allowed = "wan";
|
|
||||||
};
|
|
||||||
applications = { };
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
52
modules/nixos/desktop/services/default.nix
Normal file
52
modules/nixos/desktop/services/default.nix
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkMerge
|
||||||
|
singleton
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
cfg = config.desktop.services;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.desktop.services = {
|
||||||
|
spotifyd.enable = mkEnableOption "";
|
||||||
|
sunshine.enable = mkEnableOption "";
|
||||||
|
steam.enable = mkEnableOption "";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkMerge [
|
||||||
|
(mkIf cfg.sunshine.enable {
|
||||||
|
services.sunshine = {
|
||||||
|
enable = true;
|
||||||
|
capSysAdmin = true;
|
||||||
|
openFirewall = true;
|
||||||
|
settings = {
|
||||||
|
sunshine_name = config.system.hostname;
|
||||||
|
origin_web_ui_allowed = "wan";
|
||||||
|
};
|
||||||
|
applications = { };
|
||||||
|
};
|
||||||
|
home-manager.sharedModules = singleton { persistDirs = singleton ".config/sunshine"; };
|
||||||
|
})
|
||||||
|
(mkIf cfg.spotifyd.enable {
|
||||||
|
networking.firewall.allowedTCPPorts = [ 5353 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 5353 ];
|
||||||
|
home-manager.sharedModules = singleton {
|
||||||
|
services.spotifyd.enable = true;
|
||||||
|
services.spotifyd.settings.global = {
|
||||||
|
device_name = "${config.system.hostname}";
|
||||||
|
device_type = "computer";
|
||||||
|
zeroconf_port = 5353;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(mkIf cfg.steam.enable {
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
};
|
||||||
|
home-manager.sharedModules = singleton { persistDirs = singleton ".local/share/Steam"; };
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
|
@ -1,30 +1,24 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
{
|
{
|
||||||
config = lib.mkMerge [
|
config = {
|
||||||
{
|
networking = {
|
||||||
networking = {
|
enableIPv6 = false;
|
||||||
enableIPv6 = false;
|
useDHCP = lib.mkDefault true;
|
||||||
useDHCP = lib.mkDefault true;
|
hostName = config.system.hostname;
|
||||||
hostName = config.system.hostname;
|
networkmanager.enable = true;
|
||||||
networkmanager.enable = true;
|
};
|
||||||
};
|
|
||||||
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
PrintMotd = true;
|
PrintMotd = true;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
enable = true;
|
enable = true;
|
||||||
authKeyFile = config.sops.secrets."keys/tailscale".path;
|
authKeyFile = config.sops.secrets."keys/tailscale".path;
|
||||||
};
|
};
|
||||||
environment.persistence."/persist".directories = [ "/var/lib/tailscale" ];
|
environment.persistence."/persist".directories = [ "/var/lib/tailscale" ];
|
||||||
}
|
};
|
||||||
(lib.mkIf config.desktop.enableSpotifyd {
|
|
||||||
networking.firewall.allowedTCPPorts = [ 5353 ];
|
|
||||||
networking.firewall.allowedUDPPorts = [ 5353 ];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,9 +9,5 @@
|
||||||
status-bar.waybar.enable = true;
|
status-bar.waybar.enable = true;
|
||||||
terminal.ghostty.enable = true;
|
terminal.ghostty.enable = true;
|
||||||
window-manager.hyprland.enable = true;
|
window-manager.hyprland.enable = true;
|
||||||
enableSpotifyd = true;
|
|
||||||
enableSteam = true;
|
|
||||||
enableVR = true;
|
|
||||||
enableSunshine = true;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../common.nix
|
../common.nix
|
||||||
|
@ -21,11 +20,18 @@
|
||||||
usb.automount = true;
|
usb.automount = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
desktop.mainMonitor = {
|
desktop = {
|
||||||
id = "desc:OOO AN-270W04K";
|
services = {
|
||||||
scale = "2";
|
steam.enable = true;
|
||||||
resolution = "3840x2160";
|
sunshine.enable = true;
|
||||||
refresh-rate = "60";
|
spotifyd.enable = true;
|
||||||
|
};
|
||||||
|
mainMonitor = {
|
||||||
|
id = "desc:OOO AN-270W04K";
|
||||||
|
scale = "2";
|
||||||
|
resolution = "3840x2160";
|
||||||
|
refresh-rate = "60";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue