Build is now nix!
This commit is contained in:
@@ -3,3 +3,4 @@ public/*
|
|||||||
.hugo_build.lock
|
.hugo_build.lock
|
||||||
None
|
None
|
||||||
.direnv
|
.direnv
|
||||||
|
result
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
FROM klakegg/hugo:0.107.0 AS build
|
|
||||||
|
|
||||||
RUN mkdir /build
|
|
||||||
WORKDIR /build
|
|
||||||
COPY . /build/
|
|
||||||
RUN hugo -v
|
|
||||||
|
|
||||||
FROM nginx:latest
|
|
||||||
COPY --from=build /build/public/ /usr/share/nginx/html/
|
|
||||||
@@ -25,7 +25,9 @@
|
|||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
];
|
];
|
||||||
perSystem = { config, pkgs, self', ... }: {
|
perSystem = { config, pkgs, self', ... }: let
|
||||||
|
lib = pkgs.lib;
|
||||||
|
in {
|
||||||
devshells.default = {
|
devshells.default = {
|
||||||
commands = [
|
commands = [
|
||||||
{
|
{
|
||||||
@@ -37,13 +39,88 @@
|
|||||||
category = "server";
|
category = "server";
|
||||||
help = "Start the development server";
|
help = "Start the development server";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
package = self'.packages.prod-server;
|
||||||
|
category = "server";
|
||||||
|
help = "Start the prod server";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
#devshell.startup.server.text = "${pkgs.hugo}/bin/hugo serve";
|
#devshell.startup.server.text = "${pkgs.hugo}/bin/hugo serve";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
packages = {
|
||||||
|
default = pkgs.dockerTools.buildLayeredImage {
|
||||||
|
name = "gregs-homepage";
|
||||||
|
tag = "latest";
|
||||||
|
contents = [
|
||||||
|
self'.packages.site
|
||||||
|
(pkgs.buildEnv {
|
||||||
|
name = "image";
|
||||||
|
paths = with pkgs; [
|
||||||
|
dockerTools.fakeNss
|
||||||
|
nginx
|
||||||
|
];
|
||||||
|
pathsToLink = [ "/bin" "/etc" "/var" ];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
fakeRootCommands = ''
|
||||||
|
mkdir tmp
|
||||||
|
chmod 0777 tmp
|
||||||
|
'';
|
||||||
|
config = {
|
||||||
|
Cmd = [ (lib.getExe pkgs.nginx) "-c" self'.packages.nginx-config "-e" "stderr" ];
|
||||||
|
Port = [ 80 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
site = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "Greg's homepage";
|
||||||
|
nativeBuildInputs = [ pkgs.hugo ];
|
||||||
|
buildPhase = ''
|
||||||
|
hugo -v
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -R public/* public/.* $out
|
||||||
|
'';
|
||||||
|
src = ./.;
|
||||||
|
};
|
||||||
|
nginx-config = pkgs.writeText "nginx.conf" ''
|
||||||
|
user root root;
|
||||||
|
worker_processes 10;
|
||||||
|
pid /tmp/nginx.pid;
|
||||||
|
daemon off;
|
||||||
|
|
||||||
|
error_log stderr;
|
||||||
|
|
||||||
|
events {
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
access_log stdout;
|
||||||
|
include ${pkgs.nginx}/conf/mime.types;
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
root ${self'.packages.site};
|
||||||
|
autoindex off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
process-compose = {
|
process-compose = {
|
||||||
dev-server.settings.processes = {
|
dev-server.settings.processes = {
|
||||||
hugo.command = "${pkgs.hugo}/bin/hugo serve";
|
hugo.command = "${lib.getExe pkgs.hugo} serve";
|
||||||
|
};
|
||||||
|
prod-server.settings.processes = {
|
||||||
|
import.command = "${lib.getExe pkgs.podman} load -i ${self'.packages.default}";
|
||||||
|
run = {
|
||||||
|
command = "${lib.getExe pkgs.podman} run --rm -p 8000:80 gregs-homepage:latest";
|
||||||
|
depends_on.import.condition = "process_completed_successfully";
|
||||||
|
readiness_probe.http_get = {
|
||||||
|
host = "localhost";
|
||||||
|
port = 8000;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user