From 483c5d3f39fe6eb353aac79d5d49bfb31c6ca34b Mon Sep 17 00:00:00 2001 From: derped Date: Sat, 9 Sep 2023 22:50:25 +0200 Subject: [PATCH] Modularize desktop service and remove desktop.wms from machine opts. --- machines/Lilim/options.nix | 3 +-- machines/Marid/options.nix | 2 +- options/machine.nix | 7 ------- services/desktop.nix | 42 +++++--------------------------------- services/desktop/i3.nix | 32 ++++++++++++++++------------- services/desktop/sway.nix | 10 ++++++--- 6 files changed, 32 insertions(+), 64 deletions(-) diff --git a/machines/Lilim/options.nix b/machines/Lilim/options.nix index 7210f75..6f64dd9 100644 --- a/machines/Lilim/options.nix +++ b/machines/Lilim/options.nix @@ -54,11 +54,11 @@ with lib; services = [ "bind" "desktop" + "desktop::i3" "udev" "cups" "mullvad" "mariaDB" - "nspawn" "docker" "podman" ]; firewall = { @@ -69,7 +69,6 @@ with lib; allowedUDPPortRanges = [ { from = 1714; to = 1764; } ]; allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; }; - desktop.wms = [ "none+i3" "i3" ]; }; config.system.copySysConf = { diff --git a/machines/Marid/options.nix b/machines/Marid/options.nix index 0390133..70e472e 100644 --- a/machines/Marid/options.nix +++ b/machines/Marid/options.nix @@ -46,6 +46,7 @@ with lib; services = [ "docker" "desktop" + "desktop::i3" "udev" "fprintd" ]; @@ -57,7 +58,6 @@ with lib; allowedUDPPortRanges = [ ]; allowedTCPPortRanges = [ ]; }; - desktop.wms = [ "none+i3" "i3" ]; }; config.system.copySysConf = { diff --git a/options/machine.nix b/options/machine.nix index e096c06..a61c467 100644 --- a/options/machine.nix +++ b/options/machine.nix @@ -114,13 +114,6 @@ in { Domain - Service mappings for nginx vHost config. ''; }; - desktop.wms = mkOption { - type = types.listOf types.str; - default = []; - description = '' - The list of wms to be enabled. - ''; - }; }; imports = [ (mkAliasOptionModule [ "machine" "firewall" ] [ "networking" "firewall" ]) diff --git a/services/desktop.nix b/services/desktop.nix index 3c78263..0744f84 100644 --- a/services/desktop.nix +++ b/services/desktop.nix @@ -1,47 +1,16 @@ -{ config, lib, pkgs, ... }: +{ config, lib, fn, pkgs, ... }: with lib; let cfg = config.machine; - ifelse = a: b: c: if a then b else c; -in mkIf (elem "desktop" cfg.services) { - programs.sway = mkIf (elem "sway" cfg.desktop.wms) # (import ./desktop/sway.nix { inherit pkgs; }); -{ - enable = true; - extraPackages = with pkgs; [ - file i3status dmenu - qt5.qtwayland - grim slurp - swaylock - swayidle - light - mako - wl-clipboard - wf-recorder - ]; - extraSessionCommands = '' - export GDK_BACKEND=wayland - export CLUTTER_BACKEND=wayland - export SDL_VIDEODRIVER=wayland - # needs qt5.qtwayland in systemPackages - export QT_QPA_PLATFORM=wayland-egl - export QT_WAYLAND_FORCE_DPI=physical - export QT_WAYLAND_DISABLE_WINDOWDECORATION="1" - # Fix for some Java AWT applications (e.g. Android Studio), - # use this if they aren't displayed properly: - export _JAVA_AWT_WM_NONREPARENTING=1 - ''; - }; - + desktopFiles = fn.lst { p = (toString ./desktop); b = true; }; +in { + imports = desktopFiles; +} // mkIf (elem "desktop" cfg.services) { services.gvfs.enable = true; services.xserver = { - enable = !(elem "sway" cfg.desktop.wms); layout = "de"; - displayManager.defaultSession = ifelse (cfg.desktop.wms != []) (elemAt cfg.desktop.wms 0) null; - windowManager = mkIf (cfg.desktop.wms != []) { - i3 = mkIf (elem "i3" cfg.desktop.wms) (import ./desktop/i3.nix { inherit pkgs; }); - }; libinput = { enable = true; touchpad = { @@ -56,5 +25,4 @@ in mkIf (elem "desktop" cfg.services) { ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chgrp video /sys/class/backlight/%k/brightness" ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chmod 664 /sys/class/backlight/%k/brightness" ''; - machine.pkgsets.python3.pkgs = with pkgs.python310Packages; [ py3status pytz tzlocal ]; } diff --git a/services/desktop/i3.nix b/services/desktop/i3.nix index 2482344..d311053 100644 --- a/services/desktop/i3.nix +++ b/services/desktop/i3.nix @@ -1,17 +1,21 @@ -{ pkgs }: +{ config, lib, pkgs, ... }: -#with lib; +with lib; -#mkIf (elem "i3" cfg.xserver.wms) { -# i3 = -{ - enable = true; - configFile = (import ../../config/etc/i3/config.nix { inherit pkgs; }); - extraPackages = with pkgs; [ - dmenu - file - i3lock - i3status - xdg-user-dirs - ]; +mkIf (elem "desktop::i3" config.machine.services) { + services.xserver = { + enable = true; + windowManager.i3 = { + enable = true; + configFile = (import ../../config/etc/i3/config.nix { inherit pkgs; }); + extraPackages = with pkgs; [ + dmenu + file + i3lock + i3status + xdg-user-dirs + ]; + }; + }; + machine.pkgsets.python3.pkgs = with pkgs.python310Packages; [ py3status pytz tzlocal ]; } diff --git a/services/desktop/sway.nix b/services/desktop/sway.nix index e3cca98..f950925 100644 --- a/services/desktop/sway.nix +++ b/services/desktop/sway.nix @@ -1,6 +1,9 @@ -{ pkgs }: +{ config, lib, pkgs, ... }: -{ +with lib; + +mkIf (elem "desktop::sway" config.machine.services) { + programs.sway = { enable = true; extraPackages = with pkgs; [ xwayland @@ -26,4 +29,5 @@ # use this if they aren't displayed properly: export _JAVA_AWT_WM_NONREPARENTING=1 ''; - } + }; +}