112 lines
2.9 KiB
Nix
112 lines
2.9 KiB
Nix
{ config, pkgs, lib, flakeSelf, ... }:
|
|
|
|
let
|
|
# Set up the default kde options
|
|
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
|
|
'';
|
|
};
|
|
|
|
# /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 '${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;
|
|
|
|
/*
|
|
Install the patched Breeze color schemes and look and feel packages,
|
|
as well as the plasma default configs
|
|
*/
|
|
environment.systemPackages = [ breezeTint plasmaDefaults ];
|
|
|
|
# Plasma configs should be on all users
|
|
home-manager.sharedModules = [
|
|
(
|
|
{ config, ... }:
|
|
let gtk2rc = "${config.xdg.configHome}/gtk-2.0/gtkrc"; in
|
|
{
|
|
gtk.gtk2.configLocation = gtk2rc;
|
|
# Kde has an annoying habit of overwriting the gtk2 config file
|
|
home.file."${gtk2rc}".force = true;
|
|
}
|
|
)
|
|
{
|
|
imports = [ flakeSelf.inputs.plasma-manager.homeManagerModules.plasma-manager ];
|
|
gtk = {
|
|
enable = true;
|
|
# Most apps are dark, so a white cursor is easier to spot
|
|
cursorTheme = { package = pkgs.breeze-qt5; name = "Breeze_Snow"; };
|
|
iconTheme = { package = pkgs.breeze-icons; name = "breeze-dark"; };
|
|
theme = { package = pkgs.breeze-gtk; name = "Breeze"; };
|
|
# Gtk2 doesn't have a dark mode, so I just tell gtk 3 and 4 to use the dark variant
|
|
gtk3.extraConfig.gtk-application-prefer-dark-theme = true;
|
|
gtk4.extraConfig.gtk-application-prefer-dark-theme = true;
|
|
};
|
|
programs.plasma = {
|
|
enable = true;
|
|
workspace.clickItemTo = "select";
|
|
shortcuts = {
|
|
"kwin" = {
|
|
"Switch One Desktop to the Left" = [ "Meta+Ctrl+Left" ];
|
|
"Switch One Desktop to the Right" = [ "Meta+Ctrl+Right" ];
|
|
};
|
|
};
|
|
configFile = {
|
|
"kwinrc" = {
|
|
"Desktops" = {
|
|
"Number" = 2;
|
|
"Rows" = 1;
|
|
};
|
|
"TabBox"."LayoutName" = "thumbnail_grid";
|
|
"org\\.kde\\.kdecoration2"."ButtonsOnLeft" = "SF";
|
|
};
|
|
"plasmanotifyrc"."Notifications"."NormalAlwaysOnTop" = true;
|
|
};
|
|
};
|
|
}
|
|
];
|
|
}
|