From 151fd8a64cf66473b0007f204d7a2fc4a9e804a2 Mon Sep 17 00:00:00 2001 From: ^x3ro Date: Wed, 8 Sep 2021 21:29:05 +0200 Subject: [PATCH 1/2] maintainers: add x3ro --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index c2ff4cec169f..628a42ce1f00 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -11838,6 +11838,12 @@ githubId = 3992240; name = "Elijah Rum"; }; + x3ro = { + name = "^x3ro"; + email = "nix@x3ro.dev"; + github = "x3rAx"; + githubId = 2268851; + }; xaverdh = { email = "hoe.dom@gmx.de"; github = "xaverdh"; From f6211582a16c535700178921200247bc59b4e81e Mon Sep 17 00:00:00 2001 From: ^x3ro Date: Wed, 8 Sep 2021 21:29:52 +0200 Subject: [PATCH 2/2] 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 --- .../tools/networking/linux-router/default.nix | 81 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 + 2 files changed, 85 insertions(+) create mode 100644 pkgs/tools/networking/linux-router/default.nix diff --git a/pkgs/tools/networking/linux-router/default.nix b/pkgs/tools/networking/linux-router/default.nix new file mode 100644 index 000000000000..a378a729c7b5 --- /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; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 08bd1f838c0e..e1fc40f5b8a9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -899,6 +899,10 @@ with pkgs; gofu = callPackage ../applications/misc/gofu { }; + linux-router = callPackage ../tools/networking/linux-router { }; + + linux-router-without-wifi = linux-router.override { useWifiDependencies = false; }; + metapixel = callPackage ../tools/graphics/metapixel { }; pferd = callPackage ../tools/misc/pferd {};