using Daybreak.Extensions;
using Daybreak.Linux.Services.Api;
using Daybreak.Linux.Services.ApplicationLauncher;
using Daybreak.Linux.Services.Credentials;
using Daybreak.Linux.Services.Injection;
using Daybreak.Linux.Services.Keyboard;
using Daybreak.Linux.Services.Privilege;
using Daybreak.Linux.Services.Screens;
using Daybreak.Linux.Services.Startup.Actions;
using Daybreak.Linux.Services.Startup.Notifications;
using Daybreak.Linux.Services.UMod;
using Daybreak.Linux.Services.DirectSong;
using Daybreak.Linux.Services.Registry;
using Daybreak.Linux.Services.Themes;
using Daybreak.Linux.Services.SevenZip;
using Daybreak.Linux.Services.Window;
using Daybreak.Linux.Services.ExceptionHandling;
using Daybreak.Linux.Services.Wine;
using Daybreak.Services.DXVK;
using Daybreak.Shared.Models.Plugins;
using Daybreak.Shared.Services.DXVK;
using Daybreak.Shared.Services.ApplicationLauncher;
using Daybreak.Shared.Services.Credentials;
using Daybreak.Shared.Services.DirectSong;
using Daybreak.Shared.Services.Registry;
using Daybreak.Shared.Services.FileProviders;
using Daybreak.Shared.Services.Initialization;
using Daybreak.Shared.Services.Injection;
using Daybreak.Shared.Services.Keyboard;
using Daybreak.Shared.Services.Api;
using Daybreak.Shared.Services.Privilege;
using Daybreak.Shared.Services.Screens;
using Daybreak.Shared.Services.Themes;
using Daybreak.Shared.Services.SevenZip;
using Daybreak.Shared.Services.UMod;
using Daybreak.Shared.Services.ExceptionHandling;
using Daybreak.Shared.Services.Window;
using Microsoft.Extensions.DependencyInjection;
namespace Daybreak.Linux.Configuration;
///
/// Linux-specific platform configuration.
/// Registers Linux-specific services and overrides.
///
public sealed class LinuxPlatformConfiguration : PluginConfigurationBase
{
public override void RegisterServices(IServiceCollection services)
{
services.AddHostedSingleton();
services.AddHostedSingleton();
services.AddScoped();
services.AddScoped();
services.AddSingleton();
services.AddSingleton();
services.AddScoped();
services.AddScoped();
services.AddSingleton();
services.AddSingleton();
services.AddScoped();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
}
public override void RegisterStartupActions(IStartupActionProducer startupActionProducer)
{
// Check Wine prefix setup on startup
startupActionProducer.RegisterAction();
}
public override void RegisterProviderAssemblies(IFileProviderProducer fileProviderProducer)
{
fileProviderProducer.RegisterAssembly(typeof(LinuxPlatformConfiguration).Assembly);
}
public override void RegisterNotificationHandlers(
INotificationHandlerProducer notificationHandlerProducer
)
{
notificationHandlerProducer.RegisterNotificationHandler();
}
public override void RegisterMods(IModsProducer modsProducer)
{
modsProducer.RegisterMod(singleton: true);
modsProducer.RegisterMod();
}
}