{
  lib,
  pkgs,
  namespace,
  ...
}:
with lib;
let
  inherit (lib.${namespace}) mkOpt;

  # Default fallback wallpaper (included in the system)
  defaultWallpaper = pkgs.runCommand "default-wallpaper" { } ''
    mkdir -p $out
    cp ${pkgs.nixos-artwork.wallpapers.nineish-dark-gray}/share/backgrounds/nixos/nix-wallpaper-nineish-dark-gray.png $out/default.jpg
  '';
in
{
  options.${namespace}.desktop.hyprland = {
    enable = mkEnableOption "enable hyprland desktop environment";

    wallpaperSource = mkOpt (types.enum [
      "bing"
      "nasa"
    ]) "bing" "Source for the wallpaper (bing or nasa)";

    wallpaper = mkOpt types.path "/var/lib/wallpapers/current.jpg" "Path to the wallpaper folder";

    wallpaperDir = mkOpt types.path "/var/lib/wallpapers" "Path to the wallpaper folder";

    defaultWallpaper = mkOpt types.path "${defaultWallpaper}/default.jpg" "Default wallpaper";
  };
}
