nix-files/pkgs/additional/sane-nix-files/default.nix

55 lines
1.2 KiB
Nix

{ stdenv ? null }:
with builtins;
let
src = filterSource
(path: type:
let name = baseNameOf path;
in !(
# mimic .gitignore
(name == ".working")
|| (name == "result")
|| (match "^result-.*" name != null)
))
../../../.
;
fakeDeriv = {
# in the bootstrap path, we don't have enough available to actually
# link these files into a derivation.
# but that's ok, because the caller immediately `import`s it anyway,
# so just yield something importable.
outPath = src;
};
realDeriv = stdenv.mkDerivation {
name = "sane-nix-files";
inherit src;
installPhase = ''
ln -s "$src" "$out"
'';
dontFixup = true;
};
# alternative implementation which always returns a real derivation,
# but requires a pre-compiled statically-linked `sln` or `cp` implementation.
# self = derivation {
# name = "sane-nix-files";
# system = "x86_64-linux";
# # builder = "${./sln}";
# # args = [
# # src
# # self.outPath
# # ];
# builder = "/bin/sh";
# args = [
# "-c"
# "${./sln} ${src} $out"
# ];
# };
in
if stdenv == null then
fakeDeriv
else
realDeriv