Merge remote-tracking branch 'origin' into desktops

This commit is contained in:
2026-09-22 15:27:38 -04:00
10 changed files with 555 additions and 234 deletions
+24 -11
View File
@@ -76,6 +76,16 @@ in {
enable = lib.mkEnableOption "OpenGL/Vulkan overlay tool shown in games presenting FPS, CPU/GPU/memory utilization, load, etc.";
};
proton = {
enable = lib.mkEnableOption "Proton compatibility tool management";
manager = lib.mkOption {
type = lib.types.enum ["protonplus" "protonup-qt"];
default = "protonup-qt";
description = "Graphical Proton compatibility tool manager to install";
};
};
lutris = {
enable = lib.mkEnableOption "Lutris game manager and launcher";
package = lib.mkOption {
@@ -93,14 +103,7 @@ in {
};
};
# Compatibility layers for Lutris
compatibility = {
protonSupport = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Enable Proton-like compatibility layers for Lutris";
};
extraTools = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = [];
@@ -153,14 +156,27 @@ in {
archon = {
enable = lib.mkEnableOption "Archon from NUR";
};
opengoal = {
enable = lib.mkEnableOption "OpenGOAL, a game engine used in a certain PlayStation 2 franchise";
};
};
config = let
agl = cfg.aagl;
nurPkgs = import "${nur.outPath}/pkgs" { inherit pkgs; };
protonManager = {
protonplus = pkgs.protonplus;
protonup-qt = pkgs.protonup-qt;
}.${cfg.proton.manager};
in {
programs.steam = lib.mkIf cfg.steam.enable {
enable = true;
extraPackages = with pkgs; [
gamescope
gamemode
];
remotePlay.openFirewall = cfg.steam.firewall.remotePlay;
localNetworkGameTransfers.openFirewall = cfg.steam.firewall.localNetworkGameTransfers;
};
@@ -214,13 +230,10 @@ in {
cfg.lutris.wine.package
pkgs.winetricks
]) ++
(lib.optionals cfg.lutris.compatibility.protonSupport [
pkgs.protonup-ng
pkgs.protonup-qt
]) ++
cfg.lutris.compatibility.extraTools ++
cfg.lutris.extraPackages
)) ++
(lib.optionals cfg.proton.enable [protonManager]) ++
(lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++
(lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++
(lib.optionals cfg.vintage-story.enable [nurPkgs.vintage-story]) ++
+5 -4
View File
@@ -43,6 +43,11 @@ in {
vulkan-tools
mesa-demos
];
hardware.graphics = {
enable = true;
enable32Bit = true;
};
}
(mkIf (cfg.gpuVendor == "nvidia") {
@@ -61,9 +66,6 @@ in {
(mkIf (cfg.gpuVendor == "amd") {
services.xserver.videoDrivers = ["amdgpu"];
# hardware.graphics.extraPackages = with pkgs; [
# amdvlk
# ];
environment.systemPackages = with pkgs; [
radeontop
];
@@ -82,7 +84,6 @@ in {
environment.sessionVariables = {
MOZ_ENABLE_WAYLAND = "1";
QT_QPA_PLATFORM = "wayland";
SDL_VIDEODRIVER = "wayland";
};
})
+4 -8
View File
@@ -3,7 +3,6 @@
pkgs,
userName,
aagl,
nur,
...
}: let
flatpakPackages = [
@@ -85,9 +84,6 @@ in {
ollama-rocm
newelle
vlc
mediainfo
makemkv
ffmpeg
];
# Enable Polkit
@@ -114,21 +110,21 @@ in {
gamemode.enable = true;
gamescope.enable = true;
mangohud.enable = true;
proton = {
enable = true;
manager = "protonplus";
};
lutris = {
enable = true;
wine = {
enable = true;
package = pkgs.wine-staging;
};
compatibility = {
protonSupport = true;
};
};
ffxiv.enable = true;
archon.enable = true;
minecraft.enable = true;
aagl.wavey-launcher.enable = true;
vintage-story.enable = true;
};
+98 -18
View File
@@ -1,8 +1,10 @@
{
nur,
pkgs,
userName,
...
}: let
}:
let
# INFO: set these to your liking
matrixFqdn = "chat.wyattjmiller.com";
rtcFqdn = "rtc.wyattjmiller.com";
@@ -10,16 +12,50 @@
supportEmail = "wyatt@wyattjmiller.com";
livekitKeyFile = "/var/lib/livekit/livekit.key";
matrixRegistrationTokenFile = "/var/lib/matrix.key";
in {
sableWeb = nur.packages.${pkgs.stdenv.hostPlatform.system}.sable-web;
sableConfig = pkgs.writeTextDir "config.json" (
builtins.toJSON {
defaultHomeserver = 0;
homeserverList = [ matrixFqdn ];
allowCustomHomeservers = false;
disableAccountSwitcher = false;
hideUsernamePasswordFields = false;
hashRouter = {
enabled = false;
basename = "/";
};
featuredCommunities = {
spaces = [
"#seventhdawn:chat.wyattjmiller.com"
];
rooms = [
"#general:chat.wyattjmiller.com"
"#gposeglams:chat.wyattjmiller.com"
"#lobby-vc:chat.wyattjmiller.com"
"#annoucements:chat.wyattjmiller.com"
];
};
}
);
in
{
imports = [
../../pwrMgmt
];
# Enable flakes for NixOS
nix.settings.experimental-features = ["nix-command" "flakes"];
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
nix.settings = {
download-buffer-size = 134217728; # 128 MiB in bytes
download-buffer-size = 134217728; # 128 MiB in bytes
};
# Custom kernel/boot stuff
@@ -79,13 +115,13 @@ in {
8448
];
allowedUDPPortRanges =[
allowedUDPPortRanges = [
# TURN UDP relays
{
{
from = 49000;
to = 50000;
}
#
#
{
from = 50100;
to = 50200;
@@ -99,7 +135,11 @@ in {
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
];
extraGroups = ["wheel" "video" "network"];
extraGroups = [
"wheel"
"video"
"network"
];
};
# fail2ban
@@ -144,11 +184,13 @@ in {
server = "${matrixFqdn}:443";
support_email = supportEmail;
support_mxid = "@wymiller:${matrixFqdn}";
rtc_transports = [{
type = "livekit";
livekit_service_url = "https://${rtcFqdn}";
}];
rtc_transports = [
{
type = "livekit";
livekit_service_url = "https://${rtcFqdn}";
}
];
};
};
};
@@ -176,8 +218,37 @@ in {
virtualHosts = {
"${matrixFqdn}" = {
extraConfig = ''
encode zstd gzip
reverse_proxy localhost:8008
@matrixEndpoints path \
/_matrix/* \
/_tuwunel/* \
/.well-known/matrix/*
handle @matrixEndpoints {
reverse_proxy 127.0.0.1:8008
}
@sableConfig path /config.json
handle @sableConfig {
root * ${sableConfig}
header Cache-Control "no-store"
file_server
}
handle {
root * ${sableWeb}
encode zstd gzip
try_files {path} /index.html
file_server {
precompressed br
}
header /assets/* Cache-Control "public, max-age=31536000, immutable"
header /sw.js Cache-Control "no-cache"
header /index.html Cache-Control "no-cache"
header Document-Policy "js-profiling"
}
'';
};
"${matrixFqdn}:8448" = {
@@ -220,7 +291,10 @@ in {
matrix-registration-token-gen = {
before = [ "tuwunel.service" ];
wantedBy = [ "multi-user.target" ];
path = with pkgs; [ coreutils openssl ];
path = with pkgs; [
coreutils
openssl
];
script = ''
set -eu
@@ -242,9 +316,15 @@ in {
};
livekit-key-gen = {
before = [ "lk-jwt-service.service" "livekit.service" ];
before = [
"lk-jwt-service.service"
"livekit.service"
];
wantedBy = [ "multi-user.target" ];
path = with pkgs; [ coreutils openssl ];
path = with pkgs; [
coreutils
openssl
];
script = ''
set -eu
+5
View File
@@ -3,6 +3,11 @@
services.pipewire = {
enable = true;
pulse.enable = true;
alsa = {
enable = true;
support32Bit = true;
};
};
environment.systemPackages = with pkgs; [