{ description = "Nix sandbox for CS4306 assignments"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; systems.url = "github:nix-systems/default"; }; outputs = { self, nixpkgs, systems, ... }: let subdirs = [ "assignment1" "assignment2" "project1" "project2" ]; eachSystem = nixpkgs.lib.genAttrs (import systems); importFromSubdirs = file: eachSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; in pkgs.lib.mergeAttrsList (builtins.map (d: builtins.mapAttrs (_: v: pkgs.callPackage v {}) (import ./${d}/${file})) subdirs)); in { packages = importFromSubdirs "default.nix"; checks = importFromSubdirs "test.nix"; devShells = eachSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; in { default = pkgs.callPackage ./shell.nix {}; }); }; }