Merge remote-tracking branch 'origin' into desktops
This commit is contained in:
+24
-11
@@ -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]) ++
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
})
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
|
||||
Reference in New Issue
Block a user