aboutsummaryrefslogtreecommitdiff
path: root/share/hm-modules/hyprdesktop.nix
blob: 94620a42c5d57f42c9c55c6f83006458d0f7164d (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
106
107
108
109
110
111
112
{
  config,
  pkgs,
  lib,
  ...
}:
let
  inherit (lib)
    mkIf
    mkOption
    mkEnableOption
    types
    mdDoc
    lists
    ;
  cfg = config.custom.hyprdesktop;
in
{
  imports = [ ../home/minimal.nix ];

  options.custom.hyprdesktop = {
    enable = mkEnableOption "Enable hyprdesktop";

    mainUser = mkOption {
      type = types.str;
      example = "alice";
      description = mdDoc "Main superuser's username.";
    };

    hasBluetooth = mkOption {
      type = types.bool;
      default = false;
      example = "true";
    };
    hasBrightnessCtl = mkOption {
      type = types.bool;
      default = false;
      example = "true";
    };
    hasBattery = mkOption {
      type = types.bool;
      default = false;
      example = "true";
    };

    enableGitAnnex = mkOption {
      type = types.bool;
      default = true;
      example = "false";
    };
  };

  config = mkIf cfg.enable {
    wayland.windowManager.hyprland.enable = true;
    home.packages =
      with pkgs;
      [
        wireplumber # session & policy manager for pipewire
        grim # screenshot utility for wayland
        slurp # region selection UI for wayland
        wl-clipboard # clipboard utility
        xdg-utils
      ]
      ++ lists.optionals cfg.hasBluetooth [ overskride ]
      ++ lists.optionals cfg.hasBrightnessCtl [ brightnessctl ]
      ++ lists.optionals cfg.enableGitAnnex [
        git-annex
        git-remote-gcrypt
      ];

    home.pointerCursor = {
      gtk.enable = true;
      package = pkgs.vanilla-dmz;
      name = "Vanilla-DMZ";
      size = 20;
    };

    services.dunst.enable = true;
    services.wpaperd.enable = true;
    services.poweralertd.enable = cfg.hasBattery;
    programs.jujutsu.enable = true;
    programs.foot.enable = true;
    programs.waybar.enable = true;
    programs.tofi.enable = true;

    xdg.portal = {
      enable = true;
      extraPortals = [ pkgs.kdePackages.xdg-desktop-portal-kde ];
      xdgOpenUsePortal = true;
      config = {
        kde = {
          default = [ "kde" ];
          "org.freedesktop.impl.portal.Secret" = [
            "kwallet"
          ];
        };
        hyprland.default = [ "hyprland" ];
      };
    };

    gtk = {
      theme = {
        package = pkgs.flat-remix-gtk;
        name = "Flat-Remix-GTK-Blue-Darkest";
      };
      iconTheme = {
        package = pkgs.flat-remix-icon-theme;
        name = "Flat-Remix-Blue-Dark";
      };
    };
  };
}