Compare commits

...

2 Commits

Author SHA1 Message Date
Tom Alexander
3eb18a24bc Merge branch 'cache_nix_build'
Some checks failed
semver Build semver has succeeded
build-staging Build build-staging has failed
build Build build has succeeded
2026-10-23 20:58:01 -04:00
Tom Alexander
95a6a3eaa2 Separate out the install of dependencies so they can be cached as docker layers before the homepage source code is copied in. 2026-10-23 20:57:20 -04:00
2 changed files with 13 additions and 2 deletions

View File

@@ -15,9 +15,13 @@ EOF
RUN cp "$(nix build nixpkgs#cacert --print-out-paths)/etc/ssl/certs/ca-bundle.crt" /tmp/ca-bundle.crt
COPY . /tmp/build
COPY flake.nix flake.lock /tmp/build
WORKDIR /tmp/build
RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" nix build --no-link '.#dependencies'
COPY . /tmp/build
RUN --mount=type=ssh GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" nix build '.#docker_env'
# Export the built closure to a folder

View File

@@ -74,6 +74,11 @@
inherit (appliedOverlay.homepage)
release
;
dependencies = pkgs.symlinkJoin {
# This is to enable the docker image to install all the dependencies, cache that layer, and then build the final site after the org source files have been loaded. Without this, every update to the blog posts would result in recompiling everything.
name = "homepage-dependencies";
paths = appliedOverlay.homepage.dependencies;
};
docker_env = pkgs.stdenv.mkDerivation {
pname = "homepage-docker-env";
version = "0.0.0";
@@ -100,14 +105,16 @@
natter' = (natter.overlays.default final final).natter.release;
organic_ast_explorer' =
(organic_ast_explorer.overlays.default final final).organic_ast_explorer.release;
release = homepageScope.callPackage ./nix/package.nix {
dependencies = {
natter = natter';
organic_ast_explorer = organic_ast_explorer';
inherit homepage_private;
};
release = homepageScope.callPackage ./nix/package.nix dependencies;
in
{
inherit release;
dependencies = (builtins.attrValues dependencies);
}
);
};