tvl-depot/web/bubblegum/examples/default.nix
Florian Klink 65a810fc0b feat(tvix/docs): switch to mdbook
Some of the docs are still outdated (like architecture and drv path
inconsistencies).

Change-Id: I7a6afceb008ef4cd19a764dd6c637b39fa842a2e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11072
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: edef <edef@edef.eu>
2024-03-03 16:52:38 +00:00

81 lines
1.4 KiB
Nix

{ depot, pkgs, lib, ... }:
let
scripts = [
./hello.nix
(substituteAll {
src = ./blog.nix;
# by making this a plain string this
# can be something outside the nix store!
blogdir = ./posts;
})
];
inherit (depot.nix)
writeExecline
runExecline
getBins
;
inherit (depot.web.bubblegum)
writeCGI
;
inherit (pkgs)
runCommandLocal
substituteAll
;
bins = (getBins pkgs.thttpd [ "thttpd" ])
// (getBins pkgs.coreutils [ "printf" "cp" "mkdir" ]);
webRoot =
let
copyScripts = lib.concatMap
(path:
let
cgi = writeCGI
{
# assume we are on NixOS since thttpd doesn't set PATH.
# using third_party.nix is tricky because not everyone
# has a tvix daemon running.
binPath = "/run/current-system/sw/bin";
}
path;
in
[
"if"
[ bins.cp cgi "\${out}/${cgi.name}" ]
])
scripts;
in
runExecline.local "webroot" { } ([
"importas"
"out"
"out"
"if"
[ bins.mkdir "-p" "$out" ]
] ++ copyScripts);
port = 9000;
in
writeExecline "serve-examples" { } [
"foreground"
[
bins.printf
"%s\n"
"Running on http://localhost:${toString port}"
]
"${bins.thttpd}"
"-D"
"-p"
(toString port)
"-l"
"/dev/stderr"
"-c"
"*.nix"
"-d"
webRoot
]