breeze-plymouth: allow usage of custom logo
This commit is contained in:
parent
39049dbd37
commit
001b42db7f
@ -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";
|
||||||
|
@ -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
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user