⚠️ This configuration is currently not maintained, as I switched to MacOS -> See my nix-darwin configuration.
Welcome to my modular NixOS system configuration.
There are four essential building blocks: hosts, users, modules and profiles.
A host expression represents a physical or virtual machine. A host has one or more users and imports their configuration.
User configurations are handled by Home Manager.
Modules are regular NixOS/Home Manager modules used by host and user expressions.
Profiles are reusable snippets used by host and user expressions or modules.
/nix/nixpkgs- A clone of the nixpkgs repository
/etc/nixos/compat- Compatibility layer for non-flake utils/etc/nixos/current- The active configuration/etc/nixos/nixpkgs- Link to current NixOS nixpkgs/etc/nixos/options.json- JSON file of all available NixOS options/etc/nixos/system-packages- List of installed packages
-
rebuild.sh- Wrapper fornixos-rebuild switchExample
./scripts/rebuild.sh xps15@home
-
update.sh- Updates flake inputs,/nix/nixpkgsand packages managed by niv -
update-all.sh- Runs all other update scripts -
clean-up.sh- Removes old generations and collects garbage
Scripts to simplify the work with VSCode extensions.
-
add-vscode-extension.sh- Add VSCode extension tonix/sources.jsonExample
./scripts/add-vscode-extension.sh formulahendry.auto-rename-tag
-
update-vscode-extensions.sh- Updates all extensions to the latest version
Scripts to simplify the work with IntelliJ IDEA plugins.
add-idea-plugin.sh- Add IDEA plugin tonix/sources.jsonupdate-idea-plugins.sh- Updates all plugins to the latest version
default- Base configuration for a default hostminimal- Minimal configuration
markus- Base configuration for my usernixos- Configuration for NixOS usersnon-nixos- Configuration for non-NixOS users
deskop@home- Configuration for my workstationxps15@home- Configuration for my laptopdemo- Example host configuration (installation guide)demo-dual- Example dual-boot configuration (installation guide)
user- Example user configuratonuser@ubuntu- Example user configuraton for Ubuntu (installation guide)markus@home- User for my workstation at homemarkus@chromeos- User for my Chromebook- ...
amd-gpu- Support for AMD GPUsandroid- Support for Android devicesapx- Adds the APX package manageravahi- Configures avahibase-packages- Collection of essential CLI toolsbtrfs- Configures btrfscommand-not-found- Adds simplecommand-not-foundscriptcompatibility- Adds some tools for better compatibility with other Linux distributionsdesktop- Essential packages for desktop environmentsdocker- Adds Docker and utilitiesecryptfs- Support for eCryptfsfonts- Adds some fontsgnome- Configures Gnome desktop environmentgrub-efi- Configures GRUB for UEFI systemskodi- Adds Kodihome-overlay- Creates an overlay for /homelibreoffice- Adds LibreOfficelibvirtd- Support for libvirtdlxd- Support for LXDlutris- Adds Lutrisnvidia- Configures proprietary NVIDIA driversnix- Nix configuration and additionsopengl- Configures OpenGLpipewire- Configures PipeWirepodman- Adds Podmanresolved- Configures systemd-resolvedsnapd- Adds snapdsnapper- Configures Snapper to create snapshots of/homeon bootsshd- Configures OpenSSH serversteam- Configures Steamsway- Configures sway window managersystemd-boot- Configures systemd-boottap- Configures TAP network devicetoolbox- Adds toolboxvirtualbox- Adds VirutalBox and utilitieswaydroid- Adds Waydroidwayland- Adds Wayland utilitiesx11- Configures X11
crosvm-guest- Prepares host to run crosvm guestdocker-container- Prepares host to run as Docker containerlxd-container- Prepares host to run as LXD containerlxd-vm- Prepares host to run as LXD VMqemu-quest- Prepares host to run QEMU guest
bash- Configures Bash shellborg-backup- Adds job which runs BorgBackup/borgmaticchromeos- Use if ChromeOSconky- Configures conkydconf- Loads dconf configuration from filedevShells- Adds custom development shellsdisable-bluetooth- Disables Bluetooth on startemacs- Configures Emacsfish- Configures Fish shellhide-applications- Hides applications from launcheridea- Adds IntelliJ IDEA with pluginsnon-nixos- Use if other Linux OS than NixOSnixos- NixOS configuration and additionsvscode-profiles- Adds VSCode with multiple profileswaypipe- Connects host wayland to VM via waypipe, socat and vsocks
Contains some custom overlays.
application/networking/browsers/chromium- Chromium with Wayland supportdesktops/gnome/core/gnome-terminal- Gnome Terminal with transparency patchdesktops/gnome/core/nautilus- Change grid icon sizestools/package-management/nix- Patched to allow downloads from VSCode Marketplacetools/admin/lxd- LXD with VM supporttools/nix/nixos-option- nixos-option using compatibility layer
Contains a bunch of extra packages.
These repositories are added as Git submodules.
emacs.d- My Emacs configurationdotfiles- My dotfiles
Collection of examples, each with it's own README.
Documentation and guides.
Stuff that doesn't fit anywhere else.
- File names: kebab-case
- Package names: kebab-case
- Module names: camel-case
- Module options: camel-case
- Functions: kebab-case
- Imports
- Modules
- Boot
- Filesystems
- Networking
- Hardware
- systemd
- Services
- Security
- Virtualization
- Environment
- Activation
- Programs
- Packages
- Fonts
- Users
Same as hosts
- Packages
- Services
- Activation
- Programs
- Imports
- Modules
- Files
- Services
- Activation
- Programs
- Packages