Add gdm gnome sddm kde

This commit is contained in:
DashieTM 2024-08-30 18:16:42 +02:00
parent 4cd9e462d8
commit 4123f8ccac
7 changed files with 183 additions and 3 deletions

View file

@ -9,16 +9,18 @@
./fish.nix
./flatpak.nix
./gaming.nix
./gdm.nix
./git.nix
./gnome.nix
./gnome_services.nix
./gpu.nix
./greetd.nix
./home_packages.nix
./hyprland
./kde.nix
./kde_connect.nix
./keepassxc.nix
./kitty.nix
./xkb.nix
./media.nix
./ncspot.nix
./nextcloud.nix
@ -27,11 +29,13 @@
./podman.nix
./printing.nix
./scripts.nix
./sddm.nix
./sops.nix
./starship.nix
./stylix.nix
./teams.nix
./virtualbox.nix
./xkb.nix
./xone.nix
./yazi
];

View file

@ -168,7 +168,7 @@
''
+ config.mods.fish.additionalConfig
else
config.mods.fish.additionalPackages;
config.mods.fish.additionalConfig;
};
}
);

34
modules/programs/gdm.nix Normal file
View file

@ -0,0 +1,34 @@
{
lib,
options,
config,
...
}:
{
options.mods.gdm = {
enable = lib.mkOption {
default = false;
example = true;
type = lib.types.bool;
description = "Enables the gdm displayManager";
};
extraOptions = lib.mkOption {
default = { };
example = { };
type = with lib.types; attrsOf anything;
description = "Extra options to be applied to the gnome config";
};
};
config = lib.mkIf config.mods.gdm.enable (
lib.optionalAttrs (options ? services.xserver.displayManager.gdm) (
{
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
}
// {
services.xserver.displayManager.gdm = config.mods.gdm.extraOptions;
}
)
);
}

View file

@ -0,0 +1,74 @@
{
lib,
options,
config,
pkgs,
...
}:
{
options.mods.gnome = {
enable = lib.mkOption {
default = false;
example = true;
type = lib.types.bool;
description = "Enables the Gnome desktop environment";
};
useDefaultOptions = lib.mkOption {
default = true;
example = false;
type = lib.types.bool;
description = "Use default options provided by module. If disabled, will only apply extraOptions.";
};
extraOptions = lib.mkOption {
default = { };
example = { };
type = with lib.types; attrsOf anything;
description = "Extra options to be applied to the gnome config";
};
extraDconf = lib.mkOption {
default = { };
example = { };
type = with lib.types; attrsOf anything;
description = "Extra options to be applied to the dconf config";
};
};
config =
let
defaultExtensions = with pkgs.gnomeExtensions; [
blur-my-shell
dash-to-dock
tray-icons-reloaded
];
in
lib.mkIf config.mods.gnome.enable (
lib.optionalAttrs (options ? services.xserver.desktopManager.gnome) (
{
services.xserver = {
enable = true;
desktopManager.gnome.enable = true;
};
}
// lib.mkIf config.mods.gnome.useDefaultOptions { environment.systemPackages = defaultExtensions; }
// {
services.xserver.desktopManager.gnome = config.mods.gnome.extraOptions;
}
)
// lib.optionalAttrs (options ? dconf) (
lib.mkIf config.mods.gnome.useDefaultOptions {
dconf = {
enable = true;
settings = {
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = map (extension: extension.extensionUuid) defaultExtensions;
};
};
};
}
// {
dconf = config.mods.gnome.extraDconf;
}
)
);
}

24
modules/programs/kde.nix Normal file
View file

@ -0,0 +1,24 @@
{
lib,
options,
config,
...
}:
{
options.mods.kde = {
enable = lib.mkOption {
default = false;
example = true;
type = lib.types.bool;
description = "Enables the KDE desktop environment";
};
};
config = lib.mkIf config.mods.kde.enable (
lib.optionalAttrs (options ? services.desktopManager.plasma6) {
# apparently kde integration is bad -> kdeconfig is too much even for nix, can't blame them :)
services.desktopManager.plasma6.enable = true;
}
);
}

44
modules/programs/sddm.nix Normal file
View file

@ -0,0 +1,44 @@
{
lib,
options,
config,
...
}:
{
options.mods.sddm = {
enable = lib.mkOption {
default = false;
example = true;
type = lib.types.bool;
description = "Enables the sddm displayManager";
};
useDefaultOptions = lib.mkOption {
default = true;
example = false;
type = lib.types.bool;
description = "Use default options provided by module. If disabled, will only apply extraOptions.";
};
extraOptions = lib.mkOption {
default = { };
example = {
wayland.enable = false;
};
type = with lib.types; attrsOf anything;
description = "Extra options to be applied to the sddm config";
};
};
config = lib.mkIf config.mods.sddm.enable (
lib.optionalAttrs (options ? services.displayManager.sddm) (
{
services.displayManager.sddm.enable = true;
}
// lib.mkIf config.mods.sddm.useDefaultOptions {
services.displayManager.sddm.wayland.enable = true;
}
// {
services.displayManager.sddm = config.mods.sddm.extraOptions;
}
)
);
}