brewery
notashelf /
8486c343d709df37d13fc930c34c5317109928b6

beer

public

A terminal worth pouring time into

Star0tarball
clone
ssh://git@git.notashelf.dev:33/notashelf/beer.git

Commit 8486c343d709

tarball

NotAShelf <raf@notashelf.dev> · 2026-06-26 07:21 UTC

unverified3 files changed+51-12
nix: load terminfo in the devshell and complete the package build

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9d341443399d553c197f56bf66a578426a6a6964
diff --git a/.gitignore b/.gitignoreindex 8470fac..61948ec 100644--- a/.gitignore+++ b/.gitignore@@ -1,3 +1,4 @@ /target /result /result-*+/.terminfodiff --git a/nix/package.nix b/nix/package.nixindex 719b10c..b844618 100644--- a/nix/package.nix+++ b/nix/package.nix@@ -1,10 +1,17 @@ {   lib,   rustPlatform,+  pkg-config,+  makeBinaryWrapper,+  ncurses,+  wayland,+  libxkbcommon,+  freetype,+  fontconfig, }: rustPlatform.buildRustPackage (finalAttrs: {   pname = "beer";-  version = "0.0.0";+  version = "0.0.1";    src = let     fs = lib.fileset;@@ -16,14 +23,42 @@ rustPlatform.buildRustPackage (finalAttrs: {         (fs.fileFilter (file: builtins.any file.hasExt ["rs"]) (s + /src))         (s + /Cargo.lock)         (s + /Cargo.toml)+        (s + /terminfo)       ];     }; -  cargoLock.lockFile = "${finalAttrs.src}/Cargo.lock";+  cargoLock.lockFile = "${finalAttrs.src}Cargo.lock";   enableParallelBuilding = true; +  strictDeps = true;+  nativeBuildInputs = [+    pkg-config+    makeBinaryWrapper+    ncurses # tic+  ];++  buildInputs = [+    wayland+    libxkbcommon+    freetype+    fontconfig+  ];++  # Install the terminfo entry, and make the Wayland/xkb libraries (loaded via+  # dlopen, so not captured by rpath) discoverable at runtime.+  postInstall = ''+    mkdir -p "$out/share/terminfo"+    tic -x -o "$out/share/terminfo" terminfo/beer.info+    wrapProgram "$out/bin/beer" \+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [wayland libxkbcommon]}+  '';+   meta = {+    description = "A fast, software-rendered, Wayland-native terminal emulator";+    homepage = "https://github.com/NotAShelf/beer";+    license = lib.licenses.eupl12;     maintainers = with lib.maintainers; [NotAShelf];     mainProgram = "beer";+    platforms = lib.platforms.linux;   }; })diff --git a/nix/shell.nix b/nix/shell.nixindex 4a52178..42d7b73 100644--- a/nix/shell.nix+++ b/nix/shell.nix@@ -8,6 +8,7 @@   taplo,   cargo-deny,   pkg-config,+  ncurses,   wayland,   wayland-protocols,   wayland-scanner,@@ -17,7 +18,7 @@   harfbuzz, }: mkShell {-  name = "rust";+  name = "beer-dev";    strictDeps = true;   nativeBuildInputs = [@@ -25,19 +26,11 @@ mkShell {     rustc     clippy     rustfmt-    rustc-    cargo--    # Tools-    rustfmt-    clippy-    cargo     taplo--    # LSP     rust-analyzer     cargo-deny     pkg-config+    ncurses # tic, to compile the terminfo entry   ];    buildInputs = [@@ -49,4 +42,14 @@ mkShell {     fontconfig     harfbuzz   ];++  # Compile the beer terminfo into a project-local database and put it ahead of+  # the system one, so TERM=beer resolves inside the shell (and for the shell+  # beer spawns, which inherits this env). The trailing ':' keeps the system+  # database on the search path.+  shellHook = ''+    if tic -x -o "$PWD/.terminfo" terminfo/beer.info 2>/dev/null; then+      export TERMINFO_DIRS="$PWD/.terminfo:"+    fi+  ''; }