71 lines
2.6 KiB
Markdown
71 lines
2.6 KiB
Markdown
[](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
|