On Fri, Jan 15, 2021 at 09:19:01PM +0100, Wiktor Żelazny wrote: > A new idea: I just checked “CRAN Time Machine” at MRAN. The tarball > with the 0g4mi101srjbl17ydb2hl3854m3xj0llj6861lfr30sp08nkqavl hash is > there. A solution with an inferior: in guix-packages.git/local/cran.scm (guix-packages.git is a local git repo): (define-public r-foreign-fixed (package (inherit r-foreign) (version "0.8-75-fixed") (source (origin (method url-fetch) (uri "https://cran.microsoft.com/snapshot/2020-01-27/src/contrib/foreign_0.8-75.tar.gz") (sha256 (base32 "0g4mi101srjbl17ydb2hl3854m3xj0llj6861lfr30sp08nkqavl")))))) $ cat manifest.scm (use-modules (guix inferior) (guix channels) (srfi srfi-1)) ;for 'first' (define channels ;; This is the revision from which we want to ;; extract r-foreign. (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "d81fb2ae9443994ae5dd1cb5837276fad63f842c")) (channel (name 'local) (url "./guix-packages.git")))) (define inferior ;; An inferior representing the above revision (inferior-for-channels channels)) ;; Now create a manifest with the current "r" package ;; and the substituted "r-foreign" package. (packages->manifest (list (first (lookup-inferior-packages inferior "r-foreign" "0.8-75-fixed")) (specification->package "r"))) More stuff can be added to the manifest by appending other `(specification->package "")` elements to the list. $ cat channel-specs.scm (list (channel (name 'local) (url "./guix-packages.git")) (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "d81fb2ae9443994ae5dd1cb5837276fad63f842c"))) $ guix time-machine --commit=d81fb2ae9443994ae5dd1cb5837276fad63f842c --channels=channel-specs.scm -- \ environment -C --pure --manifest=manifest.scm I extracted and adapted this from my larger package definition repository and manifest, and did not test the resulting minimum version, but you get the idea. Perhaps, this should go to the manual. WŻ