breeze-plymouth: allow usage of custom logo

This commit is contained in:
Mathieu A.-Tetreault 2019-09-20 12:00:24 -04:00
parent 39049dbd37
commit 001b42db7f
2 changed files with 33 additions and 28 deletions

View File

@ -5,17 +5,20 @@ with lib;
let let
inherit (pkgs) plymouth; inherit (pkgs) plymouth;
inherit (pkgs) nixos-icons;
cfg = config.boot.plymouth; cfg = config.boot.plymouth;
breezePlymouth = pkgs.breeze-plymouth.override { nixosBreezePlymouth = pkgs.breeze-plymouth.override {
nixosBranding = true; logoFile = cfg.logo;
nixosVersion = config.system.nixos.release; logoName = "nixos";
osName = "NixOS";
osVersion = config.system.nixos.release;
}; };
themesEnv = pkgs.buildEnv { themesEnv = pkgs.buildEnv {
name = "plymouth-themes"; name = "plymouth-themes";
paths = [ plymouth breezePlymouth ] ++ cfg.themePackages; paths = [ plymouth ] ++ cfg.themePackages;
}; };
configFile = pkgs.writeText "plymouthd.conf" '' configFile = pkgs.writeText "plymouthd.conf" ''
@ -35,7 +38,7 @@ in
enable = mkEnableOption "Plymouth boot splash screen"; enable = mkEnableOption "Plymouth boot splash screen";
themePackages = mkOption { themePackages = mkOption {
default = []; default = [ nixosBreezePlymouth ];
type = types.listOf types.package; type = types.listOf types.package;
description = '' description = ''
Extra theme packages for plymouth. Extra theme packages for plymouth.
@ -52,10 +55,7 @@ in
logo = mkOption { logo = mkOption {
type = types.path; type = types.path;
default = pkgs.fetchurl { default = "${nixos-icons}/share/icons/hicolor/128x128/apps/nix-snowflake.png";
url = "https://nixos.org/logo/nixos-hires.png";
sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si";
};
defaultText = ''pkgs.fetchurl { defaultText = ''pkgs.fetchurl {
url = "https://nixos.org/logo/nixos-hires.png"; url = "https://nixos.org/logo/nixos-hires.png";
sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si"; sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si";

View File

@ -8,37 +8,42 @@
imagemagick, imagemagick,
netpbm, netpbm,
perl, perl,
# these will typically need to be set via an override logoName ? null,
# in a NixOS context logoFile ? null,
nixosBranding ? false, osName ? null,
nixosName ? "NixOS", osVersion ? null,
nixosVersion ? "",
topColor ? "black", topColor ? "black",
bottomColor ? "black" bottomColor ? "black"
}: }:
let let
logoName = "nixos"; 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 in
assert lib.asserts.assertOneOf "topColor" topColor validColors;
assert lib.asserts.assertOneOf "bottomColor" bottomColor validColors;
mkDerivation { mkDerivation {
name = "breeze-plymouth"; name = "breeze-plymouth";
nativeBuildInputs = [ extra-cmake-modules ]; nativeBuildInputs = [ extra-cmake-modules ];
buildInputs = [ plymouth ] ++ lib.optionals nixosBranding [ imagemagick netpbm perl ]; buildInputs = [ plymouth ] ++ lib.optionals (logoFile != null) [ imagemagick netpbm perl ];
patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
cmakeFlags = lib.optionals nixosBranding [ cmakeFlags = []
"-DDISTRO_NAME=${nixosName}" ++ lib.optional (osName != null) "-DDISTRO_NAME=${osName}"
"-DDISTRO_VERSION=${nixosVersion}" ++ lib.optional (osVersion != null) "-DDISTRO_VERSION=${osVersion}"
"-DDISTRO_LOGO=${logoName}" ++ lib.optional (logoName != null) "-DDISTRO_LOGO=${logoName}"
"-DBACKGROUND_TOP_COLOR=${topColor}" ++ lib.optional (topColor != null) "-DBACKGROUND_TOP_COLOR=${topColor}"
"-DBACKGROUND_BOTTOM_COLOR=${bottomColor}" ++ lib.optional (bottomColor != null) "-DBACKGROUND_BOTTOM_COLOR=${bottomColor}"
]; ;
postPatch = '' postPatch = ''
substituteInPlace cmake/FindPlymouth.cmake --subst-var out substituteInPlace cmake/FindPlymouth.cmake --subst-var out
'' + lib.optionalString nixosBranding '' '' + lib.optionalString (logoFile != null) ''
cp ${nixos-icons}/share/icons/hicolor/128x128/apps/nix-snowflake.png breeze/images/${logoName}.logo.png cp ${logoFile} breeze/images/${resolvedLogoName}.logo.png
# conversion for 16bit taken from the breeze-plymouth readme # conversion for 16bit taken from the breeze-plymouth readme
convert ${nixos-icons}/share/icons/hicolor/128x128/apps/nix-snowflake.png -alpha Background -background "#000000" -fill "#000000" -flatten tmp.png convert ${logoFile} -alpha Background -background "#000000" -fill "#000000" -flatten tmp.png
pngtopnm tmp.png | pnmquant 16 | pnmtopng > breeze/images/16bit/${logoName}.logo.png pngtopnm tmp.png | pnmquant 16 | pnmtopng > breeze/images/16bit/${resolvedLogoName}.logo.png
''; '';
} }