Normalize Nix module formatting and update flake.lock

Consistently format module argument blocks and convert aligned
package comments to inline comments. Trim trailing whitespace and
minor layout tweaks across modules. Bump opencode rev, narHash and
lastModified in flake.lock and remove the original dev ref.
This commit is contained in:
Melvin Ragusa
2026-02-02 18:08:01 +01:00
parent 265421b015
commit 2505298449
12 changed files with 212 additions and 141 deletions

7
flake.lock generated
View File

@@ -275,16 +275,15 @@
]
},
"locked": {
"lastModified": 1770050462,
"narHash": "sha256-SvIR3FrTRJE77C0JUowvItVqX/GBm830hXziN8KgHeU=",
"lastModified": 1770051391,
"narHash": "sha256-Z8DdRW3NCdzAlgF3xgjZCIU4MRCPCEv3wPZTsxVcQuk=",
"owner": "anomalyco",
"repo": "opencode",
"rev": "cf8b033be1cbe9f20bc0921d9920a66c0d95c704",
"rev": "cf828fff85b50baf8c57cc3811c8789d9adbcae2",
"type": "github"
},
"original": {
"owner": "anomalyco",
"ref": "dev",
"repo": "opencode",
"type": "github"
}

View File

@@ -1,50 +1,55 @@
# modules/apps.nix
# User applications: media, productivity, communication, system utilities
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
environment.systemPackages = with pkgs; [
# ─────────────────────────────────────────────────────────────
# Media Viewers
# ─────────────────────────────────────────────────────────────
loupe # GNOME image viewer
evince # PDF/document viewer
celluloid # MPV frontend (GTK video player)
mpv # Powerful CLI video player
loupe # GNOME image viewer
evince # PDF/document viewer
celluloid # MPV frontend (GTK video player)
mpv # Powerful CLI video player
# ─────────────────────────────────────────────────────────────
# Music
# ─────────────────────────────────────────────────────────────
amberol # Simple music player for local files
feishin # Navidrome/Jellyfin client
picard # MusicBrainz Picard - music tagger
beets # Music library manager
cava # Audio visualizer
amberol # Simple music player for local files
feishin # Navidrome/Jellyfin client
picard # MusicBrainz Picard - music tagger
beets # Music library manager
cava # Audio visualizer
# Feishin available via Flatpak for Navidrome/Jellyfin
# ─────────────────────────────────────────────────────────────
# Communication
# ─────────────────────────────────────────────────────────────
vesktop # Discord client (Wayland-native, with Vencord)
thunderbird # Email client
signal-desktop # Encrypted messaging
telegram-desktop # Telegram client
vesktop # Discord client (Wayland-native, with Vencord)
thunderbird # Email client
signal-desktop # Encrypted messaging
telegram-desktop # Telegram client
# ─────────────────────────────────────────────────────────────
# Office & Productivity
# ─────────────────────────────────────────────────────────────
libreoffice-fresh # Office suite (latest)
obsidian # Note-taking with Markdown
libreoffice-fresh # Office suite (latest)
obsidian # Note-taking with Markdown
# ─────────────────────────────────────────────────────────────
# System Utilities
# ─────────────────────────────────────────────────────────────
btop # Modern system monitor (terminal)
mission-center # GNOME system monitor (GUI, like Windows Task Manager)
btop # Modern system monitor (terminal)
mission-center # GNOME system monitor (GUI, like Windows Task Manager)
# File management
file-roller # Archive manager (GUI)
gnome-disk-utility # Disk management
file-roller # Archive manager (GUI)
gnome-disk-utility # Disk management
# Archive tools (for file-roller and CLI)
unzip
@@ -55,29 +60,29 @@
# ─────────────────────────────────────────────────────────────
# Screenshots & Screen Recording
# ─────────────────────────────────────────────────────────────
swappy # Screenshot annotation tool
swappy # Screenshot annotation tool
# grim + slurp already in your base config
# Screen recording
obs-studio # Full-featured streaming/recording suite
obs-studio # Full-featured streaming/recording suite
gpu-screen-recorder # Lightweight GPU-accelerated recorder (AMD/NVIDIA/Intel)
kooha # Simple GNOME-style screen recorder
kooha # Simple GNOME-style screen recorder
# ─────────────────────────────────────────────────────────────
# Security & Passwords
# ─────────────────────────────────────────────────────────────
bitwarden-desktop # Password manager
seahorse # GNOME Keyring GUI
bitwarden-desktop # Password manager
seahorse # GNOME Keyring GUI
# ─────────────────────────────────────────────────────────────
# Utilities
# ─────────────────────────────────────────────────────────────
gnome-calculator # Calculator
gnome-clocks # World clocks, alarms, timers
baobab # Disk usage analyzer
localsend # AirDrop-like file sharing (cross-platform)
meld # Visual diff and merge tool
rclone # Cloud storage sync (Google Drive, Dropbox, etc.)
gnome-calculator # Calculator
gnome-clocks # World clocks, alarms, timers
baobab # Disk usage analyzer
localsend # AirDrop-like file sharing (cross-platform)
meld # Visual diff and merge tool
rclone # Cloud storage sync (Google Drive, Dropbox, etc.)
];
# GNOME Keyring for secrets storage

View File

@@ -1,6 +1,11 @@
# modules/audio.nix
# Audio and Bluetooth configuration: Blueman GUI, volume control, media keys
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# Bluetooth GUI management
@@ -9,17 +14,17 @@
# Audio packages
environment.systemPackages = with pkgs; [
# PipeWire volume control
pwvucontrol # Modern PipeWire volume control (Qt)
pavucontrol # Classic PulseAudio volume control (GTK) - as backup
helvum # PipeWire patchbay for routing audio
qpwgraph # PipeWire graph editor (visual audio routing)
pwvucontrol # Modern PipeWire volume control (Qt)
pavucontrol # Classic PulseAudio volume control (GTK) - as backup
helvum # PipeWire patchbay for routing audio
qpwgraph # PipeWire graph editor (visual audio routing)
# Media player control
playerctl # Control media players via D-Bus (for media keys)
playerctl # Control media players via D-Bus (for media keys)
# Audio tools
easyeffects # Audio effects and equalizer for PipeWire
easyeffects # Audio effects and equalizer for PipeWire
# Bluetooth audio codecs are handled by PipeWire automatically
];
@@ -34,10 +39,26 @@
"bluez5.enable-hw-volume" = true;
# Bluetooth headset roles
"bluez5.roles" = [ "a2dp_sink" "a2dp_source" "bap_sink" "bap_source" "hsp_hs" "hsp_ag" "hfp_hf" "hfp_ag" ];
"bluez5.roles" = [
"a2dp_sink"
"a2dp_source"
"bap_sink"
"bap_source"
"hsp_hs"
"hsp_ag"
"hfp_hf"
"hfp_ag"
];
# Codec preference order (highest quality first)
"bluez5.codecs" = [ "ldac" "aac" "aptx_hd" "aptx" "sbc_xq" "sbc" ];
"bluez5.codecs" = [
"ldac"
"aac"
"aptx_hd"
"aptx"
"sbc_xq"
"sbc"
];
};
};
};

View File

@@ -1,6 +1,12 @@
# modules/desktop.nix
# Core desktop infrastructure: portals, polkit, launcher, screen lock, wallpaper, idle
{ config, pkgs, inputs, lib, ... }:
{
config,
pkgs,
inputs,
lib,
...
}:
{
# XDG Portal - Required for screen sharing, file pickers, etc.
@@ -42,26 +48,26 @@
# Wayland utilities
wl-clipboard
wtype # Wayland keyboard automation
wlr-randr # Display configuration
wayland-utils # Debug utilities
wtype # Wayland keyboard automation
wlr-randr # Display configuration
wayland-utils # Debug utilities
# ─────────────────────────────────────────────────────────────
# Additional desktop utilities (migrated from Arch)
# ─────────────────────────────────────────────────────────────
cliphist # Clipboard history for Wayland
wlsunset # Blue light filter / night mode
brightnessctl # Brightness control (even for desktop monitors via DDC)
wlogout # Logout menu / session manager
cliphist # Clipboard history for Wayland
wlsunset # Blue light filter / night mode
brightnessctl # Brightness control (even for desktop monitors via DDC)
wlogout # Logout menu / session manager
];
# Environment variables for Wayland compatibility
environment.sessionVariables = {
# Wayland defaults
NIXOS_OZONE_WL = "1"; # Electron apps use Wayland
MOZ_ENABLE_WAYLAND = "1"; # Firefox Wayland
QT_QPA_PLATFORM = "wayland"; # Qt apps use Wayland
SDL_VIDEODRIVER = "wayland"; # SDL games use Wayland
NIXOS_OZONE_WL = "1"; # Electron apps use Wayland
MOZ_ENABLE_WAYLAND = "1"; # Firefox Wayland
QT_QPA_PLATFORM = "wayland"; # Qt apps use Wayland
SDL_VIDEODRIVER = "wayland"; # SDL games use Wayland
_JAVA_AWT_WM_NONREPARENTING = "1"; # Java apps fix
# XDG
@@ -73,6 +79,6 @@
programs.dconf.enable = true;
# GNOME services for better desktop integration
services.gvfs.enable = true; # Virtual filesystem (trash, MTP, SMB)
services.udisks2.enable = true; # Disk mounting
services.gvfs.enable = true; # Virtual filesystem (trash, MTP, SMB)
services.udisks2.enable = true; # Disk mounting
}

View File

@@ -1,12 +1,17 @@
# modules/dev.nix
# Development tools: Docker, Node.js, direnv, build tools
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# Docker
virtualisation.docker = {
enable = true;
# Recommended settings
autoPrune = {
enable = true;
@@ -21,7 +26,7 @@
# Direnv for per-project environments
programs.direnv = {
enable = true;
nix-direnv.enable = true; # Faster direnv for Nix
nix-direnv.enable = true; # Faster direnv for Nix
};
# Development packages
@@ -29,16 +34,16 @@
# ─────────────────────────────────────────────────────────────
# Containers
# ─────────────────────────────────────────────────────────────
docker-compose # Docker Compose v2
lazydocker # Terminal UI for Docker
docker-compose # Docker Compose v2
lazydocker # Terminal UI for Docker
# ─────────────────────────────────────────────────────────────
# Languages & Runtimes
# ─────────────────────────────────────────────────────────────
nodejs_22 # Node.js LTS (for Vicinae extensions, etc.)
bun # Fast JavaScript runtime/bundler
python3 # Python 3
rustup # Rust toolchain manager
nodejs_22 # Node.js LTS (for Vicinae extensions, etc.)
bun # Fast JavaScript runtime/bundler
python3 # Python 3
rustup # Rust toolchain manager
# ─────────────────────────────────────────────────────────────
# Build Tools
@@ -47,48 +52,48 @@
gnumake
cmake
pkg-config
# ─────────────────────────────────────────────────────────────
# Version Control
# ─────────────────────────────────────────────────────────────
git
gh # GitHub CLI
lazygit # Terminal UI for Git
delta # Better git diff
gh # GitHub CLI
lazygit # Terminal UI for Git
delta # Better git diff
# ─────────────────────────────────────────────────────────────
# Editors & LSP
# ─────────────────────────────────────────────────────────────
# nil already in base config (Nix LSP)
nixfmt-rfc-style # Nix formatter
nixfmt # Nix formatter
# ─────────────────────────────────────────────────────────────
# CLI Utilities
# ─────────────────────────────────────────────────────────────
jq # JSON processor
yq # YAML processor
ripgrep # Fast grep
fd # Fast find
fzf # Fuzzy finder
eza # Modern ls
bat # Cat with syntax highlighting
httpie # Better curl
curlie # Curl wrapper with httpie-like syntax
jq # JSON processor
yq # YAML processor
ripgrep # Fast grep
fd # Fast find
fzf # Fuzzy finder
eza # Modern ls
bat # Cat with syntax highlighting
httpie # Better curl
curlie # Curl wrapper with httpie-like syntax
# Additional CLI tools (migrated from Arch)
tealdeer # tldr - simplified man pages
duf # Better df (disk usage)
sd # Better sed (find & replace)
pv # Pipe viewer (progress bar for pipes)
parallel # GNU parallel (run commands in parallel)
inxi # System information tool
glances # System monitor (htop alternative)
grc # Generic colorizer for CLI output
tealdeer # tldr - simplified man pages
duf # Better df (disk usage)
sd # Better sed (find & replace)
pv # Pipe viewer (progress bar for pipes)
parallel # GNU parallel (run commands in parallel)
inxi # System information tool
glances # System monitor (htop alternative)
grc # Generic colorizer for CLI output
# ─────────────────────────────────────────────────────────────
# Database Tools
# ─────────────────────────────────────────────────────────────
dbeaver-bin # Universal database tool (GUI)
dbeaver-bin # Universal database tool (GUI)
];
# Note: Shell aliases are now managed in shell.nix (Fish shell)

View File

@@ -1,25 +1,30 @@
# modules/gaming.nix
# Full gaming setup: Steam, Gamemode, Lutris, Heroic, Wine, Proton
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# Steam
programs.steam = {
enable = true;
remotePlay.openFirewall = true; # Steam Remote Play
dedicatedServer.openFirewall = true; # Dedicated servers
localNetworkGameTransfers.openFirewall = true; # LAN game transfers
remotePlay.openFirewall = true; # Steam Remote Play
dedicatedServer.openFirewall = true; # Dedicated servers
localNetworkGameTransfers.openFirewall = true; # LAN game transfers
# Extra compatibility packages for Proton
extraCompatPackages = with pkgs; [
proton-ge-bin # GloriousEggroll's Proton fork - better compatibility
proton-ge-bin # GloriousEggroll's Proton fork - better compatibility
];
};
# Gamemode - Optimize system for gaming
programs.gamemode = {
enable = true;
enableRenice = true; # Allow renice for priority boost
enableRenice = true; # Allow renice for priority boost
settings = {
general = {
renice = 10;
@@ -40,20 +45,20 @@
# Gaming packages
environment.systemPackages = with pkgs; [
# Game launchers
lutris # Multi-platform game launcher
heroic # Epic Games & GOG launcher
lutris # Multi-platform game launcher
heroic # Epic Games & GOG launcher
# Proton management
protonup-qt # GUI to manage Proton-GE versions
protonup-qt # GUI to manage Proton-GE versions
# Wine for non-Steam games
wineWowPackages.stagingFull # Latest Wine with all features
winetricks # Wine helper scripts
protontricks # Proton helper scripts (like winetricks for Proton)
wineWowPackages.stagingFull # Latest Wine with all features
winetricks # Wine helper scripts
protontricks # Proton helper scripts (like winetricks for Proton)
# Misc gaming utilities
gamemode # CLI tool to trigger gamemode
gamescope # Micro-compositor for games (fixes some issues)
gamemode # CLI tool to trigger gamemode
gamescope # Micro-compositor for games (fixes some issues)
];
# Gaming-related kernel tweaks
@@ -68,7 +73,7 @@
# Udev rules for game controllers
services.udev.packages = with pkgs; [
game-devices-udev-rules # Support for various game controllers
game-devices-udev-rules # Support for various game controllers
];
# Add user to gamemode group

View File

@@ -1,16 +1,21 @@
# modules/gpu-amd.nix
# AMD GPU configuration: drivers, Vulkan, VA-API hardware acceleration, CoreCtrl
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# Enable OpenGL/Vulkan
hardware.graphics = {
enable = true;
enable32Bit = true; # For Steam and 32-bit games
enable32Bit = true; # For Steam and 32-bit games
extraPackages = with pkgs; [
# VA-API for hardware video acceleration
libva-vdpau-driver # Renamed from vaapiVdpau
libva-vdpau-driver # Renamed from vaapiVdpau
libvdpau-va-gl
# OpenCL support (optional, for compute workloads)
@@ -45,15 +50,15 @@
# GPU monitoring tools
environment.systemPackages = with pkgs; [
# Monitoring
radeontop # AMD GPU monitoring (like nvidia-smi)
nvtopPackages.amd # Modern GPU monitor with AMD support
radeontop # AMD GPU monitoring (like nvidia-smi)
nvtopPackages.amd # Modern GPU monitor with AMD support
# Vulkan tools
vulkan-tools # vulkaninfo, etc.
vulkan-tools # vulkaninfo, etc.
vulkan-loader
# Video acceleration verification
libva-utils # vainfo - verify VA-API
vdpauinfo # Verify VDPAU
libva-utils # vainfo - verify VA-API
vdpauinfo # Verify VDPAU
];
}

View File

@@ -1,6 +1,11 @@
# modules/navidrome.nix
# Self-hosted music streaming server
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# ═══════════════════════════════════════════════════════════════
@@ -24,8 +29,8 @@
EnableTranscodingConfig = true;
# Scan settings
ScanSchedule = "@every 1h"; # Rescan library every hour
ScanSchedule = "@every 1h"; # Rescan library every hour
# Last.fm scrobbling (configure in UI after setup)
LastFM.Enabled = true;

View File

@@ -1,6 +1,11 @@
# modules/power.nix
# Power management for desktop: CPU governor control, power profiles
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# ═══════════════════════════════════════════════════════════════

View File

@@ -1,6 +1,11 @@
# modules/services.nix
# System services: SSD maintenance, swap, mDNS, profile sync
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# ═══════════════════════════════════════════════════════════════
@@ -18,8 +23,8 @@
# Compressed swap in RAM - better than no swap, faster than disk
zramSwap = {
enable = true;
algorithm = "zstd"; # Best compression ratio
memoryPercent = 50; # Use up to 50% of RAM for compressed swap
algorithm = "zstd"; # Best compression ratio
memoryPercent = 50; # Use up to 50% of RAM for compressed swap
};
# ═══════════════════════════════════════════════════════════════
@@ -28,9 +33,9 @@
# mDNS for local network discovery (.local domains)
services.avahi = {
enable = true;
nssmdns4 = true; # Enable .local resolution
openFirewall = true; # Allow mDNS through firewall
nssmdns4 = true; # Enable .local resolution
openFirewall = true; # Allow mDNS through firewall
publish = {
enable = true;
addresses = true;
@@ -53,7 +58,7 @@
# ═══════════════════════════════════════════════════════════════
# ADDITIONAL SYSTEM OPTIMIZATIONS
# ═══════════════════════════════════════════════════════════════
# Enable firmware updates
services.fwupd.enable = true;
@@ -64,8 +69,8 @@
# Early OOM killer - prevents system freeze on memory exhaustion
services.earlyoom = {
enable = true;
freeMemThreshold = 5; # Start killing at 5% free memory
freeSwapThreshold = 10; # Also consider swap
freeMemThreshold = 5; # Start killing at 5% free memory
freeSwapThreshold = 10; # Also consider swap
enableNotifications = true;
};

View File

@@ -1,6 +1,11 @@
# modules/shell.nix
# Fish shell configuration with plugins and aliases
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# Enable Fish shell
@@ -98,13 +103,13 @@
# Fish plugins (managed by NixOS)
environment.systemPackages = with pkgs; [
# Fish plugins
fishPlugins.pure # Pure prompt (minimal & fast)
fishPlugins.autopair # Auto-close brackets, quotes
fishPlugins.fzf-fish # Fzf integration for fish
fishPlugins.done # Notification when long command finishes
fishPlugins.grc # Colorize command output
fishPlugins.pure # Pure prompt (minimal & fast)
fishPlugins.autopair # Auto-close brackets, quotes
fishPlugins.fzf-fish # Fzf integration for fish
fishPlugins.done # Notification when long command finishes
fishPlugins.grc # Colorize command output
# Required by aliases
dust # Better du
dust # Better du
];
}

View File

@@ -1,6 +1,11 @@
# modules/virtualization.nix
# Virtual machine support: QEMU, KVM, libvirt, virt-manager
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# ═══════════════════════════════════════════════════════════════
@@ -36,11 +41,11 @@
# PACKAGES
# ═══════════════════════════════════════════════════════════════
environment.systemPackages = with pkgs; [
virt-manager # GUI for managing VMs
virt-viewer # Viewer for VM displays (SPICE/VNC)
virtiofsd # Fast file sharing between host and VM
qemu-utils # QEMU utilities (qemu-img, etc.)
spice-gtk # SPICE client libraries
virt-manager # GUI for managing VMs
virt-viewer # Viewer for VM displays (SPICE/VNC)
virtiofsd # Fast file sharing between host and VM
qemu-utils # QEMU utilities (qemu-img, etc.)
spice-gtk # SPICE client libraries
];
# ═══════════════════════════════════════════════════════════════