我正在尝试在haskell中设置一个用于代码开发的NixOS VM,并且在基本安装xmonad和emacs时遇到了麻烦。我/etc/nixos/configuration.nix
的相关部分是
environment.systemPackages = with pkgs; [
emacs
emacs24Packages.haskellMode
xlibs.xmessage
haskellPackages.haskellPlatform.ghc
haskellPackages.xmobar
haskellPackages.xmonad
haskellPackages.xmonadContrib
haskellPackages.xmonadExtras
];
xmonad:当我尝试编译代码时,xmonad抱怨它无法找到模块XMonad.Util.EZConfig。
使用ghc编译xmonad.hs
是可以的,我也可以将模块加载到ghci中。
在#nixos频道上,我被告知使用函数ghcWithPackages,但我无法解决问题。此外,我想首先理解为什么会出现这个问题,因为在我看来这是一个非常简单的用例。我遇到问题的最小xmonad.hs
是:
import XMonad
import XMonad.Util.EZConfig
main = xmonad $ defaultConfig
{ modMask = mod4Mask
, terminal = "konsole"
}
`additionalKeysP`
[ ("M-e", spawn "emacs")
, ("M-f", spawn "firefox")
]
emacs:在安装包haskellmode之后(查看上面的configuration.nix),我无法在emacs中输入haskell-mode。
我把这些问题放在一起,因为我怀疑它们都是由于我对某些事情的根本不理解造成的,所以原因可能很常见。
答案 0 :(得分:4)
只需添加
windowManager.xmonad.enableContribAndExtras = true;
到
/etc/nixos/configuration.nix
然后通过.xsession文件以通常的方式启动xmonad
答案 1 :(得分:2)
我暂时无法添加评论......但我认为这是cabal本地和全球存储库的问题。
正如我所见," Nix允许用户在不需要root权限的情况下安装软件包,并为每个用户提供自己的已安装软件包集视图。可以同时安装多个版本的程序或库。包升级是原子的,可以回滚。"
也许您可以使用ghc-pkg list
来查看在root用户和普通用户中是否已正确安装软件包。