rix()
: it is now possible to generate expressions pointing to the development version of R and Bioconductor by usingrix(r_ver = "r-devel")
andrix(r_ver = "r-devel-bioc-devel)
.
rix()
: it is now possible to generate expressions pointing to the development version of Bioconductor by usingrix(r_ver = "bioc-devel")
.
-
This is a major release of
{rix}
:- We have forked the Nixpkgs Github repository to include more R packages in Nix, and have backported many fixes, which should improve the user experience on Apple Silicon devices.
- We also set up a binary cache on Cachix (many thanks to Cachix for
sponsoring the cache!) so now packages get pulled from the official binary
cache, as well as from the
rstats-on-nix
cache. This greatly decreases build times. rix()
now includes adate
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 theavailable_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 mihem
rix()
: now correctly handles packages with no dependencies, thanks to jrosell
rix()
: Clearer error message when providing an R version that is too recent
renv2nix()
: switch from RemoteType to RemoteHost inrenv.lock
files to detect packages to be added from Github or Gitlab
renv2nix()
: added new argument,override_r_ver
, to manually set R version in generated Nix expression. This deals with situations where anrenv.lock
lists a version of R that is not (yet) included in nixpkgs.
renv2nix()
: convertsrenv.lock
file into adefault.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 inrix_init()
, that led to empty.Rprofile
files.
- Update
inst/extdata/default.nix
- Update the url in the hex logo
- Update shipped
inst/extdata/default.nix
with this patch release of {rix} - Remove duplicate
NEWS
entries in 0.12.1 released previously, which is the first CRAN release version. - Added reference to Dolstra (2006) in the
DESCRIPTION
(forgotten in first CRAN release 0.12.1)
rix()
: The is no default argument inproject_path
anymore. Before, it defaulted to the current directory, which violated CRAN policy to have any default path in writing functions.
- Adhere to CRAN policies, resubmit with changes according to CRAN comments:
DESCRIPTION
:- No package name in title field
- Write 'Nix' in single quotes (software name)
- Description text: Add more details about package functionality and implemented methods.
- Added reference describing 'Nix'
- All vignettes and tests now write to
tempdir()
instead of the user directory
- Fix roxygen2 check note.
- Prepare for first CRAN submission! Polish the README.
- fix
R CMD check
andR CMD build
when running them in anix-shell --pure
development environment based on thedefault.nix
of {rix} package root. Use manually controlled Nix expression fromr_ver = "latest"
pinned source.
rix::rix()
: Clean detrius files/folders in temporary folders that are not needed. Also fixes failing vignette builds inR CMD build
(including helpersrix::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 thenix-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.
- Update top-level
default.nix
for {rix} development environment. - Remove
pre-commit
config because it does not play well with Nix (R-tooling/package inst based on {renv}) - Make
R CMD check
pass withoutNOTE
because of file artefacts when running vignettes and doing tests (tests/testthat/test-rix.R
) - Polish lint and styling actions″LC_ALL = "en_US.UTF-8"
- Gitlab packages can now be installed as well
{rix}
is now an rOpenSci package!
- Transfer to rOpenSci: updated more links
- Transfer to rOpenSci: added reviewers to DESCRIPTION
- Transfer to rOpenSci: update link in DESCRIPTION
- Transfer to rOpenSci: added link to CoC
- Transfer to rOpenSci: fixed links
- Fix directory creation in
with_nix()
, usingrecursive = TRUE
indir.create()
rix::rix()
: It is not necessary anymore to provide thebranch_name
list element for R packages from GitHub ingit_pkgs
.
rix::rix()
:- error when
ide = "rstudio"
and no additional R packages are chosen. In the situation, therStudioWrapper
approach does not work and the resulting Nix expression would not build. The returned error states to either addrstudio
tosystem_pkgs
, or add R packages inr_pkgs
orgit_pkgs
.
- error when
- Github Actions: we now use rhub2 for checking the package
rix::rix()
docs: explainoptions(rix.sri_hash)
.- Source code now follows tidyverse style guide thanks to
{styler}
- Readme: added section explain comparing {rix} and Nix to other package managers
rix()
:- Added possibility to install local archives via
local_r_pkgs
argument. - Compute hash of git and CRAN archive packages locally if nix is installed.
There also a new
options(rix.sri_hash="API_server")
, so that online hashing via http://git2nixsha.dev can be requested even when Nix is installed locally.
- Added possibility to install local archives via
rix()
:- Now runs
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. - New
message_type
option to control signalling what is done.
- Now runs
nix_build()
,with_nix()
: stabilize API; get rid ofexec_mode
in core functions. In most cases, "non-blocking" system calls are being run for system commands likenix-shell
ornix-build
.rix_init()
,nix_build()
, andwith_nix()
: gain amessage_type = "quiet"
, which suppresses messages. Further, messaging is standardized via internal helpers called.
- Fine-tune formatting of *.nix files generated
- low-level requests with {curl} -> remove {httr} dependency
- ROpenSci review: complete documentation of internal functions
- remove
nix_file
interface forwith_nix()
- document
- Better messages of comments on top of the generated
default.nix
files.
- Added the possibility to create "bleeding-edge" and "frozen-edge" environments
- Added the possibility to use radian as the environment's console (courtesy of kupac) and RStudio server
- Added
ga_cachix()
, a function to create a GA workflow file that builds and pushes an environment to a Cachix cache
with_nix()
: do not use--vanilla
because it does not respect custom code startup via.Rprofile
nix_build()
andwith_nix()
: improvements. Removenix-build
artefact file by usingSys.which()
for checking availability.with_nix()
: clean all itermediary and output artefacts (files) on exit- Patch
rix()
withshell_hook = NULL
default, Nix-R wrappersnix_build()
andwith_nix()
; update testfiles with_nix()
: trysessionInfo()
; fails under R Nixpkgs on darwin- Do not remove
R_LIBS_USER
from .libPaths() in covr test environment nix_build()
&with_nix()
: fix segmentation fault with adjustingLD_LIBRARY_PATH
temporarilynix_build()
: consistently separate cmd and args fornix-build
system commandnix_build()
: another guardrail for run-time purity of Nixpkgs R- implement
nix_file
to specify specific.nix
file - Make
nix_shell()
andwith_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 thePATH
variable afternix_shell()
orwith_nix()
are called from an RStudio version of the system (not as Nix package). - Add
rix::init()
to initiate and maintain an isolated, project-specific and pure R setup via Nix - update with
glibcLocales
patch -with_nix()
needs patch for R <= 4.2.0;glibcLocalesUtf8
->gibcLocales
- Implement
with_nix()
to valuate function in R or shell command vianix-shell
environment - Added
tar_nix_ga()
, a function to run targets pipelines on Github Actions using a Nix expression
-
with_nix()
: evaluate and return R functions or shell commands in Nix env:- added
nix_file
argument as alternative toproject_path
. Specify*.nix
fle defining the Nix software environment in which you want to runexpr
. 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 thePATH
variable whilewith_nix()
are called.
- added
-
nix_build()
-- invokenix-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 thePATH
variable whilewith_nix()
are called.
-
rix_init()
-- create an isolated, project-specific, and runtime-pure R setup via Nix- added
nix_file
argument to specify a specific.nix
file
- added
rix()
-- 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 thatwith_nix()
applied on a specificproject_path
directory containing a custom.Rprofile
file that was generated withrix_init()
, together with adefault.nix
expression file, can read that profile file to effectively enforce run-time pure R libraries (only from Nix store).
-
nix_build()
-- invokenix-build
from R:- avoided empty file artefact when checking for presence of
nix-build
binary. The internal helper now usesSys.which("nix-build")
for checking availability onPATH
in the R session. - added another guardrail for run-time purity of Nixpkgs R by removing the
R_LIBS_USER
path from.libPaths()
.
- avoided empty file artefact when checking for presence of
-
with_nix()
-- evaluate and return R functions or shell commands in Nix env:- Now cleans all itermediary and output artefacts (files) written in Nix
shell (
nix-shell
) session environment when exiting. These file artefacts are now written in a subdirectorywith_nix
undertempdir()
of the current R session and all files are deleted. Now, when anexpr
errors in a Nix shell evaluation (i.e. custom R function), but had a previous successful run with a differentexpr
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. - The code run the Nix-R session defined by
project_path
, now attemps to recordsessionInfo()
withtry
. We found failures of that command under older R versions on Nixpkgs for macOS (i.e., aarch64-darwin). - Fix segmentation faults in tests by temporarily setting
LD_LIBRARY_PATH
. - Patched the import of
glibcLocalesUtf8
withgibcLocales
(imports all locales). This was necessary to support Nixpkgs R versions <= 4.2.0, whereglibcLocalsUtf8
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).
- Now cleans all itermediary and output artefacts (files) written in Nix
shell (
- added test suite of 17 unit tests using {testthat}
- Add GitHub actions runners on the repository that use system's R or Nix R environments configured with Nix.
nix_build()
: consistently separatecmd
andargs
fornix-build
system
- Added
rix::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 thePATH
. 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. ThePATH
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 attributeglibcLocalesUtf8
was not found. Fixed by importinggibcLocales
. Thanks @motorlearner for reporting.
-
Added
with_nix()
, which can evaluate a function in R or shell command vianix-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 missingpkgs.mkShell
whenshell_hook = NULL
. Bothshell_hook = ""
andshell_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 viaoptions(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 theglibcLocalesUtf8
subset, to not keep the size reasonable.
- fix locale warnings when starting R in linux, which uses glibc (closes
#50). Now, we use
glibcLocalesUtf8
from Nix for "x86_64-linux".
- Remove boilerplate code for
rix::rix(tex_pkgs = NULL)
- Added support for installing TeX Live packages via new
rix::rix()
argumenttex_pkgs
.
- update
inst/extdata/default.nix
so that it installs {rix} v0.3.0.
nix_build()
now supports--max_jobs
flag ofnix-build
viaoptions(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.
- Include
nix_build()
in interactive use vignette (#68).
- Fix internal
create_default_nix()
so thatproject_path
is directory name. - Updated
inst/extdata/default.nix
to latest commit of {rix} prior bumping.
- Patch
rix()
to allow emptyr_pkgs
(##67). - Patch
rix()
to do bug-free calling ofrix_build()
within default nix shell.
- New internal helper
create_default_nix()
to bootstrap./inst/extdata/default.nix
- Updated Nix historical revision data to include R version 4.3.1.
- Provision a new
shell_hook
arg forrix::rix()
, which will create ashellHook
entry indefault.nix
.
inst/extdata/default.nix
: useR --vanilla
in shellHook to not propagate user-specific.Renviron
and.Rprofile
. Fixes #56
- Patch
inst/exdata/default.nix
so thatLOCALE_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 toproject_path
instead ofnix_file
. The patch does not change correct behavior ofnix_build()
, hence it is only of cosmetic nature.
nix_build()
now correctly checks presence ofnix-build
. (4be69b2)
- Added
nix_build()
helper that runsnix-build
interactively from R. (#22) rix()
now supports installing packages from GitHub and the CRAN archives.rix()
now supports using anixpkgs
revision instead of an R version for reproducibility- Generated
default.nix
files now also include the call that was made to generate them as top-level comment.
- The
path
argument ofrix()
changed toproject_path
.
- Basic functionality added.