123 lines
3.6 KiB
Nix
123 lines
3.6 KiB
Nix
{
|
|
description = "Fizz.buzz homepage";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
natter = {
|
|
url = "git+https://code.fizz.buzz/talexander/natter.git";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
organic_ast_explorer = {
|
|
url = "git+https://code.fizz.buzz/talexander/organic_ast_explorer.git";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
natter,
|
|
organic_ast_explorer,
|
|
}:
|
|
let
|
|
forAllSystems =
|
|
func:
|
|
builtins.listToAttrs (
|
|
map (system: {
|
|
name = system;
|
|
value = func system;
|
|
}) nixpkgs.lib.systems.flakeExposed
|
|
);
|
|
in
|
|
{
|
|
devShells = forAllSystems (
|
|
system:
|
|
let
|
|
overlays = [
|
|
natter.overlays.default
|
|
organic_ast_explorer.overlays.default
|
|
];
|
|
pkgs = import nixpkgs {
|
|
inherit system overlays;
|
|
};
|
|
in
|
|
{
|
|
default = pkgs.mkShell {
|
|
nativeBuildInputs = [
|
|
];
|
|
buildInputs = with pkgs; [
|
|
pkgs.natter.release
|
|
];
|
|
};
|
|
}
|
|
);
|
|
packages = forAllSystems (
|
|
system:
|
|
let
|
|
overlays = [
|
|
natter.overlays.default
|
|
organic_ast_explorer.overlays.default
|
|
];
|
|
pkgs = import nixpkgs {
|
|
inherit system overlays;
|
|
};
|
|
appliedOverlay = self.overlays.default pkgs pkgs;
|
|
nginx_conf = pkgs.replaceVars "${./docker/server/nginx.conf}" {
|
|
web_root = appliedOverlay.homepage.release;
|
|
mime_types = "${pkgs.nginx}/conf/mime.types";
|
|
headers_include = "${./docker/server/headers.include}";
|
|
};
|
|
in
|
|
rec {
|
|
default = release;
|
|
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";
|
|
|
|
dontUnpack = true;
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp ${nginx_conf} $out/nginx.conf
|
|
ln -sf ${pkgs.nginx}/bin/nginx $out/nginx
|
|
'';
|
|
};
|
|
}
|
|
);
|
|
overlays.default = final: prev: {
|
|
homepage = final.lib.makeScope final.newScope (
|
|
homepageScope:
|
|
let
|
|
homepage_private = fetchGit {
|
|
url = "git@code.fizz.buzz:talexander/homepage_private.git";
|
|
ref = "main";
|
|
rev = "89ba9628bf3e596345bc83f59cef5a2943584894";
|
|
};
|
|
natter' = (natter.overlays.default final final).natter.release;
|
|
organic_ast_explorer' =
|
|
(organic_ast_explorer.overlays.default final final).organic_ast_explorer.release;
|
|
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);
|
|
}
|
|
);
|
|
};
|
|
};
|
|
}
|