740 lines
18 KiB
Nix
740 lines
18 KiB
Nix
{ config, lib, pkgs, ... }:
|
||
|
||
{
|
||
nyx-module = {
|
||
system = {
|
||
# Docker (System Module)
|
||
#
|
||
# Provides:
|
||
# - Docker runtime and CLI
|
||
# - Docker Compose
|
||
# - User access via `docker` group
|
||
# - Optional rootless mode and cgroup v2 support
|
||
#
|
||
# Options:
|
||
# - enable → Enable Docker system module
|
||
# - username → User to add to the docker group
|
||
# - enableOnBoot → Start Docker service on boot (default: true)
|
||
# - rootless → Enable Docker rootless mode (disabled by default)
|
||
#
|
||
# Notes:
|
||
# - Rootless mode is disabled by default
|
||
# - Uses cgroup v2 for better resource management on modern kernels
|
||
docker = {
|
||
enable = true;
|
||
|
||
username = "alice";
|
||
|
||
enableOnBoot = true;
|
||
|
||
rootless = true;
|
||
|
||
};
|
||
|
||
# OpenSSH (System Module)
|
||
#
|
||
# Provides:
|
||
# - OpenSSH server (sshd) service
|
||
#
|
||
# Options:
|
||
# - enable → Enable OpenSSH system module
|
||
# - passwordAuth → Allow password authentication (default: false)
|
||
# - permitRootLogin → Permit root login (default: "no")
|
||
#
|
||
# Notes:
|
||
# - By default, password authentication is disabled for better security
|
||
# - Root login is disabled unless explicitly enabled
|
||
openssh = {
|
||
enable = true;
|
||
|
||
passwordAuth = false;
|
||
|
||
permitRootLogin = "no";
|
||
|
||
};
|
||
|
||
# Podman (System Module)
|
||
#
|
||
# Provides:
|
||
# - Podman runtime and CLI
|
||
# - Podman Compose
|
||
# - User access via `podman` group
|
||
#
|
||
# Options:
|
||
# - enable → Enable Podman system module
|
||
# - username → User to add to the podman group
|
||
#
|
||
# Notes:
|
||
# - Adds podman + podman-compose to system packages
|
||
# - Enables D-Bus socket activation for Podman
|
||
#
|
||
podman = {
|
||
enable = true;
|
||
|
||
username = "alice";
|
||
|
||
};
|
||
|
||
# VM (System Module)
|
||
#
|
||
# Provides:
|
||
# - QEMU/KVM virtualization via libvirt
|
||
# - virt-manager GUI
|
||
# - User access via libvirtd and kvm groups
|
||
# - Spice, dnsmasq, and bridge-utils for networking and display
|
||
#
|
||
# Options:
|
||
# - enable → Enable VM system module
|
||
# - username → User to add to virtualization groups (required)
|
||
#
|
||
# Notes:
|
||
# - QEMU runs as root by default (can be adjusted)
|
||
# - virt-manager GUI is enabled automatically
|
||
# - Only generic "kvm" kernel module is forced (host picks intel/amd)
|
||
#
|
||
vm = {
|
||
enable = true;
|
||
|
||
username = "alice";
|
||
|
||
};
|
||
|
||
# Zsh (System Module)
|
||
#
|
||
# Provides:
|
||
# - Zsh shell
|
||
# - oh-my-zsh integration
|
||
# - Theme + plugins support
|
||
#
|
||
# Options:
|
||
# - enable → Enable Zsh system module
|
||
# - ohMyZsh → Enable oh-my-zsh integration
|
||
# - theme → oh-my-zsh theme (default: "xiong-chiamiov-plus")
|
||
# - plugins → List of oh-my-zsh plugins (default: [ "git" ])
|
||
#
|
||
zsh = {
|
||
enable = true;
|
||
|
||
ohMyZsh = true;
|
||
|
||
theme = "xiong-chiamiov-plus";
|
||
|
||
plugins = [ "git" ];
|
||
|
||
};
|
||
|
||
# Steam (System Module)
|
||
#
|
||
# Provides:
|
||
# - Steam client
|
||
# - Optional firewall openings for:
|
||
# * Remote Play
|
||
# * Source Dedicated Server
|
||
# * Local Network Game Transfers
|
||
# - ProtonUp tool for managing Proton versions
|
||
#
|
||
# Options:
|
||
# - enable → Enable Steam system module
|
||
# - openFirewall.remotePlay → Open firewall for Remote Play
|
||
# - openFirewall.dedicatedServer → Open firewall for Source Dedicated Server
|
||
# - openFirewall.localNetworkGameTransfers → Open firewall for LAN transfers
|
||
#
|
||
steam = {
|
||
enable = true;
|
||
|
||
remotePlay = true;
|
||
|
||
dedicatedServer = true;
|
||
|
||
localNetworkGameTransfers = true;
|
||
|
||
};
|
||
|
||
# Flatpak (System Module)
|
||
#
|
||
# Provides:
|
||
# - Flatpak package manager
|
||
# - Flatpak service integration
|
||
# - XDG portals for sandboxed apps
|
||
#
|
||
# Options:
|
||
# - enable → Enable Flatpak system module
|
||
#
|
||
flatpak = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Wireshark (System Module)
|
||
#
|
||
# Provides:
|
||
# - Wireshark installation
|
||
# - Proper dumpcap permissions
|
||
# - Adds user to `wireshark` group
|
||
#
|
||
# Options:
|
||
# - enable → Enable Wireshark system module
|
||
# - username → User to add to the wireshark group (required)
|
||
#
|
||
wireshark = {
|
||
enable = true;
|
||
|
||
username = "alice";
|
||
|
||
};
|
||
|
||
# C Compiler (System Module)
|
||
#
|
||
# Provides:
|
||
# - GCC (C/C++)
|
||
# - Clang (alternative C/C++)
|
||
# - Mono (C#)
|
||
#
|
||
# Options:
|
||
# - enable → Enable C compiler toolchain
|
||
#
|
||
c-compiler = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Go (System Module)
|
||
#
|
||
# Provides:
|
||
# - Go programming language toolchain
|
||
#
|
||
# Options:
|
||
# - enable → Enable Go system module
|
||
#
|
||
go = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Lua (System Module)
|
||
#
|
||
# Provides:
|
||
# - Lua (standard interpreter)
|
||
# - LuaJIT (Just-In-Time compiler)
|
||
#
|
||
# Options:
|
||
# - enable → Enable Lua system module
|
||
#
|
||
lua = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Python (System Module)
|
||
#
|
||
# Provides:
|
||
# - Python 3 interpreter
|
||
# - Pip (package manager)
|
||
#
|
||
# Options:
|
||
# - enable → Enable Python system module
|
||
#
|
||
python = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Rust (System Module)
|
||
#
|
||
# Provides:
|
||
# - Rust compiler (rustc)
|
||
# - Cargo (Rust package manager & build system)
|
||
#
|
||
# Options:
|
||
# - enable → Enable Rust system module
|
||
#
|
||
rust = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
};
|
||
|
||
home = {
|
||
# Brave Browser (Home Module)
|
||
#
|
||
# Provides:
|
||
# - Brave browser package
|
||
# - Optional standard and custom extension sets
|
||
#
|
||
# Options:
|
||
# - enable → Enable Brave browser
|
||
# - extensions.enable → Enable Brave extensions
|
||
# - extensions.standard→ Enable default extension set of extensions
|
||
# - extensions.extra → Extra extension IDs to install
|
||
#
|
||
# Notes:
|
||
# - Default extensions include uBlock Origin, Proton Pass, Proton VPN
|
||
# - Extra extensions must be specified by Chrome Web Store ID
|
||
#
|
||
brave = {
|
||
enable = true;
|
||
|
||
enable = true;
|
||
|
||
standard = true;
|
||
|
||
extra = [];
|
||
|
||
};
|
||
|
||
# Signal Desktop (Home Module)
|
||
#
|
||
# Provides:
|
||
# - Signal Desktop secure messaging client
|
||
#
|
||
# Options:
|
||
# - enable → Enable Signal Desktop
|
||
# - package → Override package (default: pkgs.signal-desktop)
|
||
#
|
||
signal-desktop = {
|
||
enable = true;
|
||
|
||
package = pkgs.signal-desktop;
|
||
|
||
};
|
||
|
||
# Vesktop (Home Module)
|
||
#
|
||
# Provides:
|
||
# - Vesktop package (Discord client, Electron wrapper)
|
||
#
|
||
# Options:
|
||
# - enable → Enable Vesktop client
|
||
# - package → Override package (default: pkgs.vesktop)
|
||
#
|
||
vesktop = {
|
||
enable = true;
|
||
|
||
package = pkgs.vesktop;
|
||
|
||
};
|
||
|
||
# RustDesk (Home Module)
|
||
#
|
||
# Provides:
|
||
# - RustDesk remote desktop software (TeamViewer/AnyDesk alternative)
|
||
#
|
||
# Options:
|
||
# - enable → Enable RustDesk
|
||
# - package → Override package (default: pkgs.rustdesk)
|
||
#
|
||
# Notes:
|
||
# - Estimated build time: ~? Long....
|
||
#
|
||
rustdesk = {
|
||
enable = true;
|
||
|
||
package = pkgs.rustdesk;
|
||
|
||
};
|
||
|
||
# VSCodium (Home Module)
|
||
#
|
||
# Provides:
|
||
# - VSCodium editor (open-source build of VS Code)
|
||
# - Optional extension sets
|
||
#
|
||
# Options:
|
||
# - enable → Enable VSCodium
|
||
# - extensions.enable → Enable extensions
|
||
# - extensions.standard→ Enable standard extensions
|
||
# - extensions.extra → Extra extensions to install
|
||
#
|
||
# Notes:
|
||
# - Some Microsoft extensions may be broken (e.g., ms-python.python)
|
||
#
|
||
vscodium = {
|
||
enable = true;
|
||
|
||
enable = true;
|
||
|
||
standard = true;
|
||
|
||
extra = [];
|
||
|
||
};
|
||
|
||
# Classic Game Collection (Home Module)
|
||
#
|
||
# Provides:
|
||
# - Small set of lightweight, classic desktop games
|
||
#
|
||
# Included:
|
||
# - KPat (Patience / Solitaire)
|
||
# - KSudoku
|
||
# - Space Cadet Pinball
|
||
# - Palapeli (jigsaw puzzles)
|
||
# - KMines (Minesweeper clone)
|
||
# - KBlocks (Tetris clone)
|
||
# - KMahjongg (Mahjong solitaire)
|
||
#
|
||
# Options:
|
||
# - enable → Enable the Classic Game Collection
|
||
#
|
||
classic-game-collection = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# PrismLauncher (Home Module)
|
||
#
|
||
# Provides:
|
||
# - PrismLauncher (Minecraft launcher)
|
||
# - Optional inclusion of ffmpeg (some mods require it)
|
||
# - Configurable list of JDKs (for modpacks that need specific versions)
|
||
#
|
||
# Options:
|
||
# - enable → Enable PrismLauncher
|
||
# - includeFfmpeg→ Include ffmpeg for mods
|
||
# - jdks → List of Java runtimes for PrismLauncher
|
||
#
|
||
# Notes:
|
||
# - Installed via home.packages
|
||
# - JDKs are added to PATH so PrismLauncher can discover them
|
||
#
|
||
prismlauncher = {
|
||
enable = true;
|
||
|
||
includeFfmpeg = true;
|
||
|
||
jdks = [ pkgs.jdk17 ];
|
||
|
||
};
|
||
|
||
# CAVA (Home Module)
|
||
#
|
||
# Provides:
|
||
# - CAVA audio visualizer
|
||
# - Declarative configuration via Nix
|
||
# - Support for structured settings or raw config override
|
||
#
|
||
# Options:
|
||
# - enable → Enable CAVA (home module)
|
||
# - settings → Declarative structured configuration (default: ALSA, 60 FPS, basic colors)
|
||
# - configText → Raw configuration text (overrides settings if set)
|
||
#
|
||
# Notes:
|
||
# - Writes config to ~/.config/cava/config
|
||
# - If configText is set, settings are ignored
|
||
#
|
||
# Example:
|
||
# nyx-module.home.cava = {
|
||
# enable = true;
|
||
# settings.general.framerate = 120;
|
||
# settings.input.method = "pulse";
|
||
# };
|
||
cava = {
|
||
enable = true;
|
||
|
||
settings = default = {;
|
||
|
||
configText = null;
|
||
|
||
};
|
||
|
||
# Spotify (music streaming client)
|
||
#
|
||
# Provides:
|
||
# - Spotify package (default)
|
||
# - Optional override to install a different package
|
||
#
|
||
# Notes:
|
||
# - Installs into home.packages
|
||
#
|
||
spotify = {
|
||
enable = true;
|
||
|
||
package = pkgs.spotify;
|
||
|
||
};
|
||
|
||
# Camera GUI module
|
||
#
|
||
# Provides:
|
||
# - Camera GUI package (default: snapshot)
|
||
# - libcamera (always installed, required backend)
|
||
#
|
||
# Notes:
|
||
# - You can override the GUI package with another (e.g., cheese, kamoso)
|
||
#
|
||
camera = {
|
||
enable = true;
|
||
|
||
package = pkgs.snapshot;
|
||
|
||
};
|
||
|
||
# Image Viewer
|
||
#
|
||
# Provides:
|
||
# - Installs a chosen image viewer application
|
||
#
|
||
# Notes:
|
||
# - Defaults to Gwenview
|
||
#
|
||
image-viewer = {
|
||
enable = true;
|
||
|
||
package = pkgs.gwenview;
|
||
|
||
};
|
||
|
||
# Krita (Digital Painting Software)
|
||
#
|
||
# Provides:
|
||
# - Krita package (open-source digital painting and illustration software)
|
||
#
|
||
# Notes:
|
||
# - Installed via home.packages
|
||
#
|
||
krita = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Kdenlive (video editor)
|
||
#
|
||
# Provides:
|
||
# - Kdenlive video editor
|
||
# - Installed via home.packages
|
||
#
|
||
# Notes:
|
||
# - Package location depends on nixpkgs version:
|
||
# * pkgs.kdePackages.kdenlive (preferred, modern KDE split)
|
||
# * pkgs.libsForQt5.kdenlive (older releases, fallback)
|
||
#
|
||
kdenlive = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Video Player(s)
|
||
#
|
||
# Provides:
|
||
# - Installs one or more chosen video/media players
|
||
#
|
||
# Notes:
|
||
# - Defaults to [ vlc ]
|
||
#
|
||
video-player = {
|
||
enable = true;
|
||
|
||
packages = [ pkgs.vlc ];
|
||
|
||
};
|
||
|
||
# Zoom (video conferencing client)
|
||
#
|
||
# Provides:
|
||
# - Zoom package (default: pkgs.zoom-us)
|
||
#
|
||
# Options:
|
||
# - `package`: override the package (e.g. pkgs.zoom)
|
||
#
|
||
# Notes:
|
||
# - Installed via home.packages
|
||
#
|
||
zoom = {
|
||
enable = true;
|
||
|
||
package = pkgs.zoom-us;
|
||
|
||
};
|
||
|
||
# Obsidian (note-taking / PKM app)
|
||
#
|
||
# Provides:
|
||
# - Obsidian package via home.packages
|
||
#
|
||
# Notes:
|
||
# - Consider adding theming support later
|
||
# (e.g., https://github.com/jackiejude/obsidian-temple-os)
|
||
#
|
||
obsidian = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# LibreOffice (office suite)
|
||
#
|
||
# Provides:
|
||
# - LibreOffice package via home.packages
|
||
#
|
||
# Notes:
|
||
# - Simple module, just adds LibreOffice to the user environment
|
||
#
|
||
libreoffice = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# PDF Viewer / Scanner
|
||
#
|
||
# Provides:
|
||
# - Install a chosen PDF or scanning GUI application
|
||
#
|
||
# Notes:
|
||
# - Defaults to Okular
|
||
#
|
||
pdf-reader = {
|
||
enable = true;
|
||
|
||
package = pkgs.kdeApplications.okular;
|
||
|
||
};
|
||
|
||
# Printer GUI (scanning/printing tools)
|
||
#
|
||
# Provides:
|
||
# - Configurable GUI package for printing/scanning via home.packages
|
||
#
|
||
# Notes:
|
||
# - Default is `simple-scan` (GNOME Document Scanner)
|
||
# - Can be overridden with another package such as `system-config-printer`
|
||
#
|
||
printer-scan = {
|
||
enable = true;
|
||
|
||
package = pkgs.simple-scan;
|
||
|
||
};
|
||
|
||
# Thunderbird (email client)
|
||
#
|
||
# Provides:
|
||
# - Thunderbird package via home.packages
|
||
#
|
||
# Notes:
|
||
# - Simple module, just adds Thunderbird to the user environment
|
||
#
|
||
thunderbird = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# ProtonVPN (Home Module)
|
||
#
|
||
# Provides:
|
||
# - ProtonVPN GUI client
|
||
#
|
||
# Options:
|
||
# - enable → Enable ProtonVPN client
|
||
#
|
||
# Notes:
|
||
# - GUI only by default (CLI version available as pkgs.protonvpn-cli)
|
||
|
||
protonvpn = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# CLI Tools (Home Module)
|
||
#
|
||
# Provides:
|
||
# - A curated set of command-line utilities in user’s environment
|
||
# - Examples: fastfetch, hyfetch, bat, fzf, tree, lsd, tmux
|
||
#
|
||
# Options:
|
||
# - enable → Enable CLI tools collection
|
||
# - extra → List of extra packages to install
|
||
tools = {
|
||
enable = true;
|
||
|
||
extra = [];
|
||
|
||
};
|
||
|
||
# Zsh (Home Module)
|
||
#
|
||
# Provides:
|
||
# - Zsh shell in the user profile
|
||
# - Zsh completion, autosuggestions, and syntax highlighting
|
||
#
|
||
# Options:
|
||
# - enable → Enable Zsh in the user profile
|
||
zsh = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Private Webapps
|
||
#
|
||
# Provides:
|
||
# - Browser-based desktop entries for personal/private webapps
|
||
# - Currently supported:
|
||
# • WhatsApp
|
||
#
|
||
# Options:
|
||
# - browser → Selects which browser package to use (default: chromium)
|
||
# - whatsapp → Enable WhatsApp webapp launcher
|
||
#
|
||
# Notes:
|
||
# - Uses --app mode to create minimal browser windows
|
||
# - Additional services can be added following the same pattern
|
||
private-webapps = {
|
||
enable = true;
|
||
|
||
browser = pkgs.chromium;
|
||
|
||
};
|
||
|
||
# Work Webapps
|
||
#
|
||
# Provides:
|
||
# - Browser-based desktop entries for work-related webapps
|
||
# - Currently supported:
|
||
# • Slack
|
||
# • Microsoft Teams
|
||
# • Outlook Web
|
||
# • Microsoft Entra
|
||
#
|
||
# Options:
|
||
# - browser → Selects which browser package to use (default: chromium)
|
||
# - slack → Enable Slack webapp launcher
|
||
# - teams → Enable Teams webapp launcher
|
||
# - outlook → Enable Outlook webapp launcher
|
||
# - entra → Enable Entra webapp launcher
|
||
#
|
||
# Notes:
|
||
# - Uses --app mode for minimal windows (like PWAs)
|
||
# - Outlook entry uses a custom profile directory for isolation
|
||
work-webapps = {
|
||
enable = true;
|
||
|
||
browser = pkgs.chromium;
|
||
|
||
};
|
||
|
||
};
|
||
|
||
hardware = {
|
||
bluetooth = {
|
||
enable = true;
|
||
|
||
};
|
||
|
||
# Custom Kernel Module for Microsoft Surface Pro (Kaby Lake / i5-7300U)
|
||
#
|
||
# Requires:
|
||
# - inputs.nixos-hardware.nixosModules.microsoft-surface-pro-intel
|
||
#
|
||
# Notes:
|
||
# - Estimated kernel build time: ~4h30m
|
||
#
|
||
custom-kernel-surfacepro-kbl = {
|
||
enable = true;
|
||
|
||
kernelVersion = "stable";
|
||
|
||
};
|
||
|
||
};
|
||
|
||
};
|
||
}
|