feat(gtk): Catppuccin -> Rose Pine
This commit is contained in:
parent
8330baa99f
commit
09b2d0f6c4
1 changed files with 30 additions and 159 deletions
|
@ -3,182 +3,53 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
inherit
|
||||||
inherit (lib)
|
(lib)
|
||||||
concatStringsSep
|
rp
|
||||||
ctp
|
|
||||||
mkIf
|
mkIf
|
||||||
mkEnableOption
|
|
||||||
mkMerge
|
mkMerge
|
||||||
mkOption
|
|
||||||
mkRenamedOptionModule
|
|
||||||
types
|
|
||||||
;
|
;
|
||||||
cfg = config.gtk.catppuccin;
|
cfg = config.gtk.rose-pine;
|
||||||
enable = cfg.enable && config.gtk.enable;
|
enable = cfg.enable && config.gtk.enable;
|
||||||
in
|
|
||||||
{
|
themeName =
|
||||||
options.gtk.catppuccin =
|
if (cfg.flavor == "main")
|
||||||
ctp.mkCatppuccinOpt {
|
then "rose-pine"
|
||||||
|
else "rose-pine-${cfg.flavor}";
|
||||||
|
in {
|
||||||
|
options.gtk.rose-pine =
|
||||||
|
rp.mkRosePineOpt {
|
||||||
name = "gtk";
|
name = "gtk";
|
||||||
enableDefault = false;
|
enableDefault = false;
|
||||||
}
|
}
|
||||||
// {
|
// {
|
||||||
accent = ctp.mkAccentOpt "gtk";
|
icon = rp.mkRosePineOpt {
|
||||||
|
name = "GTK icon theme";
|
||||||
size = mkOption {
|
# NOTE: we exclude this from the global `catppuccin.enable` as there
|
||||||
type = types.enum [
|
# is no `enable` option in the upstream module to guard it.
|
||||||
"standard"
|
enableDefault = false;
|
||||||
"compact"
|
|
||||||
];
|
|
||||||
default = "standard";
|
|
||||||
description = "Catppuccin size variant for gtk";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
tweaks = mkOption {
|
|
||||||
type = types.listOf (
|
|
||||||
types.enum [
|
|
||||||
"black"
|
|
||||||
"rimless"
|
|
||||||
"normal"
|
|
||||||
"float"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
default = [ ];
|
|
||||||
description = "Catppuccin tweaks for gtk";
|
|
||||||
};
|
|
||||||
|
|
||||||
gnomeShellTheme = mkEnableOption "Catppuccin gtk theme for GNOME Shell";
|
|
||||||
|
|
||||||
icon =
|
|
||||||
ctp.mkCatppuccinOpt {
|
|
||||||
name = "GTK modified Papirus icon theme";
|
|
||||||
# NOTE: we exclude this from the global `catppuccin.enable` as there is no
|
|
||||||
# `enable` option in the upstream module to guard it
|
|
||||||
enableDefault = false;
|
|
||||||
}
|
|
||||||
// {
|
|
||||||
accent = ctp.mkAccentOpt "GTK modified Papirus icon theme";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = [
|
|
||||||
(mkRenamedOptionModule
|
|
||||||
[
|
|
||||||
"gtk"
|
|
||||||
"catppuccin"
|
|
||||||
"cursor"
|
|
||||||
"enable"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
"catppuccin"
|
|
||||||
"pointerCursor"
|
|
||||||
"enable"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
(mkRenamedOptionModule
|
|
||||||
[
|
|
||||||
"gtk"
|
|
||||||
"catppuccin"
|
|
||||||
"cursor"
|
|
||||||
"flavor"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
"catppuccin"
|
|
||||||
"pointerCursor"
|
|
||||||
"flavor"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
(mkRenamedOptionModule
|
|
||||||
[
|
|
||||||
"gtk"
|
|
||||||
"catppuccin"
|
|
||||||
"cursor"
|
|
||||||
"accent"
|
|
||||||
]
|
|
||||||
[
|
|
||||||
"catppuccin"
|
|
||||||
"pointerCursor"
|
|
||||||
"accent"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
(mkIf (enable || cfg.gnomeShellTheme) {
|
|
||||||
warnings = [
|
|
||||||
''
|
|
||||||
`gtk.catppuccin.enable` and `gtk.catppuccin.gnomeShellTheme` are deprecated and will be removed in a future release.
|
|
||||||
|
|
||||||
The upstream port has been archived and support will no longer be provided.
|
|
||||||
Please see https://github.com/catppuccin/gtk/issues/262
|
|
||||||
''
|
|
||||||
];
|
|
||||||
})
|
|
||||||
|
|
||||||
(mkIf enable {
|
(mkIf enable {
|
||||||
gtk.theme =
|
gtk.theme = {
|
||||||
let
|
name = "${themeName}-gtk";
|
||||||
gtkTweaks = "+" + concatStringsSep "," cfg.tweaks;
|
package = pkgs.rose-pine-gtk-theme;
|
||||||
in
|
};
|
||||||
{
|
|
||||||
name =
|
|
||||||
"catppuccin-${cfg.flavor}-${cfg.accent}-${cfg.size}"
|
|
||||||
+ lib.optionalString (cfg.tweaks != [ ]) gtkTweaks;
|
|
||||||
package = pkgs.catppuccin-gtk.override {
|
|
||||||
inherit (cfg) size tweaks;
|
|
||||||
accents = [ cfg.accent ];
|
|
||||||
variant = cfg.flavor;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile =
|
xdg.configFile = let
|
||||||
let
|
gtk4Dir = "${config.gtk.theme.package}/share/themes/${themeName}/gtk-4.0";
|
||||||
gtk4Dir = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0";
|
in {
|
||||||
in
|
"gtk-4.0/gtk.css".source = "${gtk4Dir}/gtk.css";
|
||||||
{
|
};
|
||||||
"gtk-4.0/assets".source = "${gtk4Dir}/assets";
|
|
||||||
"gtk-4.0/gtk.css".source = "${gtk4Dir}/gtk.css";
|
|
||||||
"gtk-4.0/gtk-dark.css".source = "${gtk4Dir}/gtk-dark.css";
|
|
||||||
};
|
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.icon.enable {
|
(mkIf cfg.icon.enable {
|
||||||
gtk.iconTheme =
|
gtk.iconTheme = {
|
||||||
let
|
name = "${themeName}-icons";
|
||||||
# use the light icon theme for latte
|
package = pkgs.rose-pine-icon-theme;
|
||||||
polarity = if cfg.icon.flavor == "latte" then "Light" else "Dark";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
name = "Papirus-${polarity}";
|
|
||||||
package = pkgs.catppuccin-papirus-folders.override { inherit (cfg.icon) accent flavor; };
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
(mkIf cfg.gnomeShellTheme {
|
|
||||||
assertions = [
|
|
||||||
{
|
|
||||||
assertion = enable;
|
|
||||||
message = "`gtk.enable` and `gtk.catppuccin.enable` must be `true` to use the GNOME shell theme";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = [ pkgs.gnomeExtensions.user-themes ];
|
|
||||||
|
|
||||||
dconf.settings = {
|
|
||||||
"org/gnome/shell" = {
|
|
||||||
disable-user-extensions = false;
|
|
||||||
enabled-extensions = [ "user-theme@gnome-shell-extensions.gcampax.github.com" ];
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/user-theme" = {
|
|
||||||
inherit (config.gtk.theme) name;
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
color-scheme = if cfg.flavor == "latte" then "default" else "prefer-dark";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in a new issue