nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/default.nix
Matthew Bauer f8006597a8 breeze-plymouth: make some things native
some of these only need to be on the build machine.
2020-03-06 00:45:48 -05:00

50 lines
1.8 KiB
Nix

{
mkDerivation,
lib,
copyPathsToStore,
extra-cmake-modules,
plymouth,
nixos-icons,
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;
mkDerivation {
name = "breeze-plymouth";
nativeBuildInputs = [ extra-cmake-modules ] ++ lib.optionals (logoFile != null) [ imagemagick netpbm perl ];
buildInputs = [ plymouth ];
patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
cmakeFlags = []
++ 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
'';
}