diff --git a/overview/default.nix b/overview/default.nix
index 92845bfe6..d950cb1c0 100644
--- a/overview/default.nix
+++ b/overview/default.nix
@@ -163,15 +163,30 @@ let
'';
};
+ metadata = rec {
+ one =
+ metadata:
+ (optionalString (metadata ? summary) ''
+
+ ${metadata.summary}
+
+ '')
+ + (optionalString (metadata ? subgrants) ''
+ ${render.subgrants.many metadata.subgrants}
+ '');
+ };
+
projects = {
one = name: project: ''
- ${heading 1 name}
- ${render.subgrants.many (project.metadata.subgrants or [ ])}
- ${render.packages.many (pick.packages project)}
- ${render.options.many (pick.options project)}
- ${render.examples.many (pick.examples project)}
+
+ ${heading 1 name}
+ ${render.metadata.one project.metadata}
+ ${render.packages.many (pick.packages project)}
+ ${render.options.many (pick.options project)}
+ ${render.examples.many (pick.examples project)}
+
'';
- # Many projects are renderes as links to their individual project sites
+ # Many projects are rendered as links to their individual project sites
many =
projects:
concatLines (
@@ -184,6 +199,7 @@ let
# The top-level overview for all projects
index = pkgs.writeText "index.html" ''
+
# NGIpgks
NGIpkgs is collection of software applications funded by the Next Generation Internet initiative and packaged for NixOS.
@@ -206,7 +222,7 @@ let
${render.projects.many projects}
- ---
+
'';
@@ -255,6 +271,19 @@ let
"$out/${path}"
'';
+ fonts =
+ pkgs.runCommand "fonts"
+ {
+ nativeBuildInputs = with pkgs; [ woff2 ];
+ }
+ ''
+ mkdir -vp $out
+ cp -v ${pkgs.ibm-plex}/share/fonts/opentype/IBMPlexSans-* $out/
+ for otf in $out/*.otf; do
+ woff2_compress "$otf"
+ done
+ '';
+
in
pkgs.runCommand "overview"
{
@@ -267,8 +296,9 @@ pkgs.runCommand "overview"
}
(
''
- mkdir -v $out
+ mkdir -pv $out
cp -v ${./style.css} $out/style.css
+ ln -s ${fonts} $out/fonts
''
+ (concatLines (mapAttrsToList writeHtmlCommand pages))
+ ''
diff --git a/overview/style.css b/overview/style.css
index 9362760e0..7d0e32471 100644
--- a/overview/style.css
+++ b/overview/style.css
@@ -1,9 +1,169 @@
+/* ExtraLight */
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-ExtraLight.woff2') format('woff2'),
+ url('IBMPlexSans-ExtraLight.otf') format('opentype');
+ font-weight: 200;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-ExtraLightItalic.woff2') format('woff2'),
+ url('IBMPlexSans-ExtraLightItalic.otf') format('opentype');
+ font-weight: 200;
+ font-style: italic;
+}
+
+/* Light */
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-Light.woff2') format('woff2'),
+ url('IBMPlexSans-Light.otf') format('opentype');
+ font-weight: 300;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-LightItalic.woff2') format('woff2'),
+ url('IBMPlexSans-LightItalic.otf') format('opentype');
+ font-weight: 300;
+ font-style: italic;
+}
+
+/* Regular */
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-Regular.woff2') format('woff2'),
+ url('IBMPlexSans-Regular.otf') format('opentype');
+ font-weight: 400;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-Italic.woff2') format('woff2'),
+ url('IBMPlexSans-Italic.otf') format('opentype');
+ font-weight: 400;
+ font-style: italic;
+}
+
+/* Medium */
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-Medium.woff2') format('woff2'),
+ url('IBMPlexSans-Medium.otf') format('opentype');
+ font-weight: 500;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-MediumItalic.woff2') format('woff2'),
+ url('IBMPlexSans-MediumItalic.otf') format('opentype');
+ font-weight: 500;
+ font-style: italic;
+}
+
+/* SemiBold */
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-SemiBold.woff2') format('woff2'),
+ url('IBMPlexSans-SemiBold.otf') format('opentype');
+ font-weight: 600;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-SemiBoldItalic.woff2') format('woff2'),
+ url('IBMPlexSans-SemiBoldItalic.otf') format('opentype');
+ font-weight: 600;
+ font-style: italic;
+}
+
+/* Bold */
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-Bold.woff2') format('woff2'),
+ url('IBMPlexSans-Bold.otf') format('opentype');
+ font-weight: 700;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-BoldItalic.woff2') format('woff2'),
+ url('IBMPlexSans-BoldItalic.otf') format('opentype');
+ font-weight: 700;
+ font-style: italic;
+}
+
+/* Thin */
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-Thin.woff2') format('woff2'),
+ url('IBMPlexSans-Thin.otf') format('opentype');
+ font-weight: 100;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-ThinItalic.woff2') format('woff2'),
+ url('IBMPlexSans-ThinItalic.otf') format('opentype');
+ font-weight: 100;
+ font-style: italic;
+}
+
+/* Text */
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-Text.woff2') format('woff2'),
+ url('IBMPlexSans-Text.otf') format('opentype');
+ font-weight: 400;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'IBMPlexSans';
+ src: url('IBMPlexSans-TextItalic.woff2') format('woff2'),
+ url('IBMPlexSans-TextItalic.otf') format('opentype');
+ font-weight: 400;
+ font-style: italic;
+}
+
body {
- font-family: sans-serif;
+ font-family: "IBM Plex Sans";
}
body > section {
- padding: 0.5cm 0 0.5cm 0;
+ padding: 0.5cm 0 0.5cm 0;
}
details > summary > h2, details > summary > h3 {
- display: inline;
+ display: inline;
+}
+
+h1 {
+ font-size: 4rem;
+ font-weight: 700;
+}
+
+.page-width {
+ max-width: 55rem;
+ margin: auto;
+ padding: 1rem 0;
+}
+
+/* Desktop */
+@media (min-width: 50em) {
+}
+
+/* Smartphone */
+@media (max-width: 50em) {
+ h1 {
+ font-size: 2rem;
+ text-align: center;
+ }
}
+