diff options
author | github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | 2023-12-25 18:00:59 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-25 18:00:59 +0000 |
commit | f6ece27ed4a1984d636c433544524a716eb8ebab (patch) | |
tree | 20ffc6d46e8d32157ad4489dd47341f058dfc59a /pkgs/desktops | |
parent | bcfe2bafda1934937038cfb7871bd7cc59a78784 (diff) | |
parent | e2a637a4790faccd586969773049fdec2cf3b9e2 (diff) | |
download | nixlib-f6ece27ed4a1984d636c433544524a716eb8ebab.tar nixlib-f6ece27ed4a1984d636c433544524a716eb8ebab.tar.gz nixlib-f6ece27ed4a1984d636c433544524a716eb8ebab.tar.bz2 nixlib-f6ece27ed4a1984d636c433544524a716eb8ebab.tar.lz nixlib-f6ece27ed4a1984d636c433544524a716eb8ebab.tar.xz nixlib-f6ece27ed4a1984d636c433544524a716eb8ebab.tar.zst nixlib-f6ece27ed4a1984d636c433544524a716eb8ebab.zip |
Merge master into staging-next
Diffstat (limited to 'pkgs/desktops')
3 files changed, 95 insertions, 17 deletions
diff --git a/pkgs/desktops/cinnamon/cinnamon-session/0002-Use-login-shell-for-wayland-session.patch b/pkgs/desktops/cinnamon/cinnamon-session/0002-Use-login-shell-for-wayland-session.patch new file mode 100644 index 000000000000..6c44f93d8f3c --- /dev/null +++ b/pkgs/desktops/cinnamon/cinnamon-session/0002-Use-login-shell-for-wayland-session.patch @@ -0,0 +1,76 @@ +From 174d14edcbb401aa2bfb77932b214512befb486c Mon Sep 17 00:00:00 2001 +From: Bobby Rong <rjl931189261@126.com> +Date: Sat, 23 Dec 2023 23:24:59 +0800 +Subject: [PATCH] cinnamon-session: make sure wayland sessions get a login + shell + +Users expect their shell profiles to get sourced at startup, which +doesn't happen with wayland sessions. + +This commit brings back that feature, by making the cinnamon-session +wrapper script run a login shell. + +ref: https://gitlab.gnome.org/GNOME/gnome-session/-/commit/7e307f8ddb91db5d4051c4c792519a660ba67f35 +--- + cinnamon-session/cinnamon-session.in | 16 ++++++++++++++++ + cinnamon-session/meson.build | 14 +++++++++++++- + 2 files changed, 29 insertions(+), 1 deletion(-) + create mode 100755 cinnamon-session/cinnamon-session.in + +diff --git a/cinnamon-session/cinnamon-session.in b/cinnamon-session/cinnamon-session.in +new file mode 100755 +index 0000000..d9d7cb2 +--- /dev/null ++++ b/cinnamon-session/cinnamon-session.in +@@ -0,0 +1,16 @@ ++#!/bin/sh ++ ++if [ "x$XDG_SESSION_TYPE" = "xwayland" ] && ++ [ "x$XDG_SESSION_CLASS" != "xgreeter" ] && ++ [ -n "$SHELL" ] && ++ grep -q "$SHELL" /etc/shells && ++ ! (echo "$SHELL" | grep -q "false") && ++ ! (echo "$SHELL" | grep -q "nologin"); then ++ if [ "$1" != '-l' ]; then ++ exec bash -c "exec -l '$SHELL' -c '$0 -l $*'" ++ else ++ shift ++ fi ++fi ++ ++exec @libexecdir@/cinnamon-session-binary "$@" +diff --git a/cinnamon-session/meson.build b/cinnamon-session/meson.build +index 10092ee..3d32fdc 100644 +--- a/cinnamon-session/meson.build ++++ b/cinnamon-session/meson.build +@@ -54,7 +54,7 @@ cinnamon_session_sources = [ + ] + + dbus_glib = dependency('dbus-glib-1') +-executable('cinnamon-session', ++executable('cinnamon-session-binary', + cinnamon_session_sources, + dependencies: [ + cinnamon_desktop, +@@ -76,6 +76,18 @@ executable('cinnamon-session', + ], + include_directories: [ rootInclude ], + install: true, ++ install_dir: get_option('libexecdir'), ++) ++ ++script_conf = configuration_data() ++script_conf.set('libexecdir', get_option('prefix') / get_option('libexecdir')) ++ ++configure_file( ++ input: 'cinnamon-session.in', ++ output: 'cinnamon-session', ++ install: true, ++ install_dir: get_option('bindir'), ++ configuration: script_conf + ) + + units = [ +-- +2.42.0 + diff --git a/pkgs/desktops/cinnamon/cinnamon-session/default.nix b/pkgs/desktops/cinnamon/cinnamon-session/default.nix index a6800f94737d..a0dfab6503c2 100644 --- a/pkgs/desktops/cinnamon/cinnamon-session/default.nix +++ b/pkgs/desktops/cinnamon/cinnamon-session/default.nix @@ -43,6 +43,7 @@ stdenv.mkDerivation rec { patches = [ ./0001-Use-dbus_glib-instead-of-elogind.patch + ./0002-Use-login-shell-for-wayland-session.patch ]; buildInputs = [ diff --git a/pkgs/desktops/gnome/core/gdm/default.nix b/pkgs/desktops/gnome/core/gdm/default.nix index f44278f896c3..25f9fe8c6340 100644 --- a/pkgs/desktops/gnome/core/gdm/default.nix +++ b/pkgs/desktops/gnome/core/gdm/default.nix @@ -5,7 +5,6 @@ , substituteAll , meson , ninja -, rsync , pkg-config , glib , itstool @@ -70,7 +69,6 @@ stdenv.mkDerivation (finalAttrs: { meson ninja pkg-config - rsync gobject-introspection ]; @@ -131,33 +129,36 @@ stdenv.mkDerivation (finalAttrs: { ''; preInstall = '' - install -D ${override} $DESTDIR/$out/share/glib-2.0/schemas/org.gnome.login-screen.gschema.override + install -D ${override} "$DESTDIR/$out/share/glib-2.0/schemas/org.gnome.login-screen.gschema.override" ''; postInstall = '' # Move stuff from DESTDIR to proper location. - # We use rsync to merge the directories. - rsync --archive "$DESTDIR/etc" "$out" - rm --recursive "$DESTDIR/etc" for o in $(getAllOutputNames); do + # debug is created later by _separateDebugInfo hook. if [[ "$o" = "debug" ]]; then continue; fi - rsync --archive "$DESTDIR/''${!o}" "$(dirname "''${!o}")" - rm --recursive "$DESTDIR/''${!o}" + mv "$DESTDIR''${!o}" "$(dirname "''${!o}")" done - # Ensure the DESTDIR is removed. - rmdir "$DESTDIR/nix/store" "$DESTDIR/nix" "$DESTDIR" + + mv "$DESTDIR/etc" "$out" + + # Ensure we did not forget to install anything. + rmdir --parents --ignore-fail-on-non-empty "$DESTDIR${builtins.storeDir}" + ! test -e "$DESTDIR" # We are setting DESTDIR so the post-install script does not compile the schemas. glib-compile-schemas "$out/share/glib-2.0/schemas" ''; - # HACK: We want to install configuration files to $out/etc - # but GDM should read them from /etc on a NixOS system. - # With autotools, it was possible to override Make variables - # at install time but Meson does not support this - # so we need to convince it to install all files to a temporary - # location using DESTDIR and then move it to proper one in postInstall. - DESTDIR = "${placeholder "out"}/dest"; + env = { + # HACK: We want to install configuration files to $out/etc + # but GDM should read them from /etc on a NixOS system. + # With autotools, it was possible to override Make variables + # at install time but Meson does not support this + # so we need to convince it to install all files to a temporary + # location using DESTDIR and then move it to proper one in postInstall. + DESTDIR = "dest"; + }; separateDebugInfo = true; |