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")
.{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.{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
.