aboutsummaryrefslogtreecommitdiffstats
path: root/updates/web/chromium/extensions.nix
diff options
context:
space:
mode:
Diffstat (limited to 'updates/web/chromium/extensions.nix')
-rw-r--r--updates/web/chromium/extensions.nix81
1 files changed, 36 insertions, 45 deletions
diff --git a/updates/web/chromium/extensions.nix b/updates/web/chromium/extensions.nix
index d9de16d..ab6e818 100644
--- a/updates/web/chromium/extensions.nix
+++ b/updates/web/chromium/extensions.nix
@@ -1,54 +1,45 @@
-{ pkgs, lib, ... }:
+{
+ pkgs,
+ lib,
+ ...
+}:
let
extensions = import ../../../modules/web/chromium/extensions/metadata.nix;
+
+ luaExtensionList = lib.concatMapStringsSep "\n" (ext: ''
+ { pname = "${ext.pname}", owner = "${ext.owner}", repo = "${ext.repo}", version = "${ext.version}", updateType = "${ext.updateType or "release"}", tagPrefix = "${ext.tagPrefix}" },
+ '') extensions;
+
+ luaScript = pkgs.writeText "check-chromium-extension-updates.lua" (
+ builtins.replaceStrings [ "--@@EXTENSIONS@@--" ] [ luaExtensionList ] (
+ builtins.readFile ./check-chromium-extension-updates.lua
+ )
+ );
in
{
- mkUpdateScript = pkgs.writeShellApplication {
- name = "check-chromium-extension-updates";
- runtimeInputs = [
- pkgs.curl
- pkgs.jq
+ mkUpdateScript = pkgs.stdenv.mkDerivation {
+ pname = "check-chromium-extension-updates";
+ version = "0.1.0";
+ dontUnpack = true;
+ nativeBuildInputs = [
+ pkgs.luajit
+ pkgs.makeWrapper
];
- text = ''
- echo "Checking for Chromium extension updates..."
- echo "----------------------------------------------"
- echo ""
-
- ${lib.concatMapStringsSep "\n" (
- ext:
- let
- isTag = (ext.updateType or "release") == "tag";
- apiEndpoint =
- if isTag then
- "https://api.github.com/repos/${ext.owner}/${ext.repo}/tags"
- else
- "https://api.github.com/repos/${ext.owner}/${ext.repo}/releases/latest";
- jqFilter = if isTag then ".[0].name" else ".tag_name";
- in
- ''
- # Check ${ext.pname}
- LATEST_RAW=$(curl -sL --fail "${apiEndpoint}" | jq -r '${jqFilter}')
-
- if [ -z "$LATEST_RAW" ] || [ "$LATEST_RAW" == "null" ]; then
- echo "FAIL [${ext.pname}] Failed to fetch data from GitHub API."
- else
- PREFIX="${ext.tagPrefix}"
- LATEST_STRIPPED="''${LATEST_RAW#"$PREFIX"}"
-
- if [ "$LATEST_STRIPPED" != "${ext.version}" ]; then
- echo "UPDATE [${ext.pname}] ${ext.version} -> $LATEST_STRIPPED"
- echo " Repo: https://github.com/${ext.owner}/${ext.repo}"
- echo ""
- else
- echo "OK [${ext.pname}] ${ext.version}"
- fi
- fi
- ''
- ) extensions}
-
- echo "----------------------------------------------"
- echo "Done!"
+ installPhase = ''
+ mkdir -p $out/bin
+ install -m755 ${luaScript} $out/bin/check-chromium-extension-updates
+ patchShebangs $out/bin/check-chromium-extension-updates
+ wrapProgram $out/bin/check-chromium-extension-updates \
+ --prefix PATH : "${
+ lib.makeBinPath [
+ pkgs.curl
+ pkgs.jq
+ ]
+ }"
'';
+ meta = {
+ mainProgram = "check-chromium-extension-updates";
+ };
};
}