No description
Find a file
2025-07-15 11:25:00 +02:00
zsh update 2025-07-15 11:25:00 +02:00
EXAMPLE_home.nix update 2025-07-15 11:25:00 +02:00
nyx-cleanup.nix fixed path 2025-07-11 10:33:18 +02:00
nyx-rebuild.nix update 2025-07-15 11:25:00 +02:00
nyx-tool.nix update 2025-07-15 11:25:00 +02:00
nyx.nix update 2025-07-15 11:25:00 +02:00
README.md update 2025-07-15 11:25:00 +02:00

⚙️ Nyx: NixOS System Management Toolkit

Nyx is a modular toolkit for managing NixOS systems. It streamlines NixOS rebuilds, system cleanups, and developer workflow enhancements through a unified and extensible interface. Simply import one file to enable all features.


Features

  • 🔁 Enhanced NixOS Rebuilds — via nyx-rebuild.nix
  • 🧹 Automated System Cleanup — via nyx-cleanup.nix
  • 🛠️ Custom Shell Tools & Visuals — like banners via nyx-tool.nix
  • 🧩 One-File Integration — import just nyx.nix to activate everything

📦 Dependencies

  • NixOS or compatible Nix environment
  • sudo access (for system operations)
  • Home Manager
  • Git — required if you use autoPush features (must be a Git repo)
  • Zsh (included via Nyx modules)
  • nix-output-monitor (included via Nyx)

No need to preinstall Zsh or nix-output-monitor; Nyx provides them internally.


📁 Project Structure

Nyx-Tools
├── nyx.nix              # Master module
├── nyx-tool.nix         # Shell customizations (e.g., banners)
├── nyx-rebuild.nix      # Enhanced nixos-rebuild logic
├── nyx-cleanup.nix      # System cleanup logic
└── zsh/
    ├── nyx-cleanup.zsh
    ├── nyx-rebuild.zsh
    └── nyx-tool.zsh

⚙️ How It Works

  • nyx.nix: Central module that imports all others.
  • nyx-tool.nix: Adds startup banners and sources Zsh helpers.
  • nyx-rebuild.nix: Extends nixos-rebuild with logs, Git push, and optional formatting.
  • nyx-cleanup.nix: Automates system cleanup and logs output.
  • zsh/*.zsh: Shell scripts sourced into Zsh to handle CLI tooling.

🚀 Quick Start

1. Import into home.nix

imports = [
  ./path/to/Nyx-Tools/nyx.nix
];

2. Enable desired modules

modules.nyx-rebuild = {
  enable = true;
  inherit username nixDirectory;
};

modules.nyx-cleanup = {
  enable = true;
  inherit username nixDirectory;
};

modules.nix-tool = {
  enable = true;
  inherit nixDirectory;
};

⚠️ Note: You must define nixDirectory in your configuration or import it. It must be a full path to your flake directory (e.g., /home/${username}/NixOS/Nyx-Tools).

👉 See the example config for a working setup.


🛠️ Module Options

nyx-rebuild

Option Description Default
enable Enable this module false
startEditor Launch an editor before rebuild false
editor Which editor to use (nvim, vim)
enableFormatting Format Nix files before rebuild false
formatter Formatter to use (alejandra)
enableAlias Add shell alias for rebuild false
autoPush Push rebuild logs or dir to GitHub false

nyx-cleanup

Option Description Default
enable Enable this module false
autoPush Push logs to GitHub after cleanup false
keepGenerations Number of system generations to keep 5
enableAlias Add shell alias for cleanup false

nix-tool

Option Description Default
enable Enable this module false

🎨 Customization

Nyx is fully modular and extensible. You can:

  • Modify existing .nix or .zsh files
  • Add new modules and source them in nyx.nix

Example: Adding a Custom Tool

# Add to nyx.nix or your home.nix
imports = [
  ./nyx-rebuild.nix
  ./my-custom-tool.nix
];

Create my-custom-tool.nix and optionally pair it with a .zsh helper script in the zsh/ folder.


🤝 Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request to:

  • Add new functionality
  • Improve existing tools
  • Fix bugs or typos

📄 License

Licensed under the MIT License.