2017-06-27 10 views
3

ubuntuでXMonadをウィンドウマネージャーとして使用しようとしています。 これはnixOSを使って1つのホスト上でうまく動作していますが、nixOS用にまだ準備されていない2台目のデバイスがあります。 Ubuntuの上にはnixがありますが、xmonadは貢献ライブラリを見つけることができません。XMonad on Nix - xmonad-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 

$ nix-env -q | grep xmonad 
xmonad-0.13 
xmonad-contrib-0.13 
xmonad-extras-0.12.1 

しかし、私のxmonad.hsを再コンパイル、それはのcontrib LIBSを見つけることができません

私のnixpkgs config.nixにxmonad-contribを追加することで、これらのlibsをghcパッケージregに追加しましたistry:これで

$ 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のも、バージョンがLIBSを見つけることができません。

$ /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に移動して実行することで、この問題を回避できます。しかし、これはちょっとしたハッキーですが、必ずしも必要ではありませんか?

+0

あなたの設定の特別な 'xmonad.hs'部分ではないので、(構成管理の観点から)nix内でコンパイルする必要がありますか? – Zeta

+0

私はxmonadユーザーではありませんが、ここにはNixOSの@Ptivalのxmonad設定ファイルがあります:https://github.com/Ptival/config/blob/master/xmonad.nix –

+0

おそらくxmonad.hsがより良く管理されます"nix"の中では、まだそれを達成する能力がありませんし、nixOSで示されているように、(それが賢明であるかどうかにかかわらず)まだ動作しないことを選択することは可能です。 – user3416536

答えて

1

友人が私のためにこれを解決しました。オフラインですが、私は同じ問題を持つ他の人のためにこれをここに再現します。

本質的に、xmonad-with-packagesを使用し、ghc-with-packagesではなくパッケージを一覧表示する必要があります。

{ 
    packageOverrides = pkgs_: with pkgs_; { 
    xmonad   = import ./xmonad { nixpkgs = pkgs_; }; 
    }; 
} 

そしてこうして~/.nixpkgs/xmonad/default.nixを記入:これを達成するために

は、我々は~/.nixpkgs/config.nix内から参照私たち自身のxmonadを、提供

{ nixpkgs ? import <nixpkgs> {} }: 

nixpkgs.xmonad-with-packages.override { 
    packages = hPkgs: with hPkgs; [ xmonad-contrib ]; 
} 

これは、そのライブラリを見つけるかを知ってxmonadをインストール、そしてすべてが良い!

関連する問題