dotfiles/modules/nixos/services/lnxlink.nix
2025-09-09 15:28:52 +02:00

64 lines
1.5 KiB
Nix

{
pkgs,
config,
lib,
inputs,
...
}:
with lib; let
cfg = config.services.lnxlink;
lnxlink = pkgs.python3Packages.buildPythonApplication {
pname = "lnxlink";
version = "2025.7.0";
pyproject = true;
# Linking my fork here which allows for newer versions of setuptools and wheel.
# Also includes some fixes that make the program actually work with NixOS.
src = pkgs.fetchFromGitHub {
owner = "padarom";
repo = "lnxlink";
rev = "7202e48";
hash = "sha256-E2J1d9D5SJWGEutAPAo1BM98cMzH7QrqIz3yrlXpzGE=";
};
build-system = with pkgs.python3Packages; [setuptools wheel];
dependencies = with pkgs.python3Packages; [
distro
pyyaml
paho-mqtt
requests
psutil
inotify
jeepney
];
meta = {
homepage = "https://github.com/bkbilly/lnxlink";
description = "Effortlessly manage your Linux machine using MQTT.";
license = licenses.mit;
mainProgram = "lnxlink";
};
};
in {
options.services = {
lnxlink = {
enable = mkEnableOption "Enable LNXlink";
};
};
config = mkIf cfg.enable {
environment.systemPackages = [lnxlink];
systemd.services.lnxlink = {
enable = true;
wantedBy = ["multi-user.target"];
serviceConfig = {
# Note: Logging will also be done to the working directory, so logs will
# be lost upon a restart.
WorkingDirectory = "/tmp";
ExecStart = "${lnxlink}/bin/lnxlink -i -c ${./lnxlink.yaml}";
};
};
};
}