111 lines
3.0 KiB
Nix
111 lines
3.0 KiB
Nix
{ debug, intrinsics, list, number, set, string, type, ... } @ libs:
|
|
let
|
|
exists#: path -> bool
|
|
= intrinsics.pathExists;
|
|
|
|
fetchGit#: { ... } -> path
|
|
= intrinsics.fetchGit;
|
|
|
|
fetchMercurial#: { ... } -> path
|
|
= intrinsics.fetchMercurial;
|
|
|
|
fetchTarball#: { ... } -> path
|
|
= intrinsics.fetchTarball;
|
|
|
|
fetchURL#: string | { url: string, sha256: string } -> path
|
|
= intrinsics.fetchurl;
|
|
|
|
filterSource#: (path -> string -> bool) -> path -> path
|
|
= intrinsics.filterSource;
|
|
|
|
find
|
|
= intrinsics.findFile;
|
|
|
|
from#: path | { path: path, name: string?, filter: F?, recursive: bool = true, sha256: string? } | ToString -> path
|
|
= this:
|
|
if isInstanceOf this
|
|
then
|
|
this
|
|
else if set.isInstanceOf this
|
|
&& this ? path
|
|
&& intrinsics ? path
|
|
then
|
|
intrinsics.path this
|
|
else
|
|
./${string this};
|
|
|
|
fromSet#: string -> (string -> T -> string) -> { string -> T } -> path
|
|
= fileName:
|
|
converter:
|
|
{ ... } @ dictionary:
|
|
toFile fileName ( string.concat ( set.values ( set.map converter dictionary ) ) );
|
|
|
|
getBaseName#: path -> string
|
|
= intrinsics.baseNameOf;
|
|
|
|
getDirectory#: path -> string
|
|
= intrinsics.dirOf;
|
|
|
|
getPlaceholder#: string -> string
|
|
= intrinsics.placeholder;
|
|
|
|
hash#: string -> path -> string
|
|
= intrinsics.hashFile;
|
|
|
|
import#: path -> any
|
|
= fileName:
|
|
intrinsics.scopedImport
|
|
(intrinsics.import ./scope.nix libs fileName)
|
|
fileName;
|
|
|
|
import' = intrinsics.import;
|
|
|
|
importScoped#: path -> { ... } -> any
|
|
= { ... } @ scope:
|
|
fileName:
|
|
intrinsics.scopedImport
|
|
((intrinsics.import ./scope.nix libs fileName) // scope)
|
|
fileName;
|
|
|
|
isInstanceOf = intrinsics.isPath or (value: type.getPrimitive value == "path");
|
|
|
|
nixPaths#: [ { path: string, prefix: string } ]?
|
|
= intrinsics.nixPath or null;
|
|
|
|
orNull
|
|
= value:
|
|
isInstanceOf value || value == null;
|
|
|
|
readDirectory#: path -> { string -> string }
|
|
= intrinsics.readDir;
|
|
|
|
readFile#: path -> string
|
|
= intrinsics.readFile;
|
|
|
|
storeDirectory#: string?
|
|
= intrinsics.storeDir or null;
|
|
|
|
storePath#: path -> string
|
|
= intrinsics.storePath;
|
|
|
|
toFile#: string -> string -> path
|
|
= intrinsics.toFile;
|
|
|
|
toStore#: path -> string
|
|
= file:
|
|
if isInstanceOf file
|
|
then
|
|
"${file}"
|
|
else
|
|
debug.panic "toStore" "Path expected!";
|
|
in
|
|
type "path"
|
|
{
|
|
isPrimitive = true;
|
|
|
|
inherit(intrinsics) path;
|
|
|
|
inherit getBaseName getDirectory exists fetchGit fetchTarball fetchURL filterSource find from fromSet getPlaceholder hash import
|
|
import' importScoped isInstanceOf nixPaths orNull readDirectory readFile storeDirectory storePath toFile toStore;
|
|
}
|