mirror of
https://github.com/tomasriveral/nixos.git
synced 2026-08-11 18:18:37 +02:00
236 lines
9.9 KiB
Markdown
236 lines
9.9 KiB
Markdown
⚠️ Documentation outdated. I recently rewrote the entire config using the [dendritic pattern](https://github.com/mightyiam/dendritic/). One of these days, I will update the README.
|
||
|
||
# NixOS Configuration
|
||

|
||
|
||
## Installation Guide
|
||
|
||
⚠️ **Important Notes**
|
||
Before applying this configuration on another system, make sure to:
|
||
- Update the `hostName` (in `configuration.nix` and `home.nix`).
|
||
|
||
Requirements: `git` installed. Then run:
|
||
|
||
```bash
|
||
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 and settings and birdtray's settings[^1]
|
||
- Inkscape's settings
|
||
|
||
|
||
[^1]: You must change in Advanced settings Thunderbird command line to the result of `where thunderbird`.
|
||
|
||
---
|
||
|
||
## Configuration Structure
|
||
|
||
```text
|
||
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)
|
||
│ ├── qt/ # qt modules (qtbatticon)
|
||
│ └── 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
|
||
```
|
||
|
||
> other/quickshell is the older quickshell configuration.
|
||
|
||
---
|
||
|
||
## Applications & Tools
|
||
|
||
### Shell & Terminal
|
||
- [`zsh`](https://www.zsh.org/) with [`oh-my-zsh`](https://ohmyz.sh/) for shell customization
|
||
- [`kitty`](https://sw.kovidgoyal.net/kitty/) terminal
|
||
|
||
### Window Management
|
||
- [`hyprland`](https://github.com/hyprwm/Hyprland) (tiling window manager)
|
||
- [`ly`](https://github.com/fairyglade/ly) login manager
|
||
- [`swaylock`](https://github.com/swaywm/swaylock) screen locking
|
||
- [`hypridle`](https://github.com/hyprwm/Hyprland/wiki/HyprIdle) for idle mode
|
||
|
||
### Browsing & Productivity
|
||
- [`librewolf`](https://librewolf-community.gitlab.io/) browser
|
||
- Extensions: [AdNauseam](https://github.com/dhowe/AdNauseam), [Enhancer for YouTube](https://github.com/ParticleCore/yt-enhancer), [TrackMeNot](https://www.tornhq.com/tmn/), [SponsorBlock](https://sponsor.ajay.app/)
|
||
- Privacy options mostly enabled; some disabled to avoid conflicts with AdNauseam
|
||
- [`thunderbird`](https://www.thunderbird.net/) email client
|
||
- [`obsidian`](https://obsidian.md/) notes and knowledge management
|
||
- [`libreoffice`](https://www.libreoffice.org/) full-featured office suite
|
||
|
||
### Utilities
|
||
- [`cliphist`](https://github.com/skywind3000/cliphist) clipboard manager
|
||
- [`zoxide`](https://github.com/ajeetdsouza/zoxide) faster directory navigation
|
||
- [`fastfetch`](https://github.com/LinusDierheimer/fastfetch) system info
|
||
- [`gnome-calculator`](https://wiki.gnome.org/Apps/Calculator)
|
||
- [`gnome-characters`](https://wiki.gnome.org/Apps/Characters)
|
||
- [`gnome-disk-utility`](https://wiki.gnome.org/Apps/Disks)
|
||
- [`gnome-font-viewer`](https://wiki.gnome.org/Apps/FontViewer)
|
||
- [`nautilus`](https://wiki.gnome.org/Apps/Nautilus) file manager
|
||
- [`okular`](https://okular.kde.org/) document & image viewer
|
||
- [`vlc`](https://www.videolan.org/vlc/) media player
|
||
- [`krita`](https://krita.org/) and [`inkscape`](https://inkscape.org/) for image editing and drawing
|
||
- [`anki`](https://apps.ankiweb.net/) flashcards for learning
|
||
- [`texlive`](https://www.tug.org/texlive/) LaTeX distribution
|
||
- [`biber`](https://ctan.org/pkg/biber) bibliography for LaTeX
|
||
- [`eza`](https://github.com/eza-community/eza) replacement for `ls`
|
||
|
||
### System & Hardware
|
||
- [`bottom`](https://github.com/ClementTsang/bottom) system monitor
|
||
- [`tomato-c`](https://github.com/erikras/tomato-c) Pomodoro timer
|
||
- [`framework-tool-tui`](https://github.com/romanl/fx16-tui) Framework 16 laptop settings
|
||
|
||
**Daemons:** `upower`, `pipewire`, `pulseaudio`, `brightnessctl`, `playerctl`, `blueman`, `udiskie`, `networkmanager-applet`, `swww` wallpaper daemon
|
||
|
||
### Screenshots, Notifications, Bar and much more!
|
||
- [caelestia-shell](https://github.com/caelestia-dots/shell)
|
||
|
||
---
|
||
|
||
## 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 + Alt + A` | Toggle sidebar |
|
||
| `$mod + Q` | Kill apps (Steam/Pomodoro to special workspace) |
|
||
| `$mod + L` | Lock screen |
|
||
| `$mod + Shift + S` | Screenshot a window|
|
||
| `F11` | Screenshot the whole screen|
|
||
|
||
### 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 **don’t 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 1, Col 2 | Performance mode (`Ctrl+Alt+7`) |
|
||
| Row 1, Col 3 | Do not disturb (`Ctrl+$mod+4` |
|
||
| Row 1, Col 4 | Notification center (`Ctrl+Alt+1`) |
|
||
| Row 2, Col 1 | Pulseaudio control (`Ctrl+$mod+3`) |
|
||
| Row 2, Col 2 | Change audio output (`Ctrl+Alt+Shift+0`) |
|
||
| Row 2, Col 3 | Special characters (`Ctrl+$mod+3`) |
|
||
| Row 2, Col 4 | Color picker (`Ctrl+Alt+8`) |
|
||
| Row 3, Col 1 | Pomodoro timer (`Ctrl+Alt+0`) |
|
||
| Row 4, Col 1 | 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.
|
||
|
||
### Neovim keybinds
|
||
|
||
| Key | Action |
|
||
|-------------|-----------------------|
|
||
| `<Space>` | `<leader>` |
|
||
| `§` | Cheatsheet |
|
||
| `<leader>1` | Open fold |
|
||
| `<leader>2` | Close fold |
|
||
| `<leader>e4` | Previous error |
|
||
| `<leader>e5` | Next error |
|
||
| `<leader>e1` | See error message |
|
||
| `<leader>e3` | See list of errors |
|
||
| `<leader>e2` | Show correction |
|
||
| `<leader>e<Tab>` | Stop grammar LSP |
|
||
| `<leader>f1` | Telescope files |
|
||
| `<leader>f2` | Telescope grep |
|
||
| `<leader>f3` | Telescope buffers |
|
||
| `<leader>f4` | Telescope help |
|
||
| `<leader>g1` | Hover documentation |
|
||
| `<leader>g2` | Go to definition |
|
||
| `<leader>g3` | Go to declaration |
|
||
| `<leader>g4` | Go to implementation |
|
||
| `<leader>g5` | Show references |
|
||
| `<leader><leader>` | Launch runner (terminal) |
|
||
| `<leader>r1` | Run fugit |
|
||
| `t` | Count syllabes (french) |
|
||
|
||
All moving macros with `<Space>`, `g`, and the recording with `q` are disabled.
|
||
---
|
||
|
||
## 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
|
||
- If you have an error similar to `Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: App info not found for 'org.quickshell'")` see `./modules/other/desktopEntries.nix`
|
||
- `ls` is an alias for `eza`. If you want more info than the normal `ls` run `eza`, `l`, `ll` or `la`
|
||
- `qtbatticon` is a custom battery icon tray, because `cbatticon` and `batticonplus` did not work. Click on it to get more info about the battery.
|
||
- `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 Cole’s *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`
|