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.