summaryrefslogtreecommitdiff
path: root/modules/desktop/default.nix
blob: cab72f8900230aedc62d4502924a09777a448838 (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
{
  lib,
  config,
  pkgs,
  inputs,
  ...
}: let
  inherit (lib) mkEnableOption mkIf optionals;
  cfg = config.desktop;
in {
  imports = [
    ./waybar
    ./wofi
    ./astal.nix
    ./hypridle.nix
    ./hyprland.nix
    ./hyprlock.nix
    ./hyprpaper.nix
    ./mako.nix
  ];

  options.desktop = {
    enable = mkEnableOption "Enable baseline desktop utils and programs.";
    astal = mkEnableOption "Enable the astal gtk shell.";
    hypridle = mkEnableOption "Enable the hypridle daemon.";
    hyprland = mkEnableOption "Install the Hyprland desktop.";
    hyprlock = mkEnableOption "Enable the hyprlock lockscreen.";
    hyprpaper = mkEnableOption "Enable the hyprpaper wallpaper daemon.";
    mako = mkEnableOption "Enable the mako notification daemon.";
    waybar = mkEnableOption "Enable the waybar bar.";
    wofi = mkEnableOption "Enable the wofi launcher.";
  };

  config = mkIf cfg.enable {
    home-manager.users.${config.user} = {
      # desktop specific programs
      home.packages = with pkgs; [
        # gtk
        adwaita-icon-theme
        # codecs
        libaacs
        libavif
        libbluray
        libjxl
        # wayland
        cage
        grimblast
        wl-clipboard
        wl-clip-persist
        wl-mirror
        # xdg
        libnotify
      ];
    };

    # desktop only fonts
    fonts.packages =
      (with pkgs; [
        corefonts
        dejavu_fonts
        fira-code
        fira-code-symbols
        jetbrains-mono
        material-icons
        nerd-fonts.fira-code
        noto-fonts
        noto-fonts-cjk-sans
        noto-fonts-emoji
        twemoji-color-font
        vistafonts
      ])
      ++ (with inputs.apple-fonts.packages.${pkgs.system}; [
        sf-pro
        sf-mono
        sf-compact
      ]);

    fonts.fontconfig = {
      enable = true;
      defaultFonts = {
        serif = [
          "Twemoji"
          "DejaVu Serif"
        ];
        sansSerif = [
          "Twemoji"
          "DejaVu Sans"
        ];
        monospace = [
          "Fira Code"
          "FiraCode Nerd Font Mono"
          "Font Awesome 6 Pro Regular"
          "Twemoji"
          "DejaVu Sans Mono"
        ];
        emoji = [
          "Twemoji"
          "Noto Color Emoji"
        ];
      };
    };
  };
}