aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/nix/vm/common-gnome.nix
blob: d8d484071509d00ed2fd24e29b0fcb950cc3c4a9 (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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
{
  config,
  lib,
  pkgs,
  ...
}: {
  imports = [
    ./common.nix
  ];

  services = {
    displayManager = {
      gdm = {
        enable = true;
        autoSuspend = false;
      };
    };
    desktopManager = {
      gnome = {
        enable = true;
      };
    };
  };

  systemd.user.services = {
    "org.gnome.Shell@wayland" = {
      serviceConfig = {
        ExecStart = [
          # Clear the list before overriding it.
          ""
          # Eval API is now internal so Shell needs to run in unsafe mode.
          "${pkgs.gnome-shell}/bin/gnome-shell --unsafe-mode"
        ];
      };
    };
  };

  environment.systemPackages = [
    pkgs.gnomeExtensions.no-overview
  ];

  environment.gnome.excludePackages = with pkgs; [
    atomix
    baobab
    cheese
    epiphany
    evince
    file-roller
    geary
    gnome-backgrounds
    gnome-calculator
    gnome-calendar
    gnome-clocks
    gnome-connections
    gnome-contacts
    gnome-disk-utility
    gnome-extension-manager
    gnome-logs
    gnome-maps
    gnome-music
    gnome-photos
    gnome-software
    gnome-system-monitor
    gnome-text-editor
    gnome-themes-extra
    gnome-tour
    gnome-user-docs
    gnome-weather
    hitori
    iagno
    loupe
    nautilus
    orca
    seahorse
    simple-scan
    snapshot
    sushi
    tali
    totem
    yelp
  ];

  programs.dconf = {
    enable = true;
    profiles.user.databases = [
      {
        settings = with lib.gvariant; {
          "org/gnome/desktop/background" = {
            picture-uri = "file://${pkgs.ghostty}/share/icons/hicolor/512x512/apps/com.mitchellh.ghostty.png";
            picture-uri-dark = "file://${pkgs.ghostty}/share/icons/hicolor/512x512/apps/com.mitchellh.ghostty.png";
            picture-options = "centered";
            primary-color = "#000000000000";
            secondary-color = "#000000000000";
          };
          "org/gnome/desktop/interface" = {
            color-scheme = "prefer-dark";
          };
          "org/gnome/desktop/notifications" = {
            show-in-lock-screen = false;
          };
          "org/gnome/desktop/screensaver" = {
            lock-enabled = false;
            picture-uri = "file://${pkgs.ghostty}/share/icons/hicolor/512x512/apps/com.mitchellh.ghostty.png";
            picture-options = "centered";
            primary-color = "#000000000000";
            secondary-color = "#000000000000";
          };
          "org/gnome/desktop/session" = {
            idle-delay = mkUint32 0;
          };
          "org/gnome/shell" = {
            disable-user-extensions = false;
            enabled-extensions = builtins.map (x: x.extensionUuid) (
              lib.filter (p: p ? extensionUuid) config.environment.systemPackages
            );
          };
        };
      }
    ];
  };

  programs.geary.enable = false;

  services.gnome = {
    gnome-browser-connector.enable = false;
    gnome-initial-setup.enable = false;
    gnome-online-accounts.enable = false;
    gnome-remote-desktop.enable = false;
    rygel.enable = false;
  };

  system.activationScripts = {
    face = {
      text = ''
        mkdir -p /var/lib/AccountsService/{icons,users}

        cp ${pkgs.ghostty}/share/icons/hicolor/1024x1024/apps/com.mitchellh.ghostty.png /var/lib/AccountsService/icons/ghostty

        echo -e "[User]\nIcon=/var/lib/AccountsService/icons/ghostty\n" > /var/lib/AccountsService/users/ghostty

        chown root:root /var/lib/AccountsService/users/ghostty
        chmod 0600 /var/lib/AccountsService/users/ghostty

        chown root:root /var/lib/AccountsService/icons/ghostty
        chmod 0444 /var/lib/AccountsService/icons/ghostty
      '';
    };
  };
}