Just another personalized take on how to manage systems, configurations, and shared tooling using Nix. The main purpose is to decouple system profiles into re-usable flake packages that you can install or use.
- Install Nix in Daemon Mode: https://nixos.org/download
- Register the repository:
sudo nix registry add adaliszk github:adaliszk/system
Main assumption for systems is that they are from scratch without GUI by default. The goal with that is to leave the user-facing side to Nix, and keep the core system packages focused around running the kernel and absolutely necessary services.
To kick off the global Nix configuration, run:
sudo nix profile add adaliszkAfter these essentials are installed, you can use system-manager to switch between
the available presets:
system-manager switch --sudo --flake <preset>
# Optionally, use my shortcut:
system-switch <preset>Systems:
adaliszk#root: empty configuration that only configures Nix itselfadaliszk#minimal: minimum services and packages for protection and utilitiesadaliszk#k3s: kubernetes node using Rancher's K3s with network-based configurationadaliszk#hyprland: core system-level engine for using Hyprland desktop environment
After the system is initialized, you have the choice to customize-it within your user profile with additional tools and configurations:
nix profile add <profile>Profiles:
adaliszk#essentials: core tools and services that are used everywhere (default)adaliszk#hyprland: customized Hyprland using Nix and Stowadaliszk#terminal: terminal-based "desktop" environment using Nix and Stowadaliszk#browser: web browser with its plugins and themes pre-installedadaliszk#messaging: various messaging apps for keeping connections upadaliszk#kubeadmin: tools for managing kubernetes clustersadaliszk#webdev: web-based development editors, plugins, and toolsadaliszk#phpdev: php-based development editors, plugins, and toolsadaliszk#minecraft: modded Minecraft gaming and mod development toolsadaliszk#creator: content creation tools for YouTube and other socialsadaliszk#agentdev: wrap LLM-based development with fine-tune controlsadaliszk#neovim: customized neovim using Nix and Stow
After installed the intended profiles, run the config update for setting up the user home configurations:
update-configsThis is also the command to be used for updating the system configs for updates.
While the main purpose is to share my own setup, feel free to use it as your own template and any improvements are welcomed!