nixpkgs/pkgs/kde/plasma/breeze-plymouth/default.nix
2024-09-20 08:54:48 +03:00

70 lines
1.8 KiB
Nix

{
lib,
mkKdeDerivation,
pkg-config,
plymouth,
imagemagick,
netpbm,
perl,
logoName ? null,
logoFile ? null,
osName ? null,
osVersion ? null,
topColor ? "black",
bottomColor ? "black",
}:
let
validColors = [
"black"
"cardboard_grey"
"charcoal_grey"
"icon_blue"
"paper_white"
"plasma_blue"
"neon_blue"
"neon_green"
];
resolvedLogoName =
if (logoFile != null && logoName == null) then
lib.strings.removeSuffix ".png" (baseNameOf (toString logoFile))
else
logoName;
in
assert lib.asserts.assertOneOf "topColor" topColor validColors;
assert lib.asserts.assertOneOf "bottomColor" bottomColor validColors;
mkKdeDerivation {
pname = "breeze-plymouth";
# FIXME(later): discuss with upstream
patches = [ ./install-paths.patch ];
extraNativeBuildInputs =
[ pkg-config ]
++ lib.optionals (logoFile != null) [
imagemagick
netpbm
perl
];
extraBuildInputs = [ plymouth ];
extraCmakeFlags =
[ ]
++ lib.optional (osName != null) "-DDISTRO_NAME=${osName}"
++ lib.optional (osVersion != null) "-DDISTRO_VERSION=${osVersion}"
++ lib.optional (logoName != null) "-DDISTRO_LOGO=${logoName}"
++ lib.optional (topColor != null) "-DBACKGROUND_TOP_COLOR=${topColor}"
++ lib.optional (bottomColor != null) "-DBACKGROUND_BOTTOM_COLOR=${bottomColor}";
postPatch =
''
substituteInPlace cmake/FindPlymouth.cmake --subst-var out
''
+ lib.optionalString (logoFile != null) ''
cp ${logoFile} breeze/images/${resolvedLogoName}.logo.png
# conversion for 16bit taken from the breeze-plymouth readme
convert ${logoFile} -alpha Background -background "#000000" -fill "#000000" -flatten tmp.png
pngtopnm tmp.png | pnmquant 16 | pnmtopng > breeze/images/16bit/${resolvedLogoName}.logo.png
'';
}