166 lines
4.5 KiB
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;
|
|
};
|
|
};
|
|
}
|
|
];
|
|
}
|