aboutsummaryrefslogtreecommitdiff
path: root/home-manager/homeModules/stylix.nix
blob: 6951c04a6dbb8322297c141b579a1c9f1af64650 (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
{ pkgs, config, lib, inputs, ... }:

{
  imports = [
    inputs.stylix.homeManagerModules.stylix
  ];

  options = {
    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.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;
      };

      polarity = "dark";

      opacity = {
        terminal = 0.7;
        # applications = 0.7;
      };
      
      base16Scheme = "${pkgs.base16-schemes}/share/themes/${config.stylixConfig.theme}.yaml";
      image = config.wallpaper;
      cursor = {
        package = pkgs.bibata-cursors;
        name = "Bibata-Modern-Ice";
        size = 24;
      };
      
      fonts = {
        serif = {
          package = pkgs.noto-fonts;
          name = "Noto Serif";
        };

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

        monospace = {
          package = pkgs.nerdfonts.override { fonts = ["SourceCodePro"]; };
          name = "SauceCodePro Nerd Font";
        };

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