nix-stuff/roles/kde/plasma.nix

134 lines
3.4 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;
};
};
# /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 {
# Enable the Plasma 6 Desktop Environment
services.desktopManager.plasma6.enable = true;
qt.enable = true;
nixpkgs.overlays = [
(
final: prev: {
kdePackages = prev.kdePackages.overrideScope (
kFinal: kPrev: {
libplasma = kPrev.libplasma.overrideAttrs {
patches = [
./patches/libplasma-pr1214.patch
];
};
plasma-workspace = kPrev.plasma-workspace.overrideAttrs {
patches = kPrev.plasma-workspace.patches ++ [
./patches/plasma_workspace-pr4883.patch
];
};
}
);
}
)
];
# GTK apps need dconf to grab the correct theme on Wayland
programs.dconf.enable = true;
# Install the plasma default configs
environment.systemPackages = with pkgs.kdePackages; [
plasmaDefaults
plasma-thunderbolt
plasma-vault
];
# Plasma configs should be on all users
home-manager.sharedModules = [
{
imports = [flakeSelf.inputs.plasma-manager.homeManagerModules.plasma-manager];
home.packages = [
(
pkgs.catppuccin-kde.override {
flavour = ["mocha"];
accents = ["mauve"];
winDecStyles = ["classic"];
}
)
];
programs.plasma = {
enable = true;
workspace = {
clickItemTo = "select";
cursor.theme = "Breeze_Light";
iconTheme = "breeze-dark";
lookAndFeel = "Catppuccin-Mocha-Mauve";
theme = "default";
colorScheme = "CatppuccinMochaMauve";
};
input = {
keyboard = {
layouts = [{layout = "es";}];
numlockOnStartup = "off";
};
};
panels = [
{
location = "bottom";
height = 44;
floating = true;
widgets = [
{
kickoff = {
icon = "nix-snowflake-white";
};
}
"org.kde.plasma.pager"
"org.kde.plasma.icontasks"
"org.kde.plasma.marginsseparator"
"org.kde.plasma.systemtray"
{
digitalClock = {
time.showSeconds = "always";
};
}
"org.kde.plasma.showdesktop"
];
}
];
configFile = {
"kdeglobals"."General"."AccentColor".value = null;
"auroraerc"."CatppuccinMocha-Classic"."ButtonSize".value = 0;
"plasmanotifyrc"."Notifications"."NormalAlwaysOnTop".value = true;
};
};
}
];
}