⚠️ 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 switch
Example
./scripts/rebuild.sh xps15@home
-
update.sh
- Updates flake inputs,/nix/nixpkgs
and 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.json
Example
./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.json
update-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-found
scriptcompatibility
- 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/home
on 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