Add initial README for SnapRAID AIO Nix package with installation and configuration details
This commit is contained in:
parent
c13880e262
commit
31697d5677
1 changed files with 119 additions and 0 deletions
119
readme.md
119
readme.md
|
@ -0,0 +1,119 @@
|
||||||
|
# SnapRAID AIO Nix
|
||||||
|
|
||||||
|
A NixOS package and module for the [SnapRAID AIO Script](https://github.com/auanasgheps/snapraid-aio-script) - the definitive all-in-one SnapRAID helper script for Linux.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This package provides a properly Nix-integrated version of the SnapRAID AIO script, which automates SnapRAID operations with features like:
|
||||||
|
|
||||||
|
- Automated sync operations with safety checks
|
||||||
|
- Configurable scrub capabilities
|
||||||
|
- Email notifications
|
||||||
|
- Discord, Telegram, Pushover notifications via Apprise
|
||||||
|
- Smart drive monitoring
|
||||||
|
- Robust logging
|
||||||
|
|
||||||
|
All dependencies are properly managed through Nix, and the script is patched to work correctly within the NixOS environment.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### As a NixOS Module
|
||||||
|
|
||||||
|
Add to your flake.nix:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
snapraid-aio = {
|
||||||
|
url = "github:Tophc7/snapraid-aio.nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, snapraid-aio, ... }: {
|
||||||
|
# For NixOS system configuration
|
||||||
|
nixosConfigurations.<yourhostname> = nixpkgs.lib.nixosSystem {
|
||||||
|
# ...
|
||||||
|
modules = [
|
||||||
|
snapraid-aio.nixosModules.default
|
||||||
|
# ...
|
||||||
|
({ ... }: {
|
||||||
|
# Configure the service
|
||||||
|
services.snapraid-aio = {
|
||||||
|
enable = true;
|
||||||
|
# Optional custom config file
|
||||||
|
configFile = "/path/to/your/snapraid-aio.conf";
|
||||||
|
# Optional schedule
|
||||||
|
schedule = "daily";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### NixOS Module Options
|
||||||
|
|
||||||
|
| Option | Type | Default | Description |
|
||||||
|
|--------|------|---------|-------------|
|
||||||
|
| `enable` | boolean | `false` | Enable the snapraid-aio service |
|
||||||
|
| `configFile` | null or path | `null` | Path to custom configuration file (if null, uses default config) |
|
||||||
|
| `schedule` | null or string | `null` | Systemd calendar expression for scheduling (e.g., "daily" or "Mon,Thu 03:00"). If null, timer won't be enabled |
|
||||||
|
|
||||||
|
### Custom Configuration
|
||||||
|
|
||||||
|
You can create a custom configuration file based on the [original template](https://github.com/auanasgheps/snapraid-aio-script/blob/a46c7362af385eac945e86a2a0f6097dbe7ca3fb/script-config.conf). The following settings have been modified in the Nix wrapper:
|
||||||
|
|
||||||
|
- `PATH` is managed by the Nix wrapper (any PATH setting in config will be ignored)
|
||||||
|
- Paths to binaries like `apprise` are automatically handled by Nix
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Manual Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run with default config
|
||||||
|
snapraid-aio
|
||||||
|
|
||||||
|
# Run with custom config
|
||||||
|
snapraid-aio /path/to/config.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
### Scheduled Execution
|
||||||
|
|
||||||
|
When enabled via NixOS module with a schedule, the service will run automatically according to the schedule. You can also trigger it manually:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run the service manually
|
||||||
|
sudo systemctl start snapraid-aio.service
|
||||||
|
|
||||||
|
# Check status
|
||||||
|
sudo systemctl status snapraid-aio.service
|
||||||
|
|
||||||
|
# View logs
|
||||||
|
sudo journalctl -u snapraid-aio.service
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technical Details
|
||||||
|
|
||||||
|
This Nix package:
|
||||||
|
|
||||||
|
1. Properly patches the snapraid-aio script to work within NixOS
|
||||||
|
2. Manages all dependencies through Nix
|
||||||
|
3. Provides PATH protection to prevent the script from overriding critical environment variables
|
||||||
|
4. Sets up proper temporary directories for logs and state files
|
||||||
|
5. Configures systemd services and timers for scheduled operation
|
||||||
|
6. Fixes various hardcoded paths in the original script
|
||||||
|
|
||||||
|
The script uses a multi-layered approach to ensure correct operation:
|
||||||
|
- Custom wrapper script with explicit PATH setting
|
||||||
|
- PATH protection in the main script
|
||||||
|
- wrapProgram for additional dependency management
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This Nix package is released under MIT. The original snapraid-aio script is under GPL-3.0 license.
|
Loading…
Add table
Reference in a new issue