5

我正在尝试在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。

我把这些问题放在一起,因为我怀疑它们都是由代表我对某事的根本不理解引起的,所以原因可能很普遍。

4

2 回答 2

4

只需添加

    windowManager.xmonad.enableContribAndExtras = true;

    /etc/nixos/configuration.nix

然后通过您的 .xsession 文件以通常的方式启动 xmonad

于 2017-11-02T07:00:48.850 回答
2

我现在无法添加评论......但我认为这是 cabal 本地和全球存储库的问题。

正如我所看到的,“Nix 允许用户在不需要 root 权限的情况下安装包,并为每个用户提供对已安装包集的自己的视图。可以同时安装程序或库的多个版本。包升级是原子的并且可以回滚。”

也许您可以使用ghc-pkg listroot 和普通用户查看软件包是否安装良好。

于 2014-05-19T18:45:39.523 回答