{ description = "A simple homepage"; inputs.flakeUtils.url = "github:numtide/flake-utils"; inputs.nix-filter.url = "github:numtide/nix-filter"; inputs.nixpkgs.url = "github:NixOS/nixpkgs"; outputs = { self, nixpkgs, flakeUtils, nix-filter }: with flakeUtils.lib; with nix-filter.lib; eachDefaultSystem ( system: let pkgs = import nixpkgs { inherit system; }; clientSrc = filter { root = ./client; include = [ "default.nix" "elm.json" "elm-srcs.nix" "package.json" "registry.dat" "yarn.lock" "yarn-project.nix" ".yarnrc.yml" ".parcelrc" (inDirectory ".yarn") (inDirectory "src") ]; exclude = [ ]; }; serverSrc = filter { root = ./server; include = [ (inDirectory "app") "package.yaml" "default.nix" ]; }; client = pkgs.callPackage clientSrc { inherit pkgs nix-filter; }; server = pkgs.haskellPackages.callPackage serverSrc { frontend = self.packages.${system}.homepage; }; server-dev = pkgs.haskellPackages.callPackage serverSrc { frontend = self.packages.${system}.homepage-dev; }; in rec { packages = { inherit (client) yarnPkgs homepage homepage-dev; inherit (server-dev) server simple; }; defaultPackage = self.packages.${system}.simple; devShell = with pkgs; with lib; mkShell { name = self.defaultPackage.${system}.name; nativeBuildInputs = concatMap (x: flatten [ (x.buildInputs or [ ]) (x.nativeBuildInputs or [ ]) ]) (attrValues self.packages.${system}); }; } ); }