Personal NixOS configuration. Hyprland on Wayland, managed declaratively with Nix flakes and home-manager.
| Layer | Tool |
|---|---|
| OS | NixOS (unstable) |
| Compositor | Hyprland (with UWSM) |
| Display manager | ly |
| Shell | Zsh + autosuggestion + syntax highlighting |
| Prompt | Starship |
| Tooling | eza, fzf, zoxide, gh |
| Git | git + delta (top-down diff with line numbers) |
| Bar | Waybar |
| Launcher | Wofi |
| Terminal | Ghostty / Kitty |
| Font | FiraCode Nerd Font |
| Editor | Neovim |
| Browser | Firefox |
| Audio | PipeWire (with PulseAudio shim) |
| Networking | NetworkManager + Tailscale |
.
├── flake.nix # Flake entry point + inputs
├── flake.lock
├── hosts/ # Per-machine system config
│ └── daltrax/
│ ├── default.nix # System-level NixOS config for this host
│ └── hardware-configuration.nix
├── home/ # home-manager (user-level) config
│ ├── default.nix # Cross-platform baseline (zsh, git, gh, eza, ...)
│ └── linux.nix # Linux-only additions, imports default
├── modules/ # Reusable system modules, imported by hosts
│ └── nixos/
│ └── rust.nix # Rust toolchain (cargo, rustc, wild linker, ...)
└── config/ # Raw config files sourced via home.file
├── hypr/ # Hyprland config
└── waybar/ # Waybar config + styles
The split lets the same home/default.nix get reused later from a Mac
(via standalone home-manager) by importing it from a sibling darwin.nix.
git clone git@github.com:Ashutosh00710/nixos-dotfiles.git
cd nixos-dotfiles
sudo nixos-rebuild switch --flake .#daltraxReplace daltrax with whatever you name your host in flake.nix under nixosConfigurations.
hardware-configuration.nixis machine-specific. Regenerate withnixos-generate-configbefore rebuilding on a new machine.- Tailscale SSH is enabled — run
sudo tailscale up --sshonce after install to authenticate. CapsLockis remapped toCtrlsystem-wide (Hyprland + virtual consoles + ly login).- Closing the lid turns the laptop panel off but keeps the system running (so SSH/Tailscale stay reachable); opening it restores the display. Assumes the machine is always on AC.
- Default user is
ashutosh. Rename inhosts/daltrax/default.nixandhome/linux.nixfor your own use. - Convenience alias
nrsrebuilds the system:sudo nixos-rebuild switch --flake ~/nixos-dotfiles#daltrax. - Rust projects use per-directory dev shells: drop a
flake.nix(devShell) +.envrccontaininguse flakein the project, rundirenv allow, and the toolchain/libs load automatically oncd. Project-specific libraries (openssl, etc.) go in that flake'sbuildInputs, not the system config. - Low-RAM build tuning (see
hosts/daltrax/default.nix+home/linux.nix): zram + an 8 GiB swapfile, thewildlinker, andcodegen-units=256keep a singlerustcfrom exhausting memory and freezing the machine. Prefercargo build(debug) over--releasewhile iterating.