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
|
||||
inherit (lib) mkEnableOption mkIf singleton;
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
mkIf
|
||||
singleton
|
||||
optional
|
||||
;
|
||||
inherit (lib.pantheon) mkStrOption;
|
||||
inherit (pkgs) wl-clipboard-rs;
|
||||
inherit (pkgs) font-awesome wl-clipboard-rs;
|
||||
cfg = config.desktop;
|
||||
in
|
||||
{
|
||||
|
@ -16,49 +21,16 @@ in
|
|||
enableWaylandUtilities = mkEnableOption "";
|
||||
mainMonitor = {
|
||||
id = mkStrOption;
|
||||
scale = lib.pantheon.mkStrOption;
|
||||
resolution = lib.pantheon.mkStrOption;
|
||||
refresh-rate = lib.pantheon.mkStrOption;
|
||||
scale = mkStrOption;
|
||||
resolution = mkStrOption;
|
||||
refresh-rate = mkStrOption;
|
||||
};
|
||||
enableSpotifyd = lib.mkEnableOption "";
|
||||
enableSteam = lib.mkEnableOption "";
|
||||
enableVR = lib.mkEnableOption "";
|
||||
enableSunshine = lib.mkEnableOption "";
|
||||
};
|
||||
|
||||
config = lib.mkMerge [
|
||||
{
|
||||
fonts.packages = with pkgs; [
|
||||
font-awesome
|
||||
];
|
||||
}
|
||||
(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 = { };
|
||||
};
|
||||
})
|
||||
];
|
||||
config = mkIf cfg.enable {
|
||||
fonts.packages = singleton font-awesome;
|
||||
home-manager.sharedModules = optional cfg.enableWaylandUtilities {
|
||||
home.packages = [ wl-clipboard-rs ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
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.mkMerge [
|
||||
{
|
||||
networking = {
|
||||
enableIPv6 = false;
|
||||
useDHCP = lib.mkDefault true;
|
||||
hostName = config.system.hostname;
|
||||
networkmanager.enable = true;
|
||||
};
|
||||
config = {
|
||||
networking = {
|
||||
enableIPv6 = false;
|
||||
useDHCP = lib.mkDefault true;
|
||||
hostName = config.system.hostname;
|
||||
networkmanager.enable = true;
|
||||
};
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PrintMotd = true;
|
||||
};
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PrintMotd = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
authKeyFile = config.sops.secrets."keys/tailscale".path;
|
||||
};
|
||||
environment.persistence."/persist".directories = [ "/var/lib/tailscale" ];
|
||||
}
|
||||
(lib.mkIf config.desktop.enableSpotifyd {
|
||||
networking.firewall.allowedTCPPorts = [ 5353 ];
|
||||
networking.firewall.allowedUDPPorts = [ 5353 ];
|
||||
})
|
||||
];
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
authKeyFile = config.sops.secrets."keys/tailscale".path;
|
||||
};
|
||||
environment.persistence."/persist".directories = [ "/var/lib/tailscale" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,9 +9,5 @@
|
|||
status-bar.waybar.enable = true;
|
||||
terminal.ghostty.enable = true;
|
||||
window-manager.hyprland.enable = true;
|
||||
enableSpotifyd = true;
|
||||
enableSteam = true;
|
||||
enableVR = true;
|
||||
enableSunshine = true;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../common.nix
|
||||
|
@ -21,11 +20,18 @@
|
|||
usb.automount = true;
|
||||
};
|
||||
|
||||
desktop.mainMonitor = {
|
||||
id = "desc:OOO AN-270W04K";
|
||||
scale = "2";
|
||||
resolution = "3840x2160";
|
||||
refresh-rate = "60";
|
||||
desktop = {
|
||||
services = {
|
||||
steam.enable = true;
|
||||
sunshine.enable = true;
|
||||
spotifyd.enable = true;
|
||||
};
|
||||
mainMonitor = {
|
||||
id = "desc:OOO AN-270W04K";
|
||||
scale = "2";
|
||||
resolution = "3840x2160";
|
||||
refresh-rate = "60";
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue