56 lines
2 KiB
Nix
56 lines
2 KiB
Nix
|
{
|
||
|
config,
|
||
|
lib,
|
||
|
pkgs,
|
||
|
...
|
||
|
}:
|
||
|
with lib; let
|
||
|
cfg = config.custom.settings.icons;
|
||
|
in {
|
||
|
options.custom.settings.icons = {
|
||
|
enable = mkOption {default = false;};
|
||
|
|
||
|
cursor = {
|
||
|
# https://github.com/ful1e5/Google_Cursor
|
||
|
name = mkOption {default = "GoogleDot-Black";};
|
||
|
package = mkOption {default = pkgs.google-cursor;};
|
||
|
size = mkOption {default = 24;};
|
||
|
};
|
||
|
|
||
|
icon = {
|
||
|
# https://github.com/PapirusDevelopmentTeam/papirus-icon-theme
|
||
|
name = mkOption {default = "Papirus-Dark";};
|
||
|
package = mkOption {default = pkgs.papirus-icon-theme;};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = mkIf cfg.enable {
|
||
|
environment.systemPackages = [cfg.cursor.package cfg.icon.package];
|
||
|
|
||
|
# BUG: home.pointerCursor breaks XCURSOR_PATH for some child windows, so avoid that workaround
|
||
|
# HACK: Copy home-manager index.theme without setting XCURSOR_* environment variables
|
||
|
home-manager.sharedModules = let
|
||
|
# https://github.com/nix-community/home-manager/blob/59a4c43e9ba6db24698c112720a58a334117de83/modules/config/home-cursor.nix#L66C3-L77C8
|
||
|
defaultIndexThemePackage = pkgs.writeTextFile {
|
||
|
name = "index.theme";
|
||
|
destination = "/share/icons/default/index.theme";
|
||
|
|
||
|
text = ''
|
||
|
[Icon Theme]
|
||
|
Name=Default
|
||
|
Comment=Default Cursor Theme
|
||
|
Inherits=${cfg.cursor.name}
|
||
|
'';
|
||
|
};
|
||
|
in [
|
||
|
{
|
||
|
# https://github.com/nix-community/home-manager/blob/59a4c43e9ba6db24698c112720a58a334117de83/modules/config/home-cursor.nix#L161
|
||
|
home.file.".icons/default/index.theme".source = "${defaultIndexThemePackage}/share/icons/default/index.theme";
|
||
|
home.file.".icons/${cfg.cursor.name}".source = "${cfg.cursor.package}/share/icons/${cfg.cursor.name}";
|
||
|
xdg.dataFile."icons/default/index.theme".source = "${defaultIndexThemePackage}/share/icons/default/index.theme";
|
||
|
xdg.dataFile."icons/${cfg.cursor.name}".source = "${cfg.cursor.package}/share/icons/${cfg.cursor.name}";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
}
|