a291c8690a
GitOrigin-RevId: e6e19f3d81a982a62e1bba08f0b4f7fdc21b4ea0
82 lines
1.5 KiB
Nix
82 lines
1.5 KiB
Nix
{ depot, pkgs, lib, ... }:
|
|
|
|
let
|
|
|
|
scripts = [
|
|
./hello.nix
|
|
./derivation-svg.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
|
|
]
|