{ pkgs ? import { } , address , privateKey , dns ? "8.8.8.8" , serverPublicKey , serverEndpoint }: let toINI = pkgs.lib.generators.toINI { }; configs = toINI { Interface = { # "10.10.10.10/32" Address = address; # See /notes/vpn.md to generate private key and public key PrivateKey = privateKey; DNS = dns; }; Peer = { # See /notes/vpn.md to generate private key and public key PublicKey = serverPublicKey; AllowedIPs = "0.0.0.0/0"; # : Endpoint = serverEndpoint; PersistentKeepalive = 25; }; }; configFile = pkgs.writeText "wg-client.conf" configs; showQrcode = pkgs.writeScript "qrcode" '' ${pkgs.qrencode}/bin/qrencode -t ansiutf8 < ${configFile} ''; in pkgs.runCommand "wg-client" { } '' mkdir $out; cp ${configFile} $out/wg-client.conf; cp ${showQrcode} $out/qrcode; ''