{
  stdenv,
  buildPackages,
  libnl,
  ...
}:
let
  switchDotH = buildPackages.fetchurl {
    url = "https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=target/linux/generic/files/include/uapi/linux/switch.h;hb=99a188828713d6ff9c541590b08d4e63ef52f6d7";
    sha256 = "15kmhhcpd84y4f45rf8zai98c61jyvkc37p90pcxirna01x33wi8";
    name = "switch.h";
  };
in
stdenv.mkDerivation {
  src = buildPackages.fetchFromGitHub {
    owner = "jekader";
    repo = "swconfig";
    rev = "66c760893ecdd1d603a7231fea9209daac57b610";
    sha256 = "0hi2rj1a1fbvr5n1090q1zzigjyxmn643jzrwngw4ij0g82za3al";
  };
  name = "swconfig";
  buildInputs = [ buildPackages.pkg-config ];
  nativeBuildInputs = [ libnl ];
  CFLAGS = "-O2 -Ifrom_kernel -I${libnl.dev}/include/libnl3";
  LDFLAGS = "-L${libnl.out}/lib";

  patchPhase = ''
    mkdir -p from_kernel/linux
    cp ${switchDotH} from_kernel/linux/switch.h
  '';

  buildPhase = ''
    make swconfig
    $STRIP swconfig
  '';
  installPhase = ''
    mkdir -p $out/bin
    cp swconfig $out/bin
  '';
}