clone
ssh://git@git.notashelf.dev:33/notashelf/beer.gitCommit 8486c343d709
tarballunverified3 files changed+51-12
@@ -1,3 +1,4 @@ /target /result /result-*+/.terminfo@@ -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; }; })@@ -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+ ''; }