mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46:05 +01:00
alacritty: check existence of the theme without using IFD
This makes it possible to evaluate a config using the theme option with --no-allow-import-from-derivation
This commit is contained in:
parent
7add554458
commit
f8e0560734
1 changed files with 21 additions and 19 deletions
|
|
@ -7,6 +7,26 @@
|
||||||
let
|
let
|
||||||
cfg = config.programs.alacritty;
|
cfg = config.programs.alacritty;
|
||||||
tomlFormat = pkgs.formats.toml { };
|
tomlFormat = pkgs.formats.toml { };
|
||||||
|
|
||||||
|
alacrittyTheme = pkgs.alacritty-theme.overrideAttrs (prevAttrs: {
|
||||||
|
name = "alacritty-theme-for-home-manager";
|
||||||
|
postInstall =
|
||||||
|
let
|
||||||
|
inherit (config.programs.alacritty) theme;
|
||||||
|
in
|
||||||
|
lib.concatStringsSep "\n" [
|
||||||
|
prevAttrs.postInstall
|
||||||
|
(lib.optionalString (theme != null)
|
||||||
|
# bash
|
||||||
|
''
|
||||||
|
if [ ! -f "$out/share/alacritty-theme/${theme}.toml" ]; then
|
||||||
|
echo "error: alacritty theme '${theme}' does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
''
|
||||||
|
)
|
||||||
|
];
|
||||||
|
});
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
|
|
@ -62,29 +82,11 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
assertions = [
|
|
||||||
{
|
|
||||||
# If using the theme option, ensure that theme exists in the
|
|
||||||
# alacritty-theme package.
|
|
||||||
assertion =
|
|
||||||
let
|
|
||||||
available = lib.pipe "${pkgs.alacritty-theme}/share/alacritty-theme" [
|
|
||||||
builtins.readDir
|
|
||||||
(lib.filterAttrs (name: type: type == "regular" && lib.hasSuffix ".toml" name))
|
|
||||||
lib.attrNames
|
|
||||||
(lib.map (lib.removeSuffix ".toml"))
|
|
||||||
];
|
|
||||||
in
|
|
||||||
cfg.theme == null || (builtins.elem cfg.theme available);
|
|
||||||
message = "The alacritty theme '${cfg.theme}' does not exist.";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = lib.mkIf (cfg.package != null) [ cfg.package ];
|
home.packages = lib.mkIf (cfg.package != null) [ cfg.package ];
|
||||||
|
|
||||||
programs.alacritty.settings =
|
programs.alacritty.settings =
|
||||||
let
|
let
|
||||||
theme = "${pkgs.alacritty-theme}/share/alacritty-theme/${cfg.theme}.toml";
|
theme = "${alacrittyTheme}/share/alacritty-theme/${cfg.theme}.toml";
|
||||||
in
|
in
|
||||||
lib.mkIf (cfg.theme != null) {
|
lib.mkIf (cfg.theme != null) {
|
||||||
general.import = lib.mkIf (lib.versionAtLeast cfg.package.version "0.14") [ theme ];
|
general.import = lib.mkIf (lib.versionAtLeast cfg.package.version "0.14") [ theme ];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue