From 5443654eead1743b8b116f8d65b7137c462cf37e Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Tue, 31 Mar 2026 21:10:12 +0800 Subject: [PATCH] rosenthal: Add mirror-substitutes. * modules/rosenthal/packages/package-management.scm (mirror-substitutes): New variable. --- .../rosenthal/packages/package-management.scm | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/modules/rosenthal/packages/package-management.scm b/modules/rosenthal/packages/package-management.scm index 6beeb15..8371196 100644 --- a/modules/rosenthal/packages/package-management.scm +++ b/modules/rosenthal/packages/package-management.scm @@ -8,7 +8,14 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (rosenthal utils packages) + ;; Guix origin methods + #:use-module (guix git-download) + ;; Guix build systems + #:use-module (guix build-system guile) ;; Guix packages + #:use-module (gnu packages base) + #:use-module (gnu packages bash) + #:use-module (gnu packages guile) #:use-module (gnu packages package-management)) (define-public guix/dolly @@ -23,3 +30,64 @@ (substitute-keyword-arguments arguments ((#:parallel-build? _ #f) #t))) (properties '((disable-updater? . #t))))) + +(define-public mirror-substitutes + (let ((commit "e4001938bdec86e16da3b9c455f8d6fb40c1ab06") + (revision "0")) + (package + (name "mirror-substitutes") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://codeberg.org/hako/mirror-substitutes.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1xbz63akkxz3b0bpqfz2q7sz90raf6nn65cmwa9mzz3alm9avzfj")))) + (build-system guile-build-system) + (arguments + (list + #:source-directory "modules" + #:phases + #~(modify-phases %standard-phases + (add-after 'build 'install + (lambda* (#:key inputs #:allow-other-keys) + (define-values (module-dir object-dir) + (target-guile-scm+go #$output)) + (define bindir + (in-vicinity #$output "bin")) + (with-directory-excursion "scripts" + (for-each + (lambda (script) + (substitute* script + (("/usr/(bin/env) -S guix" _ env) + (format #f "~a -S ~a" + (search-input-file inputs env) + (if (string-suffix? "query-substitutes" script) + "guix" + (search-input-file inputs "bin/guix"))))) + (install-file script bindir) + (with-directory-excursion bindir + (wrap-program script + `("GUILE_LOAD_PATH" prefix + (,module-dir)) + `("GUILE_LOAD_COMPILED_PATH" prefix + (,object-dir))))) + (find-files ".")))))))) + (native-inputs + (list bash-minimal + guile-3.0-latest + guix)) + (inputs + (list bash-minimal + coreutils-minimal + guix)) + (home-page "https://codeberg.org/hako/mirror-substitutes") + (synopsis + "Mirror Guix substitutes without relying on remote server implementation") + (description + "This package provides commands to mirror substitutes for Guix and Nix +without relying on the implementation of remote server.") + (license license:gpl3+))))