Skip to content

System Applications

NullString1 edited this page May 29, 2026 · 3 revisions

System Applications

System-level packages installed globally in NullOS.

Overview

System packages are installed via NixOS configuration and available to all users. They're defined in modules/software/packages.nix.

Rebuild command:

sudo nixos-rebuild switch --flake .#yourhostname

Current System Packages

Core System Tools

File Management:

  • p7zip - Archive compression (.7z, .zip, etc.)
  • gdu - Graphical disk usage analyzer
  • dysk - Modern disk usage utility
  • eza - Modern ls replacement with colors and icons

System Monitoring:

  • btop - Resource monitor (CPU, RAM, disk, network)
  • inxi - System information tool
  • lm_sensors - Hardware temperature monitoring
  • nvtopPackages.full - GPU monitoring for NVIDIA

Text Processing:

  • ripgrep - Fast grep alternative
  • fd - Fast find alternative
  • jq - JSON processor
  • yq-go - YAML processor

Network Tools:

  • nmap - Network scanner
  • nettools - Basic network utilities
  • openfortivpn - Fortinet VPN client
  • wget - File downloader
  • curl - Data transfer tool

Development Tools

Build Tools:

  • gcc - GNU Compiler Collection
  • gnumake - Make build tool
  • cmake - Cross-platform build system

Android Development:

  • android-tools - ADB and fastboot
  • Android Studio (via separate module)

Version Control:

  • git - Version control system
  • gh (via home-manager) - GitHub CLI

Analysis Tools:

  • binwalk - Binary file analysis
  • hexdump - Hex viewer
  • hexedit - Hex editor

Multimedia

Image Viewing:

  • eog - Eye of GNOME image viewer

Video Editing:

  • ffmpeg - Command-line video/audio editing
  • obs-studio - Screen recording and streaming

Media Libraries:

  • mesa-demos - OpenGL demos and utilities
  • sox - Sound eXchange
  • playerctl - Media player control

Audio Players:

  • rhythmbox - Music player

Desktop Applications

Productivity:

  • obsidian - Note-taking application
  • Browser (configured via machines/{hostname}/default.nix)

Databases:

  • dbgate - Universal database client

Communication:

  • telegram-desktop - Telegram messenger
  • teams-for-linux - Microsoft Teams client

Utilities

System:

  • brightnessctl - Screen brightness control
  • libnotify - Desktop notifications
  • killall - Process termination utility
  • appimage-run - AppImage support
  • pciutils - PCI utilities (lspci)
  • usbutils - USB utilities (lsusb)

File Systems:

  • ntfs3g - NTFS support
  • exfat - exFAT support

Fun:

  • lolcat - Colorful terminal output
  • cmatrix - Matrix-style terminal screensaver

Package Categories

Security & Privacy

environment.systemPackages=withpkgs;[gnupgpass# Password manager];

Configured via:

programs.gnupg.agent={enable=true;enableSSHSupport=true;};

Virtualization

Docker and VM support configured separately in modules/services/virtualisation.nix:

virtualisation={docker.enable=true;libvirtd.enable=true;};

Packages:

  • docker
  • docker-compose
  • virt-manager (if enabled)

Gaming

Configured in modules/software/steam.nix:

programs.steam={enable=true;remotePlay.openFirewall=true;gamescopeSession.enable=true;};programs.gamemode.enable=true;

Packages:

  • steam
  • gamemode
  • mangohud
  • moonlight-qt (NVIDIA Game Streaming)
  • wineWowPackages.waylandFull (Windows Compatibility)

Programs vs Packages

Program Modules

Some applications have dedicated program modules:

programs={neovim={enable=true;defaultEditor=true;};hyprland.enable=true;hyprlock.enable=true;dconf.enable=true;seahorse.enable=true;# GNOME keyring GUIfuse.userAllowOther=true;direnv={enable=true;enableZshIntegration=true;silent=true;};};

Benefits:

  • Additional configuration options
  • System integration
  • Service management

Simple Packages

Packages without special configuration:

environment.systemPackages=withpkgs;[vimwgethtop];

Adding System Packages

Step 1: Find Package

Search on https://search.nixos.org/packages or:

nix search nixpkgs package-name

Step 2: Edit Configuration

Add to modules/software/packages.nix:

environment.systemPackages=withpkgs;[# Existing packages...# Add new packageyour-package];

Step 3: Rebuild

sudo nixos-rebuild switch --flake .#yourhostname

System vs Home Packages

When to Use System Packages

System-level:

  • Required by multiple users
  • System services dependencies
  • Low-level tools (drivers, kernel modules)
  • Security tools
  • Virtualization

When to Use Home Manager

User-level:

  • Desktop applications
  • Personal productivity tools
  • Development tools
  • Dotfile configurations

Package Organization

Current Structure

environment.systemPackages=withpkgs;[# System monitoringbtopinxi# File managementp7zipgdu# Developmentandroid-toolsbinwalk# Multimediaffmpegeog# Networknmapwget# Utilitiesbrightnessctlkillall];

Recommended Organization

environment.systemPackages=withpkgs;# Core utilitiesletcoreUtils=[vimgitwget];monitoring=[btopinxilm_sensors];multimedia=[ffmpegeog];incoreUtils++monitoring++multimedia;

Conditional Packages

Per-Machine Packages

environment.systemPackages=withpkgs;[# Common packagesvimgit]++lib.optionals(vars.hostname=="nslapt")[# Laptop onlypowertoptlp]++lib.optionals(vars.hostname=="nspc")[# Desktop onlyobs-studio];

GPU-Specific

environment.systemPackages=withpkgs;[# Commonmesa]++lib.optionalsvars.useNvidiaPrime[# NVIDIA toolsnvtopPackages.fullnvidia-system-monitor];

Special Packages

Unfree Packages

Already enabled in NullOS:

nixpkgs.config.allowUnfree=true;

Examples:

  • vscode
  • discord
  • spotify
  • steam

Broken/Insecure Packages

Override if needed:

nixpkgs.config={allowUnfree=true;allowBroken=true;# Not recommendedallowInsecure=true;# Not recommendedpermittedInsecurePackages=["specific-package-version"];};

Package Versions

Stable vs Unstable

NullOS uses unstable by default but includes stable overlay:

# Use stable versionenvironment.systemPackages=[pkgs.stable.firefox];

Specific Version

Pin to specific commit:

# In flake.nix inputsnixpkgs-old.url="github:nixos/nixpkgs/commit-hash";# Useenvironment.systemPackages=[inputs.nixpkgs-old.legacyPackages.${system}.package];

Removing Packages

Edit modules/software/packages.nix and remove the line:

environment.systemPackages=withpkgs;[vimgit# removed-package # Delete this line];

Rebuild:

sudo nixos-rebuild switch --flake .#yourhostname

Default Applications

File Associations

xdg.mime.defaultApplications={"text/html"="firefox.desktop";"x-scheme-handler/http"="firefox.desktop";"x-scheme-handler/https"="firefox.desktop";"application/pdf"="okular.desktop";"image/png"="eog.desktop";};

Default Editor

programs.neovim={enable=true;defaultEditor=true;};# Or set directlyenvironment.variables.EDITOR="nvim";

Performance Considerations

Build Time

System packages are built during nixos-rebuild:

  • More packages = longer rebuild time
  • Use binary cache when possible
  • Consider moving some to home-manager

Disk Space

Check package sizes:

nix path-info -Sh /run/current-system

Optimize store:

sudo nix-store --optimise

Troubleshooting

Package Not Found

# Search for package
nix search nixpkgs package-name
# Check attribute path
nix eval nixpkgs#package.meta.description

Build Failed

# Check build log
nix log /nix/store/failed-build
# Try stable version
pkgs.stable.package

Conflicts

# Check what provides command
which commandtypecommand# Use different attribute
pkgs.package-specific

Complete Package List

View all installed system packages:

# Current generation
nix-store -q --requisites /run/current-system | grep -v '\.drv$'# Or simpler
nix-env -qa --installed '*' --profile /nix/var/nix/profiles/system

Next Steps

Clone this wiki locally