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

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),仅供参考