nichts/hosts/dragyx/common/theming/default.nix
2024-04-29 13:17:46 +02:00

170 lines
4.6 KiB
Nix

{ config, pkgs, ... }:
# TODO: Make this more generic / reusable
let
username = config.modules.other.system.username;
gitPath = config.modules.other.system.gitPath;
variant = "frappe";
catpuccin-rofi = pkgs.stdenv.mkDerivation {
pname = "catppuccin-rofi";
version = "0";
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "rofi";
rev = "5350da41a11814f950c3354f090b90d4674a95ce";
sha256 = "sha256-DNorfyl3C4RBclF2KDgwvQQwixpTwSRu7fIvihPN8JY=";
};
installPhase = ''
mkdir -p $out/share/
mkdir -p $out/.config/
cp -r $src/basic/.config/rofi/* $out/.config/
cp -r $src/basic/.local/share/rofi/themes/* $out/share/
'';
};
grub-theme = pkgs.stdenv.mkDerivation {
pname = "catppuccin-grub";
version = "0";
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "grub";
rev = "803c5df0e83aba61668777bb96d90ab8f6847106";
sha256 = "sha256-/bSolCta8GCZ4lP0u5NVqYQ9Y3ZooYCNdTwORNvR7M0=";
};
installPhase = ''
# runHook preInstall
mkdir -p $out/
cp -r $src/src/catppuccin-mocha-grub-theme/* $out/
# runHook postInstall
'';
};
# catppuccin-sddm-corners-patched = pkgs.catppuccin-sddm-corners.overrideAttrs (prevAttrs: {
# postInstall = (prevAttrs.postInstall or "") + ''
# sed -i -E "s/passwordMaskDelay: [0-9]+/passwordMaskDelay: 0/" $out/share/sddm/themes/catppuccin-sddm-corners/components/PasswordPanel.qml
# '';
# });
catppuccin-sddm = pkgs.stdenv.mkDerivation rec {
pname="catppuccin-sddm";
version="1.0.0";
dontBuild = true;
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "sddm";
rev = "v${version}";
sha256 = "sha256-SdpkuonPLgCgajW99AzJaR8uvdCPi4MdIxS5eB+Q9WQ=";
};
# nativeBuildInputs = with pkgs; [ qt6.qtsvg qt6.qtdeclarative ];
installPhase = ''
runHook preInstall
theme_dir="$out/share/sddm/themes/";
mkdir -p $theme_dir
for variant in "latte" "frappe" "macchiato" "mocha"; do
this_theme="$theme_dir/catppuccin-$variant"
mkdir "$this_theme"
cp -r $src/src/* $this_theme
# replace the theme name in the metadata file
sed -i -e "s/%%THEME%%/$variant/g" "$this_theme/metadata.desktop"
# handle items that are different per theme
cp "$src/pertheme/$variant.png" "$this_theme/preview.png"
cp "$src/pertheme/$variant.conf" "$this_theme/theme.conf"
done
runHook postInstall
'';
};
catppuccin-wallpapers = pkgs.stdenv.mkDerivation {
pname="catppuccin-wallpapers";
version = "0";
src = pkgs.fetchFromGitHub {
owner = "zhichaoh";
repo = "catppuccin-wallpapers";
rev = "1023077979591cdeca76aae94e0359da1707a60e";
sha256 = "sha256-h+cFlTXvUVJPRMpk32jYVDDhHu1daWSezFcvhJqDpmU=";
};
installPhase = ''
mkdir -p $out/
cp -r $src/* $out/
'';
};
catppuccin = (pkgs.catppuccin.override {
inherit variant;
});
catppuccin-waybar = pkgs.stdenv.mkDerivation rec {
name = "catppuccin-waybar";
version = "1.1";
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "waybar";
rev = "v${version}";
hash = "sha256-9lY+v1CTbpw2lREG/h65mLLw5KuT8OJdEPOb+NNC6Fo=";
};
installPhase = ''
runHook preInstall
mkdir -p $out
cp $src/themes/* $out/
runHook postInstall
'';
};
in
{
home-manager.users.${username} = {
xdg.configFile."rofi".source = "${catpuccin-rofi}/.config";
xdg.dataFile."rofi/themes".source = "${catpuccin-rofi}/share";
programs.waybar.style = ./waybar-style.css;
# add catppuccin theme to waybar
xdg.configFile."waybar/catppuccin.css".source = "${catppuccin-waybar}/${variant}.css";
wayland.windowManager.hyprland.settings.exec-once = [
"hyprshade auto"
"dunst"
"hyprpaper"
];
xdg.configFile."hypr/hyprpaper.conf" = { #TODO: generic path
text = ''
preload = ${catppuccin-wallpapers}/landscapes/Rainnight.jpg
wallpaper = ,${catppuccin-wallpapers}/landscapes/Rainnight.jpg
'';
};
};
environment.systemPackages = with pkgs; [
# catppuccin-sddm-corners-patched
catppuccin
catppuccin-sddm
# deps of catppuccin-sddm-corners-patched
libsForQt5.qt5.qtgraphicaleffects
libsForQt5.qt5.qtsvg
libsForQt5.qt5.qtquickcontrols
qt6.qtsvg qt6.qtdeclarative
qt6.qtwayland
];
services.displayManager.sddm = {
theme = "catppuccin-${variant}";
package = pkgs.kdePackages.sddm; # NEEDED for the catppuccin theme
};
boot.loader.grub.theme = grub-theme;
}