beer/nix/package.nix
NotAShelf 5cba919c78
treewide: split terminal core modules
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9cace0b7c6995c0fca21ff2cf465ae1f6a6a6964
2026-06-26 10:21:59 +03:00

77 lines
1.8 KiB
Nix

{
lib,
rustPlatform,
pkg-config,
makeBinaryWrapper,
ncurses,
scdoc,
installShellFiles,
wayland,
libxkbcommon,
freetype,
fontconfig,
}: let
cargoTOML = (lib.importTOML ../Cargo.toml).package.version;
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "beer";
version = cargoTOML.package.version;
src = let
fs = lib.fileset;
s = ../.;
in
fs.toSource {
root = s;
fileset = fs.unions [
(s + /src)
(s + /Cargo.lock)
(s + /Cargo.toml)
(s + /terminfo)
(s + /doc)
];
};
cargoLock.lockFile = "${finalAttrs.src}/Cargo.lock";
enableParallelBuilding = true;
strictDeps = true;
nativeBuildInputs = [
pkg-config
makeBinaryWrapper
ncurses # tic
scdoc # man page generation
installShellFiles # installManPage
];
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
# Generate the man pages from their scdoc sources.
scdoc < doc/beer.1.scd > beer.1
scdoc < doc/beer.toml.5.scd > beer.toml.5
installManPage beer.1 beer.toml.5
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;
};
})