103 lines
2.7 KiB
Nix
103 lines
2.7 KiB
Nix
{
|
|
pkgs ? import <nixpkgs> { },
|
|
themeName ? "bibata",
|
|
baseColor ? "#000000",
|
|
outlineColor ? "#FFFFFF",
|
|
watchBackgroundColor ? "",
|
|
cursorSizes ? "24",
|
|
}:
|
|
|
|
let
|
|
version = "2.0.7";
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "ful1e5";
|
|
repo = "Bibata_Cursor";
|
|
rev = "v${version}";
|
|
hash = "sha256-kIKidw1vditpuxO1gVuZeUPdWBzkiksO/q2R/+DUdEc=";
|
|
};
|
|
|
|
yarnOfflineCache = pkgs.fetchYarnDeps {
|
|
yarnLock = "${src}/yarn.lock";
|
|
hash = "sha256-EpWIGoFFokmzRML2r/dCM+TImOCtii8mifLgnLKdUMY=";
|
|
};
|
|
|
|
in
|
|
pkgs.stdenv.mkDerivation {
|
|
pname = "bibata-${themeName}-cursor";
|
|
inherit version src;
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
yarn
|
|
nodejs
|
|
fixup-yarn-lock
|
|
python3Packages.clickgen
|
|
autoPatchelfHook
|
|
];
|
|
|
|
buildInputs = with pkgs; [
|
|
# Required to satisfy dynamic linking for prebuilt JS native modules (like resvg-js)
|
|
stdenv.cc.cc.lib
|
|
];
|
|
|
|
configurePhase = ''
|
|
runHook preConfigure
|
|
|
|
export HOME=$(mktemp -d)
|
|
|
|
echo "1. Setup offline yarn cache"
|
|
yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
|
|
fixup-yarn-lock yarn.lock
|
|
|
|
echo "2. Install node_modules offline"
|
|
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
|
|
patchShebangs node_modules/
|
|
|
|
rm -rf node_modules/@resvg/resvg-js-linux-*-musl
|
|
|
|
echo "3. Patch prebuilt node binaries (like resvg) so they can run in the Nix sandbox"
|
|
autoPatchelf node_modules/
|
|
|
|
# https://github.com/ful1e5/cbmp/issues/4
|
|
echo "4. Patch 'ora' library to prevent Nix sandbox hangs"
|
|
sed -i 's/this.#isEnabled = .*/this.#isEnabled = false;/g' node_modules/ora/index.js
|
|
|
|
runHook postConfigure
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
echo "Splitting SVGs to render across $NIX_BUILD_CORES cores..."
|
|
|
|
echo "1. Distribute SVGs evenly into chunk directories"
|
|
if [ -n "${watchBackgroundColor}" ]; then
|
|
./node_modules/.bin/cbmp -d "svg" -o "bitmaps/${themeName}" -bc "${baseColor}" -oc "${outlineColor}" -wc "${watchBackgroundColor}"
|
|
else
|
|
./node_modules/.bin/cbmp -d "svg" -o "bitmaps/${themeName}" -bc "${baseColor}" -oc "${outlineColor}"
|
|
fi
|
|
|
|
echo "Rendering complete. Building XCursor theme..."
|
|
|
|
echo "4. Build the final cursors"
|
|
ctgen configs/normal/x.build.toml -s ${cursorSizes} -p x11 -d "bitmaps/${themeName}" -n "${themeName}" -c "${themeName} cursors"
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
install -dm 0755 $out/share/icons
|
|
cp -r themes/${themeName} $out/share/icons/
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with pkgs.lib; {
|
|
description = "Custom colored Bibata Cursor theme built from source";
|
|
homepage = "https://github.com/ful1e5/Bibata_Cursor";
|
|
license = licenses.gpl3;
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|