{ html, data, lib, ... }: let software = data.software; format = softwarePiece: with html; with softwarePiece; { inherit id title abstract; url = URL; } // (let authorsOther = lib.remove data.basics.name (builtins.map (author: "${author.given} ${author.family}") author); in lib.optionalAttrs (authorsOther != []) { authors = "With ${lib.concatStringsSep ", " authorsOther}"; }); in { title = "Software"; priority = 15; body = with html; dl (for (sort.byPath ["title"] software) (softwarePiece: let formatted = format softwarePiece; in with formatted; [ (dt {id = "Software#${id}";} (href {target = "_blank";} url title)) (dd abstract) ])); }