This commit is contained in:
parent
a8f1ce9acd
commit
7375f9c81b
14 changed files with 101 additions and 85 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -24,3 +24,6 @@ PragmataPro-Mono-Liga-Regular-Nerd-Font-Complete.woff2
|
||||||
*.agdai
|
*.agdai
|
||||||
_build
|
_build
|
||||||
.direnv
|
.direnv
|
||||||
|
|
||||||
|
|
||||||
|
/result
|
||||||
|
|
|
@ -1,26 +1,18 @@
|
||||||
steps:
|
steps:
|
||||||
build:
|
build:
|
||||||
image: node:20
|
image: git.mzhang.io/michael/blog-docker-builder:ksi5l9c786i4x6sq2crsjqlmcfidvvza
|
||||||
|
environment:
|
||||||
|
- ASTRO_TELEMETRY_DISABLED=1
|
||||||
commands:
|
commands:
|
||||||
- npm install -g pnpm
|
- mkdir /tmp
|
||||||
# - cd /tmp
|
- bun install --frozen-lockfile
|
||||||
# - rm -rf astro
|
- bun run build
|
||||||
# - git clone https://git.mzhang.io/michael/astro --depth 1
|
|
||||||
# - cd astro
|
|
||||||
# - pnpm install
|
|
||||||
# - pnpm run build
|
|
||||||
# - cd /woodpecker/src/git.mzhang.io/michael/blog
|
|
||||||
- pnpm install
|
|
||||||
# - pnpm link /tmp/astro/packages/astro
|
|
||||||
# - pnpm link /tmp/astro/packages/markdown/remark
|
|
||||||
- pnpm run build
|
|
||||||
when:
|
when:
|
||||||
- event: push
|
- event: push
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
image: alpine
|
image: git.mzhang.io/michael/blog-docker-builder:ksi5l9c786i4x6sq2crsjqlmcfidvvza
|
||||||
commands:
|
commands:
|
||||||
- apk add rsync openssh
|
|
||||||
- echo "$${SSH_SECRET_KEY}" > SSH_SECRET_KEY
|
- echo "$${SSH_SECRET_KEY}" > SSH_SECRET_KEY
|
||||||
- chmod 600 SSH_SECRET_KEY
|
- chmod 600 SSH_SECRET_KEY
|
||||||
- mkdir -p ~/.ssh
|
- mkdir -p ~/.ssh
|
||||||
|
|
|
@ -14,6 +14,7 @@ import rehypeLinkHeadings from "@justfork/rehype-autolink-headings";
|
||||||
import rehypeSlug from "rehype-slug";
|
import rehypeSlug from "rehype-slug";
|
||||||
|
|
||||||
import markdoc from "@astrojs/markdoc";
|
import markdoc from "@astrojs/markdoc";
|
||||||
|
import remarkAgda from "./plugin/remark-agda";
|
||||||
|
|
||||||
// https://astro.build/config
|
// https://astro.build/config
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
@ -25,6 +26,7 @@ export default defineConfig({
|
||||||
theme: "css-variables",
|
theme: "css-variables",
|
||||||
},
|
},
|
||||||
remarkPlugins: [
|
remarkPlugins: [
|
||||||
|
remarkAgda,
|
||||||
remarkMath,
|
remarkMath,
|
||||||
remarkAdmonitions,
|
remarkAdmonitions,
|
||||||
remarkReadingTime,
|
remarkReadingTime,
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
include: src/content/posts src
|
include: src/content/posts src
|
||||||
depend: standard-library
|
depend: standard-library cubical
|
||||||
|
|
BIN
bun.lockb
Executable file
BIN
bun.lockb
Executable file
Binary file not shown.
16
flake.nix
16
flake.nix
|
@ -4,16 +4,22 @@
|
||||||
let
|
let
|
||||||
pkgs = import nixpkgs { inherit system; };
|
pkgs = import nixpkgs { inherit system; };
|
||||||
agda-pkg = agda.packages.x86_64-linux.default;
|
agda-pkg = agda.packages.x86_64-linux.default;
|
||||||
flakePkgs = {
|
flakePkgs = rec {
|
||||||
agda = agda-pkg;
|
agda-bin = pkgs.callPackage ./nix/agda-bin.nix { inherit agda-pkg; };
|
||||||
agda-bin = pkgs.callPackage ./nix/agda-bin.nix { agda = agda-pkg; };
|
docker-builder = pkgs.callPackage ./nix/docker-builder.nix { inherit agda-bin; };
|
||||||
docker-builder = pkgs.callPackage ./nix/docker-builder.nix { };
|
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
packages = flake-utils.lib.flattenTree flakePkgs;
|
packages = flake-utils.lib.flattenTree flakePkgs;
|
||||||
devShell = pkgs.mkShell {
|
devShell = pkgs.mkShell {
|
||||||
packages = with pkgs; [ nixfmt-rfc-style ];
|
packages = with pkgs; [
|
||||||
|
bun
|
||||||
|
woodpecker-cli
|
||||||
|
nixfmt-rfc-style
|
||||||
|
dive
|
||||||
|
nix-tree
|
||||||
|
vips
|
||||||
|
];
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,23 @@
|
||||||
{ agda, runCommand }:
|
{ agda-pkg, runCommand, writeShellScriptBin, writeTextFile, agdaPackages }:
|
||||||
|
|
||||||
runCommand "agda-bin" { }
|
let
|
||||||
''
|
libraryFile =
|
||||||
cp ${agda}/bin/agda $out
|
with agdaPackages;
|
||||||
|
writeTextFile {
|
||||||
|
name = "agda-libraries";
|
||||||
|
text = ''
|
||||||
|
${agdaPackages.cubical}/cubical.agda-lib
|
||||||
|
${agdaPackages.standard-library}/standard-library.agda-lib
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add an extra layer of indirection here to prevent all of GHC from being pulled in
|
||||||
|
wtf = runCommand "agda-bin" { } ''
|
||||||
|
cp ${agda-pkg}/bin/agda $out
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
|
writeShellScriptBin "agda" ''
|
||||||
|
set -euo pipefail
|
||||||
|
exec ${wtf} --library-file=${libraryFile} $@
|
||||||
''
|
''
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
{ haskellPackages }:
|
|
||||||
|
|
||||||
haskellPackages.developPackage {
|
|
||||||
name = "agda";
|
|
||||||
version = "2.6.4.3";
|
|
||||||
}
|
|
|
@ -1,3 +1,35 @@
|
||||||
{ dockerTools }:
|
{ dockerTools
|
||||||
|
, buildEnv
|
||||||
|
, agda-bin
|
||||||
|
, corepack
|
||||||
|
, rsync
|
||||||
|
, openssh
|
||||||
|
, bash
|
||||||
|
, coreutils
|
||||||
|
, bun
|
||||||
|
, nodejs_20
|
||||||
|
}:
|
||||||
|
|
||||||
|
dockerTools.buildLayeredImage {
|
||||||
|
name = "blog-docker-builder";
|
||||||
|
|
||||||
|
contents = with dockerTools; [
|
||||||
|
agda-bin
|
||||||
|
corepack
|
||||||
|
rsync
|
||||||
|
openssh
|
||||||
|
bash
|
||||||
|
coreutils
|
||||||
|
bun
|
||||||
|
nodejs_20
|
||||||
|
usrBinEnv
|
||||||
|
caCertificates
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
# copyToRoot = with dockerTools; buildEnv {
|
||||||
|
# name = "blog-docker-builder-image-root";
|
||||||
|
# paths = [
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
dockerTools.buildImage { }
|
|
||||||
|
|
|
@ -47,7 +47,6 @@
|
||||||
"prettier-plugin-astro": "^0.12.0",
|
"prettier-plugin-astro": "^0.12.0",
|
||||||
"rehype-slug": "^6.0.0",
|
"rehype-slug": "^6.0.0",
|
||||||
"sass": "^1.66.1",
|
"sass": "^1.66.1",
|
||||||
"sharp": "^0.32.6",
|
|
||||||
"shiki": "^0.14.5",
|
"shiki": "^0.14.5",
|
||||||
"unified": "^11.0.2",
|
"unified": "^11.0.2",
|
||||||
"unist-util-visit": "^5.0.0"
|
"unist-util-visit": "^5.0.0"
|
||||||
|
|
|
@ -33,6 +33,15 @@ const remarkAgda: RemarkPlugin = () => {
|
||||||
{},
|
{},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO: Handle child output
|
||||||
|
console.error("--AGDA OUTPUT--")
|
||||||
|
console.error(childOutput);
|
||||||
|
console.error(childOutput.stdout?.toString());
|
||||||
|
console.error(childOutput.stderr?.toString());
|
||||||
|
console.error("--AGDA OUTPUT--")
|
||||||
|
// if (childOutput.status !== 0)
|
||||||
|
// throw new Error("Agda failed", childOutput.stderr)
|
||||||
|
|
||||||
const filename = parse(path).base.replace(/\.lagda.md/, ".md");
|
const filename = parse(path).base.replace(/\.lagda.md/, ".md");
|
||||||
const htmlname = parse(path).base.replace(/\.lagda.md/, ".html");
|
const htmlname = parse(path).base.replace(/\.lagda.md/, ".html");
|
||||||
const fullOutputPath = join(outDir, filename);
|
const fullOutputPath = join(outDir, filename);
|
||||||
|
|
12
scripts/upload-builder.sh
Executable file
12
scripts/upload-builder.sh
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
nix build .#docker-builder
|
||||||
|
IMAGE_NAME=$(docker load -q -i ./result | cut -d':' -f2,3 | xargs)
|
||||||
|
REMOTE_IMAGE_NAME="git.mzhang.io/michael/$IMAGE_NAME"
|
||||||
|
docker image tag "$IMAGE_NAME" "$REMOTE_IMAGE_NAME"
|
||||||
|
docker push "$REMOTE_IMAGE_NAME"
|
||||||
|
|
||||||
|
set -x
|
||||||
|
sed -i -E "s~(.*image: )blog-docker-builder:?.*~\1$REMOTE_IMAGE_NAME~" .woodpecker.yml
|
|
@ -1,23 +0,0 @@
|
||||||
# FROM haskell:9-slim-buster
|
|
||||||
# RUN cabal update
|
|
||||||
# RUN cabal install --global Agda-2.6.4
|
|
||||||
#
|
|
||||||
# FROM debian:buster-slim
|
|
||||||
# COPY --from=0 /root/.cabal/bin/agda /usr/bin/agda
|
|
||||||
# COPY --from=0 /root/.cabal/store/ghc-9.6.3/Agda-2.6.4-c592e701b6d172f37cf6e17790bc1993481dac7a9e29753b34c448a31924a9ab/share/lib /root/.cabal/store/ghc-9.6.3/Agda-2.6.4-c592e701b6d172f37cf6e17790bc1993481dac7a9e29753b34c448a31924a9ab/share/lib
|
|
||||||
# CMD ["agda", "--interactive"]
|
|
||||||
|
|
||||||
FROM alpine AS base
|
|
||||||
ENV PATH /root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
||||||
RUN apk add --update curl alpine-sdk ncurses-dev gmp-dev zlib-dev
|
|
||||||
|
|
||||||
FROM base AS agda-build
|
|
||||||
RUN curl -sSL https://get.haskellstack.org/ | sh
|
|
||||||
RUN stack install ghc-9.4.7
|
|
||||||
RUN git clone --depth 1 --single-branch --branch v2.6.4 https://github.com/agda/agda
|
|
||||||
WORKDIR /agda
|
|
||||||
RUN stack --stack-yaml stack-9.4.7.yaml install
|
|
||||||
|
|
||||||
FROM base
|
|
||||||
COPY --from=agda-build /root/.local/bin/agda /usr/bin/agda
|
|
||||||
COPY --from=agda-build /agda/.stack-work/install/x86_64-linux-musl/099dc152e5f5edaf6e084b385953a851d037c26c20471a6eefaa57c4704a9540/9.4.7/share/x86_64-linux-ghc-9.4.7/Agda-2.6.4/lib /agda/.stack-work/install/x86_64-linux-musl/099dc152e5f5edaf6e084b385953a851d037c26c20471a6eefaa57c4704a9540/9.4.7/share/x86_64-linux-ghc-9.4.7/Agda-2.6.4/lib
|
|
|
@ -1,27 +0,0 @@
|
||||||
FROM git.mzhang.io/michael/agda:2.6.4-x86_64
|
|
||||||
|
|
||||||
FROM node:18-alpine AS node
|
|
||||||
RUN apk add --update git
|
|
||||||
RUN npm install -g pnpm
|
|
||||||
|
|
||||||
FROM node AS astro-build
|
|
||||||
WORKDIR /tmp
|
|
||||||
RUN git clone https://git.mzhang.io/michael/astro --depth 1
|
|
||||||
WORKDIR /tmp/astro
|
|
||||||
RUN pnpm install
|
|
||||||
RUN pnpm run build
|
|
||||||
RUN rm -rf node_modules
|
|
||||||
|
|
||||||
|
|
||||||
FROM node
|
|
||||||
COPY --from=0 /usr/bin/agda /usr/bin/agda
|
|
||||||
COPY --from=0 /agda/.stack-work/install/x86_64-linux-musl/099dc152e5f5edaf6e084b385953a851d037c26c20471a6eefaa57c4704a9540/9.4.7/share/x86_64-linux-ghc-9.4.7/Agda-2.6.4/lib /agda/.stack-work/install/x86_64-linux-musl/099dc152e5f5edaf6e084b385953a851d037c26c20471a6eefaa57c4704a9540/9.4.7/share/x86_64-linux-ghc-9.4.7/Agda-2.6.4/lib
|
|
||||||
|
|
||||||
COPY --from=astro-build /tmp/astro /tmp/astro
|
|
||||||
WORKDIR /tmp/astro/packages/astro
|
|
||||||
RUN pnpm link --global
|
|
||||||
WORKDIR /tmp/astro/packages/markdown/remark
|
|
||||||
RUN pnpm link --global
|
|
||||||
|
|
||||||
WORKDIR /
|
|
||||||
|
|
Loading…
Reference in a new issue