{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.musicutil; yamlFormat = pkgs.formats.yaml { }; optionalPackage = opt: optional (opt != null && opt.package != null) opt.package; in { options = { programs.musicutil = { enable = mkOption { type = types.bool; default = false; }; package = mkOption { type = types.nullOr types.package; default = null; }; settings = { logLevel = mkOption { type = types.str; default = "info"; }; }; }; }; config = mkIf cfg.enable { home.packages = optionalPackage cfg.package; xdg.configFile."musicutil.yaml".source = yamlFormat.generate "musicutil-config" cfg.settings; }; }