139 lines
3.4 KiB
Nix
139 lines
3.4 KiB
Nix
{ config, pkgs, lib, flakeSelf, ... }:
|
|
|
|
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"
|
|
'';
|
|
|
|
# Set up the default kde options
|
|
kdeglobals = lib.generators.toINI {} {
|
|
KDE.LookAndFeelPackage = "org.kde.breezedarktint.desktop";
|
|
KDE.SingleClick = false;
|
|
General = {
|
|
accentColorFromWallpaper = true;
|
|
AccentColor = "172,53,164" ; };
|
|
};
|
|
|
|
balooExcludedDirs = lib.strings.intersperse "," [
|
|
"$HOME/.cache/"
|
|
"$HOME/.config/"
|
|
"$HOME/.local/"
|
|
];
|
|
|
|
baloofilerc = lib.generators.toINI {} {
|
|
General = {
|
|
# The [$e] part allows you to use environment variables
|
|
"exclude folders[$e]" = lib.strings.concatStrings balooExcludedDirs;
|
|
};
|
|
};
|
|
|
|
# Make custom packages
|
|
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 = ./look-and-feel;
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/share/plasma/look-and-feel/
|
|
cp -r xyz.toast003.customtheme.desktop $out/share/plasma/look-and-feel/
|
|
|
|
runHook postInstall
|
|
'';
|
|
};
|
|
|
|
# /etc/xdg is not read by plasma, so to change the default settings you need to put them in a package
|
|
plasmaDefaults = pkgs.stdenv.mkDerivation {
|
|
name = "toast-plasma-defaults";
|
|
dontUnpack = true;
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
set -x
|
|
mkdir -p $out/etc/xdg
|
|
echo "${kdeglobals}" > $out/etc/xdg/kdeglobals
|
|
echo '${baloofilerc}' > $out/etc/xdg/baloofilerc
|
|
|
|
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
|
|
'';
|
|
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,
|
|
as well as the plasma default configs
|
|
*/
|
|
environment.systemPackages = [ breezeTint lookAndFeel plasmaDefaults ];
|
|
|
|
# Plasma configs should be on all users
|
|
home-manager.sharedModules = [{
|
|
imports = [ flakeSelf.inputs.plasma-manager.homeManagerModules.plasma-manager ];
|
|
programs.plasma = {
|
|
enable = true;
|
|
};
|
|
}];
|
|
}
|