summaryrefslogtreecommitdiff
path: root/modules/nixos/mixins
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 /modules/nixos/mixins
parent386ecf3d14ea486aba523b14200fcd2e7e04b9d6 (diff)
nixos: make desktop stuff mixins
Diffstat (limited to 'modules/nixos/mixins')
-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.nix47
-rw-r--r--modules/nixos/mixins/pipewire.nix18
-rw-r--r--modules/nixos/mixins/plasma.nix44
6 files changed, 242 insertions, 0 deletions
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/mixins/niri.nix b/modules/nixos/mixins/niri.nix
new file mode 100644
index 0000000..151c185
--- /dev/null
+++ b/modules/nixos/mixins/niri.nix
@@ -0,0 +1,47 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ config = lib.mkIf config.programs.niri.enable {
+ environment = {
+ sessionVariables = {
+ NIXOS_OZONE_WL = "1"; # Niri doesn't have native XWayland support
+ };
+
+ systemPackages = with pkgs; [
+ # Terminal
+ alacritty
+ # Media player
+ celluloid
+ # PDF viewer
+ evince
+ # Application runner
+ fuzzel
+ # Image viewer
+ loupe
+ # Notification daemon
+ mako
+ # Polkit agent
+ pantheon.pantheon-agent-polkit
+ # Screen locker
+ swaylock
+ # Trash manager
+ trashy
+ ];
+ };
+
+ services.greetd = {
+ enable = lib.mkDefault true;
+ settings = {
+ default_session.command = toString [
+ (lib.getExe pkgs.greetd.tuigreet)
+ "--time"
+ ];
+ };
+ };
+ };
+}
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;
+ };
+ })
+ ];
+}