Files
nixos/README.md
T

8.0 KiB
Raw Blame History

NixOS Configuration

NixOS configuration

Installation Guide

⚠️ Important Notes
Before applying this configuration on another system, make sure to:

  • Update the hostName.
  • If your computer is not a laptop, set isLaptop = false in ~/nixos/other/quickshell/bar/Power.qml.
    (This is hardcoded because UPowerDevice.isLaptopBattery didnt work.)

Requirements: git installed. Then run:

cd
git clone https://github.com/Totorile1/nixos.git
cd nixos
sudo cp /etc/nixos/hardware-configuration.nix ./hosts/laptop/hardware-configuration
sudo nixos-rebuild switch --flake ~/nixos/#laptop

Things That Don't Work Reliably and need manual setup

  • Librewolf's extension settings
  • Librewolf's bookmarks
  • Thunderbird's email servers

Configuration Structure

nixos/
├── assets/                # Images, icons, wallpapers, sounds
├── hosts/laptop/          # Host-specific NixOS config
├── modules/
│   ├── home-manager/      # User-level configurations (apps, shell, WM, plugins)
│   ├── nixos/             # System-level modules (daemons, services, udev, ly)
│   └── scripts/           # Custom scripts called from keybinds or tools
├── other/
│   ├── kblayouts/         # Framework 16 RGB macropad layout
│   └── quickshell/        # QML configuration for topbar, notifications, screenshot, etc.
├── flake.nix
├── flake.lock
└── README.md

The quickshell configuration is written in QML (other/quickshell) and is automatically copied to ~/.config/quickshell on deployment.


Applications & Tools

Shell & Terminal

Window Management

Browsing & Productivity

Utilities

System & Hardware

Daemons: upower, pipewire, pulseaudio, brightnessctl, playerctl, blueman, udiskie, networkmanager-applet, swww wallpaper daemon

Screenshots & Notifications

  • grim (with quickshell) screenshots
  • quickshell notifications, top bar, and widgets
  • wlogout logout/shutdown widget

Keybindings

Window Management

Key Action
$mod + W Toggle floating
$mod + G Toggle group
Alt + Return Fullscreen
$mod + Arrow keys / Alt + Tab Move focus
$mod + Shift + Ctrl + Arrow keys Move window
$mod + Shift + Arrow keys Resize window

Workspaces

Key Action
$mod + 1..0 Switch workspace
$mod + Shift + 1..0 Move window to workspace
$mod + Ctrl + Arrow keys Cycle workspaces
$mod + Mouse wheel Scroll workspace
$mod + S / Alt + $mod + S Special workspace

Layout

Key Action
$mod + A Scroll layout column left
$mod + D Scroll layout column right

Applications

Key Action
$mod + T Terminal
$mod + E File manager
$mod + F Browser
$mod + N Notes
$mod + Shift + A App launcher
$mod + Q Kill apps (Steam/Pomodoro to special workspace)
$mod + L Lock screen
$mod + Shift + S Screenshot

Multimedia & System

Key Action
F1 Mute audio
F2 / F3 Volume down / up
F4 / F5 / F6 Media prev / play / next
F7 / F8 Brightness down / up
$mod + mouse Move / resize window

Framework 16 RGB Macropad

The Framework 16 RGB macropad is a 4×6 programmable key grid. Each key triggers one of the keybindings above via a macro.

If you dont have the physical macropad, the table below shows which keybinding each macro triggers so you can run it from the keyboard instead:

Macropad Key Linked Action (Hyprland keybinding)
Row 1, Col 1 Kill all apps except focused (Ctrl+$mod+6)
Row 2, Col 1 Performance mode (Ctrl+Alt+7)
Row 3, Col 2 Special characters (Ctrl+$mod+3)
Row 3, Col 3 Color picker (Ctrl+Alt+8)
Row 4, Col 1 Notification center toggle (Ctrl+Alt+1)
Row 4, Col 2 System monitor (Ctrl+Alt+2)
Row 4, Col 3 Pomodoro timer (Ctrl+Alt+0)
Row 4, Col 6 Launch Anki (Ctrl+Alt+9)

Positions are labeled as [row, column] starting from top-left [1,1].
Each macro calls a script or application from this configuration.


Aliases

Alias Command
snrt git add -A && sudo nixos-rebuild test --flake ~/nixos/#laptop
snrs git add -A && sudo nixos-rebuild switch --flake ~/nixos/#laptop

Useful Information

  • man and manix use fzf for fuzzy search of pages.
  • pkgs-unstable can be used for unstable nixpkgs packages.
  • Nix garbage collection runs weekly, deleting generations older than 7 days.
  • Non-free packages (e.g., Obsidian) are allowed.
  • neovim plugins configured in ./modules/home-manager/neovim.nix
  • oh-my-zsh plugins configured in ./modules/home-manager/oh-my-zsh.nix
  • ripgrep default flags: -S -. -p -n
  • Wallpapers change per workspace (5 paintings from Thomas Coles The Course of Empire).
  • LibreWolf search engines: @q (Quant), @hm (Home-manager), @np (nixpkgs), @nw (Nixwiki), @map (OpenStreetMap).
  • ccat colors cat output when not redirected; disables coloring if output is redirected (e.g., >>) to avoid breaking pipelines.
  • Anki addons: ./modules/nixos/anki.nix
  • TLP config: ./modules/nixos/battery.nix
  • Framework 16 RGB macropad layout: ./other/kblayouts/framework_laptop_16_rgb_macropad.layout.json