about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJosé Romildo Malaquias <malaquias@gmail.com>2019-05-05 20:52:13 -0300
committerGitHub <noreply@github.com>2019-05-05 20:52:13 -0300
commitb4941a463e5248b01a1a1eb981b35b3824832f97 (patch)
tree36f2dad45212b086b7fc98b75d323dce1be842db
parent40af53c5da0c6dbd1af29797222d22a68e8e60bd (diff)
parent78f176158ca898b61f8585ab9eedd558b2574c1a (diff)
downloadnixlib-b4941a463e5248b01a1a1eb981b35b3824832f97.tar
nixlib-b4941a463e5248b01a1a1eb981b35b3824832f97.tar.gz
nixlib-b4941a463e5248b01a1a1eb981b35b3824832f97.tar.bz2
nixlib-b4941a463e5248b01a1a1eb981b35b3824832f97.tar.lz
nixlib-b4941a463e5248b01a1a1eb981b35b3824832f97.tar.xz
nixlib-b4941a463e5248b01a1a1eb981b35b3824832f97.tar.zst
nixlib-b4941a463e5248b01a1a1eb981b35b3824832f97.zip
Merge pull request #59943 from romildo/fix.deepin.modules
nixos/deepin: use only one module for deepin services
-rw-r--r--nixos/modules/module-list.nix3
-rw-r--r--nixos/modules/services/desktops/deepin/dde-daemon.nix41
-rw-r--r--nixos/modules/services/desktops/deepin/deepin-menu.nix29
-rw-r--r--nixos/modules/services/desktops/deepin/deepin.nix118
-rw-r--r--pkgs/desktops/deepin/dde-api/default.nix26
-rw-r--r--pkgs/desktops/deepin/dde-daemon/default.nix17
6 files changed, 152 insertions, 82 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 05b4b7296396..a07461022a31 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -256,8 +256,7 @@
   ./services/databases/virtuoso.nix
   ./services/desktops/accountsservice.nix
   ./services/desktops/bamf.nix
-  ./services/desktops/deepin/dde-daemon.nix
-  ./services/desktops/deepin/deepin-menu.nix
+  ./services/desktops/deepin/deepin.nix
   ./services/desktops/dleyna-renderer.nix
   ./services/desktops/dleyna-server.nix
   ./services/desktops/pantheon/contractor.nix
diff --git a/nixos/modules/services/desktops/deepin/dde-daemon.nix b/nixos/modules/services/desktops/deepin/dde-daemon.nix
deleted file mode 100644
index 057da4e2d7f2..000000000000
--- a/nixos/modules/services/desktops/deepin/dde-daemon.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-# dde-daemon
-
-{ config, pkgs, lib, ... }:
-
-{
-
-  ###### interface
-
-  options = {
-
-    services.deepin.dde-daemon = {
-
-      enable = lib.mkEnableOption
-        "A daemon for handling Deepin Desktop Environment session settings";
-
-    };
-
-  };
-
-
-  ###### implementation
-
-  config = lib.mkIf config.services.deepin.dde-daemon.enable {
-
-    environment.systemPackages = [ pkgs.deepin.dde-daemon ];
-
-    services.dbus.packages = [ pkgs.deepin.dde-daemon ];
-
-    systemd.packages = [ pkgs.deepin.dde-daemon ];
-
-    users.groups.dde-daemon = { };
-
-    users.users.dde-daemon = {
-      description = "Deepin daemon user";
-      group = "dde-daemon";
-      isSystemUser = true;
-    };
-
-  };
-
-}
diff --git a/nixos/modules/services/desktops/deepin/deepin-menu.nix b/nixos/modules/services/desktops/deepin/deepin-menu.nix
deleted file mode 100644
index 23fe5a741c42..000000000000
--- a/nixos/modules/services/desktops/deepin/deepin-menu.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-# deepin-menu
-
-{ config, pkgs, lib, ... }:
-
-{
-
-  ###### interface
-
-  options = {
-
-    services.deepin.deepin-menu = {
-
-      enable = lib.mkEnableOption
-        "DBus service for unified menus in Deepin Desktop Environment";
-
-    };
-
-  };
-
-
-  ###### implementation
-
-  config = lib.mkIf config.services.deepin.deepin-menu.enable {
-
-    services.dbus.packages = [ pkgs.deepin.deepin-menu ];
-
-  };
-
-}
diff --git a/nixos/modules/services/desktops/deepin/deepin.nix b/nixos/modules/services/desktops/deepin/deepin.nix
new file mode 100644
index 000000000000..7ec326e599e5
--- /dev/null
+++ b/nixos/modules/services/desktops/deepin/deepin.nix
@@ -0,0 +1,118 @@
+# 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-daemon
+        pkgs.deepin.dde-dock
+        pkgs.deepin.dde-session-ui
+        pkgs.deepin.deepin-anything
+        pkgs.deepin.deepin-image-viewer
+        pkgs.deepin.deepin-screenshot
+      ];
+
+      services.dbus.packages = [
+        pkgs.deepin.dde-api
+        pkgs.deepin.dde-calendar
+        pkgs.deepin.dde-daemon
+        pkgs.deepin.dde-dock
+        pkgs.deepin.dde-session-ui
+        pkgs.deepin.deepin-anything
+        pkgs.deepin.deepin-image-viewer
+        pkgs.deepin.deepin-screenshot
+      ];
+
+      systemd.packages = [
+        pkgs.deepin.dde-api
+        pkgs.deepin.dde-daemon
+        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 ];
+    })
+
+  ];
+
+}
diff --git a/pkgs/desktops/deepin/dde-api/default.nix b/pkgs/desktops/deepin/dde-api/default.nix
index b0e908c847e1..76c0861cb3a7 100644
--- a/pkgs/desktops/deepin/dde-api/default.nix
+++ b/pkgs/desktops/deepin/dde-api/default.nix
@@ -68,15 +68,10 @@ buildGoPackage rec {
     rfkill      # run
     xcur2png    # run
     #locales     # run (locale-helper needs locale-gen, which is unavailable on NixOS?)
- ];
+  ];
 
   postPatch = ''
-    searchHardCodedPaths # debugging
-
-    sed -i -e "s|/var|$out/var|" Makefile
-
-    # TODO: confirm where to install grub themes
-    sed -i -e "s|/boot/grub|$out/boot/grub|" Makefile
+    searchHardCodedPaths  # debugging
 
     fixPath $out /usr/lib/deepin-api \
       lunar-calendar/main.go \
@@ -90,6 +85,19 @@ buildGoPackage rec {
       misc/systemd/system/deepin-shutdown-sound.service \
       theme_thumb/gtk/gtk.go \
       thumbnails/gtk/gtk.go
+    fixPath $out /boot/grub Makefile     # TODO: confirm where to install grub themes
+    fixPath $out /var Makefile
+
+    # This package wants to install polkit local authority files into
+    # /var/lib. Nix does not allow a package to install files into /var/lib
+    # because it is outside of the Nix store and should contain applications
+    # state information (persistent data modified by programs as they
+    # run). Polkit looks for them in both /etc/polkit-1 and
+    # /var/lib/polkit-1 (with /etc having priority over /var/lib). An
+    # work around is to install them to $out/etc and simlnk them to
+    # /etc in the deepin module.
+
+    sed -i -e "s,/var/lib/polkit-1,/etc/polkit-1," Makefile
   '';
 
   buildPhase = ''
@@ -103,6 +111,10 @@ buildGoPackage rec {
     remove-references-to -t ${go} $out/bin/* $out/lib/deepin-api/*
   '';
 
+  postFixup = ''
+    searchHardCodedPaths $out  # debugging
+  '';
+
   passthru.updateScript = deepin.updateScript { inherit name; };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/deepin/dde-daemon/default.nix b/pkgs/desktops/deepin/dde-daemon/default.nix
index 4f6b0f4908b9..c709c2894c48 100644
--- a/pkgs/desktops/deepin/dde-daemon/default.nix
+++ b/pkgs/desktops/deepin/dde-daemon/default.nix
@@ -66,7 +66,7 @@ buildGoPackage rec {
   ];
 
   postPatch = ''
-    searchHardCodedPaths
+    searchHardCodedPaths  # debugging
     patchShebangs network/nm_generator/gen_nm_consts.py
 
     fixPath $out /usr/share/dde/data launcher/manager.go dock/dock_manager_init.go
@@ -78,12 +78,21 @@ buildGoPackage rec {
     fixPath ${deepin-wallpapers} /usr/share/wallpapers appearance/background/list.go accounts/user.go
 
     sed -i -e "s|{DESTDIR}/etc|{DESTDIR}$out/etc|" Makefile
-    sed -i -e "s|{DESTDIR}/var|{DESTDIR}$out/var|" Makefile
     sed -i -e "s|{DESTDIR}/lib|{DESTDIR}$out/lib|" Makefile
+    sed -i -e "s|{DESTDIR}/var|{DESTDIR}$out/var|" Makefile
 
     find -type f -exec sed -i -e "s,/usr/lib/deepin-daemon,$out/lib/deepin-daemon," {} +
 
-    searchHardCodedPaths
+    # This package wants to install polkit local authority files into
+    # /var/lib. Nix does not allow a package to install files into /var/lib
+    # because it is outside of the Nix store and should contain applications
+    # state information (persistent data modified by programs as they
+    # run). Polkit looks for them in both /etc/polkit-1 and
+    # /var/lib/polkit-1 (with /etc having priority over /var/lib). An
+    # work around is to install them to $out/etc and simlnk them to
+    # /etc in the deepin module.
+
+    sed -i -e "s,/var/lib/polkit-1,/etc/polkit-1," Makefile
   '';
 
   buildPhase = ''
@@ -104,6 +113,8 @@ buildGoPackage rec {
     for binary in $out/lib/deepin-daemon/*; do
       wrapProgram $binary "''${gappsWrapperArgs[@]}"
     done
+
+    searchHardCodedPaths $out  # debugging
   '';
 
   passthru.updateScript = deepin.updateScript { inherit name; };