我想将ESS与Nix版本的R和我需要的软件包一起使用。
这是我可以通过shell做的事情
nix-shell shell.nix -I nixpkgs=/Users/dom/nixpkgs --run R
shell.nix
确保我可以使用R和R包,而无需install.packages
。例如。我在nix中获得了ggplot2的版本:
R version 3.4.3 (2017-11-30) -- "Kite-Eating Tree"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin17.3.0 (64-bit)
> installed.packages()["ggplot2","LibPath"]
installed.packages()["ggplot2","LibPath"]
[1] "/nix/store/4nm5rs5d0ywpw7ksd0hblminim4kvnr0-r-ggplot2-2.2.1/library"
ESS有变量
inferior-R-program-name
inferior-R-args
这是我为python所做的,但请注意python模式有python-shell-process-environment
,它允许我设置NIX环境变量。
'(python-shell-interpreter "/nix/var/nix/profiles/default/bin/nix-shell")
'(python-shell-interpreter-args
"-p \"callPackage /Users/dom/Dropbox/Tidy/mrp/dl.nix {}\" -I nixpkgs=/Users/dom/nixpkgs --run python")
'(python-shell-process-environment
(quote
("NIX_PROFILES=/nix/var/nix/profiles/default /Users/dom/.nix-profile" "NIX_REMOTE=daemon" "NIX_PATH=/nix/var/nix/profiles/per-user/root/channels" "NIX_SSL_CERT_FILE=/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt" "NIX_USER_PROFILE_DIR=/nix/var/nix/profiles/per-user/dom"))))
重复我原来的问题,有什么类似的方法可以说服ESS使用Nix版本的R(以及相关的软件包)吗?
答案 0 :(得分:0)
打开一个带有M-x shell的常规shell缓冲区,在那里运行你的nix-shell命令,然后执行M-x ess-remote并选择R. ESS会将此缓冲区识别为其交互式R会话。
注意你需要在M-x ess-remote之前运行R.