nixpkgs/pkgs/os-specific/linux/fanctl/default.nix

47 lines
1.6 KiB
Nix

{ stdenv, lib, fetchurl, gnugrep, glibc, gawk, coreutils, bridge-utils, iproute
, dnsmasq, iptables, kmod, utillinux, gnused }:
stdenv.mkDerivation rec {
name = "fanctl-${version}";
version = "0.9.0";
src = fetchurl {
url = "https://launchpad.net/ubuntu/+archive/primary/+files/ubuntu-fan_${version}.tar.xz";
sha256 = "03dv5zzb8fkl9kkbhznxm48d6j3fjms74fn0s1zip2gz53l1s14n";
};
# The Ubuntu package creates a number of state/config directories upon
# installation, and so the fanctl script expects those directories to exist
# before being used. Instead, we patch the fanctl script to gracefully handle
# the fact that the directories might not exist yet.
# Also, when dnsmasq is given --conf-file="", it will still attempt to read
# /etc/dnsmasq.conf; if that file does not exist, dnsmasq subsequently fails,
# so we'll use /dev/null, which actually works as intended.
patches = [ ./robustness.patch ];
postPatch = ''
substituteInPlace fanctl \
--replace '@PATH@' \
'${lib.makeBinPath [
gnugrep gawk coreutils bridge-utils iproute dnsmasq
iptables kmod utillinux gnused
glibc # needed for getent
]}'
'';
installPhase = ''
mkdir -p $out/bin $out/man/man8
cp fanctl.8 $out/man/man8
cp fanctl $out/bin
'';
meta = with lib; {
description = "Ubuntu FAN network support enablement";
homepage = "https://launchpad.net/ubuntu/+source/ubuntu-fan";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = with maintainers; [ cstrahan ];
};
}