nix-stuff/roles/kde/plasma.nix

91 lines
2.2 KiB
Nix

{ config, pkgs, lib, ... }:
let
themeName = "Breeze";
gtk3and4settings = lib.generators.toINI {} {
Settings = {
gtk-theme-name = themeName;
gtk-cursor-theme-name = "breeze_cursors";
};
};
gtk2settings = ''
include "/run/current-system/sw/share/themes/${themeName}-Dark/gtk-2.0/gtkrc"
gtk-theme-name="${themeName}-Dark"
'';
breezeTint = pkgs.stdenv.mkDerivation {
name = "breeze-tint";
src = "${pkgs.breeze-qt5}";
patches = [ ./patches/BreezeTint.patch ];
installPhase = ''
runHook preInstall
mkdir -p $out/share/color-schemes/
cp -r share/color-schemes/* $out/share/color-schemes/
runHook postInstall
'';
};
lookAndFeel = pkgs.stdenv.mkDerivation {
name = "toast-look-and-feel";
src = "${pkgs.plasma-workspace}";
patches = [ ./patches/TintedLookAndFeel.patch ];
installPhase = ''
runHook preInstall
mkdir -p $out/share/plasma/look-and-feel/
cp -r share/plasma/look-and-feel/* $out/share/plasma/look-and-feel/
runHook postInstall
'';
};
in
{
services.xserver = {
# Enable the Plasma 5 Desktop Environment
desktopManager.plasma5.enable = true;
displayManager.defaultSession = "plasmawayland";
};
# GTK apps need dconf to grab the correct theme on Wayland
programs.dconf.enable = true;
# The NixOS dconf module doesn't support creating databases
# (https://github.com/NixOS/nixpkgs/issues/54150), so I'm
# doing it manualy
# https://help.gnome.org/admin/system-admin-guide/stable/dconf-custom-defaults.html.en
environment.etc = {
"dconf/profile/user".text = "user-db:user\nsystem-db:local";
"dconf/db/local.d/00-defaultTheme".text = ''
[org/gnome/desktop/interface]
gtk-theme='${themeName}'
'';
};
system.activationScripts = {
dconf = {
text= ''
echo "updating system dconf database..."
${pkgs.dconf}/bin/dconf update
touch /testfile
'';
deps = [ "etc" ];
};
};
# Set up GTK to use Breeze instead of adwaita by default
# Theese only seem to work on X11, not wayland
environment.etc = {
"xdg/gtk-4.0/settings.ini".text = gtk3and4settings;
"xdg/gtk-3.0/settings.ini".text = gtk3and4settings;
"gtk-2.0/gtkrc".text = gtk2settings;
};
# Install the patched Breeze color schemes and look and feel packages
environment.systemPackages = [ breezeTint lookAndFeel ];
}