You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求对应nix-shell '<nixpkgs>' -A gnused的shell.nix配置及ctags集成方案

解决Nix Shell同时集成GNU sed开发环境和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-*
  '';
}

怎么用?

  1. 把上面的代码保存成当前目录下的shell.nix文件
  2. 直接在终端运行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:22:52