如果我在nix-shell它下面构建我的 Haskell 项目,则会出现关于缺少zlib.
如果我使用 nix-shell 构建项目,nix-shell -p zlib则该项目zlib会成功查看并构建。
如何将zlib包添加到shell.nix文件以便-p zlib不再需要传递?
注意:构建是使用 cabal v2-build
为了使用堆栈构建,我必须执行以下操作
这是我shell.nix目前的定义方式:
{ nixpkgs ? import <nixpkgs> {}, compiler ? "default", doBenchmark ? false }:
let
inherit (nixpkgs) pkgs;
f = { mkDerivation, base, directory, stdenv, text, turtle, zlib }:
mkDerivation {
pname = "haskell-editor-setup";
version = "0.1.0.0";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = [ …Run Code Online (Sandbox Code Playgroud) 我正在尝试探索 gnu sed 代码库。
我可以从命令行执行此操作:
nix-shell '<nixpkgs>' -A gnused
unpackPhase
cd sed-4.8
configurePhase
buildPhase
Run Code Online (Sandbox Code Playgroud)
然后在 sed 等下编辑代码
但是,我想使用未安装的 ctags:
nix-shell -p ctags
Run Code Online (Sandbox Code Playgroud)
安装软件包但是:
nix-shell '<nixpkgs>' -A gnused -p ctags
Run Code Online (Sandbox Code Playgroud)
得到错误:
error: attribute 'gnused' in selection path 'gnused' not found
Run Code Online (Sandbox Code Playgroud)
我意识到我必须使用 shell.nix 但我找不到上述的 mkShell 示例。
PS 两次调用 nix-shell 达到了所需的结果,但这似乎很笨拙:
nix-shell -p ctags
nix-shell '<nixpkgs>' -A gnused
Run Code Online (Sandbox Code Playgroud) 对于现代版本的 Yarn(又名 Yarn Berry),首选安装是通过 Corepack,并且 Corepack 默认包含在 Node.js 安装中(>=16.10)。请参阅https://yarnpkg.com/getting-started/install
corepack enable这就是我在 中尝试做的事情default.nix,但它不起作用。
with import <nixpkgs> {};
stdenv.mkDerivation {
name = "dev";
dontUnpack = true;
buildInputs = [ nodejs-17_x ];
postPhases = ''
corepack enable
'';
}
Run Code Online (Sandbox Code Playgroud) shell.nix以下 cmdline 参数的最短等效项是什么?
nix-shell -p "haskell.packages.ghc865.ghcWithPackages (p: [p.ghci-pretty])"
Run Code Online (Sandbox Code Playgroud)
这有效,但它很冗长:
# contents of shell.nix file
# run with the following cmd:
# nix-shell shell.nix
{ nixpkgs ? import <nixpkgs> {} }:
let
inherit nixpkgs;
inherit (nixpkgs) haskellPackages;
haskellDeps = a: with a; [
ipprint
base
hscolour
ghci-pretty
];
ghc = nixpkgs.haskellPackages.ghcWithPackages haskellDeps;
nixPackages = [
haskellPackages.cabal-install
ghc
];
in
nixpkgs.stdenv.mkDerivation {
name = "profile_name";
buildInputs = nixPackages;
}
Run Code Online (Sandbox Code Playgroud)