我想在ubuntu上使用nix,並將XMonad作爲我的窗口管理器。 我在一臺使用nixOS的主機上可以很好地工作,但是我有另一臺尚未準備好nixOS的設備。 Ubuntu上的nix大多在那裏工作得很好,但xmonad無法找到有貢獻的庫。XMonad on Nix - 無法找到xmonad-contrib
相關的軟件包安裝:
$ nix-env -q | grep xmonad
xmonad-0.13
xmonad-contrib-0.13
xmonad-extras-0.12.1
但是重新編譯我的xmonad.hs,它無法找到的contrib庫:
$ xmonad --recompile
Error detected while loading xmonad configuration file: /home/martyn/.xmonad/xmonad.hs
xmonad.hs:32:1: error:
Failed to load interface for ‘XMonad.Layout.NoBorders’
Use -v to see a list of the files searched for.
...
Please check the file for errors.
相關文件安裝:
$ ls /nix/store/*xmonad-contrib*/lib/**/NoBorders*
/nix/store/4xrrwsm6362xkn9jn1b17kd891kv9z3a-xmonad-contrib-0.13/lib/ghc-8.0.2/xmonad-contrib-0.13/XMonad/Actions/NoBorders.dyn_hi
/nix/store/4xrrwsm6362xkn9jn1b17kd891kv9z3a-xmonad-contrib-0.13/lib/ghc-8.0.2/xmonad-contrib-0.13/XMonad/Actions/NoBorders.hi
/nix/store/4xrrwsm6362xkn9jn1b17kd891kv9z3a-xmonad-contrib-0.13/lib/ghc-8.0.2/xmonad-contrib-0.13/XMonad/Layout/NoBorders.dyn_hi
/nix/store/4xrrwsm6362xkn9jn1b17kd891kv9z3a-xmonad-contrib-0.13/lib/ghc-8.0.2/xmonad-contrib-0.13/XMonad/Layout/NoBorders.hi
通過將xmonad-contrib添加到我的nixpkgs config.nix中,我已將這些庫添加到ghc包reg伊士萊:
$ cat ~/.config/nixpkgs/config.nix
with (import <nixpkgs> {});
{
packageOverrides = pkgs: with pkgs; {
myHaskellEnv = pkgs.haskellPackages.ghcWithPackages (haskellPackages: with haskellPackages; [ xmonad-contrib ]);
};
}
$ nix-env -iA nixpkgs.myHaskellEnv
$ ghc-pkg list | grep xmonad
xmonad-0.13
xmonad-contrib-0.13
$
與此,GHC(I)效果很好:
$ /nix/store/7mkxsq7ydqcgnjbs59v1v47wfxpwrav5-ghc-8.0.2-with-packages/bin/ghc ~/.xmonad/xmonad.hs
[1 of 1] Compiling Main (/home/martyn/.xmonad/xmonad.hs, /home/martyn/.xmonad/xmonad.o) [flags changed]
Linking /home/martyn/.xmonad/xmonad ...
但在那個目錄xmonad連版本無法找到庫:
$ /nix/store/7mkxsq7ydqcgnjbs59v1v47wfxpwrav5-ghc-8.0.2-with-packages/bin/xmonad --recompile
Error detected while loading xmonad configuration file: /home/martyn/.xmonad/xmonad.hs
xmonad.hs:32:1: error:
Failed to load interface for ‘XMonad.Layout.NoBorders’
Use -v to see a list of the files searched for.
我可以通過編譯使用上面的ghc並手動將輸出移動到〜/ .xmonad/xmonad-x86_64-linux並運行它,解決此問題。但是這有點不好意思,肯定不需要?
是不是你的配置中特別的'xmonad.hs'部分,因此應該在nix中(從配置管理的角度來看)進行編譯? – Zeta
我自己並不是xmonad用戶,但是這裏是在NixOS上@Ptival的xmonad配置文件:https://github.com/Ptival/config/blob/master/xmonad.nix –
可能xmonad.hs會更好地管理「在nix之內」,但我還沒有能力實現這個目標,並且如nixOS所示,應該可以選擇不運行,但仍然可以運行(不管它是否明智)。 – user3416536