1
0

Initial shared NixOS modules

This commit is contained in:
2025-06-23 17:44:56 -07:00
commit 1061e07deb
11 changed files with 464 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
{ ... }:
{
# Configure nano as a more user-friendly editor
environment.variables = {
EDITOR = "nano";
VISUAL = "nano";
};
}

56
system/default/nix.nix Normal file
View File

@@ -0,0 +1,56 @@
{ ... }:
{
# Nix package manager configuration
nix = {
settings = {
# Enable experimental features for modern Nix functionality
# - "nix-command": Enables the new unified 'nix' command interface
# - "flakes": Enables Nix flakes for reproducible and composable configurations
experimental-features = "nix-command flakes";
# Specify which users are allowed to run nix commands
allowed-users = [ "tb" ];
# Users who can act as trusted users (can override settings)
# Trusted users can use --option flags and import from derivations
trusted-users = [ "root" "tb" ];
# Show more lines of build output on failure
log-lines = 50;
};
# Automatic garbage collection configuration
# Helps manage disk space by cleaning up unused store paths
gc = {
# Enable automatic garbage collection
automatic = true;
# Delete store paths older than 30 days during garbage collection
options = "--delete-older-than 30d";
};
# Automatic store optimization configuration
# Reduces disk usage by hard-linking identical files in the Nix store
optimise = {
# Enable automatic store optimization
# This deduplicates files to save disk space
automatic = true;
# Run optimization weekly
dates = [ "weekly" ];
};
};
# Nixpkgs package collection configuration
nixpkgs = {
config = {
# Allow installation of packages with non-free licenses
# This includes proprietary software like Discord, Slack, etc.
# Without this, only free/open-source packages can be installed
allowUnfree = true;
# Allow packages marked as broken (use with caution)
#allowBroken = false;
};
};
}

143
system/default/packages.nix Normal file
View File

@@ -0,0 +1,143 @@
# Default commandline utility packages.
# These are installed on all systems for essential functionality.
# Organized by category for maintainability.
{ config, pkgs, ... }: {
environment.systemPackages = with pkgs; [
# === CORE SYSTEM UTILITIES ===
# Essential command-line tools for basic system operations
bc # Command-line calculator
coreutils # Basic file, shell and text manipulation utilities
file # Determine file types
which # Locate commands in PATH
# === TEXT EDITORS AND VIEWERS ===
# Basic text editing and viewing capabilities
nano # Simple, user-friendly text editor
# === VERSION CONTROL ===
# Source code management
git # Distributed version control system
# === SEARCH AND FILTERING ===
# Tools for finding and processing text/files
gnugrep # Pattern matching and text search
ripgrep # Fast text search tool (rg)
# === FILE MANAGERS ===
# Interactive file management
mc # Midnight Commander - text-based file manager
# === NETWORK UTILITIES ===
# Network diagnostics and file transfer
curl # Command-line HTTP client
nmap # Network exploration and security auditing
openssl # Cryptographic toolkit and SSL/TLS library
wget # File downloader
# === SYNC AND BACKUP ===
# File synchronization and backup tools
rclone # Cloud storage sync tool
rsync # Fast, versatile file copying tool
# === FILE UTILITIES ===
# File manipulation and organization
jq # JSON processor
ncdu # Disk usage analyzer with ncurses interface
pv # Progress viewer for data through pipes
renameutils # Bulk file renaming utilities
# === COMPRESSION AND ARCHIVES ===
# Support for various compression formats
lzip # Lzip compression
pigz # Parallel gzip implementation
unzip # Extract ZIP archives
xz # XZ compression utilities
zip # Create ZIP archives
zstd # Zstandard compression
# === SYSTEM MONITORING ===
# Performance monitoring and system information
bmon # Network bandwidth monitor
htop # Interactive process viewer
lsof # List open files and network connections
# === TERMINAL AND SHELL ===
# Terminal functionality and shell tools
screen # Terminal multiplexer
rxvt-unicode-unwrapped.terminfo # Terminal info for urxvt
# === DEVELOPMENT TOOLS ===
# Development and debugging utilities
xxd # Hex dump utility
# === HARDWARE UTILITIES ===
# Hardware information and diagnostics
lshw # Hardware information tool
pciutils # PCI bus utilities (lspci)
smartmontools # Hard drive health monitoring
# === DISK AND STORAGE ===
# Storage testing and management
disk-filltest # Disk testing utility
] ++ (if pkgs.stdenv.isLinux then [
# === LINUX-SPECIFIC PACKAGES ===
# Packages that are only available/useful on Linux systems
# --- KERNEL AND SYSTEM ---
config.boot.kernelPackages.cpupower # CPU frequency utilities
# --- NETWORK ADMINISTRATION ---
iptables # Firewall administration
ethtool # Ethernet device configuration
# --- HARDWARE MANAGEMENT ---
hdparm # Hard disk parameter tuning
usbutils # USB device utilities (lsusb)
dmidecode # DMI/SMBIOS information
# --- PROCESS AND SYSTEM MONITORING ---
iotop # I/O monitoring by process
psmisc # Additional process utilities (killall, pstree)
# --- COMPRESSION (Linux-specific) ---
unrar # Extract RAR archives (non-free)
# --- FILE SYSTEM UTILITIES ---
inotify-tools # File system event monitoring
sshfs # Mount remote filesystems over SSH
] else [
]) ++ (if pkgs.stdenv.isDarwin then [
# === MACOS-SPECIFIC PACKAGES ===
# Packages specifically for macOS systems
# Currently empty - add macOS-specific tools here as needed
# Examples: darwin.apple_sdk.frameworks.Security
] else []);
}

15
system/default/system.nix Normal file
View File

@@ -0,0 +1,15 @@
{ ... }:
{
# Environment package management
# Remove unnecessary default packages to keep system minimal
# Default packages usually include basic utilities that might not be needed
environment.defaultPackages = [ ];
# Clean up temporary files on every boot
# This prevents /tmp from accumulating old files and filling up
boot.tmp.cleanOnBoot = true;
# Disable coredumps to prevent filling up /var/lib/systemd/coredump/
# Coredumps can quickly consume large amounts of disk space
systemd.coredump.enable = false;
}