diff --git a/configs/packages/default.nix b/configs/packages/default.nix index d733373..4960aff 100644 --- a/configs/packages/default.nix +++ b/configs/packages/default.nix @@ -123,6 +123,7 @@ in { bc # calculator pari # gp -- better calculator scripts.infschmv + scripts.new-mac # get a new mac address scripts.scanned scripts.default-gateway scripts.showkeys-toggle diff --git a/packages/scripts/default.nix b/packages/scripts/default.nix index b078d53..003e8f0 100644 --- a/packages/scripts/default.nix +++ b/packages/scripts/default.nix @@ -309,6 +309,12 @@ in rec { packages = [ pkgs.curl pkgs.pup pkgs.gnused pkgs.gawk pkgs.gnugrep pkgs.fzf ]; }; + new-mac = wrapScript { + script = ./new-mac.sh; + name = "new-mac"; + packages = [ pkgs.gnused pkgs.openssl pkgs.jq pkgs.iproute2 ]; + }; + bvg = pkgs.callPackage ./bvg.nix { }; nav = pkgs.callPackage ./nav.nix { }; k-lock = pkgs.callPackage ./k-lock.nix { }; diff --git a/packages/scripts/new-mac.sh b/packages/scripts/new-mac.sh new file mode 100755 index 0000000..af2471f --- /dev/null +++ b/packages/scripts/new-mac.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +random_mac() { + openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//' +} + +change_mac() { + old_mac="$(ip -j link show "$interface" | jq -r '.[].address')" + new_mac="$(random_mac)" + ip link set "$interface" address "$new_mac" 2>/dev/null && echo "$old_mac -> $new_mac" +} + +interface="${1:-wlp3s0}" +ip link set "$interface" down +until change_mac; do :; done +ip link set "$interface" up