This flake provides a NixOS package and module for the Huion Keydial Mini driver.
Add this to your NixOS configuration (/etc/nixos/configuration.nix or your flake):
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
huion-keydial-mini = {
url = "github:the3dcoder/KeydialCommander";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, huion-keydial-mini }: {
nixosConfigurations.yourHostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
huion-keydial-mini.nixosModules.default
{
services.huion-keydial-mini.enable = true;
# Add your user to the input group
users.users.yourUsername.extraGroups = [ "input" ];
}
];
};
};
}You can also install just the package without the module:
{ config, pkgs, ... }:
{
environment.systemPackages = [
inputs.huion-keydial-mini.packages.${pkgs.system}.huion-keydial-mini-driver
];
# Manually enable required services
hardware.bluetooth.enable = true;
services.udev.packages = [
inputs.huion-keydial-mini.packages.${pkgs.system}.huion-keydial-mini-driver
];
# Add your user to the input group
users.users.yourUsername.extraGroups = [ "input" ];
}-
Copy the default configuration:
mkdir -p ~/.config/huion-keydial-mini cp /etc/huion-keydial-mini/config.yaml ~/.config/huion-keydial-mini/
-
Edit your configuration:
$EDITOR ~/.config/huion-keydial-mini/config.yaml
-
Enable and start the user service:
systemctl --user enable --now huion-keydial-mini-user.service -
Check service status:
systemctl --user status huion-keydial-mini-user.service journalctl --user -u huion-keydial-mini-user.service -f
The NixOS module automatically installs:
- ✅ Python package with all dependencies (bleak, evdev, click, pyyaml, dbus-next)
- ✅ Three command-line tools:
huion-keydial-mini- Main driver daemonkeydialctl- Control utilityunbind-huion.sh- Udev helper script
- ✅ Systemd user service (
huion-keydial-mini-user.service) - ✅ Udev rules for device access (automatically patched with correct Nix store paths)
- ✅ Default configuration file at
/etc/huion-keydial-mini/config.yaml - ✅ Documentation and license files
Note: The NixOS module automatically patches the udev rules to use the correct Nix store paths for the unbind-huion.sh script, so everything works out of the box without manual path configuration.
- System default config:
/etc/huion-keydial-mini/config.yaml - User config:
~/.config/huion-keydial-mini/config.yaml - Systemd service:
/run/current-system/sw/share/systemd/user/huion-keydial-mini-user.service - Udev rules:
/run/current-system/sw/lib/udev/rules.d/99-huion-keydial-mini.rules
# Check if bluetooth is enabled
systemctl status bluetooth
# Check if you're in the input group
groups | grep input
# If not, add yourself and log out/in
sudo usermod -a -G input $USER# Reload udev rules
sudo udevadm control --reload-rules
sudo udevadm trigger# User service logs
journalctl --user -u huion-keydial-mini-user.service -b
# System logs
journalctl -b | grep huionFor development, the flake also provides a dev shell with Python 3.13 and all necessary dependencies:
nix developThis sets up a Python virtual environment in .venv with all development dependencies.
# Build the package
nix build .#huion-keydial-mini-driver
# Check the flake
nix flake check
# Show package info
nix flake showSee CONTRIBUTING.md for development guidelines.