Initial shared NixOS modules
This commit is contained in:
8
system/default/editor.nix
Normal file
8
system/default/editor.nix
Normal 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
56
system/default/nix.nix
Normal 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
143
system/default/packages.nix
Normal 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
15
system/default/system.nix
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user