nix-stuff/roles/kde/plasma.nix

166 lines
4.5 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;
# Same as https://github.com/NixOS/nixpkgs/pull/386932
nixpkgs.overlays = [
(
final: prev: {
kdePackages = prev.kdePackages.overrideScope (
kFinal: kPrev: {
qtbase-vulkan = kPrev.qtbase.overrideAttrs {
postFixup = ''
moveToOutput "mkspecs/modules" "$dev"
fixQtModulePaths "$dev/mkspecs/modules"
fixQtBuiltinPaths "$out" '*.pr?'
patchelf --add-rpath "${final.libmysqlclient}/lib/mariadb" $out/lib/qt-6/plugins/sqldrivers/libqsqlmysql.so
patchelf --add-rpath "${final.vulkan-loader}/lib" --add-needed "libvulkan.so" $out/lib/libQt6Gui.so
'';
};
}
);
}
)
];
system.replaceDependencies.replacements = with pkgs.kdePackages; [
{
oldDependency = qtbase;
newDependency = qtbase-vulkan;
}
];
qt.enable = true;
# 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";
};
mice = let
settings = {
enable = true;
accelerationProfile = "none";
};
mice = [
{
productId = "d030";
vendorId = "3434";
name = "Keychron Keychron Link ";
}
{
productId = "d03f";
vendorId = "3434";
name = "Keychron Keychron M6 ";
}
{
productId = "d03f";
vendorId = "3434";
name = "Keychron M6 Mouse";
}
];
in
lib.lists.forEach mice (miceInfo: miceInfo // settings);
};
panels = [
{
location = "bottom";
height = 44;
floating = true;
widgets = [
{
kickoff = {
icon = "nix-snowflake-white";
settings.General.switchCategoryOnHover = true;
};
}
"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;
};
};
}
];
}