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
.