about summary refs log tree commit diff
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/atom-feed/default.nix5
-rw-r--r--web/blog/default.nix5
-rw-r--r--web/blog/fragments.nix45
-rw-r--r--web/bubblegum/default.nix66
-rw-r--r--web/bubblegum/examples/blog.nix43
-rw-r--r--web/bubblegum/examples/default.nix61
-rw-r--r--web/bubblegum/examples/derivation-svg.nix8
-rw-r--r--web/bubblegum/examples/hello.nix8
-rw-r--r--web/cgit-taz/default.nix5
-rw-r--r--web/panettone/shell.nix2
-rw-r--r--web/static/default.nix4
-rw-r--r--web/todolist/default.nix29
-rw-r--r--web/tvl/blog/default.nix2
-rw-r--r--web/tvl/default.nix10
-rw-r--r--web/tvl/footer/default.nix2
-rw-r--r--web/tvl/logo/default.nix42
-rw-r--r--web/tvl/template/default.nix16
17 files changed, 209 insertions, 144 deletions
diff --git a/web/atom-feed/default.nix b/web/atom-feed/default.nix
index 1fbcde9bd4ff..fca69e20fad9 100644
--- a/web/atom-feed/default.nix
+++ b/web/atom-feed/default.nix
@@ -90,7 +90,7 @@ let
 
   # Feed generation functions:
 
-  renderEpoch = epoch: removeSuffix "\n" (readFile (runCommandNoCC "date-${toString epoch}" {} ''
+  renderEpoch = epoch: removeSuffix "\n" (readFile (runCommandNoCC "date-${toString epoch}" { } ''
     date --date='@${toString epoch}' --utc --iso-8601='seconds' > $out
   ''));
 
@@ -147,6 +147,7 @@ let
       ${concatStrings (map renderEntry (sortEntries f.entries))}
     </feed>
   '');
-in {
+in
+{
   inherit entry feed renderFeed renderEpoch;
 }
diff --git a/web/blog/default.nix b/web/blog/default.nix
index 2cabc09b5524..f55c33a63a54 100644
--- a/web/blog/default.nix
+++ b/web/blog/default.nix
@@ -40,7 +40,7 @@ let
   fragments = import ./fragments.nix args;
 
   # Functions for generating feeds for these blogs using //web/atom-feed.
-  toFeedEntry = { baseUrl, ...}: defun [ post atom-feed.entry ] (post: rec {
+  toFeedEntry = { baseUrl, ... }: defun [ post atom-feed.entry ] (post: rec {
     id = "${baseUrl}/${post.key}";
     title = post.title;
     content = readFile (renderMarkdown post.content);
@@ -52,7 +52,8 @@ let
       href = id;
     };
   });
-in {
+in
+{
   inherit post toFeedEntry;
   inherit (fragments) renderPost;
 
diff --git a/web/blog/fragments.nix b/web/blog/fragments.nix
index 63fc1ab4c5cf..19d62fa4744d 100644
--- a/web/blog/fragments.nix
+++ b/web/blog/fragments.nix
@@ -20,29 +20,29 @@ let
   escape = replaceStrings [ "<" ">" "&" "'" ] [ "&lt;" "&gt;" "&amp;" "&#39;" ];
 
   header = name: title: ''
-  <!DOCTYPE html>
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <meta name="description" content="${escape name}">
-    <link rel="stylesheet" type="text/css" href="${staticUrl}/tvl.css" media="all">
-    <link rel="icon" type="image/webp" href="/static/favicon.webp">
-    <link rel="alternate" type="application/atom+xml" title="Atom Feed" href="https://tvl.fyi/feed.atom">
-    <title>${escape name}: ${escape title}</title>
-  </head>
-  <body class="light">
-    <header>
-      <h1><a class="blog-title" href="/">${escape name}</a> </h1>
-      <hr>
-    </header>
+    <!DOCTYPE html>
+    <head>
+      <meta charset="utf-8">
+      <meta name="viewport" content="width=device-width, initial-scale=1">
+      <meta name="description" content="${escape name}">
+      <link rel="stylesheet" type="text/css" href="${staticUrl}/tvl.css" media="all">
+      <link rel="icon" type="image/webp" href="/static/favicon.webp">
+      <link rel="alternate" type="application/atom+xml" title="Atom Feed" href="https://tvl.fyi/feed.atom">
+      <title>${escape name}: ${escape title}</title>
+    </head>
+    <body class="light">
+      <header>
+        <h1><a class="blog-title" href="/">${escape name}</a> </h1>
+        <hr>
+      </header>
   '';
 
   fullFooter = content: ''
-    <hr>
-    <footer>
-      ${content}
-    </footer>
-  </body>
+      <hr>
+      <footer>
+        ${content}
+      </footer>
+    </body>
   '';
 
   draftWarning = writeText "draft.html" ''
@@ -61,7 +61,7 @@ let
     <hr>
   '';
 
-  renderPost = { name, footer, ... }: post: runCommandNoCC "${post.key}.html" {} ''
+  renderPost = { name, footer, ... }: post: runCommandNoCC "${post.key}.html" { } ''
     cat ${writeText "header.html" (header name post.title)} > $out
 
     # Write the post title & date
@@ -90,6 +90,7 @@ let
 
     cat ${writeText "footer.html" (fullFooter footer)} >> $out
   '';
-in {
+in
+{
   inherit isDraft isUnlisted renderPost;
 }
diff --git a/web/bubblegum/default.nix b/web/bubblegum/default.nix
index 1fbe544bce11..528d73032ba6 100644
--- a/web/bubblegum/default.nix
+++ b/web/bubblegum/default.nix
@@ -134,20 +134,23 @@ let
           code = statusCodes."${statusArg}" or null;
           line = statusArg;
         } else {
-          code = null; line = null;
+          code = null;
+          line = null;
         };
       renderedHeaders = lib.concatStrings
         (lib.mapAttrsToList (n: v: "${n}: ${toString v}\r\n") headers);
-      internalError = msg: respond 500 {
-        Content-type = "text/plain";
-      } "bubblegum error: ${msg}";
+      internalError = msg: respond 500
+        {
+          Content-type = "text/plain";
+        } "bubblegum error: ${msg}";
       body = builtins.tryEval bodyArg;
     in
-      if status.code == null || status.line == null
-      then internalError "Invalid status ${lib.generators.toPretty {} statusArg}."
-      else if !body.success
-      then internalError "Unknown evaluation error in user code"
-      else lib.concatStrings [
+    if status.code == null || status.line == null
+    then internalError "Invalid status ${lib.generators.toPretty {} statusArg}."
+    else if !body.success
+    then internalError "Unknown evaluation error in user code"
+    else
+      lib.concatStrings [
         "Status: ${toString status.code} ${status.line}\r\n"
         renderedHeaders
         "\r\n"
@@ -169,9 +172,9 @@ let
     let
       p = builtins.getEnv "PATH_INFO";
     in
-      if builtins.stringLength p == 0
-      then "/"
-      else p;
+    if builtins.stringLength p == 0
+    then "/"
+    else p;
 
   /* Helper function which converts a path from the
      root of the CGI script (i. e. something which
@@ -187,12 +190,13 @@ let
     else "${scriptName}/${path}";
 
   bins = getBins pkgs.coreutils [ "env" "tee" "cat" "printf" "chmod" ]
-      // getBins nint [ "nint" ];
+    // getBins nint [ "nint" ];
 
   /* Type: args -> either path derivation string -> derivation
   */
   writeCGI =
-    { # if given sets the `PATH` to search for `nix-instantiate`
+    {
+      # if given sets the `PATH` to search for `nix-instantiate`
       # Useful when using for example thttpd which unsets `PATH`
       # in the CGI environment.
       binPath ? ""
@@ -202,7 +206,8 @@ let
     , name ? null
     , ...
     }@args:
-    input: let
+    input:
+    let
       drvName =
         if builtins.isString input || args ? name
         then args.name
@@ -227,20 +232,31 @@ let
         # always pass depot so scripts can use this library
         "--arg depot '(import ${minimalDepot} {})'"
       ]);
-    in runExecline.local drvName {} [
-      "importas" "out" "out"
-      "pipeline" [
-        "foreground" [
-          "if" [ bins.printf "%s\n" shebang ]
+    in
+    runExecline.local drvName { } [
+      "importas"
+      "out"
+      "out"
+      "pipeline"
+      [
+        "foreground"
+        [
+          "if"
+          [ bins.printf "%s\n" shebang ]
         ]
-        "if" [ bins.cat script ]
+        "if"
+        [ bins.cat script ]
       ]
-      "if" [ bins.tee "$out" ]
-      "if" [ bins.chmod "+x" "$out" ]
-      "exit" "0"
+      "if"
+      [ bins.tee "$out" ]
+      "if"
+      [ bins.chmod "+x" "$out" ]
+      "exit"
+      "0"
     ];
 
-in {
+in
+{
   inherit
     respond
     pathInfo
diff --git a/web/bubblegum/examples/blog.nix b/web/bubblegum/examples/blog.nix
index 9359d38fa28e..76b91168b894 100644
--- a/web/bubblegum/examples/blog.nix
+++ b/web/bubblegum/examples/blog.nix
@@ -26,17 +26,17 @@ let
     let
       matched = builtins.match "/?([0-9]+)-([0-9]+)-([0-9]+)-.+" post;
     in
-      if matched == null
-      then [ 0 0 0 ]
-      else builtins.map builtins.fromJSON matched;
+    if matched == null
+    then [ 0 0 0 ]
+    else builtins.map builtins.fromJSON matched;
 
   parseTitle = post:
     let
       matched = builtins.match "/?[0-9]+-[0-9]+-[0-9]+-(.+).html" post;
     in
-      if matched == null
-      then "no title"
-      else builtins.head matched;
+    if matched == null
+    then "no title"
+    else builtins.head matched;
 
   dateAtLeast = a: b:
     builtins.all fun.id
@@ -68,11 +68,13 @@ let
     <main>
       <h1>blog posts</h1>
       <ul>
-  '' + lib.concatMapStrings (post: ''
+  '' + lib.concatMapStrings
+    (post: ''
       <li>
         <a href="${absolutePath (url.encode {} post)}">${parseTitle post}</a>
       </li>
-  '') posts + ''
+    '')
+    posts + ''
       </ul>
     </main>
   '';
@@ -80,10 +82,14 @@ let
   formatDate =
     let
       # Assume we never deal with years < 1000
-      formatDigit = d: string.fit {
-        char = "0"; width = 2;
-      } (toString d);
-    in lib.concatMapStringsSep "-" formatDigit;
+      formatDigit = d: string.fit
+        {
+          char = "0";
+          width = 2;
+        }
+        (toString d);
+    in
+    lib.concatMapStringsSep "-" formatDigit;
 
   post = title: post: ''
     <main>
@@ -101,8 +107,9 @@ let
   validatePathInfo = pathInfo:
     let
       chars = string.toChars pathInfo;
-    in builtins.length chars > 1
-      && !(builtins.elem "/" (builtins.tail chars));
+    in
+    builtins.length chars > 1
+    && !(builtins.elem "/" (builtins.tail chars));
 
   response =
     if pathInfo == "/"
@@ -129,6 +136,8 @@ let
       inner = "<h1>404 — not found</h1>";
     };
 in
-  respond response.status {
-    "Content-type" = "text/html";
-  } (generic response)
+respond response.status
+{
+  "Content-type" = "text/html";
+}
+  (generic response)
diff --git a/web/bubblegum/examples/default.nix b/web/bubblegum/examples/default.nix
index 3f0f51db6369..89482f93eacc 100644
--- a/web/bubblegum/examples/default.nix
+++ b/web/bubblegum/examples/default.nix
@@ -29,33 +29,54 @@ let
     ;
 
   bins = (getBins pkgs.thttpd [ "thttpd" ])
-      // (getBins pkgs.coreutils [ "printf" "cp" "mkdir" ]);
+    // (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" ]
+        (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
+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
+]
diff --git a/web/bubblegum/examples/derivation-svg.nix b/web/bubblegum/examples/derivation-svg.nix
index a5f30a2bd155..9a625afb55d7 100644
--- a/web/bubblegum/examples/derivation-svg.nix
+++ b/web/bubblegum/examples/derivation-svg.nix
@@ -6,6 +6,8 @@ let
     respond
     ;
 in
-  respond "OK" {
-    Content-type = "image/svg+xml";
-  } (builtins.readFile "${depot.tvix.docs.svg}/component-flow.svg")
+respond "OK"
+{
+  Content-type = "image/svg+xml";
+}
+  (builtins.readFile "${depot.tvix.docs.svg}/component-flow.svg")
diff --git a/web/bubblegum/examples/hello.nix b/web/bubblegum/examples/hello.nix
index db04d4082371..bd4891f7d66d 100644
--- a/web/bubblegum/examples/hello.nix
+++ b/web/bubblegum/examples/hello.nix
@@ -87,6 +87,8 @@ let
   response = routes."${pathInfo}" or notFound;
 
 in
-  respond response.status {
-    "Content-type" = "text/html";
-  } (template response)
+respond response.status
+{
+  "Content-type" = "text/html";
+}
+  (template response)
diff --git a/web/cgit-taz/default.nix b/web/cgit-taz/default.nix
index a89b96fd92ba..83ec822e5d6b 100644
--- a/web/cgit-taz/default.nix
+++ b/web/cgit-taz/default.nix
@@ -63,12 +63,13 @@ let
          envp[envn++] = build_env( "PATH=%s", CGI_PATH );
      #ifdef CGI_LD_LIBRARY_PATH
   '';
-  thttpdCgit = thttpd.overrideAttrs(old: {
+  thttpdCgit = thttpd.overrideAttrs (old: {
     patches = [
       ./thttpd_cgi_idx.patch
       thttpdConfigPatch
     ];
   });
-in writeShellScriptBin "cgit-launch" ''
+in
+writeShellScriptBin "cgit-launch" ''
   exec ${thttpdCgit}/bin/thttpd -D -C ${thttpdConfig}
 ''
diff --git a/web/panettone/shell.nix b/web/panettone/shell.nix
index aeafc7afcd99..54bc49013b79 100644
--- a/web/panettone/shell.nix
+++ b/web/panettone/shell.nix
@@ -1,4 +1,4 @@
-{ depot ? import ../.. {} }:
+{ depot ? import ../.. { } }:
 
 with depot.third_party;
 
diff --git a/web/static/default.nix b/web/static/default.nix
index 2120e649f03c..9eaeb0ec1495 100644
--- a/web/static/default.nix
+++ b/web/static/default.nix
@@ -5,7 +5,9 @@
 let
   storeDirLength = with builtins; (stringLength storeDir) + 1;
   logo = depot.web.tvl.logo;
-in lib.fix(self: pkgs.runCommand "tvl-static" {
+in
+lib.fix (self: pkgs.runCommand "tvl-static"
+{
   passthru = {
     # Preserving the string context here makes little sense: While we are
     # referencing this derivation, we are not doing so via the nix store,
diff --git a/web/todolist/default.nix b/web/todolist/default.nix
index a2fcb501bde6..c37a65555956 100644
--- a/web/todolist/default.nix
+++ b/web/todolist/default.nix
@@ -39,7 +39,7 @@ let
     user = string;
   };
 
-  allTodos = fromJSON (readFile (runCommandNoCC "depot-todos.json" {} ''
+  allTodos = fromJSON (readFile (runCommandNoCC "depot-todos.json" { } ''
     ${ripgrep}/bin/rg --json 'TODO\(\w+\):.*$' ${depot.path} | \
       ${jq}/bin/jq -s -f ${./extract-todos.jq} > $out
   ''));
@@ -58,22 +58,23 @@ let
   '');
 
   userParagraph = todos:
-  let user = (head todos).user;
-  in ''
-    <p>
-      <h3>
-        <a style="color:inherit; text-decoration: none;"
-           name="${user}"
-           href="#${user}">${user}</a>
-      </h3>
-      ${concatStringsSep "\n" (map todoElement todos)}
-    </p>
-    <hr>
-  '';
+    let user = (head todos).user;
+    in ''
+      <p>
+        <h3>
+          <a style="color:inherit; text-decoration: none;"
+             name="${user}"
+             href="#${user}">${user}</a>
+        </h3>
+        ${concatStringsSep "\n" (map todoElement todos)}
+      </p>
+      <hr>
+    '';
 
   staticUrl = "https://static.tvl.fyi/${depot.web.static.drvHash}";
 
-in writeTextFile {
+in
+writeTextFile {
   name = "tvl-todos";
   destination = "/index.html";
   text = ''
diff --git a/web/tvl/blog/default.nix b/web/tvl/blog/default.nix
index fe8d1c42d6dd..963bb635e3b9 100644
--- a/web/tvl/blog/default.nix
+++ b/web/tvl/blog/default.nix
@@ -3,7 +3,7 @@
 {
   config = {
     name = "TVL's blog";
-    footer = depot.web.tvl.footer {};
+    footer = depot.web.tvl.footer { };
     baseUrl = "https://tvl.fyi/blog";
   };
 
diff --git a/web/tvl/default.nix b/web/tvl/default.nix
index 1025b1a7b2b4..262be54c0ef1 100644
--- a/web/tvl/default.nix
+++ b/web/tvl/default.nix
@@ -16,9 +16,10 @@ let
       (map (p: "cp ${blog.renderPost tvl.blog.config p} $out/blog/${p.key}.html") posts)
   );
 
-  tvlGraph = runCommandNoCC "tvl.svg" {
-    nativeBuildInputs = with pkgs; [ fontconfig freetype cairo jetbrains-mono ];
-  } ''
+  tvlGraph = runCommandNoCC "tvl.svg"
+    {
+      nativeBuildInputs = with pkgs; [ fontconfig freetype cairo jetbrains-mono ];
+    } ''
     ${graphviz}/bin/neato -Tsvg ${./tvl.dot} > $out
   '';
 
@@ -121,7 +122,8 @@ let
       </style>
     '';
   };
-in runCommandNoCC "website" {} ''
+in
+runCommandNoCC "website" { } ''
   mkdir -p $out/blog
   cp ${homepage} $out/index.html
   ${postRenderingCommands tvl.blog.posts}
diff --git a/web/tvl/footer/default.nix b/web/tvl/footer/default.nix
index 7412d019ee56..dc2c963f90f4 100644
--- a/web/tvl/footer/default.nix
+++ b/web/tvl/footer/default.nix
@@ -15,7 +15,7 @@ args: ''
     <a class="uncoloured-link" href="https://todo.tvl.fyi/">todos</a>
     |
     <a class="uncoloured-link" href="https://atward.tvl.fyi/">search</a>
-    '' + lib.optionalString (args ? extraFooter) args.extraFooter + ''
+'' + lib.optionalString (args ? extraFooter) args.extraFooter + ''
   </p>
   <p class="lod">ಠ_ಠ</p>
 ''
diff --git a/web/tvl/logo/default.nix b/web/tvl/logo/default.nix
index 940f67199bf6..d9e023946a42 100644
--- a/web/tvl/logo/default.nix
+++ b/web/tvl/logo/default.nix
@@ -21,20 +21,22 @@ let
 
   # Create an animated CSS that equally spreads out the colours over
   # the animation duration (1min).
-  animatedCss = colours: let
-    # Calculate at which percentage offset each colour should appear.
-    stepSize = 100 / ((builtins.length colours) - 1);
-    frames = lib.imap0 (idx: colour: { inherit colour; at = idx * stepSize; }) colours;
-    frameCss = frame: "${toString frame.at}% { fill: ${frame.colour}; }";
-  in ''
-    #armchair-background {
-      animation: 30s infinite alternate armchairPalette;
-    }
+  animatedCss = colours:
+    let
+      # Calculate at which percentage offset each colour should appear.
+      stepSize = 100 / ((builtins.length colours) - 1);
+      frames = lib.imap0 (idx: colour: { inherit colour; at = idx * stepSize; }) colours;
+      frameCss = frame: "${toString frame.at}% { fill: ${frame.colour}; }";
+    in
+    ''
+      #armchair-background {
+        animation: 30s infinite alternate armchairPalette;
+      }
 
-    @keyframes armchairPalette {
-    ${lib.concatStringsSep "\n" (map frameCss frames)}
-    }
-  '';
+      @keyframes armchairPalette {
+      ${lib.concatStringsSep "\n" (map frameCss frames)}
+      }
+    '';
 
   # Dark version of the logo, suitable for light backgrounds.
   darkCss = armchairCss: ''
@@ -67,7 +69,8 @@ let
     </svg>
   '';
 
-in depot.nix.readTree.drvTargets(lib.fix (self: {
+in
+depot.nix.readTree.drvTargets (lib.fix (self: {
   # Expose the logo construction functions.
   inherit palette darkCss lightCss animatedCss staticCss;
 
@@ -75,7 +78,7 @@ in depot.nix.readTree.drvTargets(lib.fix (self: {
   logoSvg = style: pkgs.writeText "logo.svg" (logoSvg style);
 
   # Create a PNG of the TVL logo with the specified style and DPI.
-  logoPng = style: dpi: pkgs.runCommandNoCC "logo.png" {} ''
+  logoPng = style: dpi: pkgs.runCommandNoCC "logo.png" { } ''
     ${pkgs.inkscape}/bin/inkscape \
       --export-area-drawing \
       --export-background-opacity 0 \
@@ -87,7 +90,8 @@ in depot.nix.readTree.drvTargets(lib.fix (self: {
   pastelRainbow = self.logoSvg (darkCss (animatedCss (lib.attrValues palette)));
 }
 
-# Add individual outputs for static dark logos of each colour.
-// (lib.mapAttrs'
-    (k: v: lib.nameValuePair "${k}Png"
-     (self.logoPng (darkCss (staticCss v)) 96)) palette)))
+  # Add individual outputs for static dark logos of each colour.
+  // (lib.mapAttrs'
+  (k: v: lib.nameValuePair "${k}Png"
+    (self.logoPng (darkCss (staticCss v)) 96))
+  palette)))
diff --git a/web/tvl/template/default.nix b/web/tvl/template/default.nix
index 6ccc10de6235..6b6a5b03038e 100644
--- a/web/tvl/template/default.nix
+++ b/web/tvl/template/default.nix
@@ -1,6 +1,7 @@
 { depot, pkgs, lib, ... }:
 
-{ # content of the <title> tag
+{
+  # content of the <title> tag
   title
   # main part of the page, usually wrapped with <main>
 , content
@@ -17,7 +18,8 @@ let
   inherit (depot.tools) cheddar;
 in
 
-runCommandNoCC "${lib.strings.sanitizeDerivationName title}-index.html" {
+runCommandNoCC "${lib.strings.sanitizeDerivationName title}-index.html"
+{
   headerPart = ''
     <!DOCTYPE html>
     <head>
@@ -36,11 +38,11 @@ runCommandNoCC "${lib.strings.sanitizeDerivationName title}-index.html" {
   inherit content;
 
   footerPart = ''
-    <hr>
-    <footer>
-      ${depot.web.tvl.footer args}
-    </footer>
-  </body>
+      <hr>
+      <footer>
+        ${depot.web.tvl.footer args}
+      </footer>
+    </body>
   '';
 
   passAsFile = [ "headerPart" "content" "footerPart" ];