1{ inputs, ... }:
2
3{
4 perSystem =
5 {
6 config,
7 lib,
8 system,
9 ...
10 }:
11 {
12 devShells =
13 let
14 pkgs = import inputs.nixpkgs { inherit system; };
15 stdenv = pkgs.stdenv;
16 scripts = config.packages.python-scripts;
17 in
18 lib.pipe (config.packages) [
19 (lib.concatMapAttrs (
20 name: package: {
21 ${name} = pkgs.mkShell {
22 name = "${name}";
23 inputsFrom = [ package ];
24 shellHook = ''
25 echo "Entering ${name} devShell"
26 '';
27 };
28 "${name}-extra" =
29 if (name == "python-scripts") then
30 null
31 else
32 pkgs.mkShell {
33 name = "${name}-extra";
34 inputsFrom = [
35 package
36 scripts
37 ];
38 # Extra packages that *may* be used by some scripts
39 packages = [
40 pkgs.python3Packages.tiktoken
41 ];
42 shellHook = ''
43 echo "Entering ${name} devShell"
44 addToSearchPath "LD_LIBRARY_PATH" "${lib.getLib stdenv.cc.cc}/lib"
45 '';
46 };
47 }
48 ))
49 (lib.filterAttrs (name: value: value != null))
50 ];
51 };
52}