forked from NotAShelf/beer
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I64d67dbc96ce3faa68d221252e44d9976a6a6964
79 lines
1.9 KiB
Nix
79 lines
1.9 KiB
Nix
{
|
|
lib,
|
|
rustPlatform,
|
|
pkg-config,
|
|
makeBinaryWrapper,
|
|
ncurses,
|
|
scdoc,
|
|
installShellFiles,
|
|
wayland,
|
|
libxkbcommon,
|
|
freetype,
|
|
fontconfig,
|
|
harfbuzz,
|
|
}: 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
|
|
harfbuzz
|
|
];
|
|
|
|
# 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;
|
|
};
|
|
})
|