70 lines
1.9 KiB
Nix
70 lines
1.9 KiB
Nix
{
|
|
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});
|
|
};
|
|
}
|
|
);
|
|
}
|