nixos/config/desktop.nix
2026-06-03 20:34:44 +01:00

312 lines
7.6 KiB
Nix

{ pkgs, inputs, ... }:
{
#system.includeBuildDependencies = true; # THIS CAN'T BE INCLUDED IN COMMON YET BECAUSE SERVER DOES NOT HAVE ENOUGH STORAGE
hardware.graphics = {
enable = true;
};
qt.style = "adwaita-dark";
qt.platformTheme = "gnome";
#hyprland
services.displayManager.gdm.enable = true; # use sddm until gnome 50 due to https://github.com/systemd/systemd/issues/39259
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
services.libinput.enable = true; # hyprland and trackpad
# Enable CUPS to print documents.
services.printing.enable = true; # x86 only
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
services.tailscale.enable = true;
# Enable automatic login for the user.
# services.displayManager.autoLogin.enable = true;
# services.displayManager.autoLogin.user = "admin";
# services.gnome.gnome-keyring.enable = true;
# security.pam.services.gdm.enableGnomeKeyring = true; #unlock PAM
# Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
#services.xserver.desktopManager.retroarch.extraArgs = [
# "--config=/mnt/services/emulators/retroarch/retroarch.cfg"
#];
#x86 only
#services.ollama = {
# enable = true;
# acceleration = "cuda";
# openFirewall = true;
# host = "0.0.0.0";
# # Optional: preload models, see https://ollama.com/library
# loadModels = [ "gemma4" ];
# package = pkgs.unstable.ollama;
#};
programs.chromium = {
enable = true;
homepageLocation = "https://dashboard.mektem.com";
extraOpts = {
"SpellcheckEnabled" = true;
"BrowserThemeColor" = "#100f0f";
};
};
hardware.keyboard.qmk.enable = true;
services.logind.settings."Login"."HandlePowerKey" = "suspend";
boot = {
# Graphical boot
plymouth.enable = true;
# Allow higher virtual memory for games
kernel.sysctl."vm.max_map_count" = 2147483642;
initrd.systemd.enable = true; # LUKS login prompt
consoleLogLevel = 3;
initrd.verbose = false;
kernelParams = [
"quiet"
"udev.log_level=3"
"systemd.show_status=auto"
"rd.udev.log_level=3"
];
};
#services.udev.packages = [ pkgs.via ];
nixpkgs.overlays = [
(final: _: {
# this allows you to access `pkgs.unstable` anywhere in your config
unstable = import inputs.nixpkgs-unstable {
inherit (final.stdenv.hostPlatform) system;
inherit (final) config;
};
})
];
services.mullvad-vpn.enable = true;
environment.systemPackages = with pkgs; [
brave
firefox
blender
audacity
orca-slicer
gimp
inkscape
#unstable.protonmail-desktop
bitwarden-desktop
libreoffice
freecad
kiwix
obs-studio
obsidian
#unstable.proton-authenticator #x86 only
prismlauncher
unstable.signal-desktop
#tor-browser #x86 only
wireshark
monero-gui
moonlight-qt
#nvtopPackages.nvidia
dconf-editor
kdePackages.kdenlive
element-desktop
chirp
scrcpy
veracrypt
lmms
restic-browser
# games
gnome-2048
gnome-chess
cataclysm-dda
endless-sky
#mindustry #x86 only
openrct2
openttd
#osu-lazer-bin #x86 only
#runelite #x86 only
unciv
webcord
wesnoth
xonotic
zeroad # 0ad
# game utils
mangohud
#umu-launcher #x86 only
# emu
ryubing
xemu
#xenia-canary #86 only
#retroarch-full
rpcs3
dolphin-emu
#cemu #x86 only
# backup
keepassxc
];
fonts.fontconfig = {
antialias = true;
cache32Bit = true;
hinting.enable = true;
hinting.autohint = true;
};
#services.sunshine = {
# enable = true;
# autoStart = true;
# capSysAdmin = true;
# openFirewall = true;
# package = pkgs.sunshine.override {
# cudaSupport = true;
# };
#};
#services.hardware.openrgb.enable = true;
#services.hardware.openrgb.package = pkgs.openrgb-with-all-plugins;
programs = {
adb.enable = true;
localsend = {
enable = true;
openFirewall = true;
};
#coolercontrol = {
# enable = true;
#};
#gamescope = {
# enable = true;
# capSysNice = true;
#};
#steam = { #x86 only
# enable = true;
# gamescopeSession.enable = true;
# remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
# dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
# localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
#};
#gamemode.enable = true;
};
fileSystems."/mnt/media" = {
device = "//192.168.0.30/media";
fsType = "cifs";
options =
let
# this line prevents hanging on network split
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in
[ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ];
};
fileSystems."/mnt/services" = {
device = "//192.168.0.30/services";
fsType = "cifs";
options =
let
# this line prevents hanging on network split
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in
[ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ];
};
fileSystems."/mnt/data" = {
device = "//192.168.0.30/data";
fsType = "cifs";
options =
let
# this line prevents hanging on network split
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in
[ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ];
};
programs.virt-manager.enable = true;
users.groups.libvirtd.members = [ "admin" ];
virtualisation.libvirtd = {
enable = true;
qemu.swtpm.enable = true;
};
virtualisation.spiceUSBRedirection.enable = true;
imports = [ inputs.nix-flatpak.nixosModules.nix-flatpak ];
services.flatpak = {
enable = true;
update.auto = {
enable = true;
onCalendar = "weekly"; # Default value
};
# packages = [
# "com.bitwarden.desktop"
# "com.orcaslicer.OrcaSlicer"
# "me.proton.Mail"
# "org.audacityteam.Audacity"
# "org.blender.Blender"
# "org.freecad.FreeCAD"
# "org.gimp.GIMP"
# "org.inkscape.Inkscape"
# "org.kiwix.desktop"
# "org.libreoffice.LibreOffice"
# "md.obsidian.Obsidian"
# "com.obsproject.Studio"
# "org.prismlauncher.PrismLauncher"
# "org.wireshark.Wireshark"
# "org.getmonero.Monero"
# "com.moonlight_stream.Moonlight"
# "org.kde.kdenlive"
# "im.riot.Riot"
# "com.chirpmyradio.chirp"
# "io.lmms.LMMS"
# # games
# "com.github.Anuken.Mindustry"
# "com.play0ad.zeroad"
# "io.github.endless_sky.endless_sky"
# "io.github.spacingbat3.webcord"
# "io.github.yairm210.unciv"
# "io.openrct2.OpenRCT2"
# "net.runelite.RuneLite"
# "org.cataclysmdda.CataclysmDDA"
# "org.openttd.OpenTTD"
# "org.wesnoth.Wesnoth"
# "org.xonotic.Xonotic"
# "sh.ppy.osu"
#
# # emu
# "io.github.ryubing.Ryujinx"
# "app.xemu.xemu"
# "net.rpcs3.RPCS3"
# "org.DolphinEmu.dolphin-emu"
# "info.cemu.Cemu"
# # backup
# "org.keepassxc.KeePassXC"
#
# ];
};
}