fix formatting

This commit is contained in:
Melvin Ragusa
2026-02-03 11:14:57 +01:00
parent 5e91500f25
commit b53c2ecaa9
10 changed files with 147 additions and 93 deletions

View File

@@ -47,7 +47,7 @@ All feature configurations live in `modules/` as standalone NixOS modules:
- `services.nix` - fstrim, zram, avahi, profile-sync-daemon, earlyoom - `services.nix` - fstrim, zram, avahi, profile-sync-daemon, earlyoom
- `audio.nix`, `theming.nix`, `power.nix`, `virtualization.nix`, `navidrome.nix`, `apps.nix` - `audio.nix`, `theming.nix`, `power.nix`, `virtualization.nix`, `navidrome.nix`, `apps.nix`
Each module follows the pattern: `{ config, pkgs, lib, ... }: { ... }` Each module follows the pattern: `{ config, pkgs, lib, ... }:`
**Package Management Philosophy:** **Package Management Philosophy:**
- System packages (`environment.systemPackages`): Services, hardware support, desktop infrastructure, build tools - System packages (`environment.systemPackages`): Services, hardware support, desktop infrastructure, build tools

View File

@@ -1,6 +1,9 @@
{ {
description = "atlas - NixOS Config for Desktop"; description = "atlas - NixOS Config for Desktop";
# ═══════════════════════════════════════════════════════════════
# INPUTS
# ═══════════════════════════════════════════════════════════════
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
@@ -46,6 +49,9 @@
]; ];
}; };
# ═══════════════════════════════════════════════════════════════
# OUTPUTS
# ═══════════════════════════════════════════════════════════════
outputs = outputs =
inputs@{ self, nixpkgs, ... }: inputs@{ self, nixpkgs, ... }:
let let

View File

@@ -9,46 +9,46 @@
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Media Viewers # MEDIA VIEWERS
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
loupe # GNOME image viewer loupe # GNOME image viewer
evince # PDF/document viewer evince # PDF/document viewer
celluloid # MPV frontend (GTK video player) celluloid # MPV frontend (GTK video player)
mpv # Powerful CLI video player mpv # Powerful CLI video player
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Music # MUSIC
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
amberol # Simple music player for local files amberol # Simple music player for local files
feishin # Navidrome/Jellyfin client feishin # Navidrome/Jellyfin client
picard # MusicBrainz Picard - music tagger picard # MusicBrainz Picard - music tagger
beets # Music library manager beets # Music library manager
cava # Audio visualizer cava # Audio visualizer
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Communication # COMMUNICATION
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
vesktop # Discord client (Wayland-native, with Vencord) vesktop # Discord client (Wayland-native, with Vencord)
thunderbird # Email client thunderbird # Email client
signal-desktop # Encrypted messaging signal-desktop # Encrypted messaging
telegram-desktop # Telegram client telegram-desktop # Telegram client
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Office & Productivity # OFFICE & PRODUCTIVITY
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
onlyoffice-desktopeditors # Office suite (latest) onlyoffice-desktopeditors # Office suite (latest)
obsidian # Note-taking with Markdown obsidian # Note-taking with Markdown
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# System Utilities # SYSTEM UTILITIES
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
btop # Modern system monitor (terminal) btop # Modern system monitor (terminal)
mission-center # GNOME system monitor (GUI, like Windows Task Manager) mission-center # GNOME system monitor (GUI, like Windows Task Manager)
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# File Management (GNOME integration) # FILE MANAGEMENT
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
file-roller # Archive manager (GUI) file-roller # Archive manager (GUI)
gnome-disk-utility # Disk management gnome-disk-utility # Disk management
@@ -58,9 +58,9 @@
p7zip p7zip
unrar unrar
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Screenshots & Screen Recording # SCREENSHOTS & RECORDING
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
swappy # Screenshot annotation tool swappy # Screenshot annotation tool
# Screen recording # Screen recording
@@ -68,24 +68,24 @@
gpu-screen-recorder # Lightweight GPU-accelerated recorder (AMD/NVIDIA/Intel) gpu-screen-recorder # Lightweight GPU-accelerated recorder (AMD/NVIDIA/Intel)
kooha # Simple GNOME-style screen recorder kooha # Simple GNOME-style screen recorder
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Security & Passwords # SECURITY & PASSWORDS
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
bitwarden-desktop # Password manager bitwarden-desktop # Password manager
seahorse # GNOME Keyring GUI seahorse # GNOME Keyring GUI
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Utilities # UTILITIES
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
gnome-calculator # Calculator gnome-calculator # Calculator
gnome-clocks # World clocks, alarms, timers gnome-clocks # World clocks, alarms, timers
baobab # Disk usage analyzer baobab # Disk usage analyzer
localsend # AirDrop-like file sharing (cross-platform) localsend # AirDrop-like file sharing (cross-platform)
meld # Visual diff and merge tool meld # Visual diff and merge tool
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# System Tools # SYSTEM TOOLS
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
rclone # Cloud storage sync (Google Drive, Dropbox, etc.) rclone # Cloud storage sync (Google Drive, Dropbox, etc.)
]; ];

View File

@@ -8,10 +8,15 @@
}: }:
{ {
# ═══════════════════════════════════════════════════════════════
# BLUETOOTH
# ═══════════════════════════════════════════════════════════════
# Bluetooth GUI management # Bluetooth GUI management
services.blueman.enable = true; services.blueman.enable = true;
# Audio packages # ═══════════════════════════════════════════════════════════════
# AUDIO PACKAGES
# ═══════════════════════════════════════════════════════════════
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# PipeWire volume control # PipeWire volume control
pwvucontrol # Modern PipeWire volume control (Qt) pwvucontrol # Modern PipeWire volume control (Qt)
@@ -28,6 +33,9 @@
# Bluetooth audio codecs are handled by PipeWire automatically # Bluetooth audio codecs are handled by PipeWire automatically
]; ];
# ═══════════════════════════════════════════════════════════════
# BLUETOOTH CODECS
# ═══════════════════════════════════════════════════════════════
# Ensure PipeWire has good Bluetooth codec support # Ensure PipeWire has good Bluetooth codec support
# This is already configured in your main config, but we ensure AAC/LDAC support # This is already configured in your main config, but we ensure AAC/LDAC support
services.pipewire.wireplumber.extraConfig = { services.pipewire.wireplumber.extraConfig = {

View File

@@ -9,14 +9,20 @@
}: }:
{ {
# XDG Portal - Required for screen sharing, file pickers, etc. # ═══════════════════════════════════════════════════════════════
# XDG PORTALS
# ═══════════════════════════════════════════════════════════════
# Required for screen sharing, file pickers, etc.
xdg.portal = { xdg.portal = {
enable = true; enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
config.common.default = "*"; config.common.default = "*";
}; };
# Polkit - GUI privilege escalation # ═══════════════════════════════════════════════════════════════
# POLKIT
# ═══════════════════════════════════════════════════════════════
# GUI privilege escalation
security.polkit.enable = true; security.polkit.enable = true;
# Polkit authentication agent (runs on login) # Polkit authentication agent (runs on login)
@@ -34,7 +40,9 @@
}; };
}; };
# Desktop packages # ═══════════════════════════════════════════════════════════════
# DESKTOP PACKAGES
# ═══════════════════════════════════════════════════════════════
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# Vicinae launcher # Vicinae launcher
inputs.vicinae.packages.${pkgs.system}.default inputs.vicinae.packages.${pkgs.system}.default
@@ -52,15 +60,16 @@
wlr-randr # Display configuration wlr-randr # Display configuration
wayland-utils # Debug utilities wayland-utils # Debug utilities
# ───────────────────────────────────────────────────────────── # ─── Additional Desktop Utilities ───
# Additional desktop utilities (migrated from Arch)
# ─────────────────────────────────────────────────────────────
cliphist # Clipboard history for Wayland cliphist # Clipboard history for Wayland
wlsunset # Blue light filter / night mode wlsunset # Blue light filter / night mode
brightnessctl # Brightness control (even for desktop monitors via DDC) brightnessctl # Brightness control (even for desktop monitors via DDC)
wlogout # Logout menu / session manager wlogout # Logout menu / session manager
]; ];
# ═══════════════════════════════════════════════════════════════
# WAYLAND ENVIRONMENT
# ═══════════════════════════════════════════════════════════════
# Environment variables for Wayland compatibility # Environment variables for Wayland compatibility
environment.sessionVariables = { environment.sessionVariables = {
# Wayland defaults # Wayland defaults
@@ -81,7 +90,10 @@
XCURSOR_SIZE = "24"; XCURSOR_SIZE = "24";
}; };
# GNOME services for better desktop integration # ═══════════════════════════════════════════════════════════════
# GNOME SERVICES
# ═══════════════════════════════════════════════════════════════
# Better desktop integration
services.gvfs.enable = true; # Virtual filesystem (trash, MTP, SMB) services.gvfs.enable = true; # Virtual filesystem (trash, MTP, SMB)
services.udisks2.enable = true; # Disk mounting services.udisks2.enable = true; # Disk mounting
} }

View File

@@ -9,7 +9,9 @@
}: }:
{ {
# Docker # ═══════════════════════════════════════════════════════════════
# DOCKER
# ═══════════════════════════════════════════════════════════════
virtualisation.docker = { virtualisation.docker = {
enable = true; enable = true;
@@ -24,53 +26,46 @@
# Add user to docker group # Add user to docker group
users.users.${username}.extraGroups = [ "docker" ]; users.users.${username}.extraGroups = [ "docker" ];
# Direnv for per-project environments # ═══════════════════════════════════════════════════════════════
# DIRENV
# ═══════════════════════════════════════════════════════════════
# Per-project environments
programs.direnv = { programs.direnv = {
enable = true; enable = true;
nix-direnv.enable = true; # Faster direnv for Nix nix-direnv.enable = true; # Faster direnv for Nix
}; };
# Development packages # ═══════════════════════════════════════════════════════════════
# DEVELOPMENT PACKAGES
# ═══════════════════════════════════════════════════════════════
# NOTE: GUI tools (dbeaver) and optional TUIs (lazygit, lazydocker) are in `nix profile` # NOTE: GUI tools (dbeaver) and optional TUIs (lazygit, lazydocker) are in `nix profile`
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# ───────────────────────────────────────────────────────────── # ─── Containers ───
# Containers
# ─────────────────────────────────────────────────────────────
docker-compose # Docker Compose v2 docker-compose # Docker Compose v2
# ───────────────────────────────────────────────────────────── # ─── Languages & Runtimes ───
# Languages & Runtimes
# ─────────────────────────────────────────────────────────────
nodejs_22 # Node.js LTS (for Vicinae extensions, etc.) nodejs_22 # Node.js LTS (for Vicinae extensions, etc.)
bun # Fast JavaScript runtime/bundler bun # Fast JavaScript runtime/bundler
python3 # Python 3 python3 # Python 3
rustup # Rust toolchain manager rustup # Rust toolchain manager
# ───────────────────────────────────────────────────────────── # ─── Build Tools ───
# Build Tools
# ─────────────────────────────────────────────────────────────
gcc gcc
gnumake gnumake
cmake cmake
pkg-config pkg-config
# ───────────────────────────────────────────────────────────── # ─── Version Control ───
# Version Control
# ─────────────────────────────────────────────────────────────
git git
gh # GitHub CLI gh # GitHub CLI
delta # Better git diff delta # Better git diff
lazygit # Git UI lazygit # Git UI
# ───────────────────────────────────────────────────────────── # ─── Editors & LSP ───
# Editors & LSP
# ─────────────────────────────────────────────────────────────
# nil already in base config (Nix LSP) # nil already in base config (Nix LSP)
nixfmt # Nix formatter nixfmt # Nix formatter
# ───────────────────────────────────────────────────────────── # ─── CLI Utilities ───
# CLI Utilities (used by shell aliases)
# ─────────────────────────────────────────────────────────────
jq # JSON processor jq # JSON processor
yq # YAML processor yq # YAML processor
ripgrep # Fast grep ripgrep # Fast grep

View File

@@ -9,7 +9,9 @@
}: }:
{ {
# Steam # ═══════════════════════════════════════════════════════════════
# STEAM
# ═══════════════════════════════════════════════════════════════
programs.steam = { programs.steam = {
enable = true; enable = true;
remotePlay.openFirewall = true; # Steam Remote Play remotePlay.openFirewall = true; # Steam Remote Play
@@ -22,7 +24,13 @@
]; ];
}; };
# Gamemode - Optimize system for gaming # Steam hardware support (controllers, VR, etc.)
hardware.steam-hardware.enable = true;
# ═══════════════════════════════════════════════════════════════
# GAMEMODE
# ═══════════════════════════════════════════════════════════════
# Optimize system for gaming
programs.gamemode = { programs.gamemode = {
enable = true; enable = true;
enableRenice = true; # Allow renice for priority boost enableRenice = true; # Allow renice for priority boost
@@ -40,10 +48,9 @@
}; };
}; };
# Steam hardware support (controllers, VR, etc.) # ═══════════════════════════════════════════════════════════════
hardware.steam-hardware.enable = true; # GAMING PACKAGES
# ═══════════════════════════════════════════════════════════════
# Gaming packages
# NOTE: Game launchers (lutris, heroic, protonup-qt) are in `nix profile` # NOTE: Game launchers (lutris, heroic, protonup-qt) are in `nix profile`
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# Wine for non-Steam games # Wine for non-Steam games
@@ -61,7 +68,9 @@
heroic heroic
]; ];
# Gaming-related kernel tweaks # ═══════════════════════════════════════════════════════════════
# KERNEL TWEAKS
# ═══════════════════════════════════════════════════════════════
boot.kernel.sysctl = { boot.kernel.sysctl = {
# Increase file watchers for large games # Increase file watchers for large games
"fs.inotify.max_user_watches" = 524288; "fs.inotify.max_user_watches" = 524288;
@@ -71,11 +80,17 @@
"vm.vfs_cache_pressure" = 50; "vm.vfs_cache_pressure" = 50;
}; };
# ═══════════════════════════════════════════════════════════════
# CONTROLLER SUPPORT
# ═══════════════════════════════════════════════════════════════
# Udev rules for game controllers # Udev rules for game controllers
services.udev.packages = with pkgs; [ services.udev.packages = with pkgs; [
game-devices-udev-rules # Support for various game controllers game-devices-udev-rules # Support for various game controllers
]; ];
# ═══════════════════════════════════════════════════════════════
# USER PERMISSIONS
# ═══════════════════════════════════════════════════════════════
# Add user to gamemode group # Add user to gamemode group
users.users.${username}.extraGroups = [ "gamemode" ]; users.users.${username}.extraGroups = [ "gamemode" ];
} }

View File

@@ -9,6 +9,9 @@
}: }:
{ {
# ═══════════════════════════════════════════════════════════════
# AMD GPU DRIVERS
# ═══════════════════════════════════════════════════════════════
# Enable OpenGL/Vulkan # Enable OpenGL/Vulkan
hardware.graphics = { hardware.graphics = {
enable = true; enable = true;
@@ -33,7 +36,10 @@
# RADV (Mesa Vulkan driver) is enabled by default and is the best choice for gaming # RADV (Mesa Vulkan driver) is enabled by default and is the best choice for gaming
# No need for AMD_VULKAN_ICD environment variable anymore # No need for AMD_VULKAN_ICD environment variable anymore
# CoreCtrl for fan curves, overclocking, and GPU monitoring # ═══════════════════════════════════════════════════════════════
# CORECTRL
# ═══════════════════════════════════════════════════════════════
# Fan curves, overclocking, and GPU monitoring
programs.corectrl.enable = true; programs.corectrl.enable = true;
# AMD GPU overdrive/overclocking support # AMD GPU overdrive/overclocking support
@@ -44,17 +50,19 @@
# NOTE: Kernel params (amdgpu.ppfeaturemask) are in configuration.nix # NOTE: Kernel params (amdgpu.ppfeaturemask) are in configuration.nix
# GPU monitoring tools # ═══════════════════════════════════════════════════════════════
# GPU PACKAGES
# ═══════════════════════════════════════════════════════════════
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# Monitoring # ─── Monitoring ───
radeontop # AMD GPU monitoring (like nvidia-smi) radeontop # AMD GPU monitoring (like nvidia-smi)
nvtopPackages.amd # Modern GPU monitor with AMD support nvtopPackages.amd # Modern GPU monitor with AMD support
# Vulkan tools # ─── Vulkan Tools ───
vulkan-tools # vulkaninfo, etc. vulkan-tools # vulkaninfo, etc.
vulkan-loader vulkan-loader
# Video acceleration verification # ─── Video Acceleration ───
libva-utils # vainfo - verify VA-API libva-utils # vainfo - verify VA-API
vdpauinfo # Verify VDPAU vdpauinfo # Verify VDPAU
]; ];

View File

@@ -8,7 +8,9 @@
}: }:
{ {
# Enable Fish shell # ═══════════════════════════════════════════════════════════════
# FISH SHELL
# ═══════════════════════════════════════════════════════════════
programs.fish = { programs.fish = {
enable = true; enable = true;
@@ -33,9 +35,11 @@
set -g fish_prompt_pwd_dir_length 3 set -g fish_prompt_pwd_dir_length 3
''; '';
# Shell aliases # ═══════════════════════════════════════════════════════════════
# ALIASES
# ═══════════════════════════════════════════════════════════════
shellAliases = { shellAliases = {
# Modern replacements # ─── Modern Replacements ───
ll = "eza -la --icons --git"; ll = "eza -la --icons --git";
ls = "eza --icons"; ls = "eza --icons";
la = "eza -la --icons"; la = "eza -la --icons";
@@ -47,14 +51,14 @@
du = "dust"; du = "dust";
sed = "sd"; sed = "sd";
# Docker shortcuts # ─── Docker ───
dc = "docker compose"; dc = "docker compose";
dps = "docker ps"; dps = "docker ps";
dpa = "docker ps -a"; dpa = "docker ps -a";
dl = "docker logs -f"; dl = "docker logs -f";
dex = "docker exec -it"; dex = "docker exec -it";
# Git shortcuts # ─── Git ───
gs = "git status"; gs = "git status";
gd = "git diff"; gd = "git diff";
gds = "git diff --staged"; gds = "git diff --staged";
@@ -68,7 +72,7 @@
gb = "git branch"; gb = "git branch";
gst = "git stash"; gst = "git stash";
# NixOS shortcuts # ─── NixOS ───
rebuild = "sudo nixos-rebuild switch --flake ."; rebuild = "sudo nixos-rebuild switch --flake .";
rebuild-boot = "sudo nixos-rebuild boot --flake ."; rebuild-boot = "sudo nixos-rebuild boot --flake .";
rebuild-test = "sudo nixos-rebuild test --flake ."; rebuild-test = "sudo nixos-rebuild test --flake .";
@@ -80,20 +84,23 @@
update-apps = "nix profile upgrade '.*'"; update-apps = "nix profile upgrade '.*'";
list-apps = "nix profile list"; list-apps = "nix profile list";
# System # ─── System ───
ports = "ss -tulanp"; ports = "ss -tulanp";
myip = "curl -s ifconfig.me"; myip = "curl -s ifconfig.me";
".." = "cd .."; ".." = "cd ..";
"..." = "cd ../.."; "..." = "cd ../..";
"...." = "cd ../../.."; "...." = "cd ../../..";
# Safety # ─── Safety ───
rm = "rm -i"; rm = "rm -i";
mv = "mv -i"; mv = "mv -i";
cp = "cp -i"; cp = "cp -i";
}; };
# Shell abbreviations (expand on space, more flexible than aliases) # ═══════════════════════════════════════════════════════════════
# ABBREVIATIONS
# ═══════════════════════════════════════════════════════════════
# Expand on space, more flexible than aliases
shellAbbrs = { shellAbbrs = {
g = "git"; g = "git";
d = "docker"; d = "docker";
@@ -104,6 +111,9 @@
}; };
}; };
# ═══════════════════════════════════════════════════════════════
# PLUGINS & PACKAGES
# ═══════════════════════════════════════════════════════════════
# Fish plugins (managed by NixOS) # Fish plugins (managed by NixOS)
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# Fish plugins # Fish plugins

View File

@@ -8,9 +8,9 @@
}: }:
{ {
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Fonts # FONTS
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
fonts = { fonts = {
packages = with pkgs; [ packages = with pkgs; [
# Your existing fonts # Your existing fonts
@@ -57,9 +57,9 @@
}; };
}; };
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# GTK Theme # GTK THEME
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# GTK themes # GTK themes
adw-gtk3 # GTK3 theme matching libadwaita adw-gtk3 # GTK3 theme matching libadwaita
@@ -79,18 +79,18 @@
nwg-look # GTK settings editor for Wayland nwg-look # GTK settings editor for Wayland
]; ];
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# Cursor and Icon Paths # CURSOR & ICON PATHS
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# NOTE: Session variables (GTK_THEME, XCURSOR_*, QT_QPA_PLATFORMTHEME) # NOTE: Session variables (GTK_THEME, XCURSOR_*, QT_QPA_PLATFORMTHEME)
# are consolidated in desktop.nix # are consolidated in desktop.nix
# Ensure cursor themes are found # Ensure cursor themes are found
environment.pathsToLink = [ "/share/icons" ]; environment.pathsToLink = [ "/share/icons" ];
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# GTK Settings via dconf # GTK SETTINGS (DCONF)
# ───────────────────────────────────────────────────────────── # ═══════════════════════════════════════════════════════════════
# These can be overridden by the user with nwg-look or dconf-editor # These can be overridden by the user with nwg-look or dconf-editor
# Default theme settings are applied per-user # Default theme settings are applied per-user