X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=modules%2Fprivate%2Fwebsites%2Ftools%2Fassets%2Fdefault.nix;h=1f5f1a4bd2d702af740fde3d9ac3c3f07641e194;hb=ea0ba77c80b2b76836eaad7e62666df091262818;hp=0eb476d6746071e5c6d5a5702e8296a513486338;hpb=4c42e0beb65d2a92e988a81aa12f50aa6bd1f820;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/modules/private/websites/tools/assets/default.nix b/modules/private/websites/tools/assets/default.nix index 0eb476d..1f5f1a4 100644 --- a/modules/private/websites/tools/assets/default.nix +++ b/modules/private/websites/tools/assets/default.nix @@ -1,13 +1,47 @@ { lib, pkgs, config, ... }: let cfg = config.myServices.websites.tools.assets; - assets_urls = lib.mapAttrs (k: v: pkgs.fetchurl v) config.myEnv.tools.assets; + fetchFont = v: pkgs.runCommand "fetch-font" { + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = v.sha256; + } '' + mkdir -p $out + ${pkgs.curl}/bin/curl -k --output $out/font.css -H "User-Agent: Firefox/100.0" "${v.url}" + cat $out/font.css | grep -o "https://[^ )]*" | while read url; do + filename=$(echo "$url" | sed -e "s@.*/@@g") + ${pkgs.curl}/bin/curl -k --output "$out/$filename" "$url" + sed -i -e "s@$url@./$filename@" "$out/font.css" + done + ''; + fetchTgz = v: pkgs.runCommand "fetch-tgz" { + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = v.sha256; + } '' + mkdir -p $out + cd $out + ${pkgs.curl}/bin/curl -L -k "${v.url}" | tar -xz --strip-components=${builtins.toString v.tgzRemoveComponents} + ''; + fetchAsset = v: + if v.assetType == "googleFont" + then fetchFont v + else if v.assetType == "tgz" + then fetchTgz v + else pkgs.fetchurl { url = v.url; sha256 = v.sha256; }; + assets_urls = lib.mapAttrs (k: fetchAsset) config.myEnv.tools.assets; assets = pkgs.runCommand "assets" {} ('' mkdir -p $out cp -a ${./static}/* $out/ '' + builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: '' - install -D -m644 -T ${v} $out/${k} + if [ -d "${v}" ]; then + mkdir -p "$out/$(dirname "${k}")" + cp -a "${v}" "$out/${k}" + chmod -R u+rwX "$out/${k}" + else + install -D -m644 -T "${v}" "$out/${k}" + fi '') assets_urls)); in {