/
ne1ghost
/
nix
Обзор
Документация
Войти
/
ne1ghost
/
nix
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/functional/shell.nix
98 строк
2 KB
Eelco Dolstra
Revert "Merge pull request #11826 from DeterminateSystems/revert-11804"
11 ноя 2024, 17:21
11 ноя 2024, 17:21
f29e786
Код
Авторство
О чём код?
{ inNixShell ? false, contentAddressed ? false, fooContents ? "foo" }: let cfg = import ./config.nix; in with cfg; let mkDerivation = if contentAddressed then args: cfg.mkDerivation ({ __contentAddressed = true; outputHashMode = "recursive"; outputHashAlgo = "sha256"; } // args) else cfg.mkDerivation; in let pkgs = rec { setupSh = builtins.toFile "setup" '' export VAR_FROM_STDENV_SETUP=foo for pkg in $buildInputs; do export PATH=$PATH:$pkg/bin done declare -a arr1=(1 2 "3 4" 5) declare -a arr2=(x $'\n' $'x\ny') fun() { echo blabla } runHook() { eval "''${!1}" } ''; stdenv = mkDerivation { name = "stdenv"; buildCommand = '' mkdir -p $out ln -s ${setupSh} $out/setup ''; }; shellDrv = mkDerivation { name = "shellDrv"; builder = "/does/not/exist"; VAR_FROM_NIX = "bar"; ASCII_PERCENT = "%"; ASCII_AT = "@"; TEST_inNixShell = if inNixShell then "true" else "false"; FOO = fooContents; inherit stdenv; outputs = ["dev" "out"]; } // { shellHook = abort "Ignore non-drv shellHook attr"; }; # https://github.com/NixOS/nix/issues/5431 # See nix-shell.sh polo = mkDerivation { name = "polo"; inherit stdenv; shellHook = '' echo Polo ''; }; # Used by nix-shell -p runCommand = name: args: buildCommand: mkDerivation (args // { inherit name buildCommand stdenv; }); foo = runCommand "foo" {} '' mkdir -p $out/bin echo 'echo ${fooContents}' > $out/bin/foo chmod a+rx $out/bin/foo ln -s ${shell} $out/bin/bash ''; bar = runCommand "bar" {} '' mkdir -p $out/bin echo 'echo bar' > $out/bin/bar chmod a+rx $out/bin/bar ''; bash = shell; bashInteractive = runCommand "bash" {} '' mkdir -p $out/bin ln -s ${shell} $out/bin/bash ''; # ruby "interpreter" that outputs "$@" ruby = runCommand "ruby" {} '' mkdir -p $out/bin echo 'printf %s "$*"' > $out/bin/ruby chmod a+rx $out/bin/ruby ''; inherit pkgs; }; in pkgs