my NixOS Config
public just in case it is useful to someone
* add `.sops.yaml`, secrets, pgp keys * add nitrokey + smartcard pkgs, udev rules * update flake inputs * comment out ollama-cuda |
||
|---|---|---|
| home-manager | ||
| hosts | ||
| secrets@b9fbd96fec | ||
| .gitattributes | ||
| .gitignore | ||
| .sops.yaml | ||
| .statix.toml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
My personal machines config files
This repository contains declarative configurations for personal machines managed with NixOS flakes and Home Manager.
The setup is split into host-specific configurations, common reusable modules, and user-level home configurations.
Structure
- flake.nix — entry point, defines inputs (nixpkgs, home-manager, nixvim, etc.) and system/home outputs.
- hosts/ — machine-specific system configurations.
Nixbook/— laptop setup (Apple hardware, Hyprland)Nixstation/— desktop workstation (NVIDIA, virtualization, btrfs scrub, firewall).Nixtest/— minimal VM environment for testing with QEMU.common/— shared modules (users, keyboard, network, gpus, etc.).
- home-manager/ — user environment configurations.
home.nix— main Home Manager entry for user packages and programs.vim.nix,zsh.nix,gnome.nix,hyprland/— modular desktop and tool configurations.scripts/— helper shell scripts (GPU monitor, RAM-disk builds, install helpers).
Usage
Build and switch system configuration
sudo nixos-rebuild switch --flake .#<hostname>
Example for Nixbook:
sudo nixos-rebuild switch --flake .#Nixbook
Build and switch home configuration
home-manager switch --flake .#thiago@<hostname>
Example for Nixstation:
home-manager switch --flake .#thiago@Nixstation
Installation
For new installs, use the provided install scripts:
- hosts/Nixbook/scripts/install.sh — remote installation with
nixos-anywhere. - hosts/Nixtest/scripts/install_test.sh — bootstraps a test VM with Alpine + QEMU.
Scripts
Some helper scripts are included:
lsgpu.sh— monitor NVIDIA GPUs in terminal.nixstation-home-ram-build.sh— runhome-managerbuilds in a RAM disk.- Install scripts under each host as described above.
TODOs:
- Device identifiers (disk paths, GPU PCI IDs, monitor names) are currently hardcoded and may need modification on different hardware.
- Find a good secret management system/process
Contributing
Commit tags:
- feat: a new feature
- fix: a bug fix
- chore: maintenance tasks, config, tooling, repo setup
- docs: documentation only
- style: code style/formatting (no logic changes)
- refactor: code restructuring (no feature/bug fix)
- perf: performance improvements
- test: adding or modifying tests
- ci: continuous integration changes
- build: changes to build system or dependencies
License
Configuration files are provided under GPLv3 where applicable