summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Flynn <[email protected]>2025-02-13 17:44:18 -0500
committerSeth Flynn <[email protected]>2025-02-13 22:09:11 -0500
commit8531a2bc3189e31ce1623123f92cdcfce20e49b6 (patch)
tree9632a5f799ece67019f97f5f99f2d3b01fb23477
parent386ecf3d14ea486aba523b14200fcd2e7e04b9d6 (diff)
nixos: make desktop stuff mixins
-rw-r--r--modules/nixos/default.nix1
-rw-r--r--modules/nixos/defaults/default.nix3
-rw-r--r--modules/nixos/defaults/desktop-programs.nix26
-rw-r--r--modules/nixos/defaults/fonts.nix (renamed from modules/nixos/desktop/fonts.nix)13
-rw-r--r--modules/nixos/desktop/audio.nix26
-rw-r--r--modules/nixos/desktop/budgie/default.nix70
-rw-r--r--modules/nixos/desktop/default.nix32
-rw-r--r--modules/nixos/desktop/gnome/default.nix56
-rw-r--r--modules/nixos/desktop/plasma/default.nix43
-rw-r--r--modules/nixos/desktop/programs.nix17
-rw-r--r--modules/nixos/mixins/budgie.nix71
-rw-r--r--modules/nixos/mixins/default.nix5
-rw-r--r--modules/nixos/mixins/gnome.nix57
-rw-r--r--modules/nixos/mixins/niri.nix (renamed from modules/nixos/desktop/niri/default.nix)12
-rw-r--r--modules/nixos/mixins/pipewire.nix18
-rw-r--r--modules/nixos/mixins/plasma.nix44
-rw-r--r--systems/glados/default.nix12
17 files changed, 235 insertions, 271 deletions
diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix
index 0b7ead6..8022a7c 100644
--- a/modules/nixos/default.nix
+++ b/modules/nixos/default.nix
@@ -4,7 +4,6 @@
imports = [
../shared
./defaults
- ./desktop
./mixins
./profiles
./services
diff --git a/modules/nixos/defaults/default.nix b/modules/nixos/defaults/default.nix
index 2e16af8..85dfbe6 100644
--- a/modules/nixos/defaults/default.nix
+++ b/modules/nixos/defaults/default.nix
@@ -1,6 +1,9 @@
{ lib, ... }:
+
{
imports = [
+ ./desktop-programs.nix
+ ./fonts.nix
./nix.nix
./programs.nix
./security.nix
diff --git a/modules/nixos/defaults/desktop-programs.nix b/modules/nixos/defaults/desktop-programs.nix
new file mode 100644
index 0000000..3c8499d
--- /dev/null
+++ b/modules/nixos/defaults/desktop-programs.nix
@@ -0,0 +1,26 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ config = lib.mkMerge [
+ {
+ services.xserver = {
+ excludePackages = [ pkgs.xterm ];
+ };
+ }
+
+ (lib.mkIf config.services.xserver.enable {
+ environment.systemPackages = [
+ pkgs.wl-clipboard
+ ];
+
+ programs = {
+ chromium.enable = lib.mkDefault true;
+ };
+ })
+ ];
+}
diff --git a/modules/nixos/desktop/fonts.nix b/modules/nixos/defaults/fonts.nix
index de3f5b4..5aa644e 100644
--- a/modules/nixos/desktop/fonts.nix
+++ b/modules/nixos/defaults/fonts.nix
@@ -4,18 +4,9 @@
pkgs,
...
}:
-let
- cfg = config.desktop.fonts;
-in
-{
- options.desktop.fonts = {
- enable = lib.mkEnableOption "desktop fonts" // {
- default = config.desktop.enable;
- defaultText = lib.literalExpression "config.desktop.enable";
- };
- };
- config = lib.mkIf cfg.enable {
+{
+ config = lib.mkIf config.services.xserver.enable {
fonts = {
enableDefaultPackages = true;
diff --git a/modules/nixos/desktop/audio.nix b/modules/nixos/desktop/audio.nix
deleted file mode 100644
index cf819e6..0000000
--- a/modules/nixos/desktop/audio.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ config, lib, ... }:
-let
- cfg = config.desktop.audio;
-in
-{
- options.desktop.audio = {
- enable = lib.mkEnableOption "desktop audio configuration" // {
- default = config.desktop.enable;
- defaultText = lib.literalExpression "config.desktop.enable";
- };
- };
-
- config = lib.mkIf cfg.enable {
- security.rtkit.enable = true;
-
- services = {
- pipewire = lib.mkDefault {
- enable = true;
- wireplumber.enable = true;
- alsa.enable = true;
- jack.enable = true;
- pulse.enable = true;
- };
- };
- };
-}
diff --git a/modules/nixos/desktop/budgie/default.nix b/modules/nixos/desktop/budgie/default.nix
deleted file mode 100644
index ac02b33..0000000
--- a/modules/nixos/desktop/budgie/default.nix
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.desktop.budgie;
-in
-{
- options.desktop.budgie.enable = lib.mkEnableOption "Budgie desktop";
-
- # TODO: Improve this module
- config = lib.mkIf cfg.enable {
- environment = {
- budgie.excludePackages = with pkgs; [
- qogir-theme
- qogir-icon-theme
-
- # I don't like MATE's apps. Fedora doesn't use them either :/
- mate.atril
- mate.pluma
- mate.engrampa
- mate.mate-calc
- mate.mate-terminal
- mate.mate-system-monitor
- vlc
- ];
-
- systemPackages = [
- pkgs.materia-theme
- pkgs.papirus-icon-theme
-
- # Replacements for mate stuff
- pkgs.celluloid
- pkgs.cinnamon.nemo-fileroller
- pkgs.evince
- pkgs.gedit
- pkgs.gnome-console
- pkgs.gnome.gnome-calculator
- pkgs.gnome.gnome-system-monitor
- ];
- };
-
- services.xserver = {
- # fedora uses these by default
- displayManager.lightdm.greeters.slick = {
- theme = {
- name = "Materia-dark";
- package = pkgs.materia-theme;
- };
- iconTheme = {
- name = "Papirus-Dark";
- package = pkgs.papirus-icon-theme;
- };
- };
-
- desktopManager.budgie = {
- enable = true;
- # make sure we actually use the above themes
- extraGSettingsOverrides = ''
- [org.gnome.desktop.interface:Budgie]
- color-scheme='prefer-dark'
- gtk-theme='Materia-dark'
- icon-theme='Papirus-Dark'
- '';
- };
- };
- };
-}
diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix
deleted file mode 100644
index c7029cb..0000000
--- a/modules/nixos/desktop/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.desktop;
-in
-{
- options.desktop = {
- enable = lib.mkEnableOption "desktop settings";
- };
-
- imports = [
- ./audio.nix
- ./fonts.nix
- ./programs.nix
-
- ./budgie
- ./gnome
- ./niri
- ./plasma
- ];
-
- config = lib.mkIf cfg.enable {
- services.xserver = {
- enable = true;
- excludePackages = [ pkgs.xterm ];
- };
- };
-}
diff --git a/modules/nixos/desktop/gnome/default.nix b/modules/nixos/desktop/gnome/default.nix
deleted file mode 100644
index 13d25fa..0000000
--- a/modules/nixos/desktop/gnome/default.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.desktop.gnome;
-in
-{
- options.desktop.gnome.enable = lib.mkEnableOption "GNOME desktop";
-
- config = lib.mkIf cfg.enable {
- environment = {
- gnome.excludePackages = with pkgs; [
- gnome-tour
- totem # Replaced with celluloid
- seahorse # Replaced with key-rack
- ];
-
- sessionVariables = {
- NIXOS_OZONE_WL = "1";
- # For qadwaitadecorations
- QT_WAYLAND_DECORATION = "adwaita";
- };
-
- systemPackages = [
- # Make GTK3 apps look good
- pkgs.adw-gtk3
- # Media player
- pkgs.celluloid
- # Checksum verifier
- pkgs.collision
- # Audio player
- pkgs.decibels
- # Screen recorder
- pkgs.kooha
- # Secret manager
- pkgs.key-rack
- # Fix Qt app client decorations
- pkgs.qadwaitadecorations
- pkgs.qadwaitadecorations-qt6
- # Task manager
- pkgs.resources
- # Emoji picker
- pkgs.smile
- pkgs.video-trimmer
- ];
- };
-
- services.xserver = {
- displayManager.gdm.enable = true;
- desktopManager.gnome.enable = true;
- };
- };
-}
diff --git a/modules/nixos/desktop/plasma/default.nix b/modules/nixos/desktop/plasma/default.nix
deleted file mode 100644
index 6160afa..0000000
--- a/modules/nixos/desktop/plasma/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- config,
- lib,
- pkgs,
- inputs',
- ...
-}:
-let
- cfg = config.desktop.plasma;
-in
-{
- options.desktop.plasma.enable = lib.mkEnableOption "Plasma desktop";
-
- config = lib.mkIf cfg.enable {
- environment = {
- plasma6.excludePackages = with pkgs.kdePackages; [
- discover
- khelpcenter
- konsole
- plasma-browser-integration
- ];
-
- sessionVariables = {
- NIXOS_OZONE_WL = "1";
- };
-
- systemPackages = [
- inputs'.krunner-nix.packages.default # thank you leah
- pkgs.ghostty
- pkgs.haruna # mpv frontend
- ];
- };
-
- services = {
- displayManager.sddm = {
- enable = true;
- wayland.enable = true;
- };
-
- desktopManager.plasma6.enable = true;
- };
- };
-}
diff --git a/modules/nixos/desktop/programs.nix b/modules/nixos/desktop/programs.nix
deleted file mode 100644
index 0bbf889..0000000
--- a/modules/nixos/desktop/programs.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-{
- config = lib.mkIf config.desktop.enable {
- environment.systemPackages = [
- pkgs.wl-clipboard
- ];
-
- programs = {
- chromium.enable = lib.mkDefault true;
- };
- };
-}
diff --git a/modules/nixos/mixins/budgie.nix b/modules/nixos/mixins/budgie.nix
new file mode 100644
index 0000000..254143e
--- /dev/null
+++ b/modules/nixos/mixins/budgie.nix
@@ -0,0 +1,71 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+
+# TODO: Improve this
+{
+ config = lib.mkMerge [
+ {
+ environment = {
+ budgie.excludePackages = with pkgs; [
+ qogir-theme
+ qogir-icon-theme
+
+ # I don't like MATE's apps. Fedora doesn't use them either :/
+ mate.atril
+ mate.pluma
+ mate.engrampa
+ mate.mate-calc
+ mate.mate-terminal
+ mate.mate-system-monitor
+ vlc
+ ];
+ };
+
+ services.xserver.desktopManager.budgie = {
+ # Make sure we actually use the themes below
+ extraGSettingsOverrides = ''
+ [org.gnome.desktop.interface:Budgie]
+ color-scheme='prefer-dark'
+ gtk-theme='Materia-dark'
+ icon-theme='Papirus-Dark'
+ '';
+ };
+ }
+
+ (lib.mkIf config.services.xserver.desktopManager.budgie.enable {
+ environment.systemPackages = with pkgs; [
+ materia-theme
+ papirus-icon-theme
+
+ # Replacements for MATE apps
+ celluloid
+ cinnamon.nemo-fileroller
+ evince
+ gedit
+ gnome-console
+ gnome.gnome-calculator
+ gnome.gnome-system-monitor
+ ];
+
+ services.xserver.displayManager.lightdm = {
+ enable = lib.mkDefault true;
+
+ # Fedora uses these by default
+ greeters.slick = {
+ theme = {
+ name = "Materia-dark";
+ package = pkgs.materia-theme;
+ };
+ iconTheme = {
+ name = "Papirus-Dark";
+ package = pkgs.papirus-icon-theme;
+ };
+ };
+ };
+ })
+ ];
+}
diff --git a/modules/nixos/mixins/default.nix b/modules/nixos/mixins/default.nix
index 701c4db..8a3653b 100644
--- a/modules/nixos/mixins/default.nix
+++ b/modules/nixos/mixins/default.nix
@@ -1,13 +1,18 @@
{
imports = [
./acme.nix
+ ./budgie.nix
./comin.nix
./forgejo.nix
+ ./gnome.nix
./hercules.nix
./kanidm.nix
./lanzaboote.nix
./nginx.nix
+ ./niri.nix
./nvidia.nix
+ ./pipewire.nix
+ ./plasma.nix
./promtail.nix
./resolved.nix
./tailscale.nix
diff --git a/modules/nixos/mixins/gnome.nix b/modules/nixos/mixins/gnome.nix
new file mode 100644
index 0000000..c60fbf8
--- /dev/null
+++ b/modules/nixos/mixins/gnome.nix
@@ -0,0 +1,57 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ config = lib.mkMerge [
+ {
+ environment = {
+ gnome.excludePackages = with pkgs; [
+ gnome-tour
+ totem # Replaced with celluloid
+ seahorse # Replaced with key-rack
+ ];
+ };
+ }
+
+ (lib.mkIf config.services.xserver.desktopManager.gnome.enable {
+ environment = {
+ sessionVariables = {
+ NIXOS_OZONE_WL = "1";
+ # For qadwaitadecorations
+ QT_WAYLAND_DECORATION = "adwaita";
+ };
+
+ systemPackages = [
+ # Make GTK3 apps look good
+ pkgs.adw-gtk3
+ # Media player
+ pkgs.celluloid
+ # Checksum verifier
+ pkgs.collision
+ # Audio player
+ pkgs.decibels
+ # Screen recorder
+ pkgs.kooha
+ # Secret manager
+ pkgs.key-rack
+ # Fix Qt app client decorations
+ pkgs.qadwaitadecorations
+ pkgs.qadwaitadecorations-qt6
+ # Task manager
+ pkgs.resources
+ # Emoji picker
+ pkgs.smile
+ pkgs.video-trimmer
+ ];
+ };
+
+ services.xserver.displayManager.gdm = {
+ enable = lib.mkDefault true;
+ };
+ })
+ ];
+}
diff --git a/modules/nixos/desktop/niri/default.nix b/modules/nixos/mixins/niri.nix
index 93505ee..151c185 100644
--- a/modules/nixos/desktop/niri/default.nix
+++ b/modules/nixos/mixins/niri.nix
@@ -4,15 +4,9 @@
pkgs,
...
}:
-let
- cfg = config.desktop.niri;
-in
-{
- options.desktop.niri = {
- enable = lib.mkEnableOption "Niri desktop settings";
- };
- config = lib.mkIf cfg.enable {
+{
+ config = lib.mkIf config.programs.niri.enable {
environment = {
sessionVariables = {
NIXOS_OZONE_WL = "1"; # Niri doesn't have native XWayland support
@@ -41,7 +35,7 @@ in
};
services.greetd = {
- enable = true;
+ enable = lib.mkDefault true;
settings = {
default_session.command = toString [
(lib.getExe pkgs.greetd.tuigreet)
diff --git a/modules/nixos/mixins/pipewire.nix b/modules/nixos/mixins/pipewire.nix
new file mode 100644
index 0000000..838e49f
--- /dev/null
+++ b/modules/nixos/mixins/pipewire.nix
@@ -0,0 +1,18 @@
+{ config, lib, ... }:
+
+{
+ config = lib.mkMerge [
+ {
+ services.pipewire = lib.mkDefault {
+ wireplumber.enable = true;
+ alsa.enable = true;
+ jack.enable = true;
+ pulse.enable = true;
+ };
+ }
+
+ (lib.mkIf config.services.pipewire.enable {
+ security.rtkit.enable = true;
+ })
+ ];
+}
diff --git a/modules/nixos/mixins/plasma.nix b/modules/nixos/mixins/plasma.nix
new file mode 100644
index 0000000..a43d718
--- /dev/null
+++ b/modules/nixos/mixins/plasma.nix
@@ -0,0 +1,44 @@
+{
+ config,
+ lib,
+ pkgs,
+ inputs',
+ ...
+}:
+
+{
+ config = lib.mkMerge [
+ {
+ environment = {
+ plasma6.excludePackages = with pkgs.kdePackages; [
+ discover
+ khelpcenter
+ konsole
+ plasma-browser-integration
+ ];
+ };
+
+ services.displayManager.sddm = {
+ wayland.enable = true;
+ };
+ }
+
+ (lib.mkIf config.services.desktopManager.plasma6.enable {
+ environment = {
+ sessionVariables = {
+ NIXOS_OZONE_WL = "1";
+ };
+
+ systemPackages = [
+ inputs'.krunner-nix.packages.default # Thank you Leah
+ pkgs.ghostty
+ pkgs.haruna # MPV frontend
+ ];
+ };
+
+ services.displayManager.sddm = {
+ enable = lib.mkDefault true;
+ };
+ })
+ ];
+}
diff --git a/systems/glados/default.nix b/systems/glados/default.nix
index 42cdeb8..4911a87 100644
--- a/systems/glados/default.nix
+++ b/systems/glados/default.nix
@@ -14,11 +14,6 @@
profiles.personal.enable = true;
- desktop = {
- enable = true;
- gnome.enable = true;
- };
-
boot = {
kernelParams = [
"amd_pstate=active"
@@ -63,7 +58,12 @@
flatpak.enable = true;
fstrim.enable = true;
fwupd.enable = true;
- xserver.videoDrivers = [ "nvidia" ];
+
+ xserver = {
+ desktopManager.gnome.enable = true;
+
+ videoDrivers = [ "nvidia" ];
+ };
};
swapDevices = [