Add and switch to modified build of Iosevka font

Update Makefile for building and copying new fonts

Adjust padding of parts of waybar, using variable width glyphs in
Iosevka font
This commit is contained in:
Evie Litherland-Smith 2025-01-07 08:18:05 +00:00
parent 07b383cf3e
commit 36825e26a5
6 changed files with 190 additions and 39 deletions

View file

@ -7,10 +7,12 @@ default: build
build:
nix build --no-link --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
server:
fonts:
nix build --no-link --max-jobs 1 .#iosevka-custom-aile .#iosevka-custom-etoile .#iosevka-custom-nerdfont
server: fonts
nixos-rebuild build --flake .#Legion
nix copy ./result --to ssh://legion
rm ./result
nix copy ./result --to ssh://legion && rm ./result
flathub:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

View file

@ -30,9 +30,22 @@
...
}:
let
treefmt = treefmt-nix.lib.evalModule nixpkgs.legacyPackages.x86_64-linux ./treefmt.nix;
pkgs = nixpkgs.legacyPackages.x86_64-linux;
treefmt = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
in
{
packages.x86_64-linux =
let
fonts = pkgs.callPackage ./system/fonts.nix { };
in
{
inherit (fonts)
iosevka-custom
iosevka-custom-aile
iosevka-custom-etoile
iosevka-custom-nerdfont
;
};
formatter.x86_64-linux = treefmt.config.build.wrapper;
checks.x86_64-linux.formatting = treefmt.config.build.check self;
nixosConfigurations = {

View file

@ -224,10 +224,22 @@
name = "volantes_cursors";
size = 32;
};
fonts = {
fonts =
let
fpkgs = pkgs.callPackage ./fonts.nix { };
in
{
serif = {
package = fpkgs.iosevka-custom-etoile;
name = "Iosevka Custom Etoile";
};
sansSerif = {
package = fpkgs.iosevka-custom-aile;
name = "Iosevka Custom Aile";
};
monospace = {
package = pkgs.nerdfonts.override { fonts = [ "DejaVuSansMono" ]; };
name = "DejaVuSansM Nerd Font";
package = fpkgs.iosevka-custom-nerdfont;
name = "IosevkaCustom Nerd Font Propo";
};
sizes = {
applications = 12;

139
system/fonts.nix Normal file
View file

@ -0,0 +1,139 @@
{
stdenv,
findutils,
iosevka,
nerd-font-patcher,
}:
let
custom-build-plan = {
noCvSs = false;
exportGlyphNames = false;
widths.Normal = {
shape = 500;
menu = 5;
css = "normal";
};
weights = {
Regular = {
shape = 400;
menu = 400;
css = 400;
};
Bold = {
shape = 700;
menu = 700;
css = 700;
};
};
slopes = {
Upright = {
angle = 0;
shape = "upright";
menu = "upright";
css = "normal";
};
Italic = {
angle = 9.4;
shape = "italic";
menu = "italic";
css = "italic";
};
};
variants.design = {
capital-g = "toothless-corner-serifless-hooked";
capital-j = "serifed-both-sides";
capital-k = "curly-serifless";
capital-p = "closed-motion-serifed";
capital-q = "crossing";
capital-r = "curly-serifless";
capital-u = "tailed-serifless";
capital-z = "straight-serifless-with-horizontal-crossbar";
a = "double-storey-tailed";
d = "tailed-serifless";
e = "rounded";
f = "tailed-crossbar-at-x-height";
g = "double-storey-open";
h = "tailed-serifless";
i = "tailed-serifed";
j = "serifed";
k = "cursive-serifless";
l = "tailed-serifed";
m = "tailed-serifless";
n = "tailed-serifless";
q = "diagonal-tailed-serifless";
u = "tailed-serifless";
y = "cursive-serifless";
z = "straight-serifless-with-horizontal-crossbar";
lower-delta = "flat-top";
lower-lambda = "tailed-turn";
lower-xi = "flat-top";
lower-chi = "semi-chancery-straight-serifless";
zero = "tall-slashed";
one = "no-base";
two = "straight-neck-serifless";
three = "flat-top-serifless";
four = "semi-open-serifless";
five = "oblique-arched-serifless";
six = "open-contour";
seven = "bend-serifless-crossbar";
eight = "two-circles";
nine = "open-contour";
asterisk = "hex-low";
underscore = "high";
caret = "high";
paren = "normal";
brace = "straight";
number-sign = "slanted";
ampersand = "closed";
at = "fourfold";
percent = "dots";
question = "corner";
lig-ltgteq = "flat";
lig-neq = "more-slanted";
lig-equal-chain = "without-notch";
lig-hyphen-chain = "without-notch";
lig-double-arrow-bar = "without-notch";
lig-single-arrow-bar = "without-notch";
};
};
in
rec {
iosevka-custom = iosevka.override {
set = "Custom";
privateBuildPlan = custom-build-plan // {
family = "Iosevka Custom";
spacing = "normal";
serifs = "sans";
};
};
iosevka-custom-aile = iosevka.override {
set = "CustomAile";
privateBuildPlan = custom-build-plan // {
family = "Iosevka Custom Aile";
spacing = "quasi-proportional";
serifs = "sans";
};
};
iosevka-custom-etoile = iosevka.override {
set = "CustomEtoile";
privateBuildPlan = custom-build-plan // {
family = "Iosevka Custom Etoile";
spacing = "quasi-proportional";
serifs = "slab";
};
};
iosevka-custom-nerdfont = stdenv.mkDerivation {
name = "${iosevka-custom.name}-nerd-font-patched";
src = iosevka-custom;
nativeBuildInputs = [
findutils
nerd-font-patcher
];
buildPhase = ''
find \( -name \*.ttf -o -name \*.otf \) -execdir nerd-font-patcher --variable-width-glyphs --careful --complete --boxdrawing --no-progressbars {} \;
'';
installPhase = ''
cp -a . $out
'';
};
}

View file

@ -334,9 +334,6 @@
padding: 2px 3px;
}
#workspaces button {
padding: 2px 5px 2px 1px;
}
#workspaces button.empty {
color: ${scheme.base03};
}
@ -359,26 +356,17 @@
}
#network {
color: ${scheme.base0A};
padding: 2px 6px 2px 1px;
}
#bluetooth {
color: ${scheme.base0B};
}
#clock.calendar {
color: ${scheme.base0C};
padding: 2px 3px 2px 3px;
}
#clock {
color: ${scheme.base0D};
padding: 2px 1px 2px 2px;
}
#backlight {
padding: 2px 3px 2px 3px;
}
#battery {
padding: 2px 2px 2px 4px;
}
#battery.warning {
color: ${scheme.base09};
}
@ -390,9 +378,6 @@
color: ${scheme.base0B};
}
#systemd-failed-units {
padding: 2px 4px 2px 1px;
}
#systemd-failed-units.ok {
color: ${scheme.base0B}
}