aboutsummaryrefslogtreecommitdiff
path: root/modules/homeModules/stylix.nix
blob: 1a28fe9a943503b4e231ea75cf113e8956961751 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{inputs, ...}: {
  flake.homeModules.stylixConfig = {
    pkgs,
    config,
    lib,
    inputs,
    ...
  }: {
    imports = [
      inputs.stylix.homeModules.stylix
    ];

    options.customs = {
      stylixConfig = {
        enable = lib.mkEnableOption "enable stylix";
        theme = lib.mkOption {type = lib.types.str;};
      };
      wallpaper = lib.mkOption {type = with lib.types; oneOf [str path package];};
    };
    config = lib.mkIf config.customs.stylixConfig.enable {
      wallpaper = with config.lib.stylix.colors.withHashtag;
        pkgs.runCommand "cat.png" {} ''
          pastel=${pkgs.pastel}/bin/pastel
          SHADOWS=$($pastel darken 0.1 '${base05}' | $pastel format hex)
          TAIL=$($pastel lighten 0.1 '${base02}' | $pastel format hex)
          HIGHLIGHTS=$($pastel lighten 0.1 '${base05}' | $pastel format hex)

          ${pkgs.imagemagick}/bin/convert ${./attachments/basecat.png} \
           -fill '${base00}' -opaque black \
           -fill '${base05}' -opaque white \
           -fill '${base08}' -opaque blue \
           -fill $SHADOWS -opaque gray \
           -fill '${base02}' -opaque orange \
           -fill $TAIL -opaque green \
           -fill $HIGHLIGHTS -opaque brown \
           $out'';
      stylix = {
        enable = true;
        targets = {
          rofi.enable = false;
          waybar.enable = false;
          firefox.profileNames = ["ShyFox"];
        };

        polarity = "dark";

        base16Scheme = "${pkgs.base16-schemes}/share/themes/${config.customs.stylixConfig.theme}.yaml";
        image = config.wallpaper;
        cursor = {
          package = pkgs.bibata-cursors;
          name = "Bibata-Modern-Ice";
          size = 24;
        };

        fonts = {
          sizes.terminal = 11;
          serif = {
            package = pkgs.noto-fonts;
            name = "Noto Serif";
          };

          sansSerif = {
            package = pkgs.rubik;
            name = "Rubik";
          };

          monospace = {
            package = pkgs.nerd-fonts.fira-code;
            name = "FiraCode Nerd Font";
          };

          emoji = {
            package = pkgs.noto-fonts-color-emoji;
            name = "Noto Color Emoji";
          };
        };
      };
    };
  };
}