feat: initialize repo with NixOS and Home Manager configs

- Add .gitignore for common languages, tools, and OS/editor artifacts
- Configure .gitattributes for Git LFS (fonts, images, archives, ISOs)
- Add README with repo description
- Add flake.nix defining inputs and outputs for NixOS, Home Manager, and related modules
- Introduce home-manager configs:
  - Base home.nix with packages, services, and programs
  - Hyprland WM configuration (waybar, fuzzel, keybindings, theming)
  - Vim (nixvim) setup with LSP and plugins
  - Zsh setup with aliases, Oh My Zsh, clipboard helpers
  - Systemd user services (e.g., librespot)
- Add scripts (GPU monitor, RAM build helper, install automation)
- Add host configurations:
  - Nixbook (Apple laptop) with hardware, disko, and install script
  - Nixstation (desktop) with firewall, virtualization, Btrfs scrub timer
  - Nixtest (test VM) with QEMU + Alpine-based install test harness
  - Common modules (network, NVIDIA, rclone, screen, keychron, users)
- Include statix config for linting
This commit is contained in:
Thiago Sposito 2025-08-20 21:55:46 -03:00 committed by Thiago Sposito
commit d0b63ce601
Signed by: thiago
GPG key ID: 3065EA73A976D430
34 changed files with 1954 additions and 0 deletions

70
README.md Normal file
View file

@ -0,0 +1,70 @@
# 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, disk layout via disko).
- `Nixstation/` — desktop workstation (NVIDIA, virtualization, btrfs scrub, firewall).
- `Nixtest/` — minimal VM environment for testing with QEMU.
- `common/` — shared modules (users, keyboard, network, gpus, rclone, 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