diff --git a/pkgs/data/fonts/input-fonts/default.nix b/pkgs/data/fonts/input-fonts/default.nix index 9956325e15b..36a18c1f8f1 100644 --- a/pkgs/data/fonts/input-fonts/default.nix +++ b/pkgs/data/fonts/input-fonts/default.nix @@ -1,31 +1,76 @@ -{ lib, stdenv, requireFile, unzip }: +{ lib +, stdenv +, fetchzip +, python3 +, config +, acceptLicense ? config.input-fonts.acceptLicense or false +}: -stdenv.mkDerivation { +let + + throwLicense = throw '' + Input is available free of charge for private/unpublished usage. This includes things like your personal coding app or for composing plain text documents. + To use it, you need to agree to its license: https://input.djr.com/license/ + + You can express acceptance by setting acceptLicense to true in your + configuration. Note that this is not a free license so it requires allowing + unfree licenses. + + configuration.nix: + nixpkgs.config.allowUnfree = true; + nixpkgs.config.input-fonts.acceptLicense = true; + + config.nix: + allowUnfree = true; + input-fonts.acceptLicense = true; + + If you would like to support this project, consider purchasing a license at . + ''; + + releaseDate = "2015-06-24"; + +in + +stdenv.mkDerivation rec { pname = "input-fonts"; - version = "2019-11-25"; # date of the download and checksum + version = "1.2"; - src = requireFile { - name = "Input-Font.zip"; - url = "https://input.fontbureau.com/download/"; - sha256 = "10rax2a7vzidcs7kyfg5lv5bwp9i7kvjpdcsd10p0517syijkp3b"; - }; + src = + assert !acceptLicense -> throwLicense; + fetchzip { + name = "input-fonts-${version}"; + # Add .zip parameter so that zip unpackCmd can match it. + url = "https://input.djr.com/build/?fontSelection=whole&a=0&g=0&i=0&l=0&zero=0&asterisk=0&braces=0&preset=default&line-height=1.2&accept=I+do&email=&.zip"; + sha256 = "BESZ4Bjgm2hvQ7oPpMvYSlE8EqvQjqHZtXWIovqyIzA="; + stripRoot = false; - nativeBuildInputs = [ unzip ]; + extraPostFetch = '' + # Reset the timestamp to release date for determinism. + PATH=${lib.makeBinPath [ python3.pkgs.fonttools ]}:$PATH + for ttf_file in $out/Input_Fonts/*/*/*.ttf; do + ttx_file=$(dirname "$ttf_file")/$(basename "$ttf_file" .ttf).ttx + ttx "$ttf_file" + rm "$ttf_file" + touch -m -t ${builtins.replaceStrings [ "-" ] [ "" ] releaseDate}0000 "$ttx_file" + ttx --recalc-timestamp "$ttx_file" + rm "$ttx_file" + done + ''; + }; - phases = [ "unpackPhase" "installPhase" ]; - - sourceRoot = "."; + dontConfigure = true; + dontBuild = true; installPhase = '' + runHook preInstall + mkdir -p $out/share/fonts/truetype find Input_Fonts -name "*.ttf" -exec cp -a {} "$out"/share/fonts/truetype/ \; mkdir -p "$out"/share/doc cp -a *.txt "$out"/share/doc/ - ''; - outputHashAlgo = "sha256"; - outputHashMode = "recursive"; - outputHash = "15sdhqqqd4jgk80fw7ncx49avi9cxbdgyrvnrfya0066x4q4r6lv"; + runHook postInstall + ''; meta = with lib; { description = "Fonts for Code, from Font Bureau"; @@ -42,9 +87,12 @@ stdenv.mkDerivation { generous spacing, large punctuation, and easily distinguishable characters — but without the limitations of a fixed width. ''; - homepage = "https://input.fontbureau.com"; + homepage = "https://input.djr.com/"; license = licenses.unfree; - maintainers = with maintainers; [ romildo ]; + maintainers = with maintainers; [ + jtojnar + romildo + ]; platforms = platforms.all; }; }