add stylesheet with fonts
This commit is contained in:
parent
b443413024
commit
d248608411
12
presentation/style.css
Normal file
12
presentation/style.css
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
body {
|
||||||
|
font-family: Heebo, sans-serif;
|
||||||
|
padding: 1em;
|
||||||
|
max-width: 50em;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6
|
||||||
|
{
|
||||||
|
font-family: Signika, sans-serif;
|
||||||
|
}
|
||||||
|
|
53
presentation/style.nix
Normal file
53
presentation/style.nix
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{ config, lib, pkgs, ... }: {
|
||||||
|
config.assets."style.css".path = ./style.css;
|
||||||
|
config.assets."fonts.css".path = with lib; builtins.toFile "fonts.css" (join "\n" (map
|
||||||
|
(font: ''
|
||||||
|
@font-face {
|
||||||
|
font-family: '${font.name}';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: ${toString font.weight};
|
||||||
|
src: url(/${head config.assets.${font.file}.locations}) format('woff2');
|
||||||
|
}
|
||||||
|
'')
|
||||||
|
(
|
||||||
|
(crossLists (name: file: weight: { inherit name file weight; })
|
||||||
|
[ [ "Signika " ] [ "signika-extended.woff2" "signika.woff2" ] [ 500 700 ] ]
|
||||||
|
)
|
||||||
|
++
|
||||||
|
(crossLists (name: file: weight: { inherit name file weight; })
|
||||||
|
[ [ "Heebo " ] [ "heebo-extended.woff2" "heebo.woff2" ] [ 400 600 ] ]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
|
# TODO: get directly from https://github.com/google/fonts
|
||||||
|
# and compress with https://github.com/fonttools/fonttools
|
||||||
|
config.assets."signika-extended.woff2" = {
|
||||||
|
path = pkgs.fetchurl {
|
||||||
|
url = "https://fonts.gstatic.com/s/signika/v25/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bOjM7sfA.woff2";
|
||||||
|
hash = "sha256-6xM7cHYlTKNf1b0gpqhPJjwOoZfxx9+u1e4JPYG2lKk=";
|
||||||
|
name = "signika-extended.woff2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config.assets."signika.woff2" = {
|
||||||
|
path = pkgs.fetchurl {
|
||||||
|
url = "https://fonts.gstatic.com/s/signika/v25/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bBjM4.woff2";
|
||||||
|
hash = "sha256-Yu0kGT3seb8Qtulu84wvY6nLyPXsRBO/JvTD2BQBtHg=";
|
||||||
|
name = "signika.woff2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config.assets."heebo-extended.woff2" = {
|
||||||
|
path = pkgs.fetchurl {
|
||||||
|
url = "https://fonts.gstatic.com/s/heebo/v26/NGS6v5_NC0k9P9H2TbE.woff2";
|
||||||
|
hash = "sha256-lk3+fFEqYWbHHGyXkdhKnOOMGS9m5ZbbxQcRQCSlxDE=";
|
||||||
|
name = "heebo-extended.woff2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config.assets."heebo.woff2" = {
|
||||||
|
path = pkgs.fetchurl {
|
||||||
|
url = "https://fonts.gstatic.com/s/heebo/v26/NGS6v5_NC0k9P9H4TbFzsQ.woff2";
|
||||||
|
hash = "sha256-JWnjYlbcNsg6KCJnRRjECL2HnZGJOBTMtdutWBNza4Q=";
|
||||||
|
name = "heebo.woff2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -55,7 +55,8 @@ in
|
||||||
# TODO: create static redirects from `tail <collection>.locations`
|
# TODO: create static redirects from `tail <collection>.locations`
|
||||||
(acc: elem: acc // (mapAttrs' (type: value: {
|
(acc: elem: acc // (mapAttrs' (type: value: {
|
||||||
name = head elem.locations + optionalString (type != "") ".${type}";
|
name = head elem.locations + optionalString (type != "") ".${type}";
|
||||||
value = builtins.toFile
|
value = if isStorePath value then value else
|
||||||
|
builtins.toFile
|
||||||
(elem.name + optionalString (type != "") ".${type}")
|
(elem.name + optionalString (type != "") ".${type}")
|
||||||
(toString value);
|
(toString value);
|
||||||
}))
|
}))
|
||||||
|
|
|
@ -16,8 +16,7 @@ in
|
||||||
options.path = mkOption {
|
options.path = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
};
|
};
|
||||||
config.name = builtins.baseNameOf config.path;
|
config.outputs."" = if lib.isStorePath config.path then config.path else "${config.path}";
|
||||||
config.outputs."" = builtins.readFile config.path;
|
|
||||||
}));
|
}));
|
||||||
default = { };
|
default = { };
|
||||||
};
|
};
|
||||||
|
|
|
@ -74,7 +74,7 @@ in
|
||||||
description = ''
|
description = ''
|
||||||
Representations of the document in different formats
|
Representations of the document in different formats
|
||||||
'';
|
'';
|
||||||
type = with types; attrsOf (either str attrs);
|
type = with types; attrsOf (either attrs pathInStore);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -54,6 +54,10 @@ in
|
||||||
title.text = page.title;
|
title.text = page.title;
|
||||||
meta.description = page.description;
|
meta.description = page.description;
|
||||||
link.canonical = lib.head page.locations;
|
link.canonical = lib.head page.locations;
|
||||||
|
link.stylesheets = [
|
||||||
|
{ href = "${page.link cfg.assets."style.css"}"; }
|
||||||
|
{ href = "${page.link cfg.assets."fonts.css"}"; }
|
||||||
|
];
|
||||||
};
|
};
|
||||||
body.content = [
|
body.content = [
|
||||||
(cfg.menus.main.outputs.html page)
|
(cfg.menus.main.outputs.html page)
|
||||||
|
|
Loading…
Reference in a new issue