From f6211582a16c535700178921200247bc59b4e81e Mon Sep 17 00:00:00 2001 From: ^x3ro Date: Wed, 8 Sep 2021 21:29:52 +0200 Subject: linux-router: init at 0.6.2 Squashed commits: - Give wrapped executable a nicer name The filename of the wrapped binary is used to generate usage examples in `--help`. The `wrapProgram` command renames the executable to a hidden file and appends `-wrapped` this is then shown in the usage example: ``` Usage: .lnxrouter-wrapped ``` - Using `makeWrapper` the executable can be moved to another directory but can keep it's oroginal name. - Replace alias with real package name - Fix variable name - Import `makeWrapper` directly instead of importing `pkgs` Co-authored-by: markuskowa - Move `let` to where it is actually used - Do not set optional packages `null` - Remove `name` property Co-authored-by: markuskowa - Quote url Co-authored-by: markuskowa - Remove additional link in long description - Remove unnecessary comment Co-authored-by: markuskowa - Place optional packages below their respective `use*` - Shorten description See discussion: https://github.com/NixOS/nixpkgs/pull/137133#discussion_r705230260 - FIX: Remove duplicate description - Remove empty line Co-authored-by: markuskowa - Make packages section more compact - Make wifi dependencies optional - Add package without wifi dependencies - Fix indentation Co-authored-by: Sandro - Use `with lib` only where it is needed Co-authored-by: Sandro --- pkgs/tools/networking/linux-router/default.nix | 81 ++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 pkgs/tools/networking/linux-router/default.nix (limited to 'pkgs/tools/networking/linux-router') diff --git a/pkgs/tools/networking/linux-router/default.nix b/pkgs/tools/networking/linux-router/default.nix new file mode 100644 index 00000000000..a378a729c7b --- /dev/null +++ b/pkgs/tools/networking/linux-router/default.nix @@ -0,0 +1,81 @@ +{ stdenv, lib, fetchFromGitHub, makeWrapper + +# --- Runtime Dependencies --- +, bash, procps, iproute2, dnsmasq, iptables +, coreutils, flock, gawk, getopt, gnugrep, gnused, which +# `nmcli` is not required for create_ap. +# Use NetworkManager by default because it is very likely already present +, useNetworkManager ? true +, networkmanager + +# --- WiFi Hotspot Dependencies --- +, useWifiDependencies ? true +, hostapd, iw +# You only need this if 'iw' can not recognize your adapter. +, useWirelessTools ? true +, wirelesstools # for iwconfig +# To fall back to haveged if entropy is low. +# Defaulting to false because not having it does not break things. +# If it is really needed, warnings will be logged to journal. +, useHaveged ? false +, haveged +# You only need this if you wish to show WiFi QR codes in terminal +, useQrencode ? true +, qrencode +}: + +stdenv.mkDerivation rec { + pname = "linux-router"; + version = "0.6.2"; + + src = fetchFromGitHub { + owner = "garywill"; + repo = "linux-router"; + rev = "${version}"; + sha256 = "193bnlwmjxsk0cri6xdylf218qayldn02pdnppvbd39ls361776z"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + dontBuild = true; + + installPhase = with lib; let + binPath = makeBinPath ([ procps iproute2 getopt bash dnsmasq + iptables coreutils which flock gnugrep gnused gawk ] + ++ optional useNetworkManager networkmanager + ++ optional useWifiDependencies hostapd + ++ optional useWifiDependencies iw + ++ optional (useWifiDependencies && useWirelessTools) wirelesstools + ++ optional (useWifiDependencies && useHaveged) haveged + ++ optional (useWifiDependencies && useQrencode) qrencode); + in + '' + mkdir -p $out/bin/ $out/.bin-wrapped + mv lnxrouter $out/.bin-wrapped/lnxrouter + makeWrapper $out/.bin-wrapped/lnxrouter $out/bin/lnxrouter --prefix PATH : ${binPath} + ''; + + meta = with lib; { + homepage = "https://github.com/garywill/linux-router"; + description = "Set Linux as router / Wifi hotspot / proxy in one command"; + longDescription = '' + Features: + + - Create a NATed sub-network + - Provide Internet + - DHCP server and RA + - DNS server + - IPv6 (behind NATed LAN, like IPv4) + - Creating Wifi hotspot: + - Channel selecting + - Choose encryptions: WPA2/WPA, WPA2, WPA, No encryption + - Create AP on the same interface you are getting Internet (require same channel) + - Transparent proxy (redsocks) + - DNS proxy + - Compatible with NetworkManager (automatically set interface as unmanaged) + ''; + license = licenses.lgpl21; + maintainers = with maintainers; [ x3ro ]; + platforms = platforms.linux; + }; +} -- cgit 1.4.1