nixpkgs/pkgs/by-name/gn/gnome-flashback/package.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

225 lines
5.8 KiB
Nix
Raw Normal View History

{
stdenv,
lib,
autoreconfHook,
fetchurl,
gettext,
glib,
gnome-bluetooth,
gnome-desktop,
gnome-panel,
gnome-session,
gnome,
gsettings-desktop-schemas,
gtk3,
ibus,
libcanberra-gtk3,
libpulseaudio,
libxkbfile,
libxml2,
pkg-config,
polkit,
gdm,
systemd,
upower,
pam,
wrapGAppsHook3,
writeTextFile,
xkeyboard_config,
xorg,
nixosTests,
runCommand,
buildEnv,
}:
let
# From data/sessions/Makefile.am
requiredComponentsCommon =
enableGnomePanel: [ "gnome-flashback" ] ++ lib.optional enableGnomePanel "gnome-panel";
requiredComponentsGsd = [
"org.gnome.SettingsDaemon.A11ySettings"
"org.gnome.SettingsDaemon.Color"
"org.gnome.SettingsDaemon.Datetime"
"org.gnome.SettingsDaemon.Housekeeping"
"org.gnome.SettingsDaemon.Keyboard"
"org.gnome.SettingsDaemon.MediaKeys"
"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.UsbProtection"
"org.gnome.SettingsDaemon.Wacom"
"org.gnome.SettingsDaemon.XSettings"
];
requiredComponents =
wmName: enableGnomePanel:
"RequiredComponents=${
lib.concatStringsSep ";" (
[ wmName ] ++ requiredComponentsCommon enableGnomePanel ++ requiredComponentsGsd
)
};";
in
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-flashback";
version = "3.54.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-flashback/${lib.versions.majorMinor finalAttrs.version}/gnome-flashback-${finalAttrs.version}.tar.xz";
hash = "sha256-gkNa4wLNZK6xG25M0YTaj/+qzSSFFf+gIidZXDzPne4=";
};
# make .desktop Execs absolute
postPatch = ''
patch -p0 <<END_PATCH
+++ 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" true}' $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 $out/libexec/gnome-flashback-metacity
'';
nativeBuildInputs = [
autoreconfHook
gettext
libxml2
pkg-config
wrapGAppsHook3
];
buildInputs = [
glib
gnome-bluetooth
gnome-desktop
gsettings-desktop-schemas
gtk3
ibus
libcanberra-gtk3
libpulseaudio
libxkbfile
xorg.libXxf86vm
polkit
gdm
gnome-panel
systemd
upower
pam
xkeyboard_config
];
2018-05-06 18:57:45 +00:00
doCheck = true;
enableParallelBuilding = true;
PKG_CONFIG_LIBGNOME_PANEL_LAYOUTSDIR = "${placeholder "out"}/share/gnome-panel/layouts";
PKG_CONFIG_LIBGNOME_PANEL_MODULESDIR = "${placeholder "out"}/lib/gnome-panel/modules";
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-flashback";
versionPolicy = "odd-unstable";
};
mkWmApplication =
{
wmName,
wmLabel,
wmCommand,
}:
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
'';
};
mkGnomeSession =
{
wmName,
wmLabel,
enableGnomePanel,
}:
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 enableGnomePanel}
'';
};
mkSessionForWm =
{
wmName,
wmLabel,
wmCommand,
}:
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=${gnome-session}/bin/gnome-session --session=gnome-flashback-${wmName}
TryExec=${wmCommand}
Type=Application
DesktopNames=GNOME-Flashback;GNOME;
'';
}
// {
providedSessions = [ "gnome-flashback-${wmName}" ];
};
2018-05-06 18:57:45 +00:00
mkSystemdTargetForWm =
{
wmName,
wmLabel,
wmCommand,
enableGnomePanel,
}:
runCommand "gnome-flashback-${wmName}.target" { } ''
mkdir -p $out/lib/systemd/user
cp -r "${finalAttrs.finalPackage}/lib/systemd/user/gnome-session@gnome-flashback-metacity.target.d" \
"$out/lib/systemd/user/gnome-session@gnome-flashback-${wmName}.target.d"
'';
tests = {
inherit (nixosTests) gnome-flashback;
};
2018-05-06 18:57:45 +00:00
};
meta = with lib; {
description = "GNOME 2.x-like session for GNOME 3";
mainProgram = "gnome-flashback";
homepage = "https://gitlab.gnome.org/GNOME/gnome-flashback";
treewide: add meta.changelog (#346488) * guix: add meta.changelog * zile: add meta.changelog * zoom: add meta.changelog * zotify: add meta.changelog * zpaqfranz: add meta.changelog * zunit: add meta.changelog * zxwing-cpp: add meta.changelog * zxpy: add meta.changelog * zydis: add meta.changelog * zziplib: add meta.changelog * j: add meta.changelog * kyua: add meta.changelog * json2ts: add meta.changelog * igir: add meta.changelog * ios-webkit-debug-proxy: add meta.changelog * gpaste: add meta.changelog * polkit_gnome: add meta.changelog * papers: add meta.changelog * libmsgraph: add meta.changelog * quadrapassel: add meta.changelog * gnome-nibbles: add meta.changelog * decibels: add meta.changelog * libgedit-amtk: add meta.changelog * simple-scan: add meta.changelog * gnome-klotski: add meta.changelog * gnome-sound-recorder: add meta.changelog * gnome-remote-desktop: add meta.changelog * gnome-robots: add meta.changelog * gnome-shell-extensions: add meta.changelog * gnome-panel: add meta.changelog * gnome-session: add meta.changelog * gnome-keyring: add meta.changelog * devhelp: add meta.changelog * libgnome-keyring: add meta.changelog * ghex: add meta.changelog * gnome-connections: add meta.changelog * lightsoff: add meta.changelog * gnome-flashback: add meta.changelog * livi: add meta.changelog * mutter: add meta.changelog * hitori: add meta.changelog * gnome-initial-setup: add meta.changelog * gnome-bluetooth: add meta.changelog * gnome-shell: add meta.changelog * gnome-sudoku: add meta.changelog * ideamaker: add meta.changelog * i2p: add meta.changelog * lms: add meta.changelog * adwaita-icon-theme: add meta.changelog * gnome-applets: add meta.changelog * flac123: add meta.changelog * flaca: add meta.changelog * flameshot: add meta.changelog * flaresolverr: add meta.changelog * a52dec: add meta.changelog * hexbinhex: add meta.changelog * dwl: add meta.changelog * msolve: add meta.changelog * jcli: add meta.changelog * nmap: add meta.changelog * nmapsi4: add meta.changelog * labctl: add meta.changelog * _1oom: add meta.changelog * libipuz: add meta.changelog * metacity: add meta.changelog * sushi: add meta.changelog * rygel: add meta.changelog * zenity: add meta.changelog * crosswords: add meta.changelog * gnome-mahjongg: add meta.changelog * alacarte: add meta.changelog * loupe: add meta.changelog * cheese: add meta.changelog * atomix: add meta.changelog * swell-foop: add meta.changelog * alfis: add meta.changelog * aperture: add meta.changelog * atomic-swap: add meta.changelog * besu: add meta.changelog * bisq: add meta.changelog * bitcoin-abc: add meta.changelog * bitcoin-knots: add meta.changelog * bitcd: add meta.changelog * btcdeb: add meta.changelog * btcpayserver: add meta.changelog * 86box: add meta.changelog * darling: add meta.changelog * dosbox: add meta.changelog * firebird-emu: add meta.changelog * maiko: add meta.changelog * accerciser: add meta.changelog * adwaita-icon-theme-legacy: add meta.changelog * dconf-editor: add meta.changelog * eog: add meta.changelog * evolution-data-server: add meta.changelog * file-roller: add meta.changelog * four-in-a-row: add meta.changelog * gdm: add meta.changelog * geary: add meta.changelog * gitg: add meta.changelog * gnome2048: add meta.changelog * gnome-backgrounds: add meta.changelog * gnome-text-editor: add meta.changelog * gnome-tour: add meta.changelog * gnome-user-share: add meta.changelog * gxml: add meta.changelog * tali: add meta.changelog * totem: add meta.changelog * mobile-broadband-provider-info: add meta.changelog * avr: add meta.changelog * brev-cli: add meta.changelog * juce: add meta.changelog * loc: add meta.changelog * resholve: add meta.changelog * rpiboot: add meta.changelog * gerbera: add meta.changelog * kdocker: add meta.changelog * pmenu: add meta.changelog * advancecomp: add meta.changelog * adriconf: add meta.changelog * interception-tools: add meta.changelog * nabi: add meta.changelog * gorilla-cli: add meta.changelog * heygpt: add meta.changelog * 6tunnel: add meta.changelog * aria2: add meta.changelog * logmein-hamachi: add meta.changelog * maphosts: add meta.changelog * qcal: add meta.changelog * adreaper: add meta.changelog * aflplusplus: add meta.changelog * aide: add meta.changelog * cameradar: add meta.changelog * wpscan: add meta.changelog * aha: add meta.changelog * xcat: add meta.changelog
2024-10-04 19:35:12 +00:00
changelog = "https://gitlab.gnome.org/GNOME/gnome-flashback/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
license = licenses.gpl2;
maintainers = teams.gnome.members;
platforms = platforms.linux;
};
})