aboutsummaryrefslogtreecommitdiff
path: root/pkgs/bindtointerface.nix
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-09-16 19:00:22 -0700
committerFuwn <[email protected]>2024-09-16 19:01:18 -0700
commitd1525c29af2f0c58fd4970fc33cc641cb460bbef (patch)
tree8e930859a82585e1b29a5ab595197dbd14d7c537 /pkgs/bindtointerface.nix
downloadtsutsumi-d1525c29af2f0c58fd4970fc33cc641cb460bbef.tar.xz
tsutsumi-d1525c29af2f0c58fd4970fc33cc641cb460bbef.zip
feat: initial release
Diffstat (limited to 'pkgs/bindtointerface.nix')
-rw-r--r--pkgs/bindtointerface.nix48
1 files changed, 48 insertions, 0 deletions
diff --git a/pkgs/bindtointerface.nix b/pkgs/bindtointerface.nix
new file mode 100644
index 0000000..6b26825
--- /dev/null
+++ b/pkgs/bindtointerface.nix
@@ -0,0 +1,48 @@
+{
+ pkgs,
+ lib,
+ stdenv,
+ gcc,
+}:
+stdenv.mkDerivation {
+ pname = "bindtointerface";
+ version = "1.0";
+ nativeBuildInputs = [ gcc ];
+
+ src = pkgs.fetchFromGitHub {
+ owner = "JsBergbau";
+ repo = "BindToInterface";
+ rev = "d477326d85f64fdd1dc46382fe698e46f4843100";
+ hash = "sha256-B29nXjy8RyFEOsYtko8l9i38sDauX2eW+pLsQssNTmQ=";
+ };
+
+ buildPhase = ''
+ gcc \
+ -nostartfiles \
+ -fpic \
+ -shared $src/bindToInterface.c \
+ -o bindToInterface.so \
+ -ldl \
+ -D_GNU_SOURCE
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin $out/lib
+ cp bindToInterface.so $out/lib
+
+ cat <<EOF > $out/bin/vpn
+ #!/usr/bin/env bash
+
+ env LD_PRELOAD=$out/lib/bindToInterface.so "\$@"
+ EOF
+ chmod +x $out/bin/vpn
+ '';
+
+ meta = with lib; {
+ description = "With this program you can bind applications to a specific network interface / network adapter.";
+ homepage = "https://github.com/JsBergbau/BindToInterface";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.Fuwn ];
+ platforms = platforms.linux;
+ };
+}