refactor modules/desktop

Signed-off-by: unexplrd <unexplrd@linerds.us>
This commit is contained in:
2025-05-23 14:34:42 +03:00
parent 56bad06595
commit 52dcc3279e
11 changed files with 137 additions and 143 deletions

View File

@ -1,6 +1,7 @@
{
config,
inputs,
pkgs,
...
}: {
imports = with inputs; [
@ -22,6 +23,11 @@
time.timeZone = "Europe/Kyiv";
desktop.niri.enable = true;
# TODO: make a module for autologin
services.greetd.settings.initial_session = {
user = "user";
command = "${pkgs.niri}/bin/niri-session";
};
module = {
config = {

View File

@ -0,0 +1,16 @@
{config, ...}: {
imports = [
./gnome-keyring.nix
./greeter.nix
./pam-rtprio.nix
./pipewire.nix
];
fonts.fontDir.enable = true;
security = {
pam = {
services.greetd.enableGnomeKeyring = config.services.greetd.enable && config.services.gnome.gnome-keyring.enable;
};
};
services.udisks2.enable = true;
programs.dconf.enable = true;
}

View File

@ -0,0 +1,25 @@
{
lib,
pkgs,
config,
...
}: let
inherit (lib) mkEnableOption mkIf;
cfg = config.module.desktop.gnome-keyring;
in {
options = {
module.desktop.gnome-keyring.enable = mkEnableOption "enable gnome keyring";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
gcr_4
libsecret
];
# programs.seahorse.enable = true;
services.gnome.gnome-keyring.enable = true;
xdg.portal.config.common = {
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
};
};
}

View File

@ -0,0 +1,48 @@
{
lib,
pkgs,
config,
...
}: let
inherit (lib) mkOption mkIf getExe types mkMerge;
cfg = config.module.desktop;
in {
options = {
module.desktop.displayManager = mkOption {
default = "greetd";
type = types.enum [
"cosmic"
"gdm"
"greetd"
"sddm"
];
};
};
config = mkMerge [
(mkIf (cfg.displayManager == "cosmic") {
services.displayManager.cosmic-greeter.enable = true;
})
(mkIf (cfg.displayManager == "gdm") {
services.xserver.displayManager.gdm.enable = true;
})
(mkIf (cfg.displayManager == "greetd") {
programs.regreet.enable = true;
services.greetd = {
enable = true;
vt = 1;
settings = {
default_session = {
command = "${getExe pkgs.cage} -s -m last -- ${getExe pkgs.greetd.regreet}";
};
};
};
})
(mkIf (cfg.displayManager == "sddm") {
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
};
})
];
}

View File

@ -0,0 +1,10 @@
{
security.pam.loginLimits = [
{
domain = "@users";
item = "rtprio";
type = "-";
value = -1;
}
];
}

View File

@ -16,17 +16,11 @@ in {
mkEnableOption "enable cosmic desktop";
};
config = mkIf cfg.enable {
environment.sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1;
module.desktop.displayManager = "cosmic";
sound.pipewire.enable = true;
services = {
desktopManager.cosmic.enable = true;
displayManager.cosmic-greeter.enable = true;
gnome.gnome-keyring.enable = true;
dbus = {
apparmor = "enabled";
implementation = "broker";
};
};
environment.sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1;
services.desktopManager.cosmic.enable = true;
systemd = {
packages = [pkgs.observatory];
services.monitord.wantedBy = ["multi-user.target"];
@ -37,10 +31,7 @@ in {
xdg-desktop-portal-cosmic
xdg-desktop-portal-gtk
];
config.cosmic = {
default = ["cosmic" "gtk"];
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
};
config.cosmic.default = ["cosmic" "gtk"];
};
};
}

View File

@ -1,6 +1,6 @@
{
imports = [
./common/pipewire.nix
./common
./cosmic.nix
./gnome.nix
./hyprland.nix

View File

@ -11,19 +11,12 @@ in {
mkEnableOption "enable gnome desktop";
};
config = mkIf cfg.enable {
module.desktop.displayManager = "gdm";
sound.pipewire.enable = true;
services.xserver = {
enable = true;
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;
};
programs.dconf.enable = true;
programs.seahorse.enable = true;
services.gnome.gnome-keyring.enable = true;
services.udisks2.enable = true;
services.dbus = {
apparmor = "enabled";
implementation = "broker";
};
};
}

View File

@ -4,8 +4,9 @@
pkgs,
lib,
...
}:
with lib; let
}: let
inherit (lib) mkEnableOption mkIf;
inherit (perSystem) hyprland;
cfg = config.desktop.hyprland;
in {
options = {
@ -13,65 +14,23 @@ in {
mkEnableOption "enable hyprland desktop";
};
config = mkIf cfg.enable {
module.desktop.displayManager = "greetd";
module.desktop.gnome-keyring.enable = true;
sound.pipewire.enable = true;
programs.hyprland = {
enable = true;
package = perSystem.hyprland.hyprland;
portalPackage = perSystem.hyprland.xdg-desktop-portal-hyprland;
};
environment.systemPackages = with pkgs; [
brightnessctl
gcr_4
];
fonts.fontDir.enable = true;
security.pam = {
services.hyprlock = {};
loginLimits = [
{
domain = "@users";
item = "rtprio";
type = "-";
value = 1;
}
];
};
services = {
gnome.gnome-keyring.enable = true;
udisks2.enable = true;
dbus = {
apparmor = "enabled";
implementation = "broker";
};
};
programs = {
dconf.enable = true;
seahorse.enable = true;
package = hyprland.hyprland;
portalPackage = hyprland.xdg-desktop-portal-hyprland;
};
security.pam.services.hyprlock = {};
xdg.portal = {
enable = true;
extraPortals = [
perSystem.hyprland.xdg-desktop-portal-hyprland
hyprland.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-gtk
];
config.common.default = [
"hyprland"
"gtk"
];
};
programs.regreet.enable = true;
services.greetd = {
enable = true;
vt = 6;
settings = {
default_session = {
command = "${pkgs.cage}/bin/cage -s -m last -- ${pkgs.greetd.regreet}/bin/regreet";
};
initial_session = {
user = "user";
command = "Hyprland";
};
};
config.hyprland.default = ["hyprland" "gtk"];
};
};
}

View File

@ -4,7 +4,7 @@
lib,
...
}: let
inherit (lib) mkIf mkEnableOption getExe;
inherit (lib) mkIf mkEnableOption;
cfg = config.desktop.niri;
in {
options = {
@ -12,62 +12,22 @@ in {
mkEnableOption "enable niri desktop";
};
config = mkIf cfg.enable {
module.desktop.displayManager = "greetd";
module.desktop.gnome-keyring.enable = true;
sound.pipewire.enable = true;
security = {
soteria.enable = true; # polkit agent in rust
pam.services.gtklock = {};
};
programs.niri.enable = true; # wayland compositor in rust
environment.systemPackages = with pkgs; [
brightnessctl
gcr_4
];
fonts.fontDir.enable = true;
security.soteria.enable = true;
security.pam = {
services.greetd.enableGnomeKeyring = true;
services.gtklock = {};
loginLimits = [
{
domain = "@users";
item = "rtprio";
type = "-";
value = 1;
}
];
};
services = {
gnome.gnome-keyring.enable = true;
udisks2.enable = true;
dbus = {
apparmor = "enabled";
implementation = "broker";
};
};
programs = {
dconf.enable = true;
seahorse.enable = true;
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
];
config.niri = {
default = ["gnome" "gtk"];
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
};
};
programs.regreet.enable = true;
services.greetd = {
enable = true;
vt = 6;
settings = {
default_session = {
command = "${pkgs.cage}/bin/cage -s -m last -- ${getExe pkgs.greetd.regreet}";
};
initial_session = {
user = "user";
command = "${pkgs.niri}/bin/niri-session";
};
};
config.niri.default = ["gnome" "gtk"];
};
};
}

View File

@ -13,27 +13,13 @@ in {
options = {
desktop.plasma = {
enable = mkEnableOption "enable plasma desktop";
# sddmEnable = mkEnableOption "enable simple display manager";
};
};
config = mkIf cfg.enable {
stylix.targets.qt.enable = mkDefault false;
environment.systemPackages = with pkgs; [gcr_4];
services = {
gnome.gnome-keyring.enable = true;
desktopManager.plasma6.enable = true;
displayManager.sddm = {
enable = true; # cfg.sddmEnable;
wayland.enable = true;
};
};
fonts.fontDir.enable = true;
module.desktop.displayManager = "sddm";
sound.pipewire.enable = true;
xdg.portal = {
enable = true;
config.common = {
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
};
};
services.desktopManager.plasma6.enable = true;
stylix.targets.qt.enable = mkDefault false;
};
}