{ lib, ... }: let inherit (lib) mkOption types; bgs = { wallpaper_1 = "~/media/images/bg_1.jpg"; wallpaper_2 = "~/media/images/bg_2.jpg"; wallpaper_3 = "~/media/images/bg_3.jpg"; wallpaper_4 = "~/media/images/waterwindow.jpg"; wallpaper_5 = "~/media/images/barngreet.png"; }; bgList = builtins.attrNames bgs; in { options.settings.theme = { background = { lockscreen = mkOption { type = types.enum bgList; apply = name: bgs.${name}; example = "wallpaper_1"; }; primary = mkOption { type = types.enum bgList; apply = name: bgs.${name}; example = "wallpaper_2"; }; secondary = mkOption { type = types.nullOr (types.enum bgList); default = null; apply = name: if name == null then null else bgs.${name}; example = "wallpaper_3"; }; }; }; }