Haskell 如何将ghcide添加到shell.nix中
我有一个哈斯克尔阴谋集团的计划。我一直在使用cabal2nix构建它。因此,我有3个nix文件:Haskell 如何将ghcide添加到shell.nix中,haskell,cabal,nix,Haskell,Cabal,Nix,我有一个哈斯克尔阴谋集团的计划。我一直在使用cabal2nix构建它。因此,我有3个nix文件: project.nix—由cabal2nix生成的.nix文件 default.nix-Justhaskell.callPackage./project.nix{} shell.nix-只返回默认的env(import./default.nix{}).env 最近,我决定使用设置vscode开发环境。在上面的描述中 在您的项目中包含pkgs.haskellPackages.ghcide 没有进一
- project.nix—由cabal2nix生成的.nix文件
- default.nix-Just
haskell.callPackage./project.nix{}
- shell.nix-只返回默认的env
(import./default.nix{}).env
pkgs.haskellPackages.ghcide
没有进一步解释。听起来应该很容易,但我不知道怎么做。如何操作?您可以在
buildTools
config下添加ghcide
包
{mkDerivation,stdenv,base,aeson,scotty,wai extra,text,ghcide}
MK推导{
pname=“来”;
version=“0.1.0.0”;
src=./。;
isLibrary=false;
isExecutable=true;
ExecutableHaskell=[
基于scotty wai额外文本
];
buildTools=[ghcide];
主页=”http://emre.xyz/come";
description=“演示项目”;
许可证=带有stdenv.lib.licenses;[gpl3Plus];
}
在shell.nix
中使用shellFor
功能。它位于包集中,而不是haskell.lib
。基于上的shellFor内联文档中的示例,我重命名了所有包.nix
在shell.nix
中为其添加了let绑定,并添加了ghcide
# Returns a derivation whose environment contains a GHC with only
# the dependencies of packages listed in `packages`, not the
# packages themselves. Using nix-shell on this derivation will
# give you an environment suitable for developing the listed
# packages with an incremental tool like cabal-install.
# In addition to the "packages" arg and "withHoogle" arg, anything that
# can be passed into stdenv.mkDerivation can be included in the input attrset
#
# # all-packages.nix
# with import <nixpkgs> {};
# haskellPackages.extend (haskell.lib.packageSourceOverrides {
# frontend = ./frontend;
# backend = ./backend;
# common = ./common;
# })
#
# # shell.nix
# let pkgs = import <nixpkgs> {};
# allPackages = import ./all-packages.nix;
# in
# allPackages.shellFor {
# packages = p: [p.frontend p.backend p.common];
# withHoogle = true;
# buildInputs = [ allPackages.ghcide ];
# }
#
# -- cabal.project
# packages:
# frontend/
# backend/
# common/
#
# bash$ nix-shell --run "cabal new-build all"
# bash$ nix-shell --run "python"
#返回其环境中仅包含
#“包”中列出的包的依赖项,而不是
#包装本身。在这个派生上使用nixshell将
#为您提供一个适合开发所列产品的环境
#使用诸如cabal install之类的增量工具的软件包。
#除了“packages”arg和“withHoogle”arg之外,任何
#可以传递到stdenv.mk。可以将派生包含在输入属性集中
#
##全套。尼克斯
#导入{};
#haskell packages.extend(haskell.lib.packageSourceOverrides{
#前端=/前端;
#后端=/后端;
#普通=/普通;
# })
#
##shell.nix
#设pkgs=import{};
#allPackages=import./all-packages.nix;
#在
#所有软件包{
#packages=p:[p.frontend p.backend p.common];
#withHoogle=真;
#buildInputs=[allPackages.ghcide];
# }
#
#--阴谋集团项目
#套餐:
#前端/
#后端/
#普通的/
#
#bash$nix shell--运行“阴谋集团新构建全部”
#bash$nix shell--运行“python”
但project.nix是否应该自动生成,因此手动定制不是一个好主意?