nix-ld: init at 1.0.0 + nixos module

This commit is contained in:
Jörg Thalheim 2022-03-15 13:22:18 +01:00
parent 9c0dd18492
commit a98ea7e6f8
6 changed files with 85 additions and 0 deletions

View file

@ -181,6 +181,7 @@
./programs/mtr.nix
./programs/nano.nix
./programs/nbd.nix
./programs/nix-ld.nix
./programs/neovim.nix
./programs/nm-applet.nix
./programs/npm.nix

View file

@ -0,0 +1,12 @@
{ pkgs, lib, config, ... }:
{
meta.maintainers = [ lib.maintainers.mic92 ];
options = {
programs.nix-ld.enable = lib.mkEnableOption ''nix-ld, Documentation: <link xlink:href="https://github.com/Mic92/nix-ld"/>'';
};
config = lib.mkIf config.programs.nix-ld.enable {
systemd.tmpfiles.rules = [
"L+ ${pkgs.nix-ld.ldPath} - - - - ${pkgs.nix-ld}/libexec/nix-ld"
];
};
}

View file

@ -355,6 +355,7 @@ in
nginx-sso = handleTest ./nginx-sso.nix {};
nginx-variants = handleTest ./nginx-variants.nix {};
nitter = handleTest ./nitter.nix {};
nix-ld = handleTest ./nix-ld {};
nix-serve = handleTest ./nix-serve.nix {};
nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
nixops = handleTest ./nixops/default.nix {};

20
nixos/tests/nix-ld.nix Normal file
View file

@ -0,0 +1,20 @@
import ./make-test-python.nix ({ lib, pkgs, ...} :
{
name = "nix-ld";
nodes.machine = { pkgs, ... }: {
programs.nix-ld.enable = true;
environment.systemPackages = [
(pkgs.runCommand "patched-hello" {} ''
install -D -m755 ${pkgs.hello}/bin/hello $out/bin/hello
patchelf $out/bin/hello --set-interpreter ${pkgs.nix-ld.ldPath}
'')
];
};
testScript = ''
start_all()
path = "${pkgs.stdenv.cc}/nix-support/dynamic-linker"
with open(path) as f:
real_ld = f.read().strip()
machine.succeed(f"NIX_LD={real_ld} hello")
'';
})

View file

@ -0,0 +1,49 @@
{ stdenv, meson, ninja, lib, nixosTests, fetchFromGitHub }:
let
self = stdenv.mkDerivation {
name = "nix-ld";
src = fetchFromGitHub {
owner = "Mic92";
repo = "nix-ld";
rev = "1.0.0";
sha256 = "sha256-QYPg8wPpq7q5Xd1jW17Lh36iKFSsVkN/gWYoQRv2XoU=";
};
doCheck = true;
nativeBuildInputs = [ meson ninja ];
mesonFlags = [
"-Dnix-system=${stdenv.system}"
];
hardeningDisable = [
"stackprotector"
];
postInstall = ''
mkdir -p $out/nix-support
basename $(< ${stdenv.cc}/nix-support/dynamic-linker) > $out/nix-support/ld-name
'';
passthru.tests.nix-ld = nixosTests.nix-ld;
passthru.ldPath = let
libDir = if stdenv.system == "x86_64-linux" ||
stdenv.system == "mips64-linux" ||
stdenv.system == "powerpc64le-linux"
then
"/lib64"
else
"/lib";
ldName = lib.fileContents "${self}/nix-support/ld-name";
in "${libDir}/${ldName}";
meta = with lib; {
description = "Run unpatched dynamic binaries on NixOS";
homepage = "https://github.com/Mic92/nix-ld";
license = licenses.mit;
maintainers = with maintainers; [ mic92 ];
platforms = platforms.linux;
};
};
in self

View file

@ -27767,6 +27767,8 @@ with pkgs;
nixos-shell = callPackage ../tools/virtualization/nixos-shell {};
nix-ld = callPackage ../os-specific/linux/nix-ld {};
noaa-apt = callPackage ../applications/radio/noaa-apt { };
node-problem-detector = callPackage ../applications/networking/cluster/node-problem-detector { };