❄ NixOS Flake Manager
GPL-3.0 License
Rui is my personal NixOS flake manager. It isn't very unique to my system at the moment, so anyone can use it.
rui edit
- Open and edit your flake directory from anywhererui home/os switch
- Rebuild and switch your home or OS flake configurationrui home news
- Show the latest news from your Home Manager configuration{
inputs.rui = {
url = "github:Fuwn/rui";
inputs.nixpkgs.follows = "nixpkgs"; # Recommended
};
}
This method manages the configuration for you with Nix.
# ...
inputs.home-manager.lib.homeManagerConfiguration {
modules = [
inputs.rui.homeManagerModules.${builtins.currentSystem}.default
];
};
# ...
{
programs.rui = {
enable = true; # Defaults to false
settings = {
# Status notifications via `notify-send`; defaults to false
notify = true;
# The command to use for sending notifications, view a cool example below;
# defaults to `notify-send`
notifier = "notify-send";
# Rui falls back on the `FLAKE_EDITOR` and `EDITOR` environment variables
# if `editor` is unset
editor = "code";
# Rui falls back on the `FLAKE` environment variable if `flake` is unset
flake = "/path/to/your-flake";
# Allow unfree packages on the global level; defaults to false
allow-unfree = false;
# Allow insecure packages on the global level; defaults to false
allow-insecure = false;
# Extra arguments to pass to `nixos-rebuild` and `home-manager`; defaults
# to [ ]
extra-args = [ "--impure" ];
};
};
}
Using this method, configuration is done manually by the user in the
$HOME/.config/rui/config.json
file.
# For flakes users
rui.packages.${pkgs.system}.default
# For non-flakes users
(import (
pkgs.fetchFromGitHub {
owner = "Fuwn";
repo = "rui";
rev = "..."; # Use the current commit revision hash
hash = "..."; # Use the current commit sha256 hash
}
)).packages.${builtins.currentSystem}.default
Rui uses notify-send
by default for sending notifications, but you can set
the notifier
configuration value to any file path. Here's an example of a
distributed notification script that sends notifications to your phone and
your PC. This can easily be adapted to send notifications to any service, e.g.,
Telegram, Discord, other webhook receivers, etc.
This example uses Bark, an extremely simple and easy-to-use notification service for iOS devices.
#!/usr/bin/env dash
# Send a notification to your host PC
notify-send "$1" "$2"
# Send a notification to your iOS device
curl -X "POST" "https://api.day.app/your_bark_api_key" \
-H 'Content-Type: application/json; charset=utf-8' \
--silent \
-d '{
"body": "'"${2}"'",
"title": "'"${1}"'",
"icon": "https://nixos.wiki/images/thumb/2/20/Home-nixos-logo.png/207px-Home-nixos-logo.png"
}'
--help
NAME:
rui - Personal NixOS Flake Manager
USAGE:
rui [global options] command [command options]
DESCRIPTION:
Personal NixOS Flake Manager
AUTHOR:
Fuwn <[email protected]>
COMMANDS:
home
os
edit
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--allow-unfree (default: false)
--help, -h show help
COPYRIGHT:
Copyright (c) 2024-2024 Fuwn
This project is licensed with the GNU General Public License v3.0.