nixos/apcupsd: wrap CLI with "-f ${configFile}"

This ensures that the CLI is in sync with the service configuration.

(I tried building apcupsd with --sysconfdir=/etc instead, but it wants
to install stuff there at build time, so I backed out.)

Fixes https://github.com/NixOS/nixpkgs/issues/208204.

Changed files
+16 -1
nixos
modules
services
monitoring
+16 -1
nixos/modules/services/monitoring/apcupsd.nix
···
);
+
# Ensure the CLI uses our generated configFile
+
wrappedBinaries = pkgs.runCommandLocal "apcupsd-wrapped-binaries"
+
{ nativeBuildInputs = [ pkgs.makeWrapper ]; }
+
''
+
for p in "${lib.getBin pkgs.apcupsd}/bin/"*; do
+
bname=$(basename "$p")
+
makeWrapper "$p" "$out/bin/$bname" --add-flags "-f ${configFile}"
+
done
+
'';
+
+
apcupsdWrapped = pkgs.symlinkJoin {
+
name = "apcupsd-wrapped";
+
# Put wrappers first so they "win"
+
paths = [ wrappedBinaries pkgs.apcupsd ];
+
};
in
{
···
} ];
# Give users access to the "apcaccess" tool
-
environment.systemPackages = [ pkgs.apcupsd ];
+
environment.systemPackages = [ apcupsdWrapped ];
# NOTE 1: apcupsd runs as root because it needs permission to run
# "shutdown"