d-u-w-eleventy-example/flake.nix

63 lines
1.5 KiB
Nix

{
description = "example environment for working with and building an Eleventy website";
inputs = {
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
inputs = with pkgs; [ nodejs yarn just eleventyEnv ];
eleventyEnv = pkgs.callPackage (
{ mkYarnModules }:
mkYarnModules {
pname = "example-webstite-env";
version = "3.5.0";
yarnLock = ./yarn.lock;
packageJSON = ./package.json;
}
) { };
exampleWebsite = pkgs.callPackage (
{ stdenvNoCC, lib, eleventyEnv, nodejs }:
stdenvNoCC.mkDerivation {
pname = "example-website";
version = (pkgs.lib.getVersion eleventyEnv.name);
src = ./.;
nativeBuildInputs = [
eleventyEnv
nodejs
];
ELEVENTY_ENVIRONMENT = "prod";
configurePhase = ''
ln -s ${eleventyEnv}/node_modules ./node_modules
'';
buildPhase = ''
npx eleventy
'';
installPhase = ''
cp -ar _site $out
'';
}
) { inherit eleventyEnv; };
in {
devShells.default = pkgs.mkShell {
nativeBuildInputs = inputs;
};
packages.example-website = exampleWebsite;
packages.eleventy-env = eleventyEnv;
}
);
}