summaryrefslogtreecommitdiff
path: root/modules/desktop/default.nix
blob: 471f0cdc347e05d6dee06815739aad9e34f738c0 (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
104
105
{
  lib,
  config,
  pkgs,
  ...
}: let
  inherit (lib) mkEnableOption mkIf optionals;
  cfg = config.desktop;
in {
  imports = [
    ./firefox
    ./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.";
    firefox = mkEnableOption "Enable the firefox browser.";
    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
        orchis-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"
          ];
        };
      };
    };
  };
}