From d709014b31f8677e244a2ca94b8d6598e3684de1 Mon Sep 17 00:00:00 2001 From: mat ess Date: Sat, 27 Aug 2022 15:08:42 -0400 Subject: [PATCH] Rework nix + docker --- Caddyfile | 2 +- flake.nix | 17 +++++++++-------- nix/default.nix | 7 +++++++ nix/deploy.nix | 4 ++-- nix/docker.nix | 8 +++++--- nix/{theme.nix => themes.nix} | 0 6 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 nix/default.nix rename nix/{theme.nix => themes.nix} (100%) diff --git a/Caddyfile b/Caddyfile index 084e996..17a86ce 100644 --- a/Caddyfile +++ b/Caddyfile @@ -8,7 +8,7 @@ http://static-mat-services.fly.dev { } :8080 { - root * /var/www + root * {$SITE_ROOT} encode gzip file_server diff --git a/flake.nix b/flake.nix index 6aec350..4ec97a6 100644 --- a/flake.nix +++ b/flake.nix @@ -17,10 +17,9 @@ systems = inputs.nixpkgs.lib.systems.flakeExposed; perSystem = { config, self', inputs', pkgs, system, ... }: let - inherit (pkgs) callPackage; - optimize-images = callPackage ./nix/optimize-images.nix { }; - inherit (callPackage ./nix/fonts.nix { }) copyFonts linkFonts; - inherit (callPackage ./nix/theme.nix { + inherit (pkgs.callPackage ./nix { }) deploy docker fonts optimize-images themes; + inherit (fonts) copyFonts linkFonts; + inherit (themes { theme = inputs.apollo; themeEnabled = false; }) copyTheme linkTheme; @@ -38,17 +37,19 @@ ''; installPhase = '' cp -r public $out - cp Caddyfile $out ''; }; devShells.default = with pkgs; mkShell { packages = [ flyctl optimize-images zola ]; shellHook = linkTheme + linkFonts; }; - packages.docker = callPackage ./nix/docker.nix { site = self'.packages.default; }; + packages.docker = docker { + caddyfile = builtins.readFile ./Caddyfile; + site = self'.packages.default; + }; apps.deploy.program = - let deploy = callPackage ./nix/deploy.nix { dockerImg = self'.packages.docker; }; - in "${deploy}/bin/deploy"; + let deploy' = deploy { dockerImage = self'.packages.docker; }; + in "${deploy'}/bin/deploy"; }; }; } diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 0000000..dd06361 --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,7 @@ +{ callPackage }: { + deploy = { dockerImage }: callPackage ./deploy.nix { inherit dockerImage; }; + docker = { caddyfile, site }: callPackage ./docker.nix { inherit caddyfile site; }; + fonts = callPackage ./fonts.nix { }; + optimize-images = callPackage ./optimize-images.nix { }; + themes = { theme, themeEnabled }: callPackage ./themes.nix { inherit theme themeEnabled; }; +} diff --git a/nix/deploy.nix b/nix/deploy.nix index e8a040b..b3bd8aa 100644 --- a/nix/deploy.nix +++ b/nix/deploy.nix @@ -1,9 +1,9 @@ -{ lib, docker, flyctl, formats, writeShellScriptBin, dockerImg }: +{ lib, docker, flyctl, formats, writeShellScriptBin, dockerImage }: writeShellScriptBin "deploy" '' set -euxo pipefail export PATH="${lib.makeBinPath [(docker.override { clientOnly = true; }) flyctl]}:$PATH" - archive=${dockerImg} + archive=${dockerImage} image=$(docker load < $archive | awk '{ print $3; }') flyctl deploy -i $image '' diff --git a/nix/docker.nix b/nix/docker.nix index f7d8fbc..0d9a9eb 100644 --- a/nix/docker.nix +++ b/nix/docker.nix @@ -1,11 +1,13 @@ -{ dockerTools, caddy, site }: +{ dockerTools, caddy, caddyfile, site }: dockerTools.buildLayeredImage { name = site.pname; tag = site.version; - contents = [ site caddy ]; config = { - Cmd = [ "${caddy}/bin/caddy" "run" "-config" "${site}/Caddyfile" ]; + Cmd = [ "${caddy}/bin/caddy" "run" "-config" "${caddyfile}" ]; + Env = [ + "SITE_ROOT=${site}" + ]; }; } diff --git a/nix/theme.nix b/nix/themes.nix similarity index 100% rename from nix/theme.nix rename to nix/themes.nix