complete-computing-environment/vulfpeck_fonts_are_fun.org

109 lines
3.5 KiB
Org Mode

:PROPERTIES:
:ID: cce/vulfpeck_fonts_are_fun
:ROAM_ALIASES: "Vulf Sans" "Vulf Mono"
:END:
#+TITLE: Vulfpeck Fonts are Fun
#+filetags: :CCE:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle vulfpeck.el
#+PROPERTY: header-args:yaml :tangle roles/endpoint/tasks/vulfpeck.yml
#+ARCOLOGY_KEY: cce/vulfpeck
#+ARCOLOGY_ALLOW_CRAWL: t
#+ARROYO_EMACS_MODULE: vulfpeck
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+ARROYO_MODULE_WANTED: cce/run_hooks_after_init.org
I choose to standardize my interfaces on an opinionated font preference, using [[https://ohnotype.co/fonts/vulf-mono][Vulf Mono]] and its sibling Vulf Sans, in most places I can get away with expressing a preference. These fonts were commissioned for [[https://vulfpeck.com/][Vulfpeck]]'s website, an ascii-art band site for a bunch of funky nerds[fn:1:https://ohnotype.co/blog/the-process-of-vulf-sans]. It's a really fun font, and variable-width variant is nice to use in most places. It's available for sale reasonably priced from the foundry, and I use it for my systems and sites. I do, unfortunately, feel a bit tied to fixed-width fonts in spite of the development of Vulf Sans in Emacs, whether or not I am writing code or processing data. There's too many rough edges, text editing quibbles, etc, that you have to deal with when your text is variably-set.
#+begin_src emacs-lisp
(defun cce/set-font-vulf ()
(interactive)
(set-face-attribute 'default nil :family "Vulf Mono")
(set-face-attribute 'fixed-pitch nil :family "Vulf Mono")
(set-face-attribute 'variable-pitch nil :family "Vulf Mono" :slant 'oblique))
(add-hook 'after-cce-hook #'cce/set-font-vulf)
(provide 'cce/vulfpeck)
#+end_src
* Vulfpeck fonts on [[id:cce/my_nixos_configuration][My NixOS configuration]]
:PROPERTIES:
:ID: 20211117T213203.775430
:END:
A derivation for Vulf Mono.
#+begin_src nix :tangle ~/arroyo-nix/lib/vulfpeck.nix
{ pkgs, lib, stdenv, ...}:
stdenv.mkDerivation {
name="vulfpeck-fonts";
src=/home/rrix/sync/vulf-mono.zip;
nativeBuildInputs = [ pkgs.unzip ];
phases = [ "unpackPhase" ];
unpackPhase = ''
mkdir -p $out/share/fonts
unzip -d $out/share/fonts/truetype $src Desktop/*.otf
'';
meta = {
homepage="https://ohnotype.co/";
license = lib.licenses.unfree;
platforms = lib.platforms.all;
};
}
#+end_src
A derivation for Vulf Sans.
#+begin_src nix :tangle ~/arroyo-nix/lib/vulfpeck-sans.nix
{ pkgs, lib, stdenv, ...}:
stdenv.mkDerivation {
name="vulfpeck-fonts";
src=/home/rrix/sync/vulf-sans.zip;
nativeBuildInputs = [ pkgs.unzip ];
phases = [ "unpackPhase" ];
unpackPhase = ''
mkdir -p $out/share/fonts
unzip -d $out/share/fonts/truetype $src Desktop/*.otf
'';
meta = {
homepage="https://ohnotype.co/";
license = lib.licenses.unfree;
platforms = lib.platforms.all;
};
}
#+end_src
I configure [[id:cce/my_nixos_configuration][My NixOS]] to use Vulfpeck fonts where I can, and fall back to the [[id:cce/fonts][free fonts]] otherwise:
#+ARROYO_NIXOS_MODULE: nixos/vulfpeck.nix
#+ARROYO_SYSTEM_ROLE: endpoint
#+begin_src nix :tangle ~/arroyo-nix/nixos/vulfpeck.nix
{ pkgs, ... }:
let
vulf_mono = pkgs.callPackage ../lib/vulfpeck.nix {};
vulf_sans = pkgs.callPackage ../lib/vulfpeck-sans.nix {};
in
{
fonts = {
fontconfig.defaultFonts.monospace = ["Vulf Mono" "Deja Vu Sans Mono" "Noto Color Emoji" ];
fontconfig.defaultFonts.sansSerif = ["Vulf Sans" "Deja Vu Sans" "Noto Color Emoji" ];
packages = [ vulf_mono vulf_sans ];
};
}
#+end_src