BROKEN: Expanding desktop option

This commit is contained in:
Jurn Wubben 2025-05-24 00:03:47 +02:00
parent ebf027263f
commit 73dd477f9e
44 changed files with 272 additions and 296 deletions

View file

@ -0,0 +1,18 @@
{lib, ...}: let
mkEO = lib.mkEnableOption;
in {
imports = [
./greetd.nix
./hyprland.nix
./pipewire.nix
./plasma6.nix
./polkit.nix
./xdg.nix
];
options.niksos.desktop = {
enable = mkEO "enable desktop related programs.";
hyprland = mkEO "enable hyprland related programs.";
kde = mkEO "enable kde specialisation.";
};
}

27
system/desktop/greetd.nix Normal file
View file

@ -0,0 +1,27 @@
{
config,
lib,
...
}: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable;
in {
config = lib.mkIf cfg {
# greetd display manager
services.greetd = let
session = {
command = "${lib.getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
user = "jsw";
};
in {
enable = true;
settings = {
terminal.vt = 1;
default_session = session;
initial_session = session;
};
};
programs.uwsm.enable = true;
};
}

View file

@ -0,0 +1,16 @@
{
config,
pkgs,
lib,
...
}: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable;
in {
config = lib.mkIf cfg {
programs.hyprland = {
enable = true;
withUWSM = true;
};
environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Makes electron apps use wayland.
};
}

View file

@ -0,0 +1,55 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.niksos.desktop.enable;
in {
config = lib.mkIf cfg {
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
jack.enable = true;
pulse.enable = true;
extraConfig.pipewire = {
"10-combined-sink" = {
"context.modules" = [
{
name = "libpipewire-module-combine-stream";
args = {
"combine.mode" = "sink";
"node.name" = "combined_sink";
"node.description" = "All audio outputs combined.";
"combine.latency-compensate" = false;
"combine.props" = {
"audio.position" = ["FL" "FR"];
};
"stream.props" = {};
"stream.rules" = [
{
matches = [
{
"media.class" = "Audio/Sink";
}
];
actions = {
create-stream = {};
};
}
];
};
}
];
};
};
};
environment.systemPackages = [pkgs.pulsemixer];
services.pulseaudio.enable = lib.mkForce false; # gnome enables it
};
}

View file

@ -0,0 +1,33 @@
{
lib,
pkgs,
config,
...
}: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.kde.enable;
in {
config = lib.mkIf cfg {
niksos.desktop.hyprland = lib.mkForce false;
specialisation.de.configuration = {
services = {
greetd = let
session = {
command = "${pkgs.kdePackages.plasma-workspace}/bin/startplasma-wayland";
user = "jsw";
};
in {
enable = true;
settings = {
terminal.vt = 1;
default_session = session;
initial_session = session;
};
};
desktopManager.plasma6.enable = true;
};
home-manager.users.jsw.stylix.autoEnable = false;
};
};
}

22
system/desktop/polkit.nix Normal file
View file

@ -0,0 +1,22 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable;
in {
systemd.user.services.polkit-gnome-authentication-agent-1 = lib.mkIf cfg {
description = "polkit-gnome-authentication-agent-1";
wantedBy = ["graphical-session.target"];
wants = ["graphical-session.target"];
after = ["graphical-session.target"];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
}

21
system/desktop/xdg.nix Normal file
View file

@ -0,0 +1,21 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable;
in {
xdg.portal = lib.mkIf cfg {
enable = true;
xdgOpenUsePortal = true;
config = {
common.default = ["gtk"];
hyprland.default = ["gtk" "hyprland"];
};
extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
};
}