improvements for final version of parcel2
This commit is contained in:
91
flake.nix
91
flake.nix
@@ -2,49 +2,68 @@
|
||||
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 }:
|
||||
with flakeUtils.lib;
|
||||
outputs = { self, nixpkgs, flakeUtils, nix-filter }:
|
||||
with flakeUtils.lib; with nix-filter.lib;
|
||||
eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
|
||||
clientFilter = p: t: builtins.all (x: baseNameOf p != x) [
|
||||
".parcel-cache"
|
||||
"dist"
|
||||
"elm-stuff"
|
||||
"node_modules"
|
||||
"result"
|
||||
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 = [
|
||||
];
|
||||
};
|
||||
|
||||
clientSrc = pkgs.lib.cleanSourceWith {
|
||||
filter = clientFilter;
|
||||
src = ./client;
|
||||
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});
|
||||
};
|
||||
|
||||
serverSrc = pkgs.lib.cleanSourceWith {
|
||||
filter = clientFilter;
|
||||
src = ./server;
|
||||
};
|
||||
|
||||
client = pkgs.callPackage clientSrc {
|
||||
inherit pkgs;
|
||||
};
|
||||
|
||||
server = pkgs.haskellPackages.callPackage serverSrc {
|
||||
frontend = self.packages.${system}.homepage;
|
||||
};
|
||||
|
||||
in
|
||||
rec {
|
||||
packages = {
|
||||
inherit (client) hello yarnPkgs homepage;
|
||||
inherit (server) server simple;
|
||||
};
|
||||
defaultPackage = self.packages.${system}.simple;
|
||||
devShell = self.defaultPackage.${system};
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user