Skip to content

sotormd/nixos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

604 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NixOS Configuration Flake

Features | Roles | Images | CLI

nixos

slighly overengineered NixOS configuration flake for multiple hosts

Features

Why do I not use some popular libraries?

Security Features

Nix-specific features:

  • Completely reproducible, pure evaluation
  • Dotfiles managed using wrappers implemented from basic nixpkgs functions
  • Symlinks in ~ managed using hjem
  • Secrets managed using sops-nix
  • Secure boot using lanzaboote
  • Impermanence using ZFS snapshots and bind mounts, without the library.
  • Package management using lix
  • Android environment using nix-on-droid
  • Role based modules
  • Variables system for device-specific configuration
  • Flake helper CLI
  • Flake-enabled installation images

Desktop features:

  • 100% wayland, no xorg or xwayland
  • SwayFX compositor
  • Waybar top panel with several useful modules
  • Eww widgets for bottom dock, dashboard, calendar, etc
  • Rofi menu for launchers, clipboard history, workspace switchers, etc
  • Brave browser with tight policies to ensure security and protect user privacy
  • NVF-powered neovim configuration
  • Theming and colors with colors
  • Declarative browser homepage with homepage
  • Declarative wallpapers with wallpapers
  • XKCD lockscreen wallpapers with xkcd-wall
  • Automatic behavior changes when outside trusted & reliable networks with Nomad Mode

Services features:

Comprehensive features list:

Category Stack
distro NixOS
packages nixos-unstable
package manager lix
shell bash
kernel linux-hardened
entropy jitterentropy
malloc graphene-hardened
bootloader systemd-boot, uboot
secure boot lanzaboote
filesystem zfs
impermanence zfs(8) mount(8)
drive health smartmontools
~ symlinks hjem
dotfiles nixpkgs wrappers
auditing auditd
secrets sops, sops-nix
usb policy usbguard
sandboxing firejail, bubblewrap
firewall iptables (nf_tables)
mac randomization macchanger
anonymity i2pd, oniux, mat2
networking wpa_supplicant
dns unbound
secure shell sshd, fail2ban
display server wayland
compositor swayfx, cage
bar waybar
widgets eww
launcher rofi
notifications dunst
terminal emulator foot
file manager thunar
audio pipewire, pavucontrol, playerctl
media player mpv
pdf reader zathura
images swayimg, imagemagick
vector graphics editor inkscape
screenshots grimshot, grim, slurp
clipboard cliphist
browser brave
web server nginx
certificates acme
homepage homepage
search engine searxng
media server jellyfin
bittorrent qbittorrent-nox
passwords vaultwarden
text editor neovim, mousepad
version control git
development rust, python, go, haskell
virtualization qemu, virt-manager, distrobox, podman
cpu optimizations auto-cpufreq
resource monitor btop, htop
android nix-on-droid
themes, icons, cursors, fonts colors
wallpapers wallpapers, xkcd-wall
terminal misc cava, fortune

Roles

This flake uses role-based configuration.

  1. Laptop role: Laptop configuration

    Requirements

    Setup Documentation

    Usage Documenation

  2. Server role: Headless home server configuration

    Requirements

    Setup Documentation

    Usage Documentation

  3. Droid role: nix-on-droid configuration

    Setup & Usage Documentation

Images

Build Minimal ISO Build GNOME ISO

Four images: Minimal, GNOME, SD and SD Remote are included (for installation, recovery, etc.)

These images have an ideal environment for setting up this flake.

See Images Documentation for more details.

CLI

Routine tasks such as updating the flake, switching configurations, garbage-collecting, and editing variables & secrets are handled through the unified nixos(1) helper CLI.

Manpage:

man nixos

See CLI Documentation for the full command reference and workflow examples.