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.
This commit is contained in:
Bjørn Forsman 2022-12-29 13:39:01 +01:00
parent 446d737bee
commit 295c552dc9

View File

@ -62,6 +62,21 @@ let
);
# 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
{
@ -138,7 +153,7 @@ 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"