求对应nix-shell '<nixpkgs>' -A gnused的shell.nix配置及ctags集成方案
我懂你这种来回切换shell的麻烦——毕竟每次开两个窗口或者重复输命令确实折腾。下面给你一个一步到位的shell.nix配置,既能获得GNU sed的完整开发环境(包含configurePhase、buildPhase这些命令),又能直接用上ctags工具:
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell { # 继承GNU sed的原生构建依赖,再额外添加ctags nativeBuildInputs = pkgs.gnused.nativeBuildInputs ++ [ pkgs.ctags ]; # 可选:自动解压源码并进入目录,省去手动执行unpackPhase和cd的步骤 shellHook = '' unpackFile ${pkgs.gnused.src} cd sed-* ''; }
怎么用?
- 把上面的代码保存成当前目录下的
shell.nix文件 - 直接在终端运行
nix-shell,就能进入配置好的环境了
为什么之前的命令会报错?
你之前尝试nix-shell '<nixpkgs>' -A gnused -p ctags失败,是因为-A和-p这两个参数不能这么混用:
-A gnused是让nix-shell加载GNU sed专属的构建shell环境-p ctags是直接指定要安装的包,但这种写法在已经用-A指定属性路径的情况下不被支持
而用mkShell的好处是,它允许我们自由组合不同包的依赖,完美解决这个冲突。
额外说明
如果你不想自动解压源码,把shellHook部分删掉就行,进入shell后还是可以手动执行unpackPhase、cd sed-4.8这些步骤,完全和你之前的操作流程一致。
内容的提问来源于stack exchange,提问作者potong
相关产品推荐
相关产品推荐

