nix-conf/README.md
2025-08-25 23:50:16 -03:00

71 lines
2.6 KiB
Markdown

[![builds.sr.ht status](https://builds.sr.ht/~sposito.svg)](https://builds.sr.ht/~sposito?search)
# 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
```sh
sudo nixos-rebuild switch --flake .#<hostname>
````
Example for Nixbook:
```sh
sudo nixos-rebuild switch --flake .#Nixbook
```
### Build and switch home configuration
```sh
home-manager switch --flake .#thiago@<hostname>
```
Example for Nixstation:
```sh
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` — run `home-manager` builds 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