diff options
Diffstat (limited to 'modules/build/firmware.nix')
| -rw-r--r-- | modules/build/firmware.nix | 70 |
1 files changed, 32 insertions, 38 deletions
diff --git a/modules/build/firmware.nix b/modules/build/firmware.nix index 673c379..3a1039b 100644 --- a/modules/build/firmware.nix +++ b/modules/build/firmware.nix @@ -1,60 +1,54 @@ { config, pkgs, lib, ... }: with builtins // lib; let - cfg = config.build; + cfg = config.build.firmware; in { options.build = { firmware = { - checkDevice = mkOption { + updateCheck = mkOption { internal = true; readOnly = true; type = types.package; default = pkgs.writeShellApplication { - name = "check-firmware"; + name = "update-check"; runtimeInputs = with pkgs; [ - kobo-utils + curl + jq ]; - text = '' - echo "hi" + text = with config.device; '' + curl --silent "https://api.kobobooks.com/1.0/UpgradeCheck/Device/${deviceID}/${affiliate}/${config.firmware.version}/${serialNumber}" | jq . ''; }; }; - - bundle = - let - b = pkgs.runCommandLocal "package-firmware" {} '' - cp -r "${config.firmware.package.out}" $out - tar czvf $out/KoboRoot.tgz --directory="${config.firmware.package.KoboRoot}" - ''; - in pkgs.runCommandLocal "bundle-firmware" {} '' - tar czvf $out --directory "${b}" - ''; - - - deploy = pkgs.writeShellApplication { - name = "deploy-firmware"; - runtimeInputs = with pkgs; [ - gnutar - kobo-utils - ]; - text = '' - echo "Looking for kobo" - KOBOPATH="$(kobo-find -f -w)" - - if [ -z "$KOBOPATH" ]; then - >&2 echo "Cannot locate kobo device" + payload = mkOption { + internal = true; + readOnly = true; + type = types.path; + default = pkgs.runCommandLocal "firmware-payload" { + nativeBuildInputs = with pkgs; [ + kobo-utils + gawk + rsync + ]; + } '' + mkdir $out + tar czvf $out/KoboRoot.tgz --directory="${config.firmware.package.KoboRoot}" . --mode=u+w + rsync -rv --links --executability --chmod=u+w "${config.firmware.package.out}/" $out + + # Check that we haven't fucked up! + KOBOVERSION="$(kobo-versionextract "$out/KoboRoot.tgz" | awk '{if ($1 == "Version:") print $2}')" + if [[ ! "$KOBOVERSION" == "${config.firmware.version}" ]]; then + >&2 echo "Expected version ${config.firmware.version}, but actual firmware is version $KOBOVERSION" exit 1 fi - - echo "Found kobo device at $KOBOPATH" - - echo "Placing firmware on device" - - tar xzvf "${cfg.fimware.bundle}" --directory="$KOBOPATH/.kobo/" - - echo "Successfully installed kobo firmware. Please eject your device so it can install." ''; }; + deploy = mkOption { + internal = true; + readOnly = true; + type = types.package; + default = pkgs.kobo-deploy cfg.payload; + }; }; }; } |
