dotfiles/shell-modules/default.nix

55 lines
1.1 KiB
Nix

{
nixpkgs,
flake-utils,
...
}:
let
imports = [
./shell.nix
./languages/python.nix
./languages/rust.nix
./utilities/cuda.nix
./utilities/jupyter.nix
];
in
{
mkShell =
attrs:
(flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
evaluated =
(nixpkgs.lib.evalModules {
modules = [ attrs ] ++ imports;
specialArgs = {
pkgs = pkgs;
};
}).config;
recUpdate = nixpkgs.lib.recursiveUpdate;
libPackages = evaluated.libPackages pkgs;
shell = recUpdate {
env =
evaluated.env
// (
if (libPackages != [ ]) then
{
LD_LIBRARY_PATH = nixpkgs.lib.makeLibraryPath libPackages;
}
else
{ }
);
packages = evaluated.packages ++ (evaluated.extraPackages pkgs) ++ libPackages;
} evaluated.override;
in
{
devShells.default = pkgs.mkShell shell;
}
));
}