Nyx-Tools/README.md
2025-08-08 13:41:45 +02:00

194 lines
5.7 KiB
Markdown

# ⚙️ Nyx: NixOS System Management Toolkit
**Nyx** is a modular toolkit that simplifies and automates various NixOS system management tasks, from enhanced rebuilds to cleanup and shell customization.
---
## ✨ Features
* 🔁 **Enhanced NixOS Rebuilds** — via `nyx-rebuild.nix`
* 🧹 **Automated System Cleanup** — via `nyx-cleanup.nix`
* 🛠️ **Shell Customization & Tooling** — banners and helpers via `nyx-tool.nix`
* 🧩 **All-in-One Integration** — enable everything with a single import: `nyx.nix`
---
## 📦 Dependencies
| Tool / Service | Required | Notes |
| -------------------- | -------- | -------------------------------------------------------- |
| NixOS / Nix | ✅ | Nyx is designed for NixOS or compatible Nix environments |
| `sudo` access | ✅ | Needed for system-level operations |
| Home Manager | ✅ | Integrates via `home.nix` |
| Git | ✅ | Required for `autoPush*` features (must be a Git repo) |
| `nix-output-monitor` | ✅ | Automatically provided by Nyx |
---
## 📁 Project Structure
```
Nyx-Tools
├── default.nix # Top-level module
├── nyx-tool.nix # Shell enhancements and banners
├── nyx-rebuild.nix # Enhanced nixos-rebuild logic
├── nyx-cleanup.nix # System cleanup automation
└── other/ # Legacy scripts (to be removed soon)
```
---
## ⚙️ How It Works
* **`nyx-tool.nix`**
Sets up shell visuals (e.g. banners) and Zsh helpers.
* **`nyx-rebuild.nix`**
Enhances `nixos-rebuild` with:
* Git auto-push support
* Optional code formatting before builds
* Rebuild logging
* **`nyx-cleanup.nix`**
Automates system cleanup and tracks logs (optionally pushes to GitHub).
---
## 🚀 Quick Start
### 1. Add Nyx to your Flake
```nix
# flake.nix
{
inputs.nyx.url = "github:Peritia-System/Nyx-Tools";
outputs = inputs @ { nixpkgs, nyx, ... }:
{
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
modules = [ ./configuration.nix ];
};
};
}
```
### 2. Import Nyx into Home Manager
```nix
# home.nix
{
config,
inputs,
...
}:
{
imports = [
inputs.nyx.homeManagerModules.default
];
}
```
### 3. Enable Desired Modules
```nix
{
nyx = {
# Global settings
enable = true;
username = username;
nixDirectory = nixDirectory;
logDir = "${nixDirectory}/Logs";
autoPush = true;
# Tool-specific settings
nyx-rebuild = {
enable = true;
formatter = "alejandra";
enableFormatting = false;
editor = "nvim";
startEditor = false;
enableAlias = false;
};
nyx-cleanup = {
enable = true;
keepGenerations = 5;
enableAlias = false;
};
nyx-tool = {
enable = true;
};
};
}
```
> ⚠️ **Note**: `nixDirectory` must be a **full path** to your flake repo (e.g., `/home/${username}/NixOS/Nyx-Tools`).
See `other/example/example-home.nix` for a working example.
---
## 🔧 Module Options
### `modules.nyx-rebuild`
| Option | Description | Default |
| ------------------ | -------------------------------------- | ------------------------- |
| `enable` | Enable the module | `false` |
| `startEditor` | Launch editor before rebuilding | `false` |
| `editor` | Editor to use (`vim`, `nvim`, etc.) | — |
| `enableFormatting` | Auto-format Nix files before rebuild | `false` |
| `formatter` | Formatter to use (e.g., `alejandra`) | — |
| `enableAlias` | Add CLI alias for rebuild | `false` |
| `autoPushLog` | Push rebuild logs to GitHub | `false` |
| `autoPushNixDir` | Push flake dir to GitHub after rebuild | `false` |
| `username` | Username the module applies to | Required |
| `nixDirectory` | Full path to the Nix flake directory | Required |
| `logDir` | Where to store logs | `~/.nyx/nyx-rebuild/logs` |
---
### `modules.nyx-cleanup`
| Option | Description | Default |
| ----------------- | ----------------------------- | ------------------------- |
| `enable` | Enable the module | `false` |
| `autoPush` | Push logs to GitHub | `false` |
| `keepGenerations` | Number of generations to keep | `5` |
| `enableAlias` | Add CLI alias for cleanup | `false` |
| `username` | User this applies to | Required |
| `nixDirectory` | Full path to flake dir | Required |
| `logDir` | Path to store logs | `~/.nyx/nyx-cleanup/logs` |
---
### `modules.nyx-tool`
| Option | Description | Default |
| -------- | ------------------------------- | ------- |
| `enable` | Enables banners and shell tools | `false` |
> 💡 `nyx-tool` must be enabled for other modules to function properly.
---
## 🤝 Contributing
You're welcome to contribute:
* New features & modules
* Tooling improvements
* Bug fixes or typos
Open an issue or pull request at:
👉 [https://github.com/Peritia-System/Nyx-Tools](https://github.com/Peritia-System/Nyx-Tools)
---
## 📄 License
Licensed under the [MIT License](./LICENSE)