rix()
: packages hosted on GitHub which have dependencies also hosted on GitHub
are correctly handled.rix()
: it is now possible to generate expressions pointing to the development
version of R and Bioconductor by using rix(r_ver = "r-devel")
and rix(r_ver = "r-devel-bioc-devel)
.rix()
: it is now possible to generate expressions pointing to the development
version of Bioconductor by using rix(r_ver = "bioc-devel")
.This is a major release of {rix}
:
rstats-on-nix
cache. This greatly decreases build
times.rix()
now includes a date
argument, allowing users to build environments
as of a date. Around 4 to 6 dates for each year that is supported are
provided, starting from 2019. Check out available dates using the
available_dates()
function. Read the c - Using rix to build project
specific environments vignette for more details. Should you want a specific
date that is not available, feel free to open an issue requesting it.rix()
now only includes R versions 3.5.3 (released on March 2019) and up.
Earlier versions were complicated to get working on macOS and we assume it is
unlikely that many people would need earlier versions. Should that be the case
however, feel free to open an issue requesting it.Many thanks to mihem for helping with testing this
major release of {rix}
!
rix()
: now correctly handles packages with several DESCRIPTION files, such as
{basilisk}
, thanks to mihemrix()
: now correctly handles packages with no dependencies, thanks to
jrosellrix()
: Clearer error message when providing an R version that is too recentrenv2nix()
: switch from RemoteType to RemoteHost in renv.lock
files to
detect packages to be added from GitHub or Gitlabrenv2nix()
: added new argument, override_r_ver
, to manually set R version
in generated Nix expression. This deals with situations where an renv.lock
lists a version of R that is not (yet) included in nixpkgs.renv2nix()
: converts renv.lock
file into a default.nix
expression. For
now, only the R version is matched, not package versions.
Thanks to RichardJActon for implementing.rix_init()
, rix()
: previous attempt at fixing bug was only partially
correct, it is now fixed. Several more tests were added to avoid this in the
future.rix_init()
, rix()
: fix bug in rix_init()
, that led to empty .Rprofile
files.inst/extdata/default.nix
inst/extdata/default.nix
with this patch release of {rix}NEWS
entries in 0.12.1 released previously, which is the
first CRAN release version.DESCRIPTION
(forgotten in
first CRAN release 0.12.1)rix()
: The is no default argument in project_path
anymore. Before, it
defaulted to the current directory, which violated CRAN policy to have any
default path in writing functions.DESCRIPTION
:
tempdir()
instead of the user
directoryR CMD check
and R CMD build
when running them in a nix-shell --pure
development environment based on the default.nix
of {rix} package root.
Use manually controlled Nix expression from r_ver = "latest"
pinned source.rix::rix()
: Clean detrius files/folders in temporary folders that are not
needed. Also fixes failing vignette builds in R CMD build
(including helpers
rix::rix_init()
, rix:::hash_url()
) by properly handling file connections,
closing them on exit, and unlink temporary file folders. (#308)nix_build()
: Fix SIGINT termination (ctrl+c) for linux, so that all the
nix-build
background processes are properly stopped when the user interupts
the build process.rix::rix()
: when hashing Git provider packages (e.g., GitHub) remotely via
the https://git2nixsha.dev API, https protocol is now used (previously http).
Hashing via this service is done when Nix is not installed or when requested
via option.default.nix
for {rix} development environment.pre-commit
config because it does not play well with Nix
(R-tooling/package inst based on {renv})R CMD check
pass without NOTE
because of file artefacts when running
vignettes and doing tests (tests/testthat/test-rix.R
){rix}
is now an rOpenSci package!
with_nix()
, using recursive = TRUE
in
dir.create()
rix::rix()
: It is not necessary anymore to provide the branch_name
list
element for R packages from GitHub in git_pkgs
.rix::rix()
:
ide = "rstudio"
and no additional R packages are
chosen. In the situation, the rStudioWrapper
approach does not work and the
resulting Nix expression would not build. The returned error states to either
add rstudio
to system_pkgs
, or add R packages in r_pkgs
or git_pkgs
.rix::rix()
docs: explain options(rix.sri_hash)
.{styler}
rix()
:
local_r_pkgs
argument.options(rix.sri_hash="API_server")
, so that online
hashing via http://git2nixsha.dev can be requested even when Nix is
installed locally.rix()
:
rix_init()
to ensure runtime purity via .Rprofile
.
This will exclude the system's user library from .libPaths()
, so that the
search path will only contain a path each per package in the Nix store.message_type
option to control signalling what is done.nix_build()
, with_nix()
: stabilize API; get rid of exec_mode
in core functions. In most cases, "non-blocking" system calls are being run for system commands like nix-shell
or nix-build
.rix_init()
, nix_build()
, and with_nix()
: gain a
message_type = "quiet"
, which suppresses messages. Further, messaging is
standardized via internal helpers called.nix_file
interface for with_nix()
default.nix
files.ga_cachix()
, a function to create a GA workflow file that builds and pushes an environment to a Cachix cachewith_nix()
: do not use --vanilla
because it does not respect custom code startup via .Rprofile
nix_build()
and with_nix()
: improvements. Remove nix-build
artefact file by using Sys.which()
for checking availability. with_nix()
: clean all itermediary and output artefacts (files) on exitrix()
with shell_hook = NULL
default, Nix-R wrappers nix_build()
and with_nix()
; update testfileswith_nix()
: try sessionInfo()
; fails under R Nixpkgs on darwinR_LIBS_USER
from .libPaths() in covr test environmentnix_build()
& with_nix()
: fix segmentation fault with adjusting LD_LIBRARY_PATH
temporarilynix_build()
: consistently separate cmd and args for nix-build
system commandnix_build()
: another guardrail for run-time purity of Nixpkgs Rnix_file
to specify specific .nix
filenix_shell()
and with_nix()
compatible with RStudio on macOS, where the R session is not (yet) started from a shell. Now /nix/var/nix/profiles/default/bin
is added to the PATH
variable after nix_shell()
or with_nix()
are called from an RStudio version of the system (not as Nix package).rix::init()
to initiate and maintain an isolated, project-specific and pure R setup via NixglibcLocales
patch
-with_nix()
needs patch for R <= 4.2.0; glibcLocalesUtf8
-> gibcLocales
with_nix()
to valuate function in R or shell command via nix-shell
environmenttar_nix_ga()
, a function to run targets pipelines on GitHub Actions using a Nix expressionwith_nix()
: evaluate and return R functions or shell commands in Nix env:
nix_file
argument as alternative to project_path
. Specify *.nix
fle defining the Nix software environment in which you want to run expr
.macOS
: made it compatible with system's RStudio version on macOS, where
the R session can not (yet) be started from a shell when launched from Dock.
Now /nix/var/nix/profiles/default/bin
is added to the PATH
variable
while with_nix()
are called.nix_build()
-- invoke nix-build
from R:
macOS
: made it compatible with system's RStudio version on macOS, where
the R session can not (yet) be started from a shell when launched from Dock.
Now /nix/var/nix/profiles/default/bin
is added to the PATH
variable
while with_nix()
are called.rix_init()
-- create an isolated, project-specific, and runtime-pure R setup via Nix
nix_file
argument to specify a specific .nix
filerix()
-- Generate a Nix expressions that build reproducible development
environments:
shell_hook = NULL
becomes the new default; before it was
= "R --vanilla"
. The new default ensures that with_nix()
applied on
a specific project_path
directory containing a custom .Rprofile
file
that was generated with rix_init()
, together with a default.nix
expression file, can read that profile file to effectively enforce run-time
pure R libraries (only from Nix store).nix_build()
-- invoke nix-build
from R:
nix-build
binary.
The internal helper now uses Sys.which("nix-build")
for checking
availability on PATH
in the R session.R_LIBS_USER
path from .libPaths()
.with_nix()
-- evaluate and return R functions or shell commands in Nix env:
nix-shell
) session environment when exiting. These file artefacts
are now written in a subdirectory with_nix
under tempdir()
of the
current R session and all files are deleted. Now, when an expr
errors
in a Nix shell evaluation (i.e. custom R function), but had a previous
successful run with a different expr
and/or R global environment state
with success and _out.Rds
produced, the current session fails to bring
this output into the current R session.project_path
, now attemps to
record sessionInfo()
with try
. We found failures of that command under
older R versions on Nixpkgs for macOS (i.e., aarch64-darwin).LD_LIBRARY_PATH
.glibcLocalesUtf8
with gibcLocales
(imports all
locales). This was necessary to support Nixpkgs R versions <= 4.2.0, where
glibcLocalsUtf8
derivation was not yet available. We do not sacrifice
reproducibility but rather have larger total sizes of derivations involved
in the subshell (around 200MB extra).nix_build()
: consistently separate cmd
and args
for nix-build
systemrix::init()
to initialize and maintain an isolated, project-specific,
and pure R setup via Nix. It accomplishes this by writing a custom .Rprofile
that guarantees R packages can only be attached from Nix paths, preventing
unnoticed loading from the system's R user library (R_LIBS_USER
and ensuring
runtime purity regarding packages and linked libraries). Additionally, it
appends /nix/var/nix/profiles/default/bin
to the PATH
. Currently, this
modification only takes effect in the current R session and not in new R
sessions for RStudio on MacOS. This is because the default R session is not
started from a shell. The PATH
will be modified by RStudio when starting the
R session, effectively after loading the local .Rprofile
. Future versions
of RStudio will hopefully respect all environmental variables from a shell
environment.rix::rix()
: patch for nixpkgs revisions corresponding to R (r_ver
)
<= 4.2.0; nix-build
failed because attribute glibcLocalesUtf8
was
not found. Fixed by importing gibcLocales
. Thanks @motorlearner for
reporting.Added with_nix()
, which can evaluate a function in R or shell command via
nix-shell
environment, and return the output into the current R session.
This works for both evaluating R code from a nix-R session within an other
nix-R session, or also from a host R session (i.e., on macOS or linux) within
a specific nix-R session. This feature is useful to test dependencies and
specific setups of software in controlled environments.
Added tar_nix_ga()
, a function to run targets pipelines on GitHub Actions
using a Nix expression.
rix::rix()
: fix missing pkgs.mkShell
when shell_hook = NULL
.
Both shell_hook = ""
and shell_hook = NULL
are now producing valid nix
expressions.rix::rix()
now defaults to "en_US.UTF-8"
for the relevant locale
variables (LANG
, LC_ALL
, LC_TIME
, LC_MONETARY
, LC_PAPER
,
LC_MEASUREMENT
) and sets these environment variables in
the Nix shell. These will be correctly propagated into the Nix R session.
Users can modify the locale setting via
options(rix.nix_locale_variables = list(LANG = "de_CH.UTF-8", <...>)
, e.g.,
but it needs to be an UTF-8 locale. This is because we only import the
glibcLocalesUtf8
subset, to not keep the size reasonable.glibcLocalesUtf8
from Nix for "x86_64-linux".rix::rix(tex_pkgs = NULL)
rix::rix()
argument tex_pkgs
.inst/extdata/default.nix
so that it installs {rix} v0.3.0.nix_build()
now supports --max_jobs
flag of nix-build
via options(rix.nix_build_max_jobs = <integer>)
. Custom settings of this option can be useful for leveraging full I/O latency or efficient builds on shared memory multiprocessing systems.nix_build()
in interactive use vignette (#68).create_default_nix()
so that project_path
is directory name.inst/extdata/default.nix
to latest commit of {rix} prior bumping.rix()
to allow empty r_pkgs
(##67).rix()
to do bug-free calling of rix_build()
within default nix
shell.create_default_nix()
to bootstrap
./inst/extdata/default.nix
shell_hook
arg for rix::rix()
, which will create a shellHook
entry in default.nix
.inst/extdata/default.nix
: use R --vanilla
in shellHook to not propagate user-specific .Renviron
and .Rprofile
. Fixes #56inst/exdata/default.nix
so that LOCALE_ARCHIVE
shellHook that was set to
glibc locale does not fail on MacOS anymore
(#40; fixed with 37f7ab8).nix_build()
: fix defensive check so the error message is referring to project_path
instead of nix_file
. The patch does not change correct behavior of nix_build()
,
hence it is only of cosmetic nature.nix_build()
now correctly checks presence of nix-build
. (4be69b2)nix_build()
helper that runs nix-build
interactively from R.
(#22)rix()
now supports installing packages from GitHub and the CRAN archives.rix()
now supports using a nixpkgs
revision instead of an R version
for reproducibilitydefault.nix
files now also include the call that was made to
generate them as top-level comment.path
argument of rix()
changed to project_path
.