diff --git a/flake.nix b/flake.nix index cf65e5a..e0f05d9 100644 --- a/flake.nix +++ b/flake.nix @@ -10,11 +10,19 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; + inherit (pkgs) lib; + # Check if project has a shell.nix + hasShell = dir: (builtins.readDir ./${dir}) ? "shell.nix"; + + # Get all project directories currentDir = builtins.readDir ./.; - dirs = pkgs.lib.filterAttrs (_: v: v == "directory") currentDir; - in { - packages = builtins.mapAttrs (dir: _: pkgs.callPackage ./${dir} {}) dirs; - devShells = builtins.mapAttrs (dir: _: pkgs.callPackage ./${dir}/shell.nix {}) dirs; - }); + dirs = lib.filterAttrs (_: v: v == "directory") currentDir; + in + lib.concatMapAttrs (dir: _: { + packages.${dir} = pkgs.callPackage ./${dir} {}; + } // lib.optionalAttrs (hasShell dir) { + devShells.${dir} = pkgs.callPackage ./${dir}/shell.nix {}; + }) dirs + ); }