Files
FlakeTest/flake.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});
};
}
);
}