tall, condensed bitmap font for geeks
1{
2 description = "Scientifica: tall and condensed bitmap font for geeks";
3
4 inputs = {
5
6 nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.05";
7
8 bitsnpicas-src = {
9 url = "github:kreativekorp/bitsnpicas";
10 flake = false;
11 };
12
13 };
14
15 outputs =
16 { self
17 , nixpkgs
18 , bitsnpicas-src
19 , ...
20 }:
21 let
22 supportedSystems = [ "x86_64-linux" "x86_64-darwin" ];
23 forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
24
25 nixpkgsFor = forAllSystems (system:
26 import nixpkgs {
27 inherit system;
28 overlays = [ self.overlay ];
29 });
30 in
31 {
32
33 overlay = final: prev: rec {
34
35 bitsnpicas = with final; pkgs.writeScriptBin "bitsnpicas" ''
36 ${jdk}/bin/java -jar ${bitsnpicas-src}/downloads/BitsNPicas.jar "$@"
37 '';
38
39 scientifica = with final; pkgs.stdenvNoCC.mkDerivation {
40 pname = "scientifica";
41 version = "v2.3";
42 src = ./src;
43
44 buildPhase = ''
45 runHook preBuild
46
47 ff_filter() {
48 ${pkgs.fontforge}/bin/fontforge -c 'open(argv[1]).generate(argv[2])' "$@"
49 }
50
51 ttf_filter() {
52 ${pkgs.bitsnpicas}/bin/bitsnpicas convertbitmap -f ttf -o "$2" "$1"
53 }
54
55 mkdir -p $out/{ttf,otb,bdf}
56
57 pushd $src
58
59 # generate font files
60 for i in *; do
61 local file_name
62 file_name="''${i%.*}"
63 ttf_filter "$i" "$out/ttf/$file_name.ttf"
64 ff_filter "$i" "$out/otb/$file_name.otb"
65 ff_filter "$i" "$out/bdf/$file_name.bdf"
66 done
67
68 popd
69
70 runHook postBuild
71 '';
72
73 installPhase = ''
74 true
75 '';
76
77 };
78
79 };
80
81 packages = forAllSystems (system: {
82 inherit (nixpkgsFor."${system}") scientifica bitsnpicas;
83 });
84
85 defaultPackage = forAllSystems (system: self.packages."${system}".scientifica);
86
87 };
88}