2015-10-17 83 views
6

我在Nix shell中开发(在我的项目根目录下创建一个default.nix文件,然后运行nix-shell .为我提供一个可访问项目依赖项的shell) 。获取Spacemacs/Emacs GUI版本以识别nix-shell环境

Spacemacs是我的主要编辑器,但是当我尝试通过emacs &运行GUI版本时,我无法访问我的nix-shell中的程序(例如,如果我在Ruby on Rails项目中,例如Ruby在我的default.nix中被声明为依赖项,因为Emacs的GUI版本没有看到我的Nix-shell依赖项,所以我在Spacemacs中没有语法高亮显示。如果我运行:!which ruby,它甚至找不到which命令。

现在,我通过emacs -nw运行spacemacs并从控制台中使用它,但我真的希望能够使用GUI编辑器并获得可用的全部颜色方案,而不仅限于那些看起来像很好的256色模式。我在终端和编辑器之间切换也比在tmux窗格或终端分离之间切换到我的CLI编辑器更快。

with import <nixpkgs> {}; { 
    cannyFreeRadicalEnv = stdenv.mkDerivation rec { 
    name = "rails-project-env"; 
    version = "0.1"; 
    src = ./.; 
    buildInputs = [ 
     stdenv 
     ruby_2_2_2 
     bundler 
     zlib 
     postgresql94 
     sqlite 
     zsh 
     git 
     nodejs-0_12 
    ]; 
    }; 
} 
+0

有什么不对这个问题? – josiah

回答

3

您可以运行GUI的Emacs作为

setsid nix-shell . --command "emacs" &> /dev/null 

也看到nix-shellintegration讨论flycheckghc-mode


提示:您可以使用别名这是你.zshrc的.bashrc

run-nix-emacs() { 
    setsid nix-shell . --command "emacs" &> /dev/null 
} 

alias ne='run-nix-emacs' 
+0

我试过了。回答是,运行':!哪个ruby'仍然说它找不到'which'命令,并且我的Ruby配置层仍然不可用,因为找不到irb和ruby命令。我将通读您提供给flycheck和ghc-mod讨论的链接,但我的感觉是,这可能是一个带Nix问题的Emacs,而不是一般的Nix问题。 – josiah

+0

@josiah,你安装了哪个? – Netsu

+0

不是全系统的,而是在Nix-shell开发环境中,因为它是nixpkgs.stdenv的一部分,所以可用。 – josiah