- Nix 75.9%
- Python 10.2%
- Shell 7.6%
- Lua 3.4%
- HTML 2.9%
| hosts | feat: add AdGuardHome and Caddy | |
| modules | feat: add Zed editor with nix-ld | |
| wallpapers | feat: add wallpapers | |
| .envrc | (feat) restructure modules and enhance neovim config | |
| .gitignore | (chore) add gitignore | |
| flake.lock | chore: nixpkg version 26.05 and misc | |
| flake.nix | feat: bootstrap minix host configuration | |
| README.org | (chore) add README.org | |
My Personal Flake
Overview
This is my personal NixOS configuration, managed using Nix Flake and Flake-parts.
I am (and probably will for a long time) actively learning as I use and tweak this setup. So it is designed to be modular for extensibility as this iterates over time.
The goal is to have custom functional setups across both my laptop and desktop computer with all the packages and tools that I use. I plan to share most modules across both device as they are for personal work and entertainment, which does not differ too much. However, I try to make things with the future extensibility in mind. I am interested in home labs and will use this to help me build them when time allows.
Features - Main tools that I use
- Niri
- The scrolling Wayland compositor, my preference after having extensive experience with Hyprland, Sway, KDE Plasma and Gnome.
- Waybar
- The minimal yet highly customisable status bar.
- Fish
- Current interactive shell of choice, for ease of use.
- Emacs
- I use Doom Emacs, in this case an "unstraightened" version with my own Doom config repository imported.
- Neovim
- I have a somewhat basic Neovim setup using Nixvim, my editor of choice if I don't have Emacs.
- And more...
- See
modules/features/.
Structure
Current project structure, will probably change over time.
flake/
├── flake.nix # Entry point
├── flake.lock # Dependency lockfile
├── hosts/ # Host-specific configurations
│ └── laptop/ # Lenovo T480 configuration
└── modules/ # Reusable modules
├── core/ # Base system/home configuration
└── features/ # specific software stacks
├── cli/ # CLI utilities
├── doom/ # Doom Emacs (unstraightened)
├── neovim/ # Neovim (nixvim)
├── niri/ # Niri WM & configuration
├── shell/ # Fish & configuration
├── utilities/ # Screen locking, etc.
└── waybar/ # Status bar configuration
Usage
I use nh for executing Nix related commands because of it's list of useful features like shorter commands and more readable outputs.
- To switch to new configuration upon changes:
nh os switch . -H laptop
- To update my Doom configuration:
nix flake update doom-config
git add flake.lock
nh os switch . -H laptop
- To perform an update:
nix flake update
git add flake.lock
nh os switch . -H laptop