mirror of
https://gitlab.com/nonguix/nonguix.git
synced 2026-01-25 03:54:58 -06:00
69 lines
2.6 KiB
Scheme
69 lines
2.6 KiB
Scheme
;;; SPDX-License-Identifier: GPL-3.0-or-later
|
|
;;; Copyright © 2026 Anderson Torres <anderson.torres.8519@gmail.com>
|
|
|
|
;;; This file is not part of GNU Guix but requires this naming scheme
|
|
;;; so that the %chrome-updater is properly read when using
|
|
;;; `guix refresh -L$(pwd) google-chrome-canary' in nonguix root.
|
|
|
|
(define-module (guix import google-chrome)
|
|
#:use-module (guix import json)
|
|
#:use-module (guix memoization)
|
|
#:use-module (guix packages)
|
|
#:use-module (guix upstream)
|
|
#:export (%google-chrome-updater))
|
|
|
|
(define (extract-google-chrome-version channel)
|
|
"Extract the most recent Google Chrome version from CHANNEL.
|
|
|
|
CHANNEL can be stable, beta, canary and dev; dev corresponds to unstable."
|
|
(let* ((json-data-url
|
|
(string-append "https://versionhistory.googleapis.com/v1/"
|
|
"chrome/platforms/linux/channels/"
|
|
channel
|
|
"/versions/all/releases?"
|
|
"filter=endtime=none,fraction%3E=0.5&order_by=version%20desc"))
|
|
(json-data (json-fetch json-data-url))
|
|
(release-data (assoc-ref json-data "releases"))
|
|
(release (vector-ref release-data 0))
|
|
(version (assoc-ref release "version")))
|
|
version))
|
|
|
|
(define (google-chrome-versions)
|
|
"Returns an alist of all Google Chrome versions."
|
|
(memoize
|
|
(lambda _
|
|
(list
|
|
(cons "google-chrome-stable" (extract-google-chrome-version "stable"))
|
|
(cons "google-chrome-beta" (extract-google-chrome-version "beta"))
|
|
(cons "google-chrome-canary" (extract-google-chrome-version "canary"))
|
|
(cons "google-chrome-unstable" (extract-google-chrome-version "dev"))))))
|
|
|
|
(define* (latest-release package #:key (version #f) partial-version?)
|
|
"Return an <upstream-source> for the latest release of PACKAGE."
|
|
(let* ((name (package-name package))
|
|
(version (or version
|
|
(assoc-ref ((google-chrome-versions)) name))))
|
|
(upstream-source
|
|
(package name)
|
|
(version version)
|
|
(urls
|
|
(list (string-append
|
|
"https://dl.google.com/linux/chrome/deb/pool/main/g/"
|
|
name "/" name "_" version "-1_amd64.deb"))))))
|
|
|
|
(define (google-chrome-package? package)
|
|
"Return true if PACKAGE is Google Chrome."
|
|
(member (package-name package)
|
|
(list "google-chrome-stable"
|
|
"google-chrome-beta"
|
|
"google-chrome-canary"
|
|
"google-chrome-unstable")))
|
|
|
|
(define %google-chrome-updater
|
|
(upstream-updater
|
|
(name 'google-chrome)
|
|
(description "Updater for Google Chrome packages")
|
|
(pred google-chrome-package?)
|
|
(import latest-release)))
|
|
|
|
;;; google-chrome.scm ends here.
|