diff --git a/.gitignore b/.gitignore index 6345245..3241fbe 100644 --- a/.gitignore +++ b/.gitignore @@ -185,3 +185,4 @@ patched/* nerd-fonts .env font-patcher-log.txt +result diff --git a/README.md b/README.md index a8fc167..1359f08 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,14 @@ make update-fonts You can verify the fonts have been added with `make check`. +## with Nix + +You can run using the included `flake.nix`. + +```bash +nix run "github:daylinmorgan/monolisa-nerdfont-patch" +``` + ## Contributing Before making changes to to any of the scripts in `bin` you should first install `pre-commit`. diff --git a/flake.nix b/flake.nix index 093a64a..55d720f 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,36 @@ ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"] (system: f nixpkgs.legacyPackages.${system}); in { + packages = forAllSystems ( + pkgs: + with pkgs; { + default = stdenv.mkDerivation { + name = "monolisa-nerdfont-patch"; + src = ./.; + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ + fontforge + python3 + ]; + unpackPhase = ":"; + buildPhase = ":"; + installPhase = '' + mkdir -p $out/bin + install -m755 -D ${./patch-monolisa} $out/bin/monolisa-nerdfont-patch + install -m755 -D ${./font-patcher} $out/bin/font-patcher + cp -r ${./bin} $out/bin/bin + cp -r ${./src} $out/bin/src + ''; + postFixup = '' + wrapProgram $out/bin/monolisa-nerdfont-patch \ + --set PATH ${lib.makeBinPath [ + fontforge + ]} + ''; + }; + } + ); + devShells = forAllSystems ( pkgs: with pkgs; { diff --git a/patch-monolisa b/patch-monolisa index 165d994..9aad160 100755 --- a/patch-monolisa +++ b/patch-monolisa @@ -10,8 +10,6 @@ import time from pathlib import Path from typing import List, Set -FONT_SRC = (Path(__file__).parent / "MonoLisa").absolute() - class Color: def __init__(self): @@ -133,16 +131,16 @@ def patch_single_font( font_path: Path, output_dir: Path, fp_args: str, verbose: bool ) -> None: # update display name to full resolved path - rel_path = font_path.absolute().relative_to(FONT_SRC) - output_path = (output_dir / rel_path).parent + rel_path = font_path.absolute() + output_path = (output_dir / rel_path.parent.name).absolute() output_path.mkdir(exist_ok=True, parents=True) cmd = [ "fontforge", "-script", - "./font-patcher", + f"{Path(__file__).parent}/font-patcher", "--glyphdir", - "./src/glyphs/", + f"{Path(__file__).parent}/src/glyphs/", "-out", f"{output_path}", f"{font_path.absolute()}", @@ -171,7 +169,9 @@ def collect_files_by_dir(fontfiles: List[Path]) -> Set[Path]: def patch_font_dir_docker( font_dir_path: Path, output_dir: Path, fp_args: str, verbose: bool ) -> None: - output_path = (output_dir / font_dir_path.relative_to(FONT_SRC)).absolute() + output_path = ( + output_dir / font_dir_path.relative_to(font_dir_path.parent) + ).absolute() output_path.mkdir(exist_ok=True, parents=True) cmd = [