Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 47 additions & 2 deletions nixos/modules/services/x11/desktop-managers/gnome3.nix
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ let
${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/
'';

flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0;

in {

options = {
Expand Down Expand Up @@ -71,6 +73,36 @@ in {
};

debug = mkEnableOption "gnome-session debug messages";

flashback = {
enableMetacity = mkEnableOption "Enable the standard GNOME Flashback session with Metacity.";

customSessions = mkOption {
type = types.listOf (types.submodule {
options = {
wmName = mkOption {
type = types.str;
description = "The filename-compatible name of the window manager to use.";
example = "xmonad";
};

wmLabel = mkOption {
type = types.str;
description = "The pretty name of the window manager to use.";
example = "XMonad";
};

wmCommand = mkOption {
type = types.str;
description = "The executable of the window manager to use.";
example = "\${pkgs.haskellPackages.xmonad}/bin/xmonad";
};
};
});
default = [];
description = "Other GNOME Flashback sessions to enable.";
};
};
};

environment.gnome3.excludePackages = mkOption {
Expand Down Expand Up @@ -113,7 +145,9 @@ in {
services.telepathy.enable = mkDefault true;
networking.networkmanager.enable = mkDefault true;
services.upower.enable = config.powerManagement.enable;
services.dbus.packages = mkIf config.services.printing.enable [ pkgs.system-config-printer ];
services.dbus.packages =
optional config.services.printing.enable pkgs.system-config-printer ++
optional flashbackEnabled pkgs.gnome3.gnome-screensaver;
services.colord.enable = mkDefault true;
services.packagekit.enable = mkDefault true;
hardware.bluetooth.enable = mkDefault true;
Expand All @@ -127,7 +161,15 @@ in {

fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell-fonts ];

services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ]
++ map
(wm: pkgs.gnome3.gnome-flashback.mkSessionForWm {
inherit (wm) wmName wmLabel wmCommand;
}) (optional cfg.flashback.enableMetacity {
wmName = "metacity";
wmLabel = "Metacity";
wmCommand = "${pkgs.gnome3.metacity}/bin/metacity";
} ++ cfg.flashback.customSessions);

environment.extraInit = ''
${concatMapStrings (p: ''
Expand Down Expand Up @@ -177,6 +219,9 @@ in {
"/share/nautilus-python/extensions"
];

security.pam.services.gnome-screensaver = mkIf flashbackEnabled {
enableGnomeKeyring = true;
};
};


Expand Down
8 changes: 8 additions & 0 deletions pkgs/desktops/gnome-3/core/tracker/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ in stdenv.mkDerivation rec {
postPatch = ''
patchShebangs utils/g-ir-merge/g-ir-merge
patchShebangs utils/data-generators/cc/generate

# make .desktop Exec absolute
patch -p0 <<END_PATCH
+++ src/tracker-store/tracker-store.desktop.in.in
@@ -4 +4 @@
-Exec=gdbus call -e -d org.freedesktop.DBus -o /org/freedesktop/DBus -m org.freedesktop.DBus.StartServiceByName org.freedesktop.Tracker1 0
+Exec=${glib.dev}/bin/gdbus call -e -d org.freedesktop.DBus -o /org/freedesktop/DBus -m org.freedesktop.DBus.StartServiceByName org.freedesktop.Tracker1 0
END_PATCH
'';

postInstall = ''
Expand Down
2 changes: 2 additions & 0 deletions pkgs/desktops/gnome-3/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,8 @@ lib.makeScope pkgs.newScope (self: with self; {

gnome-panel = callPackage ./misc/gnome-panel { };

gnome-screensaver = callPackage ./misc/gnome-screensaver { };

gnome-tweaks = callPackage ./misc/gnome-tweaks { };

gpaste = callPackage ./misc/gpaste { };
Expand Down
200 changes: 139 additions & 61 deletions pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
, glib
, gnome-bluetooth
, gnome-desktop
, gnome-panel
, gnome-session
, gnome3
, gsettings-desktop-schemas
Expand All @@ -16,77 +17,154 @@
, libpulseaudio
, libxkbfile
, libxml2
, metacity
, pkgconfig
, polkit
, substituteAll
, upower
, xkeyboard_config }:
, wrapGAppsHook
, writeTextFile
, writeShellScriptBin
, xkeyboard_config
}:

let
pname = "gnome-flashback";
version = "3.30.0";
in stdenv.mkDerivation rec {
name = "${pname}-${version}";
requiredComponents = wmName: "RequiredComponents=${wmName};gnome-flashback-init;gnome-flashback;gnome-panel;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings;";
gnome-flashback = stdenv.mkDerivation rec {
name = "${pname}-${version}";

src = fetchurl {
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
sha256 = "18rwql2pi78155l9zp1i50xfi5z8xz2l08m9d81x6qqbfr1nyy57";
};
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
sha256 = "18rwql2pi78155l9zp1i50xfi5z8xz2l08m9d81x6qqbfr1nyy57";
};

patches =[
# overrides do not respect gsettingsschemasdir
# https://gitlab.gnome.org/GNOME/gnome-flashback/issues/9
(fetchpatch {
url = https://gitlab.gnome.org/GNOME/gnome-flashback/commit/a55530f58ccd600414a5420b287868ab7d219705.patch;
sha256 = "1la94lhhb9zlw7bnbpl6hl26zv3kxbsvgx996mhph720wxg426mh";
})
];

# make .desktop Execs absolute
postPatch = ''
patch -p0 <<END_PATCH
+++ data/applications/gnome-flashback-init.desktop.in
@@ -4 +4 @@
-Exec=gnome-flashback --initialize
+Exec=$out/bin/gnome-flashback --initialize
+++ data/applications/gnome-flashback.desktop.in
@@ -4 +4 @@
-Exec=gnome-flashback
+Exec=$out/bin/gnome-flashback
END_PATCH
'';

postInstall = ''
# Check that our expected RequiredComponents match the stock session files, but then don't install them.
# They can be installed using mkSessionForWm.
grep '${requiredComponents "metacity"}' $out/share/gnome-session/sessions/gnome-flashback-metacity.session || (echo "RequiredComponents have changed, please update gnome-flashback/default.nix."; false)

rm -r $out/share/gnome-session
rm -r $out/share/xsessions
rm -r $out/libexec
'';

nativeBuildInputs = [
autoreconfHook
gettext
libxml2
pkgconfig
wrapGAppsHook
];

buildInputs = [
glib
gnome-bluetooth
gnome-desktop
gsettings-desktop-schemas
gtk
ibus
libcanberra-gtk3
libpulseaudio
libxkbfile
polkit
upower
xkeyboard_config
];

doCheck = true;

patches =[
(substituteAll {
src = ./fix-paths.patch;
inherit metacity;
gnomeSession = gnome-session;
})

# overrides do not respect gsettingsschemasdir
# https://gitlab.gnome.org/GNOME/gnome-flashback/issues/9
(fetchpatch {
url = https://gitlab.gnome.org/GNOME/gnome-flashback/commit/a55530f58ccd600414a5420b287868ab7d219705.patch;
sha256 = "1la94lhhb9zlw7bnbpl6hl26zv3kxbsvgx996mhph720wxg426mh";
})
];

nativeBuildInputs = [
autoreconfHook
gettext
libxml2
pkgconfig
];

buildInputs = [
glib
gnome-bluetooth
gnome-desktop
gsettings-desktop-schemas
gtk
ibus
libcanberra-gtk3
libpulseaudio
libxkbfile
polkit
upower
xkeyboard_config
];

doCheck = true;

enableParallelBuilding = true;

passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
attrPath = "gnome3.${pname}";
enableParallelBuilding = true;

passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
attrPath = "gnome3.${pname}";
};

mkSessionForWm = { wmName, wmLabel, wmCommand }:
let
wmApplication = writeTextFile {
name = "gnome-flashback-${wmName}-wm";
destination = "/share/applications/${wmName}.desktop";
text = ''
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=${wmLabel}
Exec=${wmCommand}
NoDisplay=true
X-GNOME-WMName=${wmLabel}
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=windowmanager
X-GNOME-Autostart-Notify=false
'';
};

gnomeSession = writeTextFile {
name = "gnome-flashback-${wmName}-gnome-session";
destination = "/share/gnome-session/sessions/gnome-flashback-${wmName}.session";
text = ''
[GNOME Session]
Name=GNOME Flashback (${wmLabel})
${requiredComponents wmName}
'';
};

executable = writeShellScriptBin "gnome-flashback-${wmName}" ''
if [ -z $XDG_CURRENT_DESKTOP ]; then
export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME"
fi

export XDG_DATA_DIRS=${wmApplication}/share:${gnomeSession}/share:${gnome-flashback}/share:${gnome-panel}/share:$XDG_DATA_DIRS

exec ${gnome-session}/bin/gnome-session --session=gnome-flashback-${wmName} "$@"
'';

in writeTextFile {
name = "gnome-flashback-${wmName}-xsession";
destination = "/share/xsessions/gnome-flashback-${wmName}.desktop";
text = ''
[Desktop Entry]
Name=GNOME Flashback (${wmLabel})
Comment=This session logs you into GNOME Flashback with ${wmLabel}
Exec=${executable}/bin/gnome-flashback-${wmName}
TryExec=${wmCommand}
Type=Application
DesktopNames=GNOME-Flashback;GNOME;
'';
};
};
};

meta = with stdenv.lib; {
description = "GNOME 2.x-like session for GNOME 3";
homepage = https://wiki.gnome.org/Projects/GnomeFlashback;
license = licenses.gpl2;
maintainers = gnome3.maintainers;
platforms = platforms.linux;
meta = with stdenv.lib; {
description = "GNOME 2.x-like session for GNOME 3";
homepage = https://wiki.gnome.org/Projects/GnomeFlashback;
license = licenses.gpl2;
maintainers = gnome3.maintainers;
platforms = platforms.linux;
};
};
}
in gnome-flashback
30 changes: 0 additions & 30 deletions pkgs/desktops/gnome-3/misc/gnome-flashback/fix-paths.patch

This file was deleted.

18 changes: 18 additions & 0 deletions pkgs/desktops/gnome-3/misc/gnome-panel/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
, gettext
, glib
, gnome-desktop
, gnome-flashback
, gnome-menus
, gnome3
, gtk
Expand Down Expand Up @@ -43,6 +44,23 @@ in stdenv.mkDerivation rec {
})
];

# make .desktop Exec absolute
postPatch = ''
patch -p0 <<END_PATCH
+++ gnome-panel/gnome-panel.desktop.in
@@ -7 +7 @@
-Exec=gnome-panel
+Exec=$out/bin/gnome-panel
END_PATCH
'';

preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${gnome-menus}/share:${gnome-flashback}/share"
--prefix XDG_CONFIG_DIRS : "${gnome-menus}/etc/xdg:${gnome-flashback}/etc/xdg"
)
'';

nativeBuildInputs = [
autoreconfHook
gettext
Expand Down
Loading