[![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 .# ```` Example for Nixbook: ```sh sudo nixos-rebuild switch --flake .#Nixbook ``` ### Build and switch home configuration ```sh home-manager switch --flake .#thiago@ ``` 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