aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/desktops/deepin/deepin.nix
blob: f8fb73701af692b3003b89d71de3aa6f3ec235fb (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
# deepin

{ config, pkgs, lib, ... }:

{

  ###### interface

  options = {

    services.deepin.core.enable = lib.mkEnableOption "
      Basic dbus and systemd services, groups and users needed by the
      Deepin Desktop Environment.
    ";

    services.deepin.deepin-menu.enable = lib.mkEnableOption "
      DBus service for unified menus in Deepin Desktop Environment.
    ";

    services.deepin.deepin-turbo.enable = lib.mkEnableOption "
      Turbo service for the Deepin Desktop Environment. It is a daemon
      that helps to launch applications faster.
    ";

  };


  ###### implementation

  config = lib.mkMerge [

    (lib.mkIf config.services.deepin.core.enable {
      environment.systemPackages = [
        pkgs.deepin.dde-api
        pkgs.deepin.dde-calendar
        pkgs.deepin.dde-control-center
        pkgs.deepin.dde-daemon
        pkgs.deepin.dde-dock
        pkgs.deepin.dde-launcher
        pkgs.deepin.dde-file-manager
        pkgs.deepin.dde-session-ui
        pkgs.deepin.deepin-anything
        pkgs.deepin.deepin-image-viewer
      ];

      services.dbus.packages = [
        pkgs.deepin.dde-api
        pkgs.deepin.dde-calendar
        pkgs.deepin.dde-control-center
        pkgs.deepin.dde-daemon
        pkgs.deepin.dde-dock
        pkgs.deepin.dde-launcher
        pkgs.deepin.dde-file-manager
        pkgs.deepin.dde-session-ui
        pkgs.deepin.deepin-anything
        pkgs.deepin.deepin-image-viewer
      ];

      systemd.packages = [
        pkgs.deepin.dde-api
        pkgs.deepin.dde-daemon
        pkgs.deepin.dde-file-manager
        pkgs.deepin.deepin-anything
      ];

      boot.extraModulePackages = [ config.boot.kernelPackages.deepin-anything ];

      boot.kernelModules = [ "vfs_monitor" ];

      users.groups.deepin-sound-player = { };

      users.users.deepin-sound-player = {
        description = "Deepin sound player";
        group = "deepin-sound-player";
        isSystemUser = true;
      };

      users.groups.deepin-daemon = { };

      users.users.deepin-daemon = {
        description = "Deepin daemon user";
        group = "deepin-daemon";
        isSystemUser = true;
      };

      users.groups.deepin_anything_server = { };

      users.users.deepin_anything_server = {
        description = "Deepin Anything Server";
        group = "deepin_anything_server";
        isSystemUser = true;
      };

      security.pam.services.deepin-auth-keyboard.text = ''
        # original at ${pkgs.deepin.dde-daemon}/etc/pam.d/deepin-auth-keyboard
        auth	[success=2 default=ignore]	pam_lsass.so
        auth	[success=1 default=ignore]	pam_unix.so nullok_secure try_first_pass
        auth	requisite	pam_deny.so
        auth	required	pam_permit.so
      '';

      environment.etc = {
        "polkit-1/localauthority/10-vendor.d/com.deepin.api.device.pkla".source = "${pkgs.deepin.dde-api}/etc/polkit-1/localauthority/10-vendor.d/com.deepin.api.device.pkla";
        "polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Accounts.pkla".source = "${pkgs.deepin.dde-daemon}/etc/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Accounts.pkla";
        "polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Grub2.pkla".source = "${pkgs.deepin.dde-daemon}/etc/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Grub2.pkla";
      };

      services.deepin.deepin-menu.enable = true;
      services.deepin.deepin-turbo.enable = true;
    })

    (lib.mkIf config.services.deepin.deepin-menu.enable {
      services.dbus.packages = [ pkgs.deepin.deepin-menu ];
    })

    (lib.mkIf config.services.deepin.deepin-turbo.enable {
      environment.systemPackages = [ pkgs.deepin.deepin-turbo ];
      systemd.packages = [ pkgs.deepin.deepin-turbo ];
    })

  ];

}