mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-15 14:26:33 +01:00
ff1a94e523
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
57 lines
1.4 KiB
Nix
57 lines
1.4 KiB
Nix
{ lib, stdenv, substituteAll }:
|
|
|
|
# Provides a facility to hook into rfkill changes.
|
|
#
|
|
# Exemplary usage:
|
|
#
|
|
# Add this package to udev.packages, e.g.:
|
|
# udev.packages = [ pkgs.rfkill_udev ];
|
|
#
|
|
# Add a hook script in the managed etc directory, e.g.:
|
|
# etc."rfkill.hook" = {
|
|
# mode = "0755";
|
|
# text = ''
|
|
# #!${pkgs.runtimeShell}
|
|
#
|
|
# if [ "$RFKILL_STATE" -eq "1" ]; then
|
|
# exec ${config.system.build.upstart}/sbin/initctl emit -n antenna-on
|
|
# else
|
|
# exec ${config.system.build.upstart}/sbin/initctl emit -n antenna-off
|
|
# fi
|
|
# '';
|
|
# }
|
|
|
|
# Note: this package does not need the binaries
|
|
# in the rfkill package.
|
|
|
|
let
|
|
rfkillHook =
|
|
substituteAll {
|
|
inherit (stdenv) shell;
|
|
isExecutable = true;
|
|
src = ./rfkill-hook.sh;
|
|
};
|
|
in stdenv.mkDerivation {
|
|
name = "rfkill-udev";
|
|
|
|
dontUnpack = true;
|
|
dontBuild = true;
|
|
|
|
installPhase = ''
|
|
mkdir -p "$out/etc/udev/rules.d/";
|
|
cat > "$out/etc/udev/rules.d/90-rfkill.rules" << EOF
|
|
SUBSYSTEM=="rfkill", ATTR{type}=="wlan", RUN+="$out/bin/rfkill-hook.sh"
|
|
EOF
|
|
|
|
mkdir -p "$out/bin/";
|
|
cp ${rfkillHook} "$out/bin/rfkill-hook.sh"
|
|
'';
|
|
|
|
meta = with lib; {
|
|
homepage = "http://wireless.kernel.org/en/users/Documentation/rfkill";
|
|
description = "Rules+hook for udev to catch rfkill state changes";
|
|
mainProgram = "rfkill-hook.sh";
|
|
platforms = platforms.linux;
|
|
license = licenses.mit;
|
|
};
|
|
}
|