forked from rarias/jungle
Compare commits
1 Commits
add-privat
...
quick-shel
| Author | SHA1 | Date | |
|---|---|---|---|
|
9deef256a2
|
28
overlay.nix
28
overlay.nix
@@ -7,33 +7,6 @@ let
|
|||||||
callPackage = final.callPackage;
|
callPackage = final.callPackage;
|
||||||
|
|
||||||
bscPkgs = {
|
bscPkgs = {
|
||||||
|
|
||||||
# override stdenv to add a sentinel to know if a derivation comes
|
|
||||||
# from unfree sources.
|
|
||||||
stdenv = prev.stdenv // {
|
|
||||||
mkDerivation =
|
|
||||||
args:
|
|
||||||
let
|
|
||||||
originalDrv = prev.stdenv.mkDerivation args;
|
|
||||||
checkLicense = l: if builtins.isAttrs l then !(l.free or true) else false;
|
|
||||||
|
|
||||||
licenses = if builtins.isList args.meta.license then args.meta.license else [ args.meta.license ];
|
|
||||||
|
|
||||||
hasUnfreeLicense =
|
|
||||||
if args ? meta && args.meta ? license then builtins.any checkLicense licenses else false;
|
|
||||||
in
|
|
||||||
if hasUnfreeLicense then
|
|
||||||
builtins.traceVerbose "adding nix-support/private to ${originalDrv.name or originalDrv.pname}" (
|
|
||||||
originalDrv.overrideAttrs (old: {
|
|
||||||
postInstall = (old.postInstall or "") + ''
|
|
||||||
mkdir -p $out/nix-support
|
|
||||||
touch $out/nix-support/private
|
|
||||||
'';
|
|
||||||
}))
|
|
||||||
else
|
|
||||||
originalDrv;
|
|
||||||
};
|
|
||||||
|
|
||||||
agenix = prev.callPackage ./pkgs/agenix/default.nix { };
|
agenix = prev.callPackage ./pkgs/agenix/default.nix { };
|
||||||
amd-uprof = prev.callPackage ./pkgs/amd-uprof/default.nix { };
|
amd-uprof = prev.callPackage ./pkgs/amd-uprof/default.nix { };
|
||||||
bench6 = callPackage ./pkgs/bench6/default.nix { };
|
bench6 = callPackage ./pkgs/bench6/default.nix { };
|
||||||
@@ -46,6 +19,7 @@ let
|
|||||||
cudainfo = prev.callPackage ./pkgs/cudainfo/default.nix { };
|
cudainfo = prev.callPackage ./pkgs/cudainfo/default.nix { };
|
||||||
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
|
#extrae = callPackage ./pkgs/extrae/default.nix { }; # Broken and outdated
|
||||||
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
|
gpi-2 = callPackage ./pkgs/gpi-2/default.nix { };
|
||||||
|
quickShell = import ./pkgs/quick-shell/default.nix { pkgs = final; };
|
||||||
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
|
intelPackages_2023 = callPackage ./pkgs/intel-oneapi/2023.nix { };
|
||||||
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
jemallocNanos6 = callPackage ./pkgs/nanos6/jemalloc.nix { };
|
||||||
# FIXME: Extend this to all linuxPackages variants. Open problem, see:
|
# FIXME: Extend this to all linuxPackages variants. Open problem, see:
|
||||||
|
|||||||
@@ -50,15 +50,11 @@ let
|
|||||||
];
|
];
|
||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
awk -F': ' '\
|
awk -F': ' '\
|
||||||
BEGIN { print "[ {" } \
|
BEGIN { print "[ {" } \
|
||||||
NR>1 && /^Package: / { print "} {"; } \
|
NR>1 && /^Package: / { print "} {"; } \
|
||||||
/: / { printf "%s = \"%s\";\n", $1, $2 } \
|
/: / { printf "%s = \"%s\";\n", $1, $2 } \
|
||||||
END { print "} ]" }' $srcs > $out
|
END { print "} ]" }' $srcs > $out
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -92,15 +88,11 @@ let
|
|||||||
nativeBuildInputs = [ dpkg ];
|
nativeBuildInputs = [ dpkg ];
|
||||||
phases = [ "installPhase" ];
|
phases = [ "installPhase" ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
for src in $srcs; do
|
for src in $srcs; do
|
||||||
echo "unpacking $src"
|
echo "unpacking $src"
|
||||||
dpkg -x $src $out
|
dpkg -x $src $out
|
||||||
done
|
done
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
inherit meta;
|
inherit meta;
|
||||||
@@ -139,8 +131,6 @@ let
|
|||||||
phases = [ "installPhase" "fixupPhase" ];
|
phases = [ "installPhase" "fixupPhase" ];
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out/{bin,etc,lib,include}
|
mkdir -p $out/{bin,etc,lib,include}
|
||||||
mkdir -p $out/share/man
|
mkdir -p $out/share/man
|
||||||
|
|
||||||
@@ -157,8 +147,6 @@ let
|
|||||||
# Broken due missing libze_loader.so.1
|
# Broken due missing libze_loader.so.1
|
||||||
rsync -a --exclude IMB-MPI1-GPU bin/ $out/bin/
|
rsync -a --exclude IMB-MPI1-GPU bin/ $out/bin/
|
||||||
popd
|
popd
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
'';
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
for i in $out/bin/mpi* ; do
|
for i in $out/bin/mpi* ; do
|
||||||
@@ -197,8 +185,6 @@ let
|
|||||||
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
autoPatchelfIgnoreMissingDeps = [ "libhwloc.so.5" ];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out/lib
|
mkdir -p $out/lib
|
||||||
|
|
||||||
cd $src
|
cd $src
|
||||||
@@ -207,8 +193,6 @@ let
|
|||||||
# Libraries
|
# Libraries
|
||||||
rsync -a lib/intel64/gcc4.8/ $out/lib/
|
rsync -a lib/intel64/gcc4.8/ $out/lib/
|
||||||
popd
|
popd
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
inherit meta;
|
inherit meta;
|
||||||
@@ -244,8 +228,6 @@ let
|
|||||||
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
autoPatchelfIgnoreMissingDeps = [ "libsycl.so.6" ];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out/{bin,lib,include}
|
mkdir -p $out/{bin,lib,include}
|
||||||
mkdir -p $out/share/man
|
mkdir -p $out/share/man
|
||||||
|
|
||||||
@@ -270,8 +252,6 @@ let
|
|||||||
rsync -a compiler/include/ $out/include/
|
rsync -a compiler/include/ $out/include/
|
||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
inherit meta;
|
inherit meta;
|
||||||
@@ -313,8 +293,6 @@ let
|
|||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out/{bin,lib,include}
|
mkdir -p $out/{bin,lib,include}
|
||||||
mkdir -p $out/share/man
|
mkdir -p $out/share/man
|
||||||
|
|
||||||
@@ -340,10 +318,7 @@ let
|
|||||||
|
|
||||||
# Fix lib_lin
|
# Fix lib_lin
|
||||||
ln -s $out/lib $out/lib_lin
|
ln -s $out/lib $out/lib_lin
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
inherit meta;
|
inherit meta;
|
||||||
@@ -406,8 +381,6 @@ let
|
|||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out/{bin,lib}
|
mkdir -p $out/{bin,lib}
|
||||||
mkdir -p $out/share/man
|
mkdir -p $out/share/man
|
||||||
|
|
||||||
@@ -435,8 +408,6 @@ let
|
|||||||
# Manuals
|
# Manuals
|
||||||
rsync -a documentation/en/man/common/ $out/share/man/
|
rsync -a documentation/en/man/common/ $out/share/man/
|
||||||
popd
|
popd
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
inherit meta;
|
inherit meta;
|
||||||
|
|||||||
76
pkgs/quick-shell/default.nix
Normal file
76
pkgs/quick-shell/default.nix
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
|
||||||
|
# This builds devshells using passthru to populate packages and inputsFrom
|
||||||
|
# lazily.
|
||||||
|
#
|
||||||
|
# Packages prefixed with @ are added to inputsFrom and the rest are
|
||||||
|
# added to packages. This makes it possible to obtain a devshell with combining
|
||||||
|
# inputsFrom and packages from the comand line:
|
||||||
|
#
|
||||||
|
# $ nix develop .#quickShell.@nosv.clang-tools.ovni.@tampi
|
||||||
|
#
|
||||||
|
# is equivalent to:
|
||||||
|
#
|
||||||
|
# with pkgs; mkShell {
|
||||||
|
# packages = [ clang-tools ovni ];
|
||||||
|
# inputsFrom = [ nosv tampi ];
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (builtins) attrNames getAttr listToAttrs;
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
|
||||||
|
# list of all packages' names
|
||||||
|
names = attrNames pkgs;
|
||||||
|
|
||||||
|
# generate a attributes containing the selected packages + all the available
|
||||||
|
# packages in names ("" -> packages and "@" -> inputsFrom)
|
||||||
|
go =
|
||||||
|
selected:
|
||||||
|
let
|
||||||
|
mkAttrs =
|
||||||
|
isInputs:
|
||||||
|
(map (
|
||||||
|
name:
|
||||||
|
let
|
||||||
|
pkg = getAttr name pkgs;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = (if isInputs then "@" else "") + name;
|
||||||
|
value = go (
|
||||||
|
if isInputs then
|
||||||
|
{
|
||||||
|
inherit (selected) packages;
|
||||||
|
inputsFrom = selected.inputsFrom ++ [ pkg ];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
inherit (selected) inputsFrom;
|
||||||
|
packages = selected.packages ++ [ pkg ];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
) names);
|
||||||
|
|
||||||
|
attrs = listToAttrs ((mkAttrs true) ++ (mkAttrs false));
|
||||||
|
|
||||||
|
drv = pkgs.mkShell {
|
||||||
|
inherit (selected) inputsFrom packages;
|
||||||
|
name = # build a label from inputsFrom
|
||||||
|
if (selected.inputsFrom == [ ]) then
|
||||||
|
"nix-quick-shell"
|
||||||
|
else
|
||||||
|
lib.concatStringsSep "-" (map (v: v.pname or v.name or "unknown") selected.inputsFrom);
|
||||||
|
};
|
||||||
|
in
|
||||||
|
drv.overrideAttrs {
|
||||||
|
passthru = attrs // {
|
||||||
|
_passthru = drv.passthru;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
go {
|
||||||
|
inputsFrom = [ ];
|
||||||
|
packages = [ ];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user