Changelog
Source:NEWS.md
rix 0.13.3 (2024-11-20)
-
rix()
: Clearer error message when providing an R version that is too recent
rix 0.13.2 (2024-11-20)
-
renv2nix()
: switch from RemoteType to RemoteHost inrenv.lock
files to detect packages to be added from Github or Gitlab
rix 0.13.1 (2024-11-19)
-
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.
rix 0.13.0 (2024-11-18)
-
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 0.12.4 (2024-09-27)
CRAN release: 2024-10-02
-
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 0.12.3 (2024-09-26)
CRAN release: 2024-09-26
Bug fixes
-
rix_init()
,rix()
: fix bug inrix_init()
, that led to empty.Rprofile
files.
rix 0.12.2 (2024-09-25)
Chores
- 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 0.12.1 (2024-09-25)
CRAN release: 2024-09-25
User-facing changes
-
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.
Chores
- 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
-
rix 0.11.1 (2024-09-20)
Bug fixes
-
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.
Development services
-
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.
Chores
- 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”
rix 0.10.0 (2024-09-12)
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
rix 0.9.1 (2024-07-30)
- Fix directory creation in
with_nix()
, usingrecursive = TRUE
indir.create()
rix 0.9.0 (2024-07-22)
User-facing changes
-
rix::rix()
: It is not necessary anymore to provide thebranch_name
list element for R packages from GitHub ingit_pkgs
.
Bug fixes
-
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
Chores
- 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 0.8.0 (2024-07-02)
New features
-
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
User-facing changes
-
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.
Chores
- 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
rix 0.7.0 (2024-05-21)
- 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
rix 0.6.0.9000 (2024-05-05)
-
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
temporarily -
nix_build()
: consistently separate cmd and args fornix-build
system command -
nix_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
rix 0.6.0 (2024-02-02)
New features
-
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
User facing changes
-
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).
-
Bug fixes
-
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 (
Quality and unit testing
- 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.
Internal refactoring
-
nix_build()
: consistently separatecmd
andargs
fornix-build
system
rix 0.5.1.9000 (2024-01-17)
- 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 0.5.1 (2024-01-16)
Bug fixes
-
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.
rix 0.5.0 (2024-01-07)
Features
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 0.4.1 (2023-10-06)
Bug fixes
-
rix::rix()
: fix missingpkgs.mkShell
whenshell_hook = NULL
. Bothshell_hook = ""
andshell_hook = NULL
are now producing valid nix expressions.
rix 0.4.0 (2023-09-26)
Features
-
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.
Bug fixes
- fix locale warnings when starting R in linux, which uses glibc (closes #50). Now, we use
glibcLocalesUtf8
from Nix for “x86_64-linux”.
rix 0.3.0 (2023-09-10)
- Added support for installing TeX Live packages via new
rix::rix()
argumenttex_pkgs
.
rix 0.2.1.9002 (2023-09-02)
-
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.
rix 0.2.1.9001 (2023-08-29)
- Include
nix_build()
in interactive use vignette (#68).
rix 0.2.0 (2023-08-25)
New features
- 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
.
Bug fixes
-
inst/extdata/default.nix
: useR --vanilla
in shellHook to not propagate user-specific.Renviron
and.Rprofile
. Fixes #56
rix 0.1.2 (2023-08-14)
Bug fixes
- 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.
rix 0.1.1 (2023-08-11)
Bug fixes
-
nix_build()
now correctly checks presence ofnix-build
. (4be69b2)
rix 0.1.0 (2023-08-11)
New features
- 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.
Changes
- The
path
argument ofrix()
changed toproject_path
.