nixpkgs/pkgs/applications/video/epgstation/update.nix
Jan Tojnar 777edf6a60 epgstation.updateScript: Fix eval and clean up
- `gnused` was not passed, use `callPackage` to prevent such issues in the future.
- Do not pass redundant attributes like `pname` or `version` to the script,
  `update.nix` already passes them as environment variables.
- Do not combine the scripts manually, we have combinators for that.
- Pass the path to update as an argument so that `update.nix`
  can ensure it is a writeable path instead a one in the Nix store.
2022-10-05 23:21:15 +02:00

63 lines
1.9 KiB
Nix

{ gitUpdater
, writers
, jq
, yq
, gnused
, _experimental-update-script-combinators
}:
let
updateSource = gitUpdater {
rev-prefix = "v";
};
updateLocks = writers.writeBash "update-epgstation" ''
set -euxo pipefail
cd "$1"
# Get the path to the latest source. Note that we can't just pass the value
# of epgstation.src directly because it'd be evaluated before we can run
# updateScript.
SRC="$(nix-build ../../../.. --no-out-link -A epgstation.src)"
if [[ "$UPDATE_NIX_OLD_VERSION" == "$(${jq}/bin/jq -r .version "$SRC/package.json")" ]]; then
echo "[INFO] Already using the latest version of $UPDATE_NIX_PNAME" >&2
exit
fi
# Regenerate package.json from the latest source.
${jq}/bin/jq '. + {
dependencies: (.dependencies + .devDependencies),
} | del(.devDependencies, .main, .scripts)' \
"$SRC/package.json" \
> package.json
${jq}/bin/jq '. + {
dependencies: (.dependencies + .devDependencies),
} | del(.devDependencies, .main, .scripts)' \
"$SRC/client/package.json" \
> client/package.json
# Fix issue with old sqlite3 version pinned that depends on very old node-gyp 3.x
${gnused}/bin/sed -i -e 's/"sqlite3":\s*"5.0.[0-9]\+"/"sqlite3": "5.0.11"/' package.json
# Regenerate node packages to update the pre-overriden epgstation derivation.
# This must come *after* package.json has been regenerated.
pushd ../../../development/node-packages
./generate.sh
popd
# Generate default streaming settings for the nixos module.
pushd ../../../../nixos/modules/services/video/epgstation
${yq}/bin/yq -j '{ urlscheme , stream }' \
"$SRC/config/config.yml.template" \
> streaming.json
# Fix generated output for EditorConfig compliance
printf '\n' >> streaming.json # rule: insert_final_newline
popd
'';
in
_experimental-update-script-combinators.sequence [
updateSource
[updateLocks ./.]
]