1 { lib, pkgs, config, ... }:
3 cfg = config.myServices.websites.tools.assets;
4 fetchFont = v: pkgs.runCommand "fetch-font" {
5 outputHashAlgo = "sha256";
6 outputHashMode = "recursive";
10 ${pkgs.curl}/bin/curl -k --output $out/font.css -H "User-Agent: Firefox/100.0" "${v.url}"
11 cat $out/font.css | grep -o "https://[^ )]*" | while read url; do
12 filename=$(echo "$url" | sed -e "s@.*/@@g")
13 ${pkgs.curl}/bin/curl -k --output "$out/$filename" "$url"
14 sed -i -e "s@$url@./$filename@" "$out/font.css"
17 fetchTgz = v: pkgs.runCommand "fetch-tgz" {
18 outputHashAlgo = "sha256";
19 outputHashMode = "recursive";
20 outputHash = v.sha256;
24 ${pkgs.curl}/bin/curl -L -k "${v.url}" | tar -xz --strip-components=${builtins.toString v.tgzRemoveComponents}
27 if v.assetType == "googleFont"
29 else if v.assetType == "tgz"
31 else pkgs.fetchurl { url = v.url; sha256 = v.sha256; };
32 assets_urls = lib.mapAttrs (k: fetchAsset) config.myEnv.tools.assets;
33 assets = pkgs.runCommand "assets" {} (''
35 cp -a ${./static}/* $out/
36 '' + builtins.concatStringsSep "\n"
37 (lib.mapAttrsToList (k: v: ''
38 if [ -d "${v}" ]; then
39 mkdir -p "$out/$(dirname "${k}")"
40 cp -a "${v}" "$out/${k}"
41 chmod -R u+rwX "$out/${k}"
43 install -D -m644 -T "${v}" "$out/${k}"
48 options.myServices.websites.tools.assets = {
49 enable = lib.mkEnableOption "Enable assets website";
51 config = lib.mkIf cfg.enable {
52 services.websites.env.tools.vhostConfs.assets = {
55 hosts = [ "assets.immae.eu" ];
59 Use Apaxy "${assets}" "title"
60 <Directory "${assets}">
61 Options Indexes FollowSymlinks
64 Header always set Last-Modified "Tue, 01 Jan 2020 00:00:00 GMT"
65 Header always set Cache-Control "public, max-age=31536000, immutable"
66 Header always set Access-Control-Allow-Origin "*"
67 Header always set Access-Control-Expose-Headers "*"