@pocketknife
Here you go. It’s pretty untidy (could do with a good bit of pruning!) but hope it helps:
/* Config Sample
*
* For more information on how you can configure this file
* see https://docs.magicmirror.builders/configuration/introduction.html
* and https://docs.magicmirror.builders/modules/configuration.html
*
* You can use environment variables using a `config.js.template` file instead of `config.js`
* which will be converted to `config.js` while starting. For more information
* see https://docs.magicmirror.builders/configuration/introduction.html#enviromnent-variables
*/
let config = {
address: "localhost", // Address to listen on, can be:
// - "localhost", "127.0.0.1", "::1" to listen on loopback interface
// - another specific IPv4/6 to listen on a specific interface
// - "0.0.0.0", "::" to listen on any interface
// Default, when address config is left out or empty, is "localhost"
port: 8080,
basePath: "/", // The URL path where MagicMirror² is hosted. If you are using a Reverse proxy
// you must set the sub path here. basePath must end with a /
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"], // Set [] to allow all IP addresses
// or add a specific IPv4 of 192.168.1.5 :
// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
// or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],
useHttps: false, // Support HTTPS or not, default "false" will use HTTP
httpsPrivateKey: "", // HTTPS private key path, only require when useHttps is true
httpsCertificate: "", // HTTPS Certificate path, only require when useHttps is true
language: "en",
locale: "en-US", // this variable is provided as a consistent location
// it is currently only used by 3rd party modules. no MagicMirror code uses this value
// as we have no usage, we have no constraints on what this field holds
// see https://en.wikipedia.org/wiki/Locale_(computer_software) for the possibilities
logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
timeFormat: 24,
units: "metric",
modules: [
// Base WallberryTheme adds new font, styles, and a rotating background image pulled from Unsplash.com
{
module: "WallberryTheme",
position: "fullscreen_below", // Required Position
config: {
unsplashAccessKey: "YOUR_API_KEY_HERE", // REQUIRED
collections: "XXXX" // optional - leave empty for a random photo
}
},
// WB-clock adds local time (Optional Module)
{
module: "WallberryTheme/WB-clock",
position: "top_bar", // highly suggest using top_bar position
config: {
//localCityName: "Seattle", // optional
//otherCities: [
//{name: "DC", timezone: "US/Eastern"}, // optional
//{name: "Anchorage", timezone: "US/Alaska"} // optional
//]
}
},
// WB-weather adds weather (Optional Module)
{
module: "WallberryTheme/WB-weather",
position: "bottom_bar", // Highly suggested location
config: {
// See "Configuration options" for more information.
apiKey: "YOUR_API_KEY_HERE", // REQUIRED
latitude: YOUR_LATITUDE, // REQUIRED
longitude: YOUR_LONGITUDE // REQUIRED
}
},
{
module: 'MMM-BackgroundSlideshow',
position: 'fullscreen_below',
config: {
imagePaths: ['/mnt/XXX/'],
recursiveSubDirectories: true,
transitionImages: false,
randomizeImageOrder: true,
showImageInfo: true,
showProgressBar: false,
imageInfoNoFileExt: true,
showAllImagesBeforeRestart: true,
slideshowSpeed: 600000,
}
},
{
module: 'MMM-auto-refresh',
config: {
// See below for configurable options
refreshInterval: 21600000 //6 hours
}
},
{
module: 'MMM-CountDown',
disabled: true,
position: 'bottom_right',
config: {
event: "SOMEONES Birthday:",
date: "2026-01-01 00:00:00",
daysLabel: " days",
showHours: false,
showMinutes: false,
showSeconds: false
}
},
{
module: 'MMM-HomeAssistant',
config: {
mqttServer: 'mqtt://192.XXX.X.XX',
mqttPort: XXXX,
username: 'XXXXXX',
password: 'XXXXXXXXXXXXXXXXXXXXX',
deviceName: 'XXXMagicMirror',
autodiscoveryTopic: 'homeassistant',
monitorControl: false,
brightnessControl: true,
moduleControl: true,
monitorStatusCommand: 'wlr-randr | awk \'/HDMI-A-1/ {found=1} found && /Enabled:/ {print ($2 == "yes") ? "true" : "false"; exit} END {if(!found) print "false"}\'',
monitorOnCommand: 'wlr-randr --output HDMI-A-1 --on',
monitorOffCommand: 'wlr-randr --output HDMI-A-1 --off',
pm2ProcessName: 'mm',
refreshBrowser: true
}
},
{
module: "alert",
},
{
module: "updatenotification",
position: "top_bar"
},
{
module: "clock",
disabled: true,
position: "top_left"
},
{
module: "calendar",
header: "US Holidays",
//position: "top_left",
config: {
calendars: [
{
fetchInterval: 7 * 24 * 60 * 60 * 1000,
symbol: "calendar-check",
url: "https://calendar.google.com/calendar/ical/YOUR_GOOGLE_CAL_URL.ics",
//url: "https://ics.calendarlabs.com/76/mm3137/US_Holidays.ics"
}
]
}
},
{
module: "MMM-MonthlyCalendar",
position: "top_bar",
config: { // See "Configuration options" for more information.
mode: "twoWeeks",
firstDayOfWeek: "monday",
}
},
{
module: "helloworld",
position: "bottom_bar", // This can be any of the regions.
disabled: true,
config: {
// See 'Configuration options' for more information.
text: "Happy birthday!",
},
},
{
module: "compliments",
disabled: true,
position: "lower_third"
},
{
module: "weather",
disabled: true,
position: "top_right",
config: {
weatherProvider: "openmeteo",
type: "current",
lat: YOUR LATITUDE,
lon: YOUR LONGITUDE
}
},
{
module: "weather",
disabled: true,
position: "top_right",
header: "Weather Forecast",
config: {
weatherProvider: "openmeteo",
type: "forecast",
lat: YOUR LATITUDE,
lon: YOUR LONGITUDE
}
},
{
module: "newsfeed",
disabled: true,
position: "bottom_bar",
config: {
feeds: [
{
title: "New York Times",
url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
}
],
showSourceTitle: true,
showPublishDate: true,
broadcastNewsFeeds: true,
broadcastNewsUpdates: true
}
},
]
};
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") { module.exports = config; }