diff --git a/config.nix b/config.nix index 151aa09..48098fd 100644 --- a/config.nix +++ b/config.nix @@ -27,7 +27,8 @@ lib: { type = lib.types.submodule { options = { wallpaper_path = lib.mkOption { - type = lib.types.path; + type = lib.types.nullOr lib.types.path; + default = null; description = "Path to the wallpaper image to extract colors from"; }; }; diff --git a/lib/selected-wallpaper.nix b/lib/selected-wallpaper.nix index 60e796e..dd3d634 100644 --- a/lib/selected-wallpaper.nix +++ b/lib/selected-wallpaper.nix @@ -22,7 +22,7 @@ config: let }; # Handle wallpaper path for generated themes and overrides - wallpaper_path = if (cfg.theme == "generated_light" || cfg.theme == "generated_dark") || (cfg.theme_overrides ? wallpaper_path) + wallpaper_path = if (cfg.theme == "generated_light" || cfg.theme == "generated_dark") || (cfg.theme_overrides.wallpaper_path != null) then toString cfg.theme_overrides.wallpaper_path else let selected_wallpaper = builtins.elemAt (wallpapers.${cfg.theme}) 0; diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix index e6ec168..6f91e9c 100644 --- a/modules/home-manager/default.nix +++ b/modules/home-manager/default.nix @@ -14,7 +14,7 @@ inputs: { else themes.${config.omarchy.theme}; # Generate color scheme from wallpaper for generated themes - generatedColorScheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") || (config.omarchy.theme_overrides ? wallpaper_path) + generatedColorScheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then (inputs.nix-colors.lib.contrib { inherit pkgs; }).colorSchemeFromPicture { path = config.omarchy.theme_overrides.wallpaper_path; variant = if config.omarchy.theme == "generated_light" then "light" else "dark"; @@ -47,7 +47,7 @@ in { }; home.packages = packages.homePackages; - colorScheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") || (config.omarchy.theme_overrides ? wallpaper_path) + colorScheme = if (config.omarchy.theme == "generated_light" || config.omarchy.theme == "generated_dark") then generatedColorScheme else inputs.nix-colors.colorSchemes.${selectedTheme.base16-theme};