Create wrapper script
This commit is contained in:
13
flake.nix
13
flake.nix
@@ -16,10 +16,11 @@
|
|||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
];
|
];
|
||||||
in {
|
in {
|
||||||
packages = eachSystem (system: rec {
|
packages = eachSystem (system: let
|
||||||
hcpy = default;
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
default = dream2nix.lib.evalModules {
|
in rec {
|
||||||
packageSets.nixpkgs = nixpkgs.legacyPackages.${system};
|
hcpy-raw = dream2nix.lib.evalModules {
|
||||||
|
packageSets.nixpkgs = pkgs;
|
||||||
modules = [
|
modules = [
|
||||||
./package.nix
|
./package.nix
|
||||||
{
|
{
|
||||||
@@ -29,6 +30,10 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hcpy = pkgs.callPackage ./wrapper.nix {inherit hcpy-raw;};
|
||||||
|
|
||||||
|
default = hcpy;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
67
wrapper.nix
Normal file
67
wrapper.nix
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
hcpy-raw,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
pkgs.writeShellApplication rec {
|
||||||
|
name = "hcpy";
|
||||||
|
runtimeInputs = with pkgs; [gnugrep coreutils-full];
|
||||||
|
text = ''
|
||||||
|
#/ Usage: ${name} <ACTION> [ARGUMENTS] [OPTIONS]
|
||||||
|
#/
|
||||||
|
#/ This is a very, very beta interface for Bosch-Siemens Home Connect
|
||||||
|
#/ devices through their local network connection. Unlike most
|
||||||
|
#/ IoT devices that have a reputation for very bad security, BSG seem to have
|
||||||
|
#/ done a decent job of designing their system, especially since
|
||||||
|
#/ they allow a no-cloud local control configuration. The protocols
|
||||||
|
#/ seem sound, use well tested cryptographic libraries (TLS PSK with
|
||||||
|
#/ modern ciphres) or well understood primitives (AES-CBC with HMAC),
|
||||||
|
#/ and should prevent most any random attacker on your network from being able to
|
||||||
|
#/ [take over your appliances to mine cryptocurrency](http://www.antipope.org/charlie/blog-static/2013/12/trust-me.html).
|
||||||
|
#/
|
||||||
|
#/ Actions:
|
||||||
|
#/ - login <USERNAME> <PASSWORD> <OUTPUT-FILE> - initializes the JSON <OUTPUT-FILE> which contains a list of devices assigned to specified account.
|
||||||
|
#/ - run - starts the bridge connection between appliances and MQTT broker
|
||||||
|
#/
|
||||||
|
#/ Options for 'run' action:
|
||||||
|
#/ -d, --devices_file - file generated by "login" action, default="config/devices.json"
|
||||||
|
#/ -h, --mqtt_host - MQTT broker host, default="localhost"
|
||||||
|
#/ -p, --mqtt_prefix - MQTT broker prefix, default="homeconnect/"
|
||||||
|
#/ --mqtt_port - MQTT broker port, default=1883
|
||||||
|
#/ --mqtt_username - MQTT client username
|
||||||
|
#/ --mqtt_password - MQTT client password
|
||||||
|
#/ --mqtt_ssl - use SSL connection to MQTT broker
|
||||||
|
#/ --mqtt_cafile - CA certifications file for SSL connection
|
||||||
|
#/ --mqtt_certfile - certification file for SSL connection
|
||||||
|
#/ --mqtt_keyfile - certification key file for SSL connection
|
||||||
|
#/ --mqtt_clientname" - name of MQTT broker client, default="hcpy1"
|
||||||
|
#/ --domain_suffix - the suffix of the domain, default=""
|
||||||
|
#/ --debug/--no-debug - enable debug mode
|
||||||
|
#/ --ha-discovery - enable HomeAssistant discovery
|
||||||
|
|
||||||
|
usage() { grep '^#/' "''${BASH_SOURCE[0]}" | cut -c4- ; exit 0 ; }
|
||||||
|
expr "$*" : ".*--help" > /dev/null && usage
|
||||||
|
|
||||||
|
if [ "$#" -eq 0 ]; then
|
||||||
|
echo "Expected action: login or run." >&2;
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
action="$1";
|
||||||
|
shift;
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
login)
|
||||||
|
exec ${hcpy-raw}/bin/hc-login "$@";
|
||||||
|
;;
|
||||||
|
|
||||||
|
run)
|
||||||
|
exec ${hcpy-raw}/bin/hc2mqtt "$@";
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Expected action: login or run." >&2;
|
||||||
|
usage
|
||||||
|
esac
|
||||||
|
'';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user