news 2026/7/6 17:59:50

nix-alien安装指南:从零开始在NixOS和Home-Manager中配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nix-alien安装指南:从零开始在NixOS和Home-Manager中配置

nix-alien安装指南:从零开始在NixOS和Home-Manager中配置

【免费下载链接】nix-alienRun unpatched binaries on Nix/NixOS项目地址: https://gitcode.com/gh_mirrors/ni/nix-alien

nix-alien是一款强大的工具,能够帮助用户在Nix/NixOS系统上运行未经过补丁处理的二进制文件,轻松解决“bash: ./myapp: No such file or directory”这类常见问题。通过自动下载必要的依赖项,它让在NixOS环境中运行各种二进制程序变得简单高效。

🌟 为什么选择nix-alien?

在NixOS系统中,由于其独特的文件系统结构,直接运行外部二进制文件常常会遇到依赖缺失的问题。nix-alien通过以下核心功能解决这一痛点:

  • 自动依赖解析:自动识别二进制文件所需的共享库依赖
  • FHS环境模拟:创建兼容FHS标准的运行环境
  • 灵活的运行模式:支持直接运行、生成nix-ld配置或仅列出所需库文件

主要命令包括:

$ nix-alien myapp # 在FHS环境中运行二进制文件 $ nix-alien-ld myapp # 使用nix-ld运行二进制文件 $ nix-alien-find-libs myapp # 列出二进制文件所需的所有库

🚀 快速开始:无需安装即可体验

如果你只是想快速尝试nix-alien的功能,无需完整安装,可直接通过nix命令运行:

$ nix --extra-experimental-features "nix-command flakes" run github:thiagokokada/nix-alien -- ~/myapp

对于需要OpenGL支持的程序(如Blender),可以配合nixGL使用:

$ nix --extra-experimental-features "nix-command flakes" run --impure github:guibou/nixGL --override-input nixpkgs nixpkgs/nixos-unstable -- nix run github:thiagokokada/nix-alien -- blender

📥 NixOS系统安装方法

传统配置方式

  1. 创建/etc/nixos/nix-alien.nix文件,添加以下内容:
{ ... }: let nix-alien-pkgs = import ( builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master" ) { }; in { environment.systemPackages = with nix-alien-pkgs; [ nix-alien ]; # 可选:启用nix-ld支持(nix-alien-ld命令需要) programs.nix-ld.enable = true; }
  1. 将该文件添加到/etc/nixos/configuration.niximports部分:
imports = [ ./nix-alien.nix # 其他配置文件... ];
  1. 应用配置:
$ sudo nixos-rebuild switch

Flakes配置方式

如果你使用Flakes,可以将以下配置添加到你的flake.nix文件中:

{ description = "nix-alien-on-nixos"; inputs.nixpkgs.url = "github:NixOS/nixpkgs"; inputs.nix-alien.url = "github:thiagokokada/nix-alien"; outputs = { self, nixpkgs, nix-alien }: { nixosConfigurations.nix-alien-desktop = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; # 或 aarch64-linux specialArgs = { inherit self system; }; modules = [ ({ self, system, ... }: { environment.systemPackages = with self.inputs.nix-alien.packages.${system}; [ nix-alien ]; # 可选:启用nix-ld支持 programs.nix-ld.enable = true; }) ]; }; }; }

或者使用overlay方式(可能减少/nix/store大小,但兼容性可能受影响):

{ description = "nix-alien-on-nixos"; inputs.nixpkgs.url = "github:NixOS/nixpkgs"; inputs.nix-alien.url = "github:thiagokokada/nix-alien"; outputs = { self, nixpkgs, nix-alien }: { nixosConfigurations.nix-alien-desktop = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; # 或 aarch64-linux specialArgs = { inherit self; }; modules = [ ({ self, ... }: { nixpkgs.overlays = [ self.inputs.nix-alien.overlays.default ]; environment.systemPackages = with pkgs; [ nix-alien ]; # 可选:启用nix-ld支持 programs.nix-ld.enable = true; }) ]; }; }; }

🏠 Home-Manager安装方法

传统配置方式

在你的Home-Manager配置文件中添加:

{ ... }: let nix-alien-pkgs = import ( builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master" ) { }; in { # ...其他配置 home.packages = with nix-alien-pkgs; [ nix-alien ]; }

Flakes配置方式

如果你使用Home-Manager with Flakes,可以这样配置:

{ description = "nix-alien-on-home-manager"; inputs.nixpkgs.url = "github:NixOS/nixpkgs"; inputs.home-manager.url = "github:nix-community/home-manager"; inputs.nix-alien.url = "github:thiagokokada/nix-alien"; outputs = { self, nixpkgs, home-manager, nix-alien }: let system = "x86_64-linux"; # 或 aarch64-linux pkgs = import nixpkgs { inherit system; }; in { homeConfigurations.nix-alien-home = home-manager.lib.homeManagerConfiguration rec { inherit pkgs; extraSpecialArgs = { inherit self system; }; modules = [ ({ self, system, ... }: { home.packages = with self.inputs.nix-alien.packages.${system}; [ nix-alien ]; }) ]; }; }; }

💡 基本使用方法

安装完成后,使用nix-alien非常简单:

  1. 基本运行方式:
$ nix-alien ~/myapp
  1. 传递参数给应用程序:
$ nix-alien ~/myapp -- --foo bar
  1. 使用nix-ld模式(需提前启用nix-ld):
$ nix-alien-ld ~/myapp
  1. 仅列出所需库文件:
$ nix-alien-find-libs ~/myapp
  1. 强制重新创建配置文件:
$ nix-alien --recreate ~/myapp

⚠️ 注意事项与限制

  • 动态加载库问题:使用dlopen动态加载的库可能无法自动检测,可通过-l-p参数手动添加:

    $ nix-alien -l libGL.so.1 -l libz.so.1 ~/myapp # 添加特定库 $ nix-alien -p libGL -p zlib ~/myapp # 添加特定包
  • 缓存机制:配置文件会缓存在$XDG_CACHE_HOME/nix-alien/<path-uuid>/目录下,基于二进制文件的绝对路径

  • Flakes支持:可使用--flake标志创建和使用flake.nix文件(实验性功能)

  • 命令帮助:所有命令都支持--help参数查看详细用法:

    $ nix-alien --help

通过本指南,你应该已经掌握了在NixOS和Home-Manager中安装和配置nix-alien的全部方法。无论你是NixOS新手还是有经验的用户,nix-alien都能极大简化在NixOS上运行外部二进制文件的过程,让你的NixOS体验更加顺畅!

【免费下载链接】nix-alienRun unpatched binaries on Nix/NixOS项目地址: https://gitcode.com/gh_mirrors/ni/nix-alien

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 17:59:41

text-encoding性能优化指南:减小596KB索引文件体积的6个实用技巧

text-encoding性能优化指南&#xff1a;减小596KB索引文件体积的6个实用技巧 【免费下载链接】text-encoding Polyfill for the Encoding Living Standards API 项目地址: https://gitcode.com/gh_mirrors/te/text-encoding 想要在Web项目中处理文本编码和解码&#xff…

作者头像 李华
网站建设 2026/7/6 17:57:59

3个核心功能重塑漫画阅读体验:EhViewer开源项目的现代化实践方案

3个核心功能重塑漫画阅读体验&#xff1a;EhViewer开源项目的现代化实践方案 EhViewer是一款基于Material Design 2设计的开源Android漫画阅读器&#xff0c;专注于提供高效、美观的漫画浏览和下载体验。这款应用通过现代化的Kotlin技术栈和精心优化的架构设计&#xff0c;解决…

作者头像 李华
网站建设 2026/7/6 17:57:29

aiohttp-demos数据库操作:异步SQLAlchemy与PostgreSQL实战

aiohttp-demos数据库操作&#xff1a;异步SQLAlchemy与PostgreSQL实战 【免费下载链接】aiohttp-demos Demos for aiohttp project 项目地址: https://gitcode.com/gh_mirrors/ai/aiohttp-demos aiohttp-demos是基于aiohttp框架的示例项目集合&#xff0c;其中包含了多个…

作者头像 李华
网站建设 2026/7/6 17:55:54

Cursor试用限制终极解决方案:3分钟快速重置完整指南

Cursor试用限制终极解决方案&#xff1a;3分钟快速重置完整指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial request limit. / …

作者头像 李华
网站建设 2026/7/6 17:54:26

专业音频编辑革命:Audacity 4.0 免费开源音频处理全攻略

专业音频编辑革命&#xff1a;Audacity 4.0 免费开源音频处理全攻略 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 你是否曾经梦想拥有专业级的音频编辑能力&#xff0c;却苦于高昂的软件费用&#xff1f;Audaci…

作者头像 李华
网站建设 2026/7/6 17:53:12

PortBender安全防护指南:如何检测和防御TCP端口重定向攻击

PortBender安全防护指南&#xff1a;如何检测和防御TCP端口重定向攻击 【免费下载链接】PortBender TCP Port Redirection Utility 项目地址: https://gitcode.com/gh_mirrors/po/PortBender 在网络安全领域&#xff0c;TCP端口重定向攻击是一种隐蔽而危险的攻击技术&am…

作者头像 李华