Files
nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/utils.nix
NAHO c8d4dabc43 pkgs: remove optional builtins prefixes from prelude functions
Remove optional builtins prefixes from prelude functions by running:

    builtins=(
      abort
      baseNameOf
      break
      derivation
      derivationStrict
      dirOf
      false
      fetchGit
      fetchMercurial
      fetchTarball
      fetchTree
      fromTOML
      import
      isNull
      map
      null
      placeholder
      removeAttrs
      scopedImport
      throw
      toString
      true
    )

    fd \
      --type file \
      . \
      pkgs \
      --exec-batch sed --in-place --regexp-extended "
        s/\<builtins\.($(
          printf '%s\n' "${builtins[@]}" |
            paste --delimiter '|' --serial -
        ))\>/\1/g
      "

    nix fmt
2025-10-04 19:02:37 +02:00

80 lines
1.8 KiB
Nix

{
lib,
buildPlatform,
callPackage,
kaem,
mescc-tools-extra,
checkMeta,
}:
rec {
derivationWithMeta =
attrs:
let
passthru = attrs.passthru or { };
validity = checkMeta.assertValidity { inherit meta attrs; };
meta = checkMeta.commonMeta { inherit validity attrs; };
baseDrv = derivation (
{
inherit (buildPlatform) system;
inherit (meta) name;
}
// (removeAttrs attrs [
"meta"
"passthru"
])
);
passthru' =
passthru
// lib.optionalAttrs (passthru ? tests) {
tests = lib.mapAttrs (_: f: f baseDrv) passthru.tests;
};
in
lib.extendDerivation validity.handled (
{
inherit meta;
passthru = passthru';
}
// passthru'
) baseDrv;
writeTextFile =
{
name, # the name of the derivation
text,
executable ? false, # run chmod +x ?
destination ? "", # relative path appended to $out eg "/bin/foo"
}:
derivationWithMeta {
inherit name text;
passAsFile = [ "text" ];
builder = "${kaem}/bin/kaem";
args = [
"--verbose"
"--strict"
"--file"
(builtins.toFile "write-text-file.kaem" (
''
target=''${out}''${destination}
''
+ lib.optionalString (dirOf destination == ".") ''
mkdir -p ''${out}''${destinationDir}
''
+ ''
cp ''${textPath} ''${target}
''
+ lib.optionalString executable ''
chmod 555 ''${target}
''
))
];
PATH = lib.makeBinPath [ mescc-tools-extra ];
destinationDir = dirOf destination;
inherit destination;
};
writeText = name: text: writeTextFile { inherit name text; };
}