push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
{
stdenv,
lib,
fetchgit,
cctools,
ninja,
python3,
# Note: Please use the recommended version for Chromium stable, i.e. from
# <nixpkgs>/pkgs/applications/networking/browsers/chromium/info.json
version ?
# This is a workaround for update-source-version to be able to update this
let
_version = "0-unstable-2025-07-29";
in
_version,
rev ? "3a4f5cea73eca32e9586e8145f97b04cbd4a1aee",
hash ? "sha256-Z7bTto8BHnJzjvmKmcVAZ0/BrXimcAETV6YGKNTorQw=",
}:
stdenv.mkDerivation {
pname = "gn";
inherit version;
src = fetchgit {
url = "https://gn.googlesource.com/gn";
inherit rev hash;
leaveDotGit = true;
deepClone = true;
postFetch = ''
cd "$out"
mkdir .nix-files
git rev-parse --short=12 HEAD > .nix-files/REV_SHORT
git describe --match initial-commit | cut -d- -f3 > .nix-files/REV_NUM
find "$out" -name .git -print0 | xargs -0 rm -rf
'';
};
nativeBuildInputs = [
ninja
python3
];
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
cctools
];
env.NIX_CFLAGS_COMPILE = "-Wno-error";
# Relax hardening as otherwise gn unstable 2024-06-06 and later fail with:
# cc1plus: error: '-Wformat-security' ignored without '-Wformat' [-Werror=format-security]
hardeningDisable = [ "format" ];
configurePhase = ''
runHook preConfigure
python build/gen.py --no-last-commit-position
cat > out/last_commit_position.h << EOF
#ifndef OUT_LAST_COMMIT_POSITION_H_
#define OUT_LAST_COMMIT_POSITION_H_
#define LAST_COMMIT_POSITION_NUM $(<.nix-files/REV_NUM)
#define LAST_COMMIT_POSITION "$(<.nix-files/REV_NUM) ($(<.nix-files/REV_SHORT))"
#endif // OUT_LAST_COMMIT_POSITION_H_
EOF
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
ninja -v -j $NIX_BUILD_CORES -C out gn
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -vD out/gn "$out/bin/gn"
runHook postInstall
'';
setupHook = ./setup-hook.sh;
passthru.updateScript = ./update.sh;
meta = {
description = "Meta-build system that generates build files for Ninja";
mainProgram = "gn";
homepage = "https://gn.googlesource.com/gn";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
stesie
matthewbauer
marcin-serwin
emilylange
];
};
}

View File

@@ -0,0 +1,20 @@
# shellcheck shell=bash
gnConfigurePhase() {
runHook preConfigure
local flagsArray=()
concatTo flagsArray gnFlags gnFlagsArray
echoCmd 'gn flags' "${flagsArray[@]}"
gn gen out/Release --args="${flagsArray[*]}"
# shellcheck disable=SC2164
cd out/Release/
runHook postConfigure
}
if [ -z "${dontUseGnConfigure-}" ] && [ -z "${configurePhase-}" ]; then
configurePhase=gnConfigurePhase
fi

21
pkgs/by-name/gn/gn/update.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p jq curl common-updater-scripts
set -ex
rev=$(
curl --location "https://raw.githubusercontent.com/NixOS/nixpkgs/refs/heads/master/pkgs/applications/networking/browsers/chromium/info.json" \
| jq -r ".chromium.deps.gn.rev"
)
commit_time=$(
curl "https://gn.googlesource.com/gn/+/$rev?format=json" \
| sed "s/)]}'//" \
| jq -r ".committer.time" \
| awk '{print $2, $3, $5, $4 $6}'
)
commit_date=$(TZ= date --date "$commit_time" --iso-8601)
version="0-unstable-$commit_date"
update-source-version --rev="$rev" --version-key="_version" "gn" "$version"

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
libsndfile,
portaudio,
gtk2,
}:
stdenv.mkDerivation rec {
pname = "gnaural";
version = "20110606";
src = fetchurl {
url = "mirror://sourceforge/${pname}/${pname}_${version}.tar.xz";
hash = "sha256-0a09DUMfHEIGYuIYSBGJalBiIHIgejr/KVDXCFgKBb8=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
gtk2
libsndfile
portaudio
];
# Workaround build failure on -fno-common toolchains:
# ld: src/net/../gnauralnet.h:233: multiple definition of `GN_ScheduleFingerprint';
# src/net/../../src/gnauralnet.h:233: first defined here
env.NIX_CFLAGS_COMPILE = "-fcommon";
postInstall = ''
mkdir -p $out/share/applications
substitute \
$out/share/gnome/apps/Multimedia/gnaural.desktop \
$out/share/applications/gnaural.desktop \
--replace \
"/usr/share/gnaural/pixmaps/gnaural-icon.png" \
"$out/share/gnaural/pixmaps/gnaural-icon.png" \
rm -rf $out/share/gnome
'';
meta = with lib; {
description = "Programmable auditory binaural-beat synthesizer";
homepage = "https://gnaural.sourceforge.net/";
license = with licenses; [ gpl2Only ];
mainProgram = "gnaural";
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
autoconf,
automake,
glib,
libtool,
}:
stdenv.mkDerivation rec {
pname = "gnet";
version = "2.0.8";
src = fetchFromGitHub {
owner = "GNOME";
repo = "gnet";
rev = "GNET_${lib.replaceStrings [ "." ] [ "_" ] version}";
sha256 = "1cy78kglzi235md964ikvm0rg801bx0yk9ya8zavndjnaarzqq87";
};
nativeBuildInputs = [
pkg-config
autoconf
automake
];
buildInputs = [
glib
libtool
];
preConfigure = "./autogen.sh";
meta = with lib; {
description = "Network library, written in C, object-oriented, and built upon GLib";
homepage = "https://developer.gnome.org/gnet/";
license = licenses.lgpl2;
platforms = platforms.linux;
maintainers = with maintainers; [ pSub ];
};
}

View File

@@ -0,0 +1,68 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
fetchzip,
androidenv,
makeWrapper,
}:
let
version = "2.5.1";
apk = stdenv.mkDerivation {
pname = "gnirehtet.apk";
inherit version;
src = fetchzip {
url = "https://github.com/Genymobile/gnirehtet/releases/download/v${version}/gnirehtet-rust-linux64-v${version}.zip";
hash = "sha256-e1wwMhcco9VNoBUzbEq1ESbkX2bqTOkCbPmnV9CpvGo=";
};
installPhase = ''
mkdir $out
mv gnirehtet.apk $out
'';
};
in
rustPlatform.buildRustPackage rec {
pname = "gnirehtet";
inherit version;
src = fetchFromGitHub {
owner = "Genymobile";
repo = "gnirehtet";
rev = "v${version}";
hash = "sha256-ewLYCZgkjbh6lR9e4iTddCIrB+5dxyviIXhOqlZsLqc=";
};
passthru = {
inherit apk;
};
sourceRoot = "${src.name}/relay-rust";
cargoHash = "sha256-xfRTGGlL1/Bq04aGWJSGgkoTGKYiiUAdkHu4zJS3x/U=";
nativeBuildInputs = [ makeWrapper ];
postInstall = ''
wrapProgram $out/bin/gnirehtet \
--set GNIREHTET_APK ${apk}/gnirehtet.apk \
--set ADB ${androidenv.androidPkgs.platform-tools}/bin/adb
'';
meta = with lib; {
description = "Reverse tethering over adb for Android";
mainProgram = "gnirehtet";
longDescription = ''
This project provides reverse tethering over adb for Android: it allows devices to use the internet connection of the computer they are plugged on. It does not require any root access (neither on the device nor on the computer).
This relies on adb, make sure you have the required permissions/udev rules.
'';
homepage = "https://github.com/Genymobile/gnirehtet";
sourceProvenance = with sourceTypes; [
fromSource
binaryBytecode # gnirehtet.apk
];
license = licenses.asl20;
maintainers = with maintainers; [ symphorien ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,55 @@
{
stdenv,
lib,
buildGoModule,
fetchFromGitHub,
installShellFiles,
buildPackages,
}:
buildGoModule rec {
pname = "gnmic";
version = "0.42.0";
src = fetchFromGitHub {
owner = "openconfig";
repo = "gnmic";
tag = "v${version}";
hash = "sha256-qN5EnZR1sXni2m1nyH61xLIX7c9sk5SGtAxrolfNHzs=";
};
vendorHash = "sha256-QHqsL2XMkIB+CN7uXdn3gpVoaxEfDjdf1ADhd/bYVis=";
ldflags = [
"-s"
"-w"
"-X"
"github.com/openconfig/gnmic/pkg/app.version=${version}"
"-X"
"github.com/openconfig/gnmic/pkg/app.commit=${src.rev}"
"-X"
"github.com/openconfig/gnmic/pkg/app.date=1970-01-01T00:00:00Z"
];
subPackages = [ "." ];
nativeBuildInputs = [ installShellFiles ];
postInstall =
let
emulator = stdenv.hostPlatform.emulator buildPackages;
in
''
installShellCompletion --cmd gnmic \
--bash <(${emulator} $out/bin/gnmic completion bash) \
--fish <(${emulator} $out/bin/gnmic completion fish) \
--zsh <(${emulator} $out/bin/gnmic completion zsh)
'';
meta = with lib; {
description = "gNMI CLI client and collector";
homepage = "https://gnmic.openconfig.net/";
changelog = "https://github.com/openconfig/gnmic/releases/tag/${src.rev}";
license = licenses.asl20;
maintainers = with maintainers; [ vincentbernat ];
mainProgram = "gnmic";
};
}

View File

@@ -0,0 +1,68 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
wrapGAppsHook3,
meson,
vala,
pkg-config,
ninja,
itstool,
clutter-gtk,
libgee,
libgnome-games-support,
gnome,
gtk3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-twenty-forty-eight";
version = "3.38.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-2048/${lib.versions.majorMinor finalAttrs.version}/gnome-2048-${finalAttrs.version}.tar.xz";
hash = "sha256-4nNn9cCaATZYHTNfV5E6r1pfGA4ymcxcGjDYWD55rmg=";
};
patches = [
# Fix build with meson 0.61
# https://gitlab.gnome.org/GNOME/gnome-2048/-/merge_requests/21
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-2048/-/commit/194e22699f7166a016cd39ba26dd719aeecfc868.patch";
hash = "sha256-Qpn/OJJwblRm5Pi453aU2HwbrNjsf+ftmSnns/5qZ9E=";
})
];
nativeBuildInputs = [
itstool
meson
ninja
pkg-config
vala
wrapGAppsHook3
];
buildInputs = [
clutter-gtk
libgee
libgnome-games-support
gtk3
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-2048";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-2048";
changelog = "https://gitlab.gnome.org/GNOME/gnome-2048/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
description = "Obtain the 2048 tile";
mainProgram = "gnome-2048";
teams = [ teams.gnome ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,84 @@
{
lib,
stdenv,
fetchurl,
gettext,
itstool,
libxml2,
pkg-config,
gnome-panel,
gtk3,
glib,
libwnck,
libgtop,
libnotify,
upower,
wirelesstools,
linuxPackages,
adwaita-icon-theme,
libgweather,
gucharmap,
tinysparql,
polkit,
gnome,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-applets";
version = "3.56.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-applets/${lib.versions.majorMinor finalAttrs.version}/gnome-applets-${finalAttrs.version}.tar.xz";
hash = "sha256-+heu3JVa3ZgaouQ7TAcTU/aGu9HuwdcXqJCnNTIK0XE=";
};
nativeBuildInputs = [
gettext
glib # glib-compile-resources
itstool
pkg-config
libxml2
];
buildInputs = [
gnome-panel
gtk3
glib
libxml2
libwnck
libgtop
libnotify
upower
adwaita-icon-theme
libgweather
gucharmap
tinysparql
polkit
wirelesstools
linuxPackages.cpupower
];
enableParallelBuilding = true;
doCheck = true;
# Don't try to install modules to gnome panel's directory, as it's read only
PKG_CONFIG_LIBGNOME_PANEL_MODULESDIR = "${placeholder "out"}/lib/gnome-panel/modules";
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-applets";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
description = "Applets for use with the GNOME panel";
mainProgram = "cpufreq-selector";
homepage = "https://gitlab.gnome.org/GNOME/gnome-applets";
changelog = "https://gitlab.gnome.org/GNOME/gnome-applets/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,63 @@
{
stdenv,
lib,
fetchurl,
meson,
ninja,
pkg-config,
gnome,
gtk3,
glib,
gobject-introspection,
libarchive,
vala,
}:
stdenv.mkDerivation rec {
pname = "gnome-autoar";
version = "0.4.5";
outputs = [
"out"
"dev"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-autoar/${lib.versions.majorMinor version}/gnome-autoar-${version}.tar.xz";
hash = "sha256-g4xTBvw4v6ovI6viQmL0vxV3HjMD+13LdPW5x6YV2r4=";
};
nativeBuildInputs = [
gobject-introspection
meson
ninja
pkg-config
vala
];
buildInputs = [
gtk3
];
propagatedBuildInputs = [
libarchive
glib
];
mesonFlags = [
"-Dvapi=true"
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-autoar";
};
};
meta = with lib; {
platforms = platforms.linux;
teams = [ teams.gnome ];
license = licenses.lgpl21Plus;
description = "Library to integrate compressed files management with GNOME";
};
}

View File

@@ -0,0 +1,43 @@
{
stdenv,
lib,
fetchurl,
meson,
ninja,
gnome,
}:
stdenv.mkDerivation rec {
pname = "gnome-backgrounds";
version = "48.2.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-backgrounds/${lib.versions.major version}/gnome-backgrounds-${version}.tar.xz";
hash = "sha256-ahxbey4Nj1zpd5JtVfnC1l3RgIIs3qXlkVDc+1q9Htk=";
};
patches = [
# Makes the database point to stable paths in /run/current-system/sw/share, which don't decay whenever this package's hash changes.
# This assumes a nixos + gnome system, where this package is installed in environment.systemPackages,
# and /share outputs are included in environment.pathsToLink.
./stable-dir.patch
];
nativeBuildInputs = [
meson
ninja
];
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-backgrounds"; };
};
meta = {
description = "Default wallpaper set for GNOME";
homepage = "https://gitlab.gnome.org/GNOME/gnome-backgrounds";
changelog = "https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/blob/${version}/NEWS?ref_type=tags";
license = lib.licenses.cc-by-sa-30;
platforms = lib.platforms.unix;
teams = [ lib.teams.gnome ];
};
}

View File

@@ -0,0 +1,9 @@
diff --git a/backgrounds/meson.build b/backgrounds/meson.build
index 2175a16..cf521df 100644
--- a/backgrounds/meson.build
+++ b/backgrounds/meson.build
@@ -1,5 +1,5 @@
dataconf = configuration_data()
-dataconf.set('BACKGROUNDDIR', backgrounddir)
+dataconf.set('BACKGROUNDDIR', '/run/current-system/sw/share/backgrounds/gnome')
dataconf.set('datadir', datadir)

View File

@@ -0,0 +1,90 @@
{
lib,
stdenv,
fetchurl,
gnome,
meson,
mesonEmulatorHook,
ninja,
pkg-config,
gtk4,
libadwaita,
gettext,
glib,
udev,
upower,
itstool,
libxml2,
wrapGAppsHook4,
libnotify,
gsound,
gobject-introspection,
gtk-doc,
docbook-xsl-nons,
docbook_xml_dtd_43,
python3,
gsettings-desktop-schemas,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-bluetooth";
version = "47.1";
# TODO: split out "lib"
outputs = [
"out"
"dev"
"devdoc"
"man"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-bluetooth/${lib.versions.major finalAttrs.version}/gnome-bluetooth-${finalAttrs.version}.tar.xz";
hash = "sha256-A+PnQDoVEI/8FJYhCh2lwpYbKDSlwH7Mx6P0kxldq6M=";
};
nativeBuildInputs = [
meson
ninja
gettext
itstool
pkg-config
libxml2
wrapGAppsHook4
gobject-introspection
gtk-doc
docbook-xsl-nons
docbook_xml_dtd_43
python3
]
++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ mesonEmulatorHook ];
buildInputs = [
glib
gtk4
libadwaita
udev
upower
libnotify
gsound
gsettings-desktop-schemas
];
mesonFlags = [ "-Dgtk_doc=true" ];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-bluetooth";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-bluetooth";
changelog = "https://gitlab.gnome.org/GNOME/gnome-bluetooth/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
description = "Application that lets you manage Bluetooth in the GNOME desktop";
mainProgram = "bluetooth-sendto";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,111 @@
{
stdenv,
lib,
fetchurl,
fetchpatch,
gnome,
adwaita-icon-theme,
meson,
mesonEmulatorHook,
ninja,
pkg-config,
gtk3,
gettext,
glib,
udev,
itstool,
libxml2,
wrapGAppsHook3,
libnotify,
libcanberra-gtk3,
gobject-introspection,
gtk-doc,
docbook-xsl-nons,
docbook_xml_dtd_43,
python3,
gsettings-desktop-schemas,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-bluetooth";
version = "3.34.5";
# TODO: split out "lib"
outputs = [
"out"
"dev"
"devdoc"
"man"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-bluetooth/${lib.versions.majorMinor finalAttrs.version}/gnome-bluetooth-${finalAttrs.version}.tar.xz";
hash = "sha256-bJSeUsi+zCBU2qzWBJAfZs5c9wml+pHEu3ysyTm1Pqk=";
};
patches = [
# Fix build with meson 0.61.
# sendto/meson.build:24:5: ERROR: Function does not take positional arguments.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-bluetooth/-/commit/755fd758f866d3a3f7ca482942beee749f13a91e.patch";
hash = "sha256-N0MJ0pYO411o2CTNZHWmEoG2m5TGUjR6YW6HSXHTR/A=";
})
];
nativeBuildInputs = [
meson
ninja
gettext
itstool
pkg-config
libxml2
wrapGAppsHook3
gobject-introspection
gtk-doc
docbook-xsl-nons
docbook_xml_dtd_43
python3
]
++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
mesonEmulatorHook
];
buildInputs = [
glib
gtk3
udev
libnotify
libcanberra-gtk3
adwaita-icon-theme
gsettings-desktop-schemas
];
mesonFlags = [
"-Dicon_update=false"
"-Dgtk_doc=true"
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
'';
strictDeps = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-bluetooth";
attrPath = "gnome-bluetooth_1_0";
freeze = true;
};
};
meta = with lib; {
homepage = "https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en";
description = "Application that let you manage Bluetooth in the GNOME destkop";
mainProgram = "bluetooth-sendto";
maintainers = [ ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,11 @@
--- a/subprojects/libovf-glib/govf/meson.build
+++ b/subprojects/libovf-glib/govf/meson.build
@@ -39,7 +39,7 @@ govf_lib = shared_library('govf-' + api_version,
govf_sources,
dependencies: govf_deps,
install: true,
- install_dir: libdir
+ install_dir: get_option ('prefix') / libdir
)
govf_dep = declare_dependency(

View File

@@ -0,0 +1,142 @@
{
stdenv,
lib,
fetchurl,
meson,
ninja,
wrapGAppsHook3,
pkg-config,
gettext,
itstool,
libvirt-glib,
glib,
gobject-introspection,
libxml2,
gtk3,
libvirt,
spice-gtk,
spice-protocol,
libhandy,
libsoup_3,
libosinfo,
systemd,
vala,
libcap,
yajl,
gmp,
gdbm,
cyrus_sasl,
gnome,
adwaita-icon-theme,
librsvg,
desktop-file-utils,
mtools,
cdrkit,
libcdio,
libusb1,
libarchive,
acl,
libgudev,
libcap_ng,
numactl,
libapparmor,
json-glib,
webkitgtk_4_1,
vte,
glib-networking,
qemu-utils,
libportal-gtk3,
}:
stdenv.mkDerivation rec {
pname = "gnome-boxes";
version = "48.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-boxes/${lib.versions.major version}/gnome-boxes-${version}.tar.xz";
hash = "sha256-0F9fQlaPr79tiHcRYbBu1fc51DEhJ41BjK6VxW5RPq0=";
};
patches = [
# Fix path to libgovf-0.1.so in the gir file. We patch gobject-introspection to hardcode absolute paths but
# our Meson patch will only pass the info when install_dir is absolute as well.
./fix-gir-lib-path.patch
];
doCheck = true;
nativeBuildInputs = [
gettext
gobject-introspection
itstool
meson
ninja
pkg-config
vala
wrapGAppsHook3
# For post install script
glib
gtk3
desktop-file-utils
];
# Required for USB redirection PolicyKit rules file
propagatedUserEnvPkgs = [ spice-gtk ];
buildInputs = [
acl
cyrus_sasl
gdbm
glib
glib-networking
gmp
adwaita-icon-theme
gtk3
json-glib
libapparmor
libarchive
libcap
libcap_ng
libgudev
libhandy
libosinfo
librsvg
libsoup_3
libusb1
libvirt
libvirt-glib
libxml2
numactl
spice-gtk
spice-protocol
systemd
vte
webkitgtk_4_1
yajl
libportal-gtk3
];
preFixup = ''
gappsWrapperArgs+=(--prefix PATH : "${
lib.makeBinPath [
mtools
cdrkit
libcdio
qemu-utils
]
}")
'';
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-boxes"; };
};
meta = with lib; {
description = "Simple GNOME 3 application to access remote or virtual systems";
mainProgram = "gnome-boxes";
homepage = "https://apps.gnome.org/Boxes/";
license = licenses.lgpl2Plus;
platforms = platforms.linux;
teams = [ teams.gnome ];
};
}

View File

@@ -0,0 +1,69 @@
{
lib,
fetchurl,
meson,
ninja,
python3,
gnome,
gnome-shell,
wrapGAppsNoGuiHook,
gobject-introspection,
}:
let
inherit (python3.pkgs) buildPythonApplication pygobject3;
in
buildPythonApplication rec {
pname = "gnome-browser-connector";
version = "42.1";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/gnome-browser-connector/${lib.versions.major version}/gnome-browser-connector-${version}.tar.xz";
sha256 = "vZcCzhwWNgbKMrjBPR87pugrJHz4eqxgYQtBHfFVYhI=";
};
nativeBuildInputs = [
meson
ninja
wrapGAppsNoGuiHook
gobject-introspection # for setup-hook
];
buildInputs = [
gnome-shell
];
pythonPath = [
pygobject3
];
postPatch = ''
patchShebangs contrib/merge_json.py
'';
dontWrapGApps = true;
# Arguments to be passed to `makeWrapper`, only used by buildPython*
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-browser-connector";
};
};
meta = with lib; {
description = "Native host connector for the GNOME Shell browser extension";
homepage = "https://gitlab.gnome.org/GNOME/gnome-browser-connector";
longDescription = ''
To use the integration, install the [browser extension](https://gitlab.gnome.org/GNOME/gnome-browser-extension), and then set `services.gnome.gnome-browser-connector.enable` to `true`.
'';
license = licenses.gpl3Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/src/meson.build b/src/meson.build
index c9a44e418..cd9e466d6 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -35,7 +35,7 @@ foreach test_typelib_dep: test_typelib_deps
test_gi_typelib_path += [join_paths(test_typelib_dep.get_variable('libdir'), 'girepository-1.0')]
endforeach
test_env = [
- 'GI_TYPELIB_PATH=@0@'.format(':'.join(test_gi_typelib_path)),
+ 'GI_TYPELIB_PATH=@0@:@1@'.format(':'.join(test_gi_typelib_path), run_command('sh', ['-c', 'echo "$GI_TYPELIB_PATH"']).stdout().strip()),
'G_TEST_SRCDIR=@0@/tests'.format(meson.current_source_dir()),
'G_TEST_BUILDDIR=@0@/tests'.format(meson.current_build_dir()),
'G_DEBUG=gc-friendly',

View File

@@ -0,0 +1,182 @@
{
stdenv,
lib,
ctags,
cmark,
desktop-file-utils,
editorconfig-core-c,
fetchurl,
flatpak,
gnome,
libgit2-glib,
gi-docgen,
gobject-introspection,
gom,
gtk4,
gtksourceview5,
json-glib,
jsonrpc-glib,
libadwaita,
libdex,
libpanel,
libpeas2,
libportal-gtk4,
libspelling,
libsysprof-capture,
libxml2,
meson,
ninja,
ostree,
pcre2,
pkg-config,
python3,
sysprof,
template-glib,
vala,
vte-gtk4,
webkitgtk_6_0,
wrapGAppsHook4,
dbus,
xvfb-run,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-builder";
version = "48.2";
outputs = [
"out"
"devdoc"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-builder/${lib.versions.major finalAttrs.version}/gnome-builder-${finalAttrs.version}.tar.xz";
hash = "sha256-7BKA1H6BSjE7dMuSfVoFk4BUSqD1bodVKXg5fWx0zGM=";
};
patches = [
# The test environment hardcodes `GI_TYPELIB_PATH` environment variable to direct dependencies of libide & co.
# https://gitlab.gnome.org/GNOME/gnome-builder/-/commit/2ce510b0ec0518c29427a29b386bb2ac1a121edf
# https://gitlab.gnome.org/GNOME/gnome-builder/-/commit/2964f7c2a0729f2f456cdca29a0f5b7525baf7c1
#
# But Nix does not have a fallback path for typelibs like /usr/lib on FHS distros and relies solely
# on `GI_TYPELIB_PATH` environment variable. So, when Ide started to depend on Vte, which
# depends on Pango, among others, GIrepository was unable to find these indirect dependencies
# and crashed with:
#
# Typelib file for namespace 'Pango', version '1.0' not found (g-irepository-error-quark, 0)
./fix-finding-test-typelibs.patch
];
nativeBuildInputs = [
desktop-file-utils
gi-docgen
gobject-introspection
meson
ninja
pkg-config
python3
wrapGAppsHook4
];
buildInputs = [
ctags
cmark
editorconfig-core-c
flatpak
libgit2-glib
libpeas2
libportal-gtk4
vte-gtk4
gom
gtk4
gtksourceview5
json-glib
jsonrpc-glib
libadwaita
libdex
libpanel
libspelling
libsysprof-capture
libxml2
ostree
pcre2
python3
template-glib
vala
webkitgtk_6_0
];
nativeCheckInputs = [
dbus
xvfb-run
];
mesonFlags = [
"-Ddocs=true"
# Making the build system correctly detect clang header and library paths
# is difficult. Somebody should look into fixing this.
"-Dplugin_clang=false"
# Do not try to check if appstream images exist
"-Dnetwork_tests=false"
];
doCheck = true;
postPatch = ''
patchShebangs build-aux/meson/post_install.py
substituteInPlace build-aux/meson/post_install.py \
--replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
'';
checkPhase = ''
GTK_A11Y=none \
xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
--config-file=${dbus}/share/dbus-1/session.conf \
meson test --print-errorlogs
'';
preFixup = ''
gappsWrapperArgs+=(
# For sysprof-agent
--prefix PATH : "${sysprof}/bin"
# libpanel icons
--prefix XDG_DATA_DIRS : "${libpanel}/share"
)
# Ensure that all plugins get their interpreter paths fixed up.
find $out/lib -name \*.py -type f -print0 | while read -d "" f; do
chmod a+x "$f"
done
'';
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput share/doc/libide "$devdoc"
'';
passthru.updateScript = gnome.updateScript {
packageName = "gnome-builder";
};
meta = with lib; {
description = "IDE for writing GNOME-based software";
longDescription = ''
Global search, auto-completion, source code map, documentation
reference, and other features expected in an IDE, but with a focus
on streamlining GNOME-based development projects.
This package does not pull in the dependencies needed for every
plugin. If you find that a plugin you wish to use doesn't work, we
currently recommend running gnome-builder inside a nix-shell with
appropriate dependencies loaded.
'';
homepage = "https://apps.gnome.org/Builder/";
license = licenses.gpl3Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
mainProgram = "gnome-builder";
};
})

View File

@@ -0,0 +1,82 @@
{
stdenv,
lib,
appstream,
meson,
ninja,
vala,
gettext,
itstool,
fetchurl,
pkg-config,
libxml2,
gtk4,
glib,
gtksourceview5,
wrapGAppsHook4,
gnome,
mpfr,
gmp,
libsoup_3,
libmpc,
libadwaita,
gsettings-desktop-schemas,
libgee,
}:
stdenv.mkDerivation rec {
pname = "gnome-calculator";
version = "48.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-calculator/${lib.versions.major version}/gnome-calculator-${version}.tar.xz";
hash = "sha256-vEvUGpuhkPRcvuDYxnUs3F0osM7xxr0MAeLa4fPBkWI=";
};
nativeBuildInputs = [
appstream
meson
ninja
pkg-config
vala
gettext
itstool
wrapGAppsHook4
];
buildInputs = [
gtk4
glib
libxml2
gtksourceview5
mpfr
gmp
libgee
gsettings-desktop-schemas
libsoup_3
libmpc
libadwaita
];
doCheck = true;
preCheck = ''
# Currency conversion test tries to store currency data in $HOME/.cache.
export HOME=$TMPDIR
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-calculator";
};
};
meta = with lib; {
homepage = "https://apps.gnome.org/Calculator/";
description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
mainProgram = "gnome-calculator";
teams = [ teams.gnome ];
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,67 @@
{
stdenv,
lib,
fetchurl,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
libgweather,
geoclue2,
gettext,
libxml2,
gnome,
gtk4,
evolution-data-server-gtk4,
libical,
libsoup_3,
glib,
gsettings-desktop-schemas,
libadwaita,
}:
stdenv.mkDerivation rec {
pname = "gnome-calendar";
version = "48.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-calendar/${lib.versions.major version}/gnome-calendar-${version}.tar.xz";
hash = "sha256-Bs6t1cAL6ONYGB1CHs8mgs4K6i/LEtkDsw0pyjMonwI=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
libxml2
wrapGAppsHook4
];
buildInputs = [
gtk4
evolution-data-server-gtk4
libical
libsoup_3
glib
libgweather
geoclue2
gsettings-desktop-schemas
libadwaita
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-calendar";
};
};
meta = with lib; {
homepage = "https://apps.gnome.org/Calendar/";
description = "Simple and beautiful calendar application for GNOME";
mainProgram = "gnome-calendar";
teams = [ teams.gnome ];
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchurl,
meson,
ninja,
pkg-config,
gettext,
gnome,
glib,
gtk4,
pango,
wrapGAppsHook4,
desktop-file-utils,
gobject-introspection,
gjs,
libunistring,
libadwaita,
gsettings-desktop-schemas,
gnome-desktop,
}:
stdenv.mkDerivation rec {
pname = "gnome-characters";
version = "48.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-characters/${lib.versions.major version}/gnome-characters-${version}.tar.xz";
hash = "sha256-osMspU2RHbJARCA1DTRC5pGi3Oiw9dAImfZs/4w8jXE=";
};
nativeBuildInputs = [
gettext
gobject-introspection
meson
ninja
pkg-config
desktop-file-utils
wrapGAppsHook4
];
buildInputs = [
gjs
glib
gnome-desktop # for typelib
gsettings-desktop-schemas
gtk4
libunistring
libadwaita
pango
];
dontWrapGApps = true;
postFixup = ''
# Fixes https://github.com/NixOS/nixpkgs/issues/31168
file="$out/share/org.gnome.Characters/org.gnome.Characters"
sed -e $"2iimports.package._findEffectiveEntryPointName = () => \'$(basename $file)\' " \
-i $file
wrapGApp "$file"
'';
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-characters"; };
};
meta = with lib; {
homepage = "https://apps.gnome.org/Characters/";
description = "Simple utility application to find and insert unusual characters";
mainProgram = "gnome-characters";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchurl,
meson,
ninja,
vala,
pkg-config,
desktop-file-utils,
wrapGAppsHook4,
gobject-introspection,
gettext,
itstool,
libxml2,
gnome,
glib,
gtk4,
libadwaita,
librsvg,
pango,
}:
stdenv.mkDerivation rec {
pname = "gnome-chess";
version = "48.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-chess/${lib.versions.major version}/gnome-chess-${version}.tar.xz";
hash = "sha256-eDTEdvCLvyd5BrApNjLtMugDdMuUQyayGeqQVqapXz8=";
};
nativeBuildInputs = [
meson
ninja
vala
pkg-config
gettext
itstool
libxml2
desktop-file-utils
wrapGAppsHook4
gobject-introspection
];
buildInputs = [
glib
gtk4
libadwaita
librsvg
pango
];
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-chess"; };
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-chess";
description = "Play the classic two-player boardgame of chess";
mainProgram = "gnome-chess";
teams = [ teams.gnome ];
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,89 @@
{
stdenv,
lib,
fetchurl,
meson,
ninja,
gettext,
pkg-config,
wrapGAppsHook4,
itstool,
desktop-file-utils,
vala,
libxml2,
gtk4,
glib,
gsettings-desktop-schemas,
gnome-desktop,
geocode-glib_2,
gnome,
gdk-pixbuf,
geoclue2,
gst_all_1,
libgweather,
libadwaita,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-clocks";
version = "48.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-clocks/${lib.versions.major finalAttrs.version}/gnome-clocks-${finalAttrs.version}.tar.xz";
hash = "sha256-YW7h+3UwCx8muXZiGelUdRNgyg+g9JExG8+DvzgIfGI=";
};
nativeBuildInputs = [
vala
meson
ninja
pkg-config
gettext
itstool
wrapGAppsHook4
desktop-file-utils
libxml2
];
buildInputs = [
gtk4
glib
gsettings-desktop-schemas
gdk-pixbuf
gnome-desktop
geocode-glib_2
geoclue2
libgweather
libadwaita
]
++ (with gst_all_1; [
# GStreamer plugins needed for Alarms
gstreamer
gst-plugins-base
gst-plugins-good
]);
doCheck = true;
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-clocks"; };
};
meta = {
homepage = "https://apps.gnome.org/Clocks/";
description = "Simple and elegant clock application for GNOME";
longDescription = ''
A simple and elegant clock application. It includes world clocks, alarms,
a stopwatch, and timers.
- Show the time in different cities around the world
- Set alarms to wake you up
- Measure elapsed time with an accurate stopwatch
- Set timers to properly cook your food
'';
mainProgram = "gnome-clocks";
teams = [ lib.teams.gnome ];
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,73 @@
From 0417f60c7e760e1ebc6acd3dc23818b38c3929e7 Mon Sep 17 00:00:00 2001
From: Weijia Wang <contact@weijia.wang>
Date: Mon, 7 Aug 2023 21:51:30 +0200
Subject: [PATCH] Fix build with Exiv2 0.28
---
src/gcm-helper-exiv.cpp | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/gcm-helper-exiv.cpp b/src/gcm-helper-exiv.cpp
index 7ec69948..23c8b320 100644
--- a/src/gcm-helper-exiv.cpp
+++ b/src/gcm-helper-exiv.cpp
@@ -22,6 +22,10 @@
#include <exiv2/image.hpp>
#include <exiv2/exif.hpp>
+#if EXIV2_MAJOR_VERSION >= 1 || (EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION >= 28)
+#define HAVE_EXIV2_0_28
+#endif
+
#if EXIV2_MAJOR_VERSION >= 1 || (EXIV2_MAJOR_VERSION == 0 && EXIV2_MINOR_VERSION >= 27)
#define HAVE_EXIV2_ERROR_CODE
#include <exiv2/error.hpp>
@@ -33,7 +37,11 @@
int
main (int argc, char* const argv[])
{
+#ifdef HAVE_EXIV2_0_28
+ Exiv2::Image::UniquePtr image;
+#else
Exiv2::Image::AutoPtr image;
+#endif
Exiv2::ExifData exifData;
std::string filename;
std::string make;
@@ -57,7 +65,9 @@ main (int argc, char* const argv[])
if (argc == 2)
filename = argv[1];
if (filename.empty())
-#ifdef HAVE_EXIV2_ERROR_CODE
+#ifdef HAVE_EXIV2_0_28
+ throw Exiv2::Error(Exiv2::ErrorCode::kerErrorMessage, "No filename specified");
+#elif defined(HAVE_EXIV2_ERROR_CODE)
throw Exiv2::Error(Exiv2::kerErrorMessage, "No filename specified");
#else
throw Exiv2::Error(1, "No filename specified");
@@ -70,7 +80,9 @@ main (int argc, char* const argv[])
if (exifData.empty()) {
std::string error(argv[1]);
error += ": No Exif data found in the file";
-#ifdef HAVE_EXIV2_ERROR_CODE
+#ifdef HAVE_EXIV2_0_28
+ throw Exiv2::Error(Exiv2::ErrorCode::kerErrorMessage, error);
+#elif defined(HAVE_EXIV2_ERROR_CODE)
throw Exiv2::Error(Exiv2::kerErrorMessage, error);
#else
throw Exiv2::Error(1, error);
@@ -89,7 +101,11 @@ main (int argc, char* const argv[])
std::cout << model << "\n";
std::cout << make << "\n";
std::cout << serial << "\n";
+#ifdef HAVE_EXIV2_0_28
+ } catch (Exiv2::Error& e) {
+#else
} catch (Exiv2::AnyError& e) {
+#endif
std::cout << "Failed to load: " << e << "\n";
retval = -1;
}
--
2.39.2 (Apple Git-143)

View File

@@ -0,0 +1,73 @@
{
lib,
stdenv,
fetchurl,
meson,
ninja,
pkg-config,
gettext,
itstool,
desktop-file-utils,
gnome,
glib,
gtk3,
libexif,
libtiff,
colord,
colord-gtk,
libcanberra-gtk3,
lcms2,
vte,
exiv2,
}:
stdenv.mkDerivation rec {
pname = "gnome-color-manager";
version = "3.32.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-color-manager/${lib.versions.majorMinor version}/gnome-color-manager-${version}.tar.xz";
hash = "sha256-fDwXj6rPy/EdVt4izSZZRqfViqEOPNlowpOOL79Q/e4=";
};
patches = [ ./0001-Fix-build-with-Exiv2-0.28.patch ];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
glib
itstool
desktop-file-utils
];
buildInputs = [
glib
gtk3
libexif
libtiff
colord
colord-gtk
libcanberra-gtk3
lcms2
vte
exiv2
];
strictDeps = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-color-manager";
freeze = true;
};
};
meta = with lib; {
description = "Set of graphical utilities for color management to be used in the GNOME desktop";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,72 @@
{
lib,
stdenv,
fetchFromGitLab,
meson,
ninja,
pkg-config,
flex,
itstool,
wrapGAppsHook3,
desktop-file-utils,
exiv2,
libgsf,
taglib,
poppler,
samba,
gtest,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-commander";
version = "1.18.4";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "gnome-commander";
tag = finalAttrs.version;
hash = "sha256-4l+hw9zPYhkaOpXMEnn4vXF1q0JLE0CB4oRGr2iXqtw=";
};
# hard-coded schema paths
postPatch = ''
substituteInPlace src/gnome-cmd-data.cc plugins/fileroller/file-roller-plugin.cc \
--replace-fail \
'/share/glib-2.0/schemas' \
'/share/gsettings-schemas/${finalAttrs.finalPackage.name}/glib-2.0/schemas'
'';
nativeBuildInputs = [
meson
ninja
pkg-config
flex
itstool
wrapGAppsHook3
desktop-file-utils
];
buildInputs = [
exiv2
libgsf
taglib
poppler
samba
];
mesonFlags = [ (lib.mesonEnable "tests" finalAttrs.finalPackage.doCheck) ];
checkInputs = [ gtest ];
doCheck = false; # gtest requires C/C++17 but the project is written in C/C++11
meta = {
description = "Fast and powerful twin-panel file manager for the Linux desktop";
homepage = "https://gcmd.github.io";
license = lib.licenses.gpl2Plus;
mainProgram = "gnome-commander";
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,33 @@
{
lib,
stdenv,
fetchurl,
which,
gnome,
autoconf,
automake,
}:
stdenv.mkDerivation rec {
pname = "gnome-common";
version = "3.18.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-common/${lib.versions.majorMinor version}/gnome-common-${version}.tar.xz";
hash = "sha256-IlaeNwrnVeBFJ7djKL78THO2K/1KVySZ/eEWuDGK+M8=";
};
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-common"; };
};
propagatedBuildInputs = [
which
autoconf
automake
]; # autogen.sh which is using gnome-common tends to require which
meta = with lib; {
teams = [ teams.gnome ];
};
}

View File

@@ -0,0 +1,69 @@
{
lib,
stdenv,
fetchurl,
meson,
ninja,
pkg-config,
vala,
gettext,
itstool,
desktop-file-utils,
wrapGAppsHook3,
glib,
gtk3,
libhandy,
libsecret,
libxml2,
gtk-vnc,
gtk-frdp,
gnome,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-connections";
version = "48.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-connections/${lib.versions.major finalAttrs.version}/gnome-connections-${finalAttrs.version}.tar.xz";
hash = "sha256-Nw75QFBrVybG8rfLl5ayI9HW1Chfg8/DOFvWdMMon9A=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
vala
gettext
itstool
desktop-file-utils
glib # glib-compile-resources
wrapGAppsHook3
];
buildInputs = [
glib
gtk-vnc
gtk3
libhandy
libsecret
libxml2
gtk-frdp
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-connections";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-connections";
changelog = "https://gitlab.gnome.org/GNOME/gnome-connections/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
description = "Remote desktop client for the GNOME desktop environment";
mainProgram = "gnome-connections";
teams = [ teams.gnome ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,71 @@
{
lib,
stdenv,
fetchurl,
gettext,
gnome,
libgtop,
gtk4,
libadwaita,
pango,
pcre2,
vte-gtk4,
desktop-file-utils,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
nixosTests,
}:
stdenv.mkDerivation rec {
pname = "gnome-console";
version = "48.0.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-console/${lib.versions.major version}/${pname}-${version}.tar.xz";
hash = "sha256-AY6Qjk2uvPyxUNTxuyjZgnKqnRTWgV6vjaRfiJ2wXEk=";
};
nativeBuildInputs = [
desktop-file-utils
gettext
meson
ninja
pkg-config
wrapGAppsHook4
];
buildInputs = [
libgtop
gtk4
libadwaita
pango
pcre2
vte-gtk4
];
preFixup = ''
# FIXME: properly address https://github.com/NixOS/nixpkgs/pull/333911#issuecomment-2362710334
# and https://gitlab.gnome.org/GNOME/console/-/commit/c81801c82f186f20
gappsWrapperArgs+=(--set "TERM" "xterm-256color")
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-console";
};
};
passthru.tests.test = nixosTests.terminal-emulators.kgx;
meta = with lib; {
description = "Simple user-friendly terminal emulator for the GNOME desktop";
homepage = "https://gitlab.gnome.org/GNOME/console";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ zhaofengli ];
teams = [ teams.gnome ];
platforms = platforms.unix;
mainProgram = "kgx";
};
}

View File

@@ -0,0 +1,83 @@
{
lib,
stdenv,
gettext,
fetchurl,
evolution-data-server-gtk4,
pkg-config,
libxslt,
docbook-xsl-nons,
docbook_xml_dtd_42,
desktop-file-utils,
gtk4,
glib,
libportal-gtk4,
gnome-online-accounts,
qrencode,
wrapGAppsHook4,
folks,
libxml2,
gnome,
vala,
meson,
ninja,
libadwaita,
gsettings-desktop-schemas,
gst_all_1,
pipewire,
}:
stdenv.mkDerivation rec {
pname = "gnome-contacts";
version = "48.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-contacts/${lib.versions.major version}/gnome-contacts-${version}.tar.xz";
hash = "sha256-onYplbWUJ+w/GF8otVlONwd7cqcM18GSF+1jRjfswbU=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
vala
gettext
libxslt
docbook-xsl-nons
docbook_xml_dtd_42
desktop-file-utils
wrapGAppsHook4
];
buildInputs = [
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-rs # GTK4 sink & paintable
pipewire # pipewiresrc
gtk4
glib
libportal-gtk4
evolution-data-server-gtk4
gsettings-desktop-schemas
folks
libadwaita
libxml2
gnome-online-accounts
qrencode
];
doCheck = true;
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-contacts"; };
};
meta = with lib; {
homepage = "https://apps.gnome.org/Contacts/";
description = "GNOMEs integrated address book";
mainProgram = "gnome-contacts";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,218 @@
{
fetchurl,
lib,
stdenv,
replaceVars,
accountsservice,
adwaita-icon-theme,
colord,
colord-gtk4,
cups,
dbus,
docbook-xsl-nons,
fontconfig,
gdk-pixbuf,
gettext,
glib,
glib-networking,
gcr_4,
glibc,
gnome-bluetooth,
gnome-color-manager,
gnome-desktop,
gnome-online-accounts,
gnome-settings-daemon,
gnome-tecla,
gnome,
gsettings-desktop-schemas,
gsound,
gst_all_1,
gtk4,
ibus,
json-glib,
libgtop,
libgudev,
libadwaita,
libkrb5,
libjxl,
libpulseaudio,
libpwquality,
librsvg,
webp-pixbuf-loader,
libsecret,
libsoup_3,
libwacom,
libXi,
libxml2,
libxslt,
meson,
modemmanager,
mutter,
networkmanager,
networkmanagerapplet,
libnma-gtk4,
ninja,
pkg-config,
polkit,
python3,
samba,
setxkbmap,
shadow,
shared-mime-info,
sound-theme-freedesktop,
tinysparql,
localsearch,
tzdata,
udisks2,
upower,
wayland-scanner,
libepoxy,
gnome-user-share,
gnome-remote-desktop,
wrapGAppsHook4,
xorgserver,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-control-center";
version = "48.4";
src = fetchurl {
url = "mirror://gnome/sources/gnome-control-center/${lib.versions.major finalAttrs.version}/gnome-control-center-${finalAttrs.version}.tar.xz";
hash = "sha256-KiDu5uBcjTrdru+lJNzh7p+Ip32Djj/R7e88DC5GetI=";
};
patches = [
(replaceVars ./paths.patch {
gcm = gnome-color-manager;
inherit glibc tzdata shadow;
inherit cups networkmanagerapplet;
})
];
nativeBuildInputs = [
docbook-xsl-nons
gettext
libxslt
meson
ninja
pkg-config
python3
shared-mime-info
wayland-scanner
wrapGAppsHook4
];
buildInputs = [
accountsservice
adwaita-icon-theme
colord
colord-gtk4
cups
fontconfig
gdk-pixbuf
glib
glib-networking
gcr_4
gnome-bluetooth
gnome-desktop
gnome-online-accounts
gnome-remote-desktop # optional, sharing panel
gnome-settings-daemon
gnome-tecla
gnome-user-share # optional, sharing panel
gsettings-desktop-schemas
gsound
gtk4
ibus
json-glib
libepoxy
libgtop
libgudev
libadwaita
libkrb5
libnma-gtk4
libpulseaudio
libpwquality
librsvg
libsecret
libsoup_3
libwacom
libXi
libxml2
modemmanager
mutter # schemas for the keybindings
networkmanager
polkit
samba
tinysparql
localsearch # for search locations dialog
udisks2
upower
# For animations in Mouse panel.
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
];
nativeCheckInputs = [
dbus
python3.pkgs.pygobject3 # for test-networkmanager-service.py
python3.pkgs.python-dbusmock
setxkbmap
xorgserver # for Xvfb
];
doCheck = true;
preConfigure = ''
# For ITS rules
addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share"
'';
preCheck = ''
# Basically same as https://github.com/NixOS/nixpkgs/pull/141299
export ADW_DISABLE_PORTAL=1
export XDG_DATA_DIRS=${glib.getSchemaDataDirPath gsettings-desktop-schemas}
'';
postInstall = ''
# Pull in WebP and JXL support for gnome-backgrounds.
# In postInstall to run before gappsWrapperArgsHook.
export GDK_PIXBUF_MODULE_FILE="${
gnome._gdkPixbufCacheBuilder_DO_NOT_USE {
extraLoaders = [
libjxl
librsvg
webp-pixbuf-loader
];
}
}"
'';
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share"
# Thumbnailers (for setting user profile pictures)
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
--prefix XDG_DATA_DIRS : "${librsvg}/share"
# WM keyboard shortcuts
--prefix XDG_DATA_DIRS : "${mutter}/share"
)
'';
separateDebugInfo = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-control-center";
};
};
meta = with lib; {
description = "Utilities to configure the GNOME desktop";
mainProgram = "gnome-control-center";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,143 @@
diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
index f6c84e3d2..cd897f8f5 100644
--- a/panels/color/cc-color-panel.c
+++ b/panels/color/cc-color-panel.c
@@ -614,7 +614,7 @@ gcm_prefs_calibrate_cb (CcColorPanel *self)
/* run with modal set */
argv = g_ptr_array_new_with_free_func (g_free);
- g_ptr_array_add (argv, g_strdup ("gcm-calibrate"));
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-calibrate", NULL));
g_ptr_array_add (argv, g_strdup ("--device"));
g_ptr_array_add (argv, g_strdup (cd_device_get_id (self->current_device)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -989,7 +989,7 @@ gcm_prefs_profile_view (CcColorPanel *self, CdProfile *profile)
/* open up gcm-viewer as a info pane */
argv = g_ptr_array_new_with_free_func (g_free);
- g_ptr_array_add (argv, g_strdup ("gcm-viewer"));
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL));
g_ptr_array_add (argv, g_strdup ("--profile"));
g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -1221,15 +1221,12 @@ gcm_prefs_device_clicked (CcColorPanel *self, CdDevice *device)
static void
gcm_prefs_profile_clicked (CcColorPanel *self, CdProfile *profile, CdDevice *device)
{
- g_autofree gchar *s = NULL;
-
/* get profile */
g_debug ("selected profile = %s",
cd_profile_get_filename (profile));
/* allow getting profile info */
- if (cd_profile_get_filename (profile) != NULL &&
- (s = g_find_program_in_path ("gcm-viewer")) != NULL)
+ if (cd_profile_get_filename (profile) != NULL)
gtk_widget_set_sensitive (self->toolbutton_profile_view, TRUE);
else
gtk_widget_set_sensitive (self->toolbutton_profile_view, FALSE);
diff --git a/panels/system/datetime/tz.h b/panels/system/datetime/tz.h
index feef16580..4b88ef7b1 100644
--- a/panels/system/datetime/tz.h
+++ b/panels/system/datetime/tz.h
@@ -27,11 +27,7 @@
G_BEGIN_DECLS
-#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;
diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c
index ec5a905a5..689fdbebe 100644
--- a/panels/network/connection-editor/net-connection-editor.c
+++ b/panels/network/connection-editor/net-connection-editor.c
@@ -377,7 +377,7 @@ net_connection_editor_do_fallback (NetConnectionEditor *self, const gchar *type)
GPid child_pid;
builder = g_strv_builder_new ();
- g_strv_builder_add (builder, "nm-connection-editor");
+ g_strv_builder_add (builder, "@networkmanagerapplet@/bin/nm-connection-editor");
if (self->is_new_connection) {
g_autofree gchar *type_str = NULL;
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index 166670224..36f720d36 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -521,7 +521,7 @@ options_button_clicked_cb (NetDeviceMobile *self)
connection = net_device_get_find_connection (self->client, self->device);
uuid = nm_connection_get_uuid (connection);
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
g_debug ("Launching '%s'\n", cmdline);
if (!g_spawn_command_line_async (cmdline, &error))
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
@@ -810,7 +810,7 @@ net_device_mobile_init (NetDeviceMobile *self)
self->cancellable = g_cancellable_new ();
- path = g_find_program_in_path ("nm-connection-editor");
+ path = g_find_program_in_path ("@networkmanagerapplet@/bin/nm-connection-editor");
gtk_widget_set_visible (GTK_WIDGET (self->options_button), path != NULL);
}
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
index a31a606e3..ed5133d29 100644
--- a/panels/printers/pp-host.c
+++ b/panels/printers/pp-host.c
@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask *task,
devices = g_ptr_array_new_with_free_func (g_object_unref);
argv = g_new0 (gchar *, 3);
- argv[0] = g_strdup ("/usr/lib/cups/backend/snmp");
+ argv[0] = g_strdup ("@cups@/lib/cups/backend/snmp");
argv[1] = g_strdup (priv->hostname);
/* Use SNMP to get printer's informations */
diff --git a/panels/system/users/run-passwd.c b/panels/system/users/run-passwd.c
index edbc99830..1e1d90141 100644
--- a/panels/system/users/run-passwd.c
+++ b/panels/system/users/run-passwd.c
@@ -152,7 +152,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error)
gchar **envp;
gint my_stdin, my_stdout;
- argv[0] = "/usr/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
+ argv[0] = "/run/wrappers/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
argv[1] = NULL;
envp = g_get_environ ();
diff --git a/panels/system/users/user-utils.c b/panels/system/users/user-utils.c
index 5b7bc1f02..13ffe6ca8 100644
--- a/panels/system/users/user-utils.c
+++ b/panels/system/users/user-utils.c
@@ -215,7 +215,7 @@ is_valid_username_async (const gchar *username,
* future, so it would be nice to have some official way for this
* instead of relying on the current "--login" implementation.
*/
- argv[0] = "/usr/sbin/usermod";
+ argv[0] = "@shadow@/bin/usermod";
argv[1] = "--login";
argv[2] = data->username;
argv[3] = "--";
diff --git a/tests/datetime/test-endianess.c b/tests/datetime/test-endianess.c
index 9cb92007a..84d2f0fa3 100644
--- a/tests/datetime/test-endianess.c
+++ b/tests/datetime/test-endianess.c
@@ -26,7 +26,7 @@ test_endianess (void)
g_autoptr(GDir) dir = NULL;
const char *name;
- dir = g_dir_open ("/usr/share/i18n/locales/", 0, NULL);
+ dir = g_dir_open ("@glibc@/share/i18n/locales/", 0, NULL);
if (dir == NULL) {
/* Try with /usr/share/locale/
* https://bugzilla.gnome.org/show_bug.cgi?id=646780 */

View File

@@ -0,0 +1,90 @@
{
lib,
stdenv,
fetchFromGitLab,
rustPlatform,
cargo,
meson,
ninja,
pkg-config,
rustc,
glib,
gtk4,
libadwaita,
sqlite,
openssl,
pipewire,
gst_all_1,
wrapGAppsHook4,
appstream-glib,
desktop-file-utils,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-decoder";
version = "0.7.1";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "decoder";
tag = finalAttrs.version;
hash = "sha256-lLZ8tll/R9cwk3t/MULmrR1KWZ1e+zneXL93035epPE=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-USfC7HSL1TtjP1SmBRTKkPyKE4DkSn6xeH4mzfIBQWg=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
glib
gtk4
wrapGAppsHook4
appstream-glib
desktop-file-utils
cargo
rustc
rustPlatform.bindgenHook
rustPlatform.cargoSetupHook
];
buildInputs = [
glib
gtk4
libadwaita
sqlite
openssl
pipewire
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-rs # for gtk4paintablesink
];
# Adds vp8enc preset for camera enablement
preFixup = ''
gappsWrapperArgs+=(
--prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
)
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Scan and generate QR codes";
homepage = "https://gitlab.gnome.org/World/decoder";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ zendo ];
mainProgram = "decoder";
platforms = lib.platforms.linux;
teams = [ lib.teams.gnome-circle ];
};
})

View File

@@ -0,0 +1,47 @@
{
stdenv,
lib,
glib,
autoreconfHook,
pkg-config,
systemd,
fetchFromGitLab,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "gnome-desktop-testing";
version = "2021.1";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "gnome-desktop-testing";
rev = "v${version}";
sha256 = "sha256-PWn4eEZskY0YgMpf6O2dgXNSu8b8T311vFHREv2HE/Q=";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
glib
systemd
];
enableParallelBuilding = true;
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "GNOME test runner for installed tests";
homepage = "https://gitlab.gnome.org/GNOME/gnome-desktop-testing";
license = licenses.lgpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.jtojnar ];
};
}

View File

@@ -0,0 +1,17 @@
diff --git a/libgnome-desktop/gnome-desktop-thumbnail-script.c b/libgnome-desktop/gnome-desktop-thumbnail-script.c
index ddcc1511..546c2a36 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail-script.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail-script.c
@@ -555,9 +555,9 @@ add_bwrap (GPtrArray *array,
g_return_val_if_fail (script->s_infile != NULL, FALSE);
add_args (array,
- "bwrap",
- "--ro-bind", "/usr", "/usr",
- "--ro-bind-try", "/etc/ld.so.cache", "/etc/ld.so.cache",
+ "@bubblewrap_bin@",
+ "--ro-bind", "@storeDir@", "@storeDir@",
+ "--ro-bind-try", "/run/current-system", "/run/current-system",
NULL);
/* These directories might be symlinks into /usr/... */

View File

@@ -0,0 +1,115 @@
{
lib,
stdenv,
fetchurl,
replaceVars,
pkg-config,
libxslt,
ninja,
gnome,
gtk3,
gtk4,
glib,
gettext,
libxml2,
xkeyboard_config,
libxkbcommon,
isocodes,
meson,
wayland,
libseccomp,
systemd,
udev,
bubblewrap,
gobject-introspection,
gtk-doc,
docbook-xsl-nons,
gsettings-desktop-schemas,
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-desktop";
version = "44.3";
outputs = [
"out"
"dev"
"devdoc"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-desktop/${lib.versions.major finalAttrs.version}/gnome-desktop-${finalAttrs.version}.tar.xz";
sha256 = "sha256-QO+pqo1Q7/7ZIno9cGceMuncNeIPMxyrO1YpdZePT40=";
};
patches = lib.optionals stdenv.hostPlatform.isLinux [
(replaceVars ./bubblewrap-paths.patch {
bubblewrap_bin = "${bubblewrap}/bin/bwrap";
inherit (builtins) storeDir;
})
];
nativeBuildInputs = [
pkg-config
meson
ninja
gettext
libxslt
libxml2
gobject-introspection
gtk-doc
docbook-xsl-nons
glib
];
buildInputs = [
xkeyboard_config
libxkbcommon # for xkbregistry
isocodes
gtk3
gtk4
glib
]
++ lib.optionals withSystemd [
systemd
]
++ lib.optionals stdenv.hostPlatform.isLinux [
bubblewrap
wayland
libseccomp
udev
];
propagatedBuildInputs = [
gsettings-desktop-schemas
];
mesonFlags = [
"-Dgtk_doc=true"
"-Ddesktop_docs=false"
(lib.mesonEnable "systemd" withSystemd)
]
++ lib.optionals (!stdenv.hostPlatform.isLinux) [
"-Dudev=disabled"
];
separateDebugInfo = stdenv.hostPlatform.isLinux;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-desktop";
};
};
meta = with lib; {
description = "Library with common API for various GNOME modules";
homepage = "https://gitlab.gnome.org/GNOME/gnome-desktop";
license = with licenses; [
gpl2Plus
lgpl2Plus
];
platforms = platforms.unix;
teams = [ teams.gnome ];
};
})

View File

@@ -0,0 +1,85 @@
{
lib,
stdenv,
fetchurl,
adwaita-icon-theme,
desktop-file-utils,
docbook-xsl-nons,
gettext,
glib,
gnome,
gnome-settings-daemon,
gsettings-desktop-schemas,
gtk3,
itstool,
libcanberra-gtk3,
libdvdread,
libhandy,
libnotify,
libpwquality,
libsecret,
libxml2,
libxslt,
meson,
ninja,
pkg-config,
systemd,
udisks2,
wrapGAppsHook3,
xz,
}:
stdenv.mkDerivation rec {
pname = "gnome-disk-utility";
version = "46.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-disk-utility/${lib.versions.major version}/gnome-disk-utility-${version}.tar.xz";
hash = "sha256-wk6UOaBNcLz640nKE0xwBUNf4rb0UhFN+Hi/8Libv/4=";
};
nativeBuildInputs = [
desktop-file-utils
docbook-xsl-nons
gettext
itstool
libxml2
libxslt
meson
ninja
pkg-config
wrapGAppsHook3
];
buildInputs = [
adwaita-icon-theme
glib
gnome-settings-daemon
gsettings-desktop-schemas
gtk3
libcanberra-gtk3
libdvdread
libhandy
libnotify
libpwquality
libsecret
systemd
udisks2
xz
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-disk-utility";
};
};
meta = with lib; {
homepage = "https://apps.gnome.org/DiskUtility/";
description = "Udisks graphical front-end";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
mainProgram = "gnome-disks";
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
fetchurl,
pkg-config,
libxml2,
libxslt,
intltool,
gnome,
python3Packages,
fetchpatch,
bash,
}:
python3Packages.buildPythonApplication rec {
pname = "gnome-doc-utils";
version = "0.20.10";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "19n4x25ndzngaciiyd8dd6s2mf9gv6nv3wv27ggns2smm7zkj1nb";
};
patches = [
# https://bugzilla.redhat.com/show_bug.cgi?id=438638
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/gnome-doc-utils/raw/6b8908abe5af61a952db7174c5d1843708d61f1b/f/gnome-doc-utils-0.14.0-package.patch";
sha256 = "sha256-V2L2/30NoHY/wj3+dsombxveWRSUJb2YByOKtEgVx/0=";
})
# python3 support
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/gnome-doc-utils/raw/6b8908abe5af61a952db7174c5d1843708d61f1b/f/gnome-doc-utils-0.20.10-python3.patch";
sha256 = "sha256-niH/Yx5H44rsRgkCZS8LWLFB9ZvuInt75zugzoVUhH0=";
})
];
nativeBuildInputs = [
intltool
pkg-config
libxslt.dev
];
buildInputs = [
libxml2
libxslt
bash
];
propagatedBuildInputs = [ python3Packages.libxml2 ];
configureFlags = [ "--disable-scrollkeeper" ];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
meta = with lib; {
description = "Collection of documentation utilities for the GNOME project";
homepage = "https://gitlab.gnome.org/GNOME/gnome-doc-utils";
license = with licenses; [
gpl2Plus
lgpl2Plus
];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,54 @@
{
stdenv,
lib,
fetchurl,
wrapGAppsNoGuiHook,
meson,
ninja,
pkg-config,
gnome,
gdk-pixbuf,
glib,
libarchive,
librsvg,
libxml2,
}:
stdenv.mkDerivation rec {
pname = "gnome-epub-thumbnailer";
version = "1.8";
src = fetchurl {
url = "mirror://gnome/sources/gnome-epub-thumbnailer/${lib.versions.majorMinor version}/gnome-epub-thumbnailer-${version}.tar.xz";
sha256 = "sha256-+QYZ1YxpkC8u/1e58AQrRzeGEIP0dZIaMQ/sxhL8oBc=";
};
nativeBuildInputs = [
wrapGAppsNoGuiHook
meson
ninja
pkg-config
];
buildInputs = [
gdk-pixbuf
glib
libarchive
librsvg
libxml2
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-epub-thumbnailer";
};
};
meta = with lib; {
description = "Thumbnailer for EPub and MOBI books";
homepage = "https://gitlab.gnome.org/GNOME/gnome-epub-thumbnailer";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
stdenv,
fetchFromGitHub,
appstream,
appstream-glib,
desktop-file-utils,
gettext,
glib,
gobject-introspection,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
blueprint-compiler,
gtk4,
json-glib,
libadwaita,
libbacktrace,
libsoup_3,
libxml2,
}:
stdenv.mkDerivation rec {
pname = "gnome-extension-manager";
version = "0.6.3";
src = fetchFromGitHub {
owner = "mjakeman";
repo = "extension-manager";
rev = "v${version}";
hash = "sha256-d9MmDDtxRDw+z5DqtnsKAWf5fw62CPkhrkGILiVjtzM=";
};
nativeBuildInputs = [
appstream
appstream-glib
desktop-file-utils
gettext
glib
gobject-introspection
meson
ninja
pkg-config
wrapGAppsHook4
];
buildInputs = [
blueprint-compiler
gtk4
json-glib
libadwaita
libbacktrace
libsoup_3
libxml2
];
mesonFlags = [
(lib.mesonOption "package" "Nix")
(lib.mesonOption "distributor" "nixpkgs")
];
meta = {
description = "Desktop app for managing GNOME shell extensions";
homepage = "https://github.com/mjakeman/extension-manager";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
mainProgram = "extension-manager";
maintainers = with lib.maintainers; [ foo-dogsquared ];
};
}

View File

@@ -0,0 +1,95 @@
{
lib,
python3,
fetchFromGitLab,
fetchpatch,
appstream,
gobject-introspection,
meson,
ninja,
pkg-config,
blueprint-compiler,
wrapGAppsHook4,
glib-networking,
libadwaita,
webkitgtk_6_0,
}:
python3.pkgs.buildPythonApplication rec {
pname = "gnome-feeds";
version = "2.2.0";
pyproject = false;
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "gfeeds";
rev = version;
hash = "sha256-XKwRFjz4ocH01mj8KshLGmGxbm/uvDiyYRf65KL0UFw=";
};
patches = [
# both patches needed to built with newer blueprint-compiler
(fetchpatch {
name = "fix-for-blueprint-0.8.patch";
url = "https://gitlab.gnome.org/World/gfeeds/-/commit/cfe860f44f685be302e2ad9f30b55bab08e078ce.patch";
hash = "sha256-exkq9KykB60/X8u3+T1/sShrhGP8BvNkaBWPzm2mchc=";
})
(fetchpatch {
name = "upgrade-blueprint-0.8-syntax.patch";
url = "https://gitlab.gnome.org/World/gfeeds/-/commit/d099fda0c62e338080061683a154f711cc487b30.patch";
hash = "sha256-M6QLRTj+CItk3XPDeexf3/+B1YHJoHsTjwdE6iw1xjM=";
})
];
nativeBuildInputs = [
appstream
gobject-introspection
meson
ninja
pkg-config
blueprint-compiler
wrapGAppsHook4
];
buildInputs = [
glib-networking
libadwaita
webkitgtk_6_0
];
dependencies = with python3.pkgs; [
beautifulsoup4
humanize
python-dateutil
syndication-domination
python-magic
pillow
pygments
pygobject3
readability-lxml
pytz
requests
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
meta = {
description = "RSS/Atom feed reader for GNOME";
mainProgram = "gfeeds";
homepage = "https://gitlab.gnome.org/World/gfeeds";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
pbogdan
aleksana
];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,70 @@
{
stdenv,
lib,
fetchFromGitLab,
gitUpdater,
appstream-glib,
desktop-file-utils,
fwupd,
gettext,
glib,
gtk4,
libadwaita,
libxmlb,
meson,
ninja,
pkg-config,
systemd,
help2man,
wrapGAppsHook4,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-firmware";
version = "47.0";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "gnome-firmware";
rev = finalAttrs.version;
sha256 = "sha256-dI9tE/I+14IhYZ+IDLErPunlT4L29AudbZXh0at4jKQ=";
};
nativeBuildInputs = [
appstream-glib # for ITS rules
desktop-file-utils
gettext
help2man
meson
ninja
pkg-config
wrapGAppsHook4
];
buildInputs = [
fwupd
glib
gtk4
libadwaita
libxmlb
systemd
];
mesonFlags = [
"-Dconsolekit=false"
];
passthru.updateScript = gitUpdater {
ignoredVersions = "(alpha|beta|rc).*";
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/World/gnome-firmware";
description = "Tool for installing firmware on devices";
mainProgram = "gnome-firmware";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,13 @@
diff --git a/system-indicators/si-input-sources.c b/system-indicators/si-input-sources.c
index f13b262..2186b76 100644
--- a/system-indicators/si-input-sources.c
+++ b/system-indicators/si-input-sources.c
@@ -807,7 +807,7 @@ spawn_keyboard_display (const char *description)
flags = G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD;
error = NULL;
- argv[0] = g_strdup ("tecla");
+ argv[0] = g_strdup ("@tecla@");
argv[1] = g_strdup (description);
argv[2] = NULL;

View File

@@ -0,0 +1,232 @@
{
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,
replaceVars,
systemd,
tecla,
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.56.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-flashback/${lib.versions.majorMinor finalAttrs.version}/gnome-flashback-${finalAttrs.version}.tar.xz";
hash = "sha256-LQ+iLzc9sIDq7w5Wk7lijN6ETyVjPVqQMTsEndlSkmA=";
};
patches = [
(replaceVars ./fix-paths.patch {
tecla = lib.getExe tecla;
})
];
# 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
];
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}" ];
};
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;
};
};
meta = with lib; {
description = "GNOME 2.x-like session for GNOME 3";
mainProgram = "gnome-flashback";
homepage = "https://gitlab.gnome.org/GNOME/gnome-flashback";
changelog = "https://gitlab.gnome.org/GNOME/gnome-flashback/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
license = licenses.gpl2;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,68 @@
{
lib,
stdenv,
meson,
ninja,
gettext,
fetchurl,
pkg-config,
gtk4,
glib,
libxml2,
libadwaita,
fribidi,
wrapGAppsHook4,
gnome,
harfbuzz,
}:
stdenv.mkDerivation rec {
pname = "gnome-font-viewer";
version = "48.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-font-viewer/${lib.versions.major version}/gnome-font-viewer-${version}.tar.xz";
hash = "sha256-cyYkIxtiT/XHrAOoznG+Ejk9qlNVHRFVCyDXsKOocqc=";
};
doCheck = true;
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
wrapGAppsHook4
libxml2
glib
];
buildInputs = [
gtk4
glib
harfbuzz
libadwaita
fribidi
];
# Do not run meson-postinstall.sh
preConfigure = "sed -i '2,$ d' meson-postinstall.sh";
env = lib.optionalAttrs stdenv.cc.isGNU {
NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types";
};
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-font-viewer";
};
};
meta = with lib; {
description = "Program that can preview fonts and create thumbnails for fonts";
homepage = "https://gitlab.gnome.org/GNOME/gnome-font-viewer";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,99 @@
{
lib,
fetchFromGitHub,
python3Packages,
wrapGAppsHook4,
meson,
ninja,
pkg-config,
appstream-glib,
desktop-file-utils,
glib,
gobject-introspection,
blueprint-compiler,
libxml2,
libnotify,
libadwaita,
libportal,
gettext,
librsvg,
tesseract5,
zbar,
gst_all_1,
}:
python3Packages.buildPythonApplication rec {
pname = "gnome-frog";
version = "1.6.0";
src = fetchFromGitHub {
owner = "TenderOwl";
repo = "Frog";
tag = version;
sha256 = "sha256-p1gqom9saNEIm6FXinEuIJtMGwjGfQx9uLpR2kb46Uw=";
};
format = "other";
patches = [ ./update-compatible-with-non-flatpak-env.patch ];
postPatch = ''
chmod +x ./build-aux/meson/postinstall.py
patchShebangs ./build-aux/meson/postinstall.py
substituteInPlace ./build-aux/meson/postinstall.py \
--replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
substituteInPlace ./frog/language_manager.py --subst-var out
'';
nativeBuildInputs = [
appstream-glib
desktop-file-utils
gettext
meson
ninja
pkg-config
glib
wrapGAppsHook4
gobject-introspection
blueprint-compiler
libxml2
];
buildInputs = [
librsvg
libnotify
libadwaita
libportal
zbar
tesseract5
gst_all_1.gstreamer
];
propagatedBuildInputs = with python3Packages; [
loguru
nanoid
posthog
pygobject3
python-dateutil
pillow
pytesseract
pyzbar
gtts
];
# This is to prevent double-wrapping the package. We'll let
# Python do it by adding certain arguments inside of the
# wrapper instead.
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
meta = with lib; {
homepage = "https://getfrog.app/";
description = "Intuitive text extraction tool (OCR) for GNOME desktop";
license = licenses.mit;
mainProgram = "frog";
maintainers = with maintainers; [ foo-dogsquared ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/frog/language_manager.py b/frog/language_manager.py
index d822c44..bc289db 100644
--- a/frog/language_manager.py
+++ b/frog/language_manager.py
@@ -193,7 +193,7 @@ class LanguageManager(GObject.GObject):
os.mkdir(tessdata_dir)
dest_path = os.path.join(tessdata_dir, 'eng.traineddata')
- source_path = pathlib.Path('/app/share/appdata/eng.traineddata')
+ source_path = pathlib.Path('@out@/share/appdata/eng.traineddata')
if os.path.exists(dest_path):
return

View File

@@ -0,0 +1,81 @@
{
lib,
python3Packages,
fetchFromGitLab,
meson,
ninja,
vala,
pkg-config,
gobject-introspection,
blueprint-compiler,
itstool,
wrapGAppsHook4,
desktop-file-utils,
shared-mime-info,
libadwaita,
libgee,
nix-update-script,
}:
python3Packages.buildPythonApplication rec {
pname = "gnome-graphs";
version = "1.8.4";
pyproject = false;
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "Graphs";
rev = "v${version}";
hash = "sha256-up4Hv2gndekDQzEnf7kkskDyRGJ/mqEji7dsuLgnUVI=";
};
nativeBuildInputs = [
meson
ninja
vala
pkg-config
gobject-introspection
blueprint-compiler
itstool
wrapGAppsHook4
desktop-file-utils
shared-mime-info
];
buildInputs = [
libadwaita
libgee
];
dependencies = with python3Packages; [
pygobject3
numpy
numexpr
sympy
scipy
matplotlib
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=(
"''${gappsWrapperArgs[@]}"
--prefix LD_LIBRARY_PATH : $out/lib
)
'';
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Simple, yet powerful tool that allows you to plot and manipulate your data with ease";
homepage = "https://apps.gnome.org/Graphs";
license = licenses.gpl3Plus;
mainProgram = "graphs";
teams = [ lib.teams.gnome-circle ];
platforms = platforms.linux; # locale.bindtextdomain only available on linux
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
intltool,
iconnamingutils,
gtk2,
}:
stdenv.mkDerivation rec {
pname = "gnome-icon-theme";
version = "3.12.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-icon-theme/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0fjh9qmmgj34zlgxb09231ld7khys562qxbpsjlaplq2j85p57im";
};
depsBuildBuild = [
pkg-config
];
nativeBuildInputs = [
intltool
iconnamingutils
gtk2
];
dontDropIconThemeCache = true;
postInstall = lib.optionalString (!stdenv.hostPlatform.isMusl) ''
# remove a tree of dirs with no files within
rm -r "$out/share/locale"
'';
allowedReferences = [ ];
meta = with lib; {
description = "Collection of icons for the GNOME 2 desktop";
homepage = "https://download.gnome.org/sources/gnome-icon-theme/";
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = [ maintainers.romildo ];
broken = stdenv.hostPlatform.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/gnome-icon-theme.x86_64-darwin
};
}

View File

@@ -0,0 +1,150 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
python3,
perl,
bison,
texinfo,
desktop-file-utils,
wrapGAppsHook3,
docbook2x,
docbook-xsl-nons,
inform7,
gettext,
libossp_uuid,
gtk3,
gobject-introspection,
vala,
gtk-doc,
webkitgtk_4_0,
gtksourceview3,
gspell,
libxml2,
goocanvas2,
libplist,
glib,
gst_all_1,
}:
# Neither gnome-inform7 nor its dependencies ratify and chimara have tagged releases in the GTK3 branch yet.
let
ratify = (
stdenv.mkDerivation {
pname = "ratify";
version = "unstable-2021-02-21";
src = fetchFromGitHub {
owner = "ptomato";
repo = "ratify";
rev = "f4d2d60ec73d5588e953650b3879e69a727f30ca";
sha256 = "eRh/9pYvdfbdbdJQ7pYMLq5p91I+rtyb/AqEGfakjKs=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
docbook2x
docbook-xsl-nons
wrapGAppsHook3
gobject-introspection
];
buildInputs = [
gtk3
vala
gtk-doc
];
}
);
chimara = (
stdenv.mkDerivation {
pname = "chimara";
version = "unstable-2021-04-06";
src = fetchFromGitHub {
owner = "chimara";
repo = "Chimara";
rev = "9934b142af508c75c0f1eed597990f39495b1af4";
sha256 = "aRz1XX8XaSLTBIrMIIMS3QNMm6Msi+slrZ6+KYlyRMo=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
perl
bison
texinfo
python3
glib
wrapGAppsHook3
gobject-introspection
];
buildInputs = [
gtk3
vala
gtk-doc
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
glib
];
preConfigure = ''
patchShebangs build-aux/meson_post_install.py
'';
}
);
in
stdenv.mkDerivation {
pname = "gnome-inform7";
version = "unstable-2021-04-06";
src = fetchFromGitHub {
owner = "ptomato";
repo = "gnome-inform7";
# build from revision in the GTK3 branch as mainline requires webkit-1.0
rev = "c37e045c159692aae2e4e79b917e5f96cfefa66a";
sha256 = "Q4xoITs3AYXhvpWaABRAvJaUWTtUl8lYQ1k9zX7FrNw=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
inform7
python3
desktop-file-utils
wrapGAppsHook3
];
buildInputs = [
gettext
libossp_uuid
gtk3
gtksourceview3
gspell
webkitgtk_4_0
libxml2
goocanvas2
libplist
ratify
chimara
];
preConfigure = ''
cp ${inform7}/libexec/ni ./src/ni
patchShebangs build-aux/* src/generate-resource-xml.{py,sh}
'';
meta = with lib; {
description = "Inform 7 for the Gnome platform";
longDescription = ''
This version of Inform 7 for the Gnome platform was created by Philip Chimento, based on a design by Graham Nelson and Andrew Hunter.
'';
homepage = "https://github.com/ptomato/gnome-inform7";
license = licenses.gpl3Only;
maintainers = [ maintainers.fitzgibbon ];
platforms = platforms.linux;
mainProgram = "gnome-inform7";
};
}

View File

@@ -0,0 +1,53 @@
From 1ae0eca39ba6af27f37e2fe81395b91a2761a408 Mon Sep 17 00:00:00 2001
Message-Id: <1ae0eca39ba6af27f37e2fe81395b91a2761a408.1600627676.git-series.worldofpeace@protonmail.ch>
From: WORLDofPEACE <worldofpeace@protonmail.ch>
Date: Sun, 20 Sep 2020 14:46:59 -0400
Subject: [PATCH] fix paths
---
gnome-initial-setup/pages/keyboard/cc-input-chooser.c | 6 +++---
gnome-initial-setup/pages/timezone/tz.h | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
index 196abf6..613d0e5 100644
--- a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
+++ b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
@@ -177,9 +177,9 @@ preview_cb (GtkLabel *label,
return TRUE;
if (variant[0])
- commandline = g_strdup_printf ("tecla \"%s+%s\"", layout, variant);
+ commandline = g_strdup_printf ("@tecla@/bin/tecla \"%s+%s\"", layout, variant);
else
- commandline = g_strdup_printf ("tecla %s", layout);
+ commandline = g_strdup_printf ("@tecla@/bin/tecla %s", layout);
g_spawn_command_line_async (commandline, NULL);
g_free (commandline);
@@ -831,7 +831,7 @@ cc_input_chooser_class_init (CcInputChooserClass *klass)
g_param_spec_string ("showing-extra", "", "", "",
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
- signals[CHANGED] =
+ signals[CHANGED] =
g_signal_new ("changed",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_FIRST,
diff --git a/gnome-initial-setup/pages/timezone/tz.h b/gnome-initial-setup/pages/timezone/tz.h
index a2376f8..5cb7bc9 100644
--- a/gnome-initial-setup/pages/timezone/tz.h
+++ b/gnome-initial-setup/pages/timezone/tz.h
@@ -28,7 +28,7 @@
G_BEGIN_DECLS
#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
+# define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
#else
# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
#endif
base-commit: 5132e206a6bf81964450561d68473ac015760455
--
git-series 0.9.1

View File

@@ -0,0 +1,105 @@
{
stdenv,
lib,
fetchurl,
replaceVars,
dconf,
gettext,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
gnome,
accountsservice,
fontconfig,
gdm,
geoclue2,
geocode-glib_2,
glib,
gnome-desktop,
gtk4,
libgweather,
json-glib,
krb5,
libpwquality,
libsecret,
networkmanager,
pango,
polkit,
webkitgtk_6_0,
systemd,
libadwaita,
libnma-gtk4,
tzdata,
gnome-tecla,
gsettings-desktop-schemas,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-initial-setup";
version = "48.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-initial-setup/${lib.versions.major finalAttrs.version}/gnome-initial-setup-${finalAttrs.version}.tar.xz";
hash = "sha256-s9q/fnm2Zf8SJB+9umFUiVE9iGIkdZmGr49IZXWSMV4=";
};
patches = [
(replaceVars ./0001-fix-paths.patch {
inherit tzdata;
tecla = gnome-tecla;
})
];
nativeBuildInputs = [
dconf
gettext
meson
ninja
pkg-config
systemd
wrapGAppsHook4
];
buildInputs = [
accountsservice
fontconfig
gdm
geoclue2
geocode-glib_2
glib
gnome-desktop
gsettings-desktop-schemas
gtk4
json-glib
krb5
libgweather
libadwaita
libnma-gtk4
libpwquality
libsecret
networkmanager
pango
polkit
webkitgtk_6_0
];
mesonFlags = [
"-Dibus=disabled"
"-Dparental_controls=disabled"
"-Dvendor-conf-file=${./vendor.conf}"
];
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-initial-setup"; };
};
meta = with lib; {
description = "Simple, easy, and safe way to prepare a new system";
homepage = "https://gitlab.gnome.org/GNOME/gnome-initial-setup";
changelog = "https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
license = licenses.gpl2Plus;
platforms = platforms.linux;
teams = [ teams.gnome ];
};
})

View File

@@ -0,0 +1,5 @@
# Disable pages not right for NixOS
# For example user accounts should be preconfigured
# and we can't modify system time with systemd.
[pages]
skip=account;software;password;timezone;

View File

@@ -0,0 +1,122 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
meson,
ninja,
dbus,
libgcrypt,
pam,
python3,
glib,
libxslt,
gettext,
gcr,
libcap_ng,
libselinux,
p11-kit,
wrapGAppsNoGuiHook,
docbook-xsl-nons,
docbook_xml_dtd_43,
gnome,
useWrappedDaemon ? true,
}:
stdenv.mkDerivation rec {
pname = "gnome-keyring";
version = "48.0";
outputs = [
"out"
"dev"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-keyring/${lib.versions.major version}/gnome-keyring-${version}.tar.xz";
hash = "sha256-8gUYySDp6j+cm4tEvoxQ2Nf+7NDdViSWD3e9LKT7650=";
};
nativeBuildInputs = [
pkg-config
meson
ninja
gettext
glib # for glib-genmarshal
libxslt
docbook-xsl-nons
docbook_xml_dtd_43
wrapGAppsNoGuiHook
];
buildInputs = [
glib
libgcrypt
pam
libcap_ng
libselinux
gcr
p11-kit
];
nativeCheckInputs = [
dbus
python3
];
mesonFlags = [
# installation directories
"-Dpkcs11-config=${placeholder "out"}/etc/pkcs11" # todo: this should probably be /share/p11-kit/modules
"-Dpkcs11-modules=${placeholder "out"}/lib/pkcs11"
# TODO: enable socket activation
"-Dsystemd=disabled"
];
# Tends to fail non-deterministically.
# - https://github.com/NixOS/nixpkgs/issues/55293
# - https://github.com/NixOS/nixpkgs/issues/51121
# - At least “gnome-keyring:gkm::xdg-store / xdg-trust” is still flaky on 48.beta.
doCheck = false;
strictDeps = true;
checkPhase = ''
runHook postCheck
export HOME=$(mktemp -d)
dbus-run-session \
--config-file=${dbus}/share/dbus-1/session.conf \
meson test --print-errorlogs
runHook preCheck
'';
# Use wrapped gnome-keyring-daemon with cap_ipc_lock=ep
postFixup = lib.optionalString useWrappedDaemon ''
files=($out/etc/xdg/autostart/* $out/share/dbus-1/services/*)
for file in ''${files[*]}; do
substituteInPlace $file \
--replace "$out/bin/gnome-keyring-daemon" "/run/wrappers/bin/gnome-keyring-daemon"
done
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-keyring";
};
};
meta = {
description = "Collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications";
homepage = "https://gitlab.gnome.org/GNOME/gnome-keyring";
changelog = "https://gitlab.gnome.org/GNOME/gnome-keyring/-/blob/${version}/NEWS?ref_type=tags";
license = [
# Most of the code (some is 2Plus)
lib.licenses.lgpl21Plus
# Some stragglers
lib.licenses.gpl2Plus
];
teams = [ lib.teams.gnome ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,66 @@
{
lib,
fetchFromGitLab,
python3,
wrapGAppsHook3,
gobject-introspection,
gtk3,
glib,
gst_all_1,
}:
python3.pkgs.buildPythonApplication rec {
pname = "gnome-keysign";
version = "1.3.0";
format = "setuptools";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "gnome-keysign";
rev = version;
hash = "sha256-k77z8Yligzs4rHpPckRGcC5qnCHynHQRjdDkzxwt1Ss=";
};
nativeBuildInputs = [
wrapGAppsHook3
gobject-introspection
]
++ (with python3.pkgs; [
babel
babelgladeextractor
]);
buildInputs = [
# TODO: add avahi support
gtk3
glib
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
(gst_all_1.gst-plugins-good.override { gtkSupport = true; })
(gst_all_1.gst-plugins-bad.override { enableZbar = true; }) # for zbar plug-in
];
propagatedBuildInputs = with python3.pkgs; [
dbus-python
future
gpgme
magic-wormhole
pygobject3
pybluez
qrcode
requests
twisted
];
# bunch of linting
doCheck = false;
meta = with lib; {
description = "GTK/GNOME application to use GnuPG for signing other peoples keys";
homepage = "https://gitlab.gnome.org/GNOME/gnome-keysign";
license = licenses.gpl3Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
vala,
gnome,
adwaita-icon-theme,
gtk3,
wrapGAppsHook3,
appstream-glib,
desktop-file-utils,
glib,
librsvg,
libxml2,
gettext,
itstool,
libgee,
libgnome-games-support,
meson,
ninja,
python3,
}:
stdenv.mkDerivation rec {
pname = "gnome-klotski";
version = "3.38.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-klotski/${lib.versions.majorMinor version}/gnome-klotski-${version}.tar.xz";
hash = "sha256-kWN4RWSfPKcJ0p9x7ndblG0REghyCfMiZOj60hoMoOI=";
};
nativeBuildInputs = [
pkg-config
vala
meson
ninja
python3
wrapGAppsHook3
gettext
itstool
libxml2
appstream-glib
desktop-file-utils
adwaita-icon-theme
];
buildInputs = [
glib
gtk3
librsvg
libgee
libgnome-games-support
];
postPatch = ''
chmod +x build-aux/meson_post_install.py
patchShebangs build-aux/meson_post_install.py
'';
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-klotski"; };
};
meta = {
homepage = "https://gitlab.gnome.org/GNOME/gnome-klotski";
changelog = "https://gitlab.gnome.org/GNOME/gnome-klotski/-/blob/${version}/NEWS?ref_type=tags";
description = "Slide blocks to solve the puzzle";
mainProgram = "gnome-klotski";
teams = [ lib.teams.gnome ];
license = lib.licenses.gpl2;
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,73 @@
{
stdenv,
lib,
fetchurl,
meson,
ninja,
pkg-config,
gnome,
glib,
gtk4,
desktop-file-utils,
wrapGAppsHook4,
gettext,
itstool,
libadwaita,
libxml2,
libxslt,
docbook-xsl-nons,
docbook_xml_dtd_43,
systemd,
gsettings-desktop-schemas,
}:
stdenv.mkDerivation rec {
pname = "gnome-logs";
version = "45.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-logs/${lib.versions.major version}/gnome-logs-${version}.tar.xz";
hash = "sha256-sooG6lyYvRfyhztQfwhbDKDemBATZhH08u6wmGFOzlI=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook4
gettext
itstool
libxml2
libxslt
docbook-xsl-nons
docbook_xml_dtd_43
glib
gtk4
desktop-file-utils
];
buildInputs = [
glib
gtk4
libadwaita
systemd
gsettings-desktop-schemas
];
mesonFlags = [ "-Dman=true" ];
doCheck = true;
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-logs"; };
};
meta = with lib; {
homepage = "https://apps.gnome.org/Logs/";
description = "Log viewer for the systemd journal";
mainProgram = "gnome-logs";
teams = [ teams.gnome ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,65 @@
{
stdenv,
lib,
fetchurl,
pkg-config,
gnome,
gtk4,
wrapGAppsHook4,
libadwaita,
librsvg,
gettext,
itstool,
libxml2,
meson,
ninja,
glib,
vala,
desktop-file-utils,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-mahjongg";
version = "48.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-mahjongg/${lib.versions.major finalAttrs.version}/gnome-mahjongg-${finalAttrs.version}.tar.xz";
hash = "sha256-3Ujg+BrKNL6tpGxdIhsyWRuO2B6dNhw6JY359rIiLIQ=";
};
nativeBuildInputs = [
meson
ninja
vala
desktop-file-utils
pkg-config
libxml2
itstool
gettext
wrapGAppsHook4
glib # for glib-compile-schemas
];
buildInputs = [
glib
gtk4
libadwaita
librsvg
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-mahjongg";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-mahjongg";
changelog = "https://gitlab.gnome.org/GNOME/gnome-mahjongg/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
description = "Disassemble a pile of tiles by removing matching pairs";
mainProgram = "gnome-mahjongg";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.unix;
};
})

View File

@@ -0,0 +1,125 @@
{
stdenv,
lib,
fetchurl,
meson,
ninja,
gettext,
pkg-config,
gnome,
glib,
gtk4,
gobject-introspection,
gdk-pixbuf,
librest_1_0,
libgweather,
geoclue2,
wrapGAppsHook4,
desktop-file-utils,
libportal,
libshumate,
libsecret,
libsoup_3,
gsettings-desktop-schemas,
gjs,
libadwaita,
geocode-glib_2,
tzdata,
writeText,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-maps";
version = "48.6";
src = fetchurl {
url = "mirror://gnome/sources/gnome-maps/${lib.versions.major finalAttrs.version}/gnome-maps-${finalAttrs.version}.tar.xz";
hash = "sha256-OtqaMVUXWlGdQV8Ll9D+129PS+uLYCEqAXaXoyy+gaY=";
};
doCheck = !stdenv.hostPlatform.isDarwin;
nativeBuildInputs = [
gettext
meson
ninja
pkg-config
wrapGAppsHook4
gobject-introspection
# For post install script
desktop-file-utils
glib
gtk4
];
buildInputs = [
gdk-pixbuf
glib
geoclue2
geocode-glib_2
gjs
gsettings-desktop-schemas
gtk4
libportal
libshumate
libgweather
libadwaita
librest_1_0
libsecret
libsoup_3
];
mesonFlags = [
"--cross-file=${writeText "crossfile.ini" ''
[binaries]
gjs = '${lib.getExe gjs}'
''}"
];
postPatch = ''
# The .service file isn't wrapped with the correct environment
# so misses GIR files when started. By re-pointing from the gjs
# entry point to the wrapped binary we get back to a wrapped
# binary.
substituteInPlace "data/org.gnome.Maps.service.in" \
--replace-fail "Exec=@pkgdatadir@/@app-id@" \
"Exec=$out/bin/gnome-maps"
'';
preCheck = ''
# time.js included by timeTest and translationsTest depends on org.gnome.desktop.interface schema.
export XDG_DATA_DIRS="${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:$XDG_DATA_DIRS"
export HOME=$(mktemp -d)
export TZDIR=${tzdata}/share/zoneinfo
# Our gobject-introspection patches make the shared library paths absolute
# in the GIR files. When running tests, the library is not yet installed,
# though, so we need to replace the absolute path with a local one during build.
# We are using a symlink that we will delete before installation.
mkdir -p $out/lib/gnome-maps
ln -s $PWD/lib/libgnome-maps.so.0 $out/lib/gnome-maps/libgnome-maps.so.0
'';
postCheck = ''
rm $out/lib/gnome-maps/libgnome-maps.so.0
'';
preFixup = ''
substituteInPlace "$out/share/applications/org.gnome.Maps.desktop" \
--replace-fail "Exec=gapplication launch org.gnome.Maps" \
"Exec=gnome-maps"
'';
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-maps"; };
};
meta = with lib; {
homepage = "https://apps.gnome.org/Maps/";
description = "Map application for GNOME 3";
mainProgram = "gnome-maps";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.unix;
};
})

View File

@@ -0,0 +1,49 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
gettext,
glib,
gobject-introspection,
gnome,
}:
stdenv.mkDerivation rec {
pname = "gnome-menus";
version = "3.38.1";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "EZipHNvc+yMt+U5x71QnYX0mAp4ye+P4YMOwkhxEgRg=";
};
makeFlags = [
"INTROSPECTION_GIRDIR=${placeholder "out"}/share/gir-1.0/"
"INTROSPECTION_TYPELIBDIR=${placeholder "out"}/lib/girepository-1.0"
];
nativeBuildInputs = [
pkg-config
gettext
gobject-introspection
];
buildInputs = [ glib ];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
versionPolicy = "none";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-menus";
description = "Library that implements freedesktops's Desktop Menu Specification in GNOME";
license = with licenses; [
gpl2
lgpl2
];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchurl,
meson,
ninja,
vala,
pkg-config,
gnome,
gtk4,
libadwaita,
wrapGAppsHook4,
librsvg,
gettext,
itstool,
libxml2,
libgnome-games-support_2_0,
libgee,
desktop-file-utils,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-mines";
version = "48.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-mines/${lib.versions.major finalAttrs.version}/gnome-mines-${finalAttrs.version}.tar.xz";
hash = "sha256-70stLd477GFBV+3eTZGJzGr+aSlSot1VsocOLmLtgQQ=";
};
nativeBuildInputs = [
meson
ninja
vala
pkg-config
gettext
itstool
libxml2
wrapGAppsHook4
desktop-file-utils
];
buildInputs = [
gtk4
libadwaita
libgnome-games-support_2_0
librsvg
libgee
];
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-mines";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-mines";
description = "Clear hidden mines from a minefield";
mainProgram = "gnome-mines";
teams = [ teams.gnome ];
license = licenses.gpl3;
platforms = platforms.unix;
};
})

View File

@@ -0,0 +1,55 @@
{
lib,
fetchFromGitHub,
stdenv,
meson,
ninja,
pkg-config,
cairo,
glib,
}:
stdenv.mkDerivation {
pname = "gnome-monitor-config";
version = "0-unstable-2023-09-26";
src = fetchFromGitHub {
owner = "jadahl";
repo = "gnome-monitor-config";
rev = "04b854e6411cd9ca75582c108aea63ae3c202f0e";
hash = "sha256-uVWhQ5SCyadDkeOd+pY2cYZAQ0ZvWMlgndcr1ZIEf50=";
};
strictDeps = true;
depsBuildBuild = [
pkg-config
];
nativeBuildInputs = [
meson
ninja
pkg-config
glib
];
buildInputs = [
cairo
glib
];
postPatch = ''
substituteInPlace src/meson.build \
--replace-fail "executable('gnome-monitor-config', src" \
"executable('gnome-monitor-config', src, install : true"
'';
meta = with lib; {
description = "Program to help manage GNOME monitor configuration";
homepage = "https://github.com/jadahl/gnome-monitor-config";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ aveltras ];
platforms = platforms.linux;
mainProgram = "gnome-monitor-config";
};
}

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchurl,
appstream-glib,
desktop-file-utils,
gettext,
glib,
gnome,
gtk3,
gusb,
libcanberra-gtk3,
libgudev,
meson,
ninja,
pkg-config,
wrapGAppsHook3,
polkit,
udisks,
}:
stdenv.mkDerivation rec {
pname = "gnome-multi-writer";
version = "3.35.90";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "07vgzjjdrxcp7h73z13h9agafxb4vmqx5i81bcfyw0ilw9kkdzmp";
};
nativeBuildInputs = [
appstream-glib
desktop-file-utils
gettext
meson
ninja
pkg-config
wrapGAppsHook3
];
buildInputs = [
glib
gtk3
gusb
libcanberra-gtk3
libgudev
polkit
udisks
];
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
};
meta = with lib; {
description = "Tool for writing an ISO file to multiple USB devices at once";
mainProgram = "gnome-multi-writer";
homepage = "https://gitlab.gnome.org/GNOME/gnome-multi-writer";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,111 @@
{
lib,
meson,
ninja,
gettext,
fetchurl,
gdk-pixbuf,
tinysparql,
libxml2,
python3,
libnotify,
wrapGAppsHook4,
libmediaart,
gobject-introspection,
gnome-online-accounts,
grilo,
grilo-plugins,
pkg-config,
gtk4,
pango,
glib,
desktop-file-utils,
appstream-glib,
itstool,
gnome,
gst_all_1,
libsoup_3,
libadwaita,
gsettings-desktop-schemas,
}:
python3.pkgs.buildPythonApplication rec {
pname = "gnome-music";
version = "48.1";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/gnome-music/${lib.versions.major version}/gnome-music-${version}.tar.xz";
hash = "sha256-QL9XMC2l2zNraIVS7dAU2/vitEUEGWYAcpTGwrDAeN4=";
};
nativeBuildInputs = [
meson
ninja
gettext
itstool
pkg-config
libxml2
wrapGAppsHook4
desktop-file-utils
appstream-glib
gobject-introspection
];
buildInputs = [
gtk4
pango
glib
libmediaart
gnome-online-accounts
gdk-pixbuf
python3
grilo
grilo-plugins
libnotify
libsoup_3
libadwaita
gsettings-desktop-schemas
tinysparql
]
++ (with gst_all_1; [
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-bad
gst-plugins-ugly
gst-libav
]);
pythonPath = with python3.pkgs; [
pycairo
dbus-python
pygobject3
];
# Prevent double wrapping, let the Python wrapper use the args in preFixup.
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
doCheck = false;
# handle setup hooks better
strictDeps = false;
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-music"; };
};
meta = with lib; {
homepage = "https://apps.gnome.org/Music/";
description = "Music player and management application for the GNOME desktop environment";
mainProgram = "gnome-music";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,87 @@
{
stdenv,
lib,
fetchurl,
fetchpatch,
desktop-file-utils,
itstool,
meson,
ninja,
pkg-config,
python3,
wrapGAppsHook3,
glib,
gtk3,
libgtop,
dnsutils,
iputils,
nmap,
inetutils,
gnome,
}:
stdenv.mkDerivation rec {
pname = "gnome-nettool";
version = "42.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-nettool/${lib.versions.major version}/gnome-nettool-${version}.tar.xz";
hash = "sha256-pU8p7vIDiu5pVRyLGcpPdY5eueIJCkvGtWM9/wGIdR8=";
};
patches = [
# Fix build with meson 0.61
# https://gitlab.gnome.org/GNOME/gnome-nettool/-/merge_requests/3
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-nettool/-/commit/1124c3e1fdb8472d30b7636500229aa16cdc1244.patch";
hash = "sha256-fbpfL8Xb1GsadpQzAdmu8FSPs++bsGCVdcwnzQWttGY=";
})
];
nativeBuildInputs = [
desktop-file-utils
itstool
meson
ninja
pkg-config
python3
wrapGAppsHook3
];
buildInputs = [
glib
gtk3
libgtop
];
postPatch = ''
chmod +x postinstall.py
patchShebangs postinstall.py
'';
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "${
lib.makeBinPath [
dnsutils # for dig
iputils # for ping
nmap # for nmap
inetutils # for ping6, traceroute, whois
]
}"
)
'';
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-nettool"; };
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-nettool";
description = "Collection of networking tools";
mainProgram = "gnome-nettool";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,95 @@
{
lib,
stdenv,
fetchurl,
# native
meson,
ninja,
pkg-config,
gettext,
desktop-file-utils,
appstream-glib,
wrapGAppsHook4,
python3,
# Not native
gst_all_1,
gsettings-desktop-schemas,
gtk4,
avahi,
glib,
networkmanager,
json-glib,
libadwaita,
libportal-gtk4,
libpulseaudio,
libsoup_3,
pipewire,
protobufc,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-network-displays";
version = "0.97.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-network-displays/${lib.versions.majorMinor finalAttrs.version}/gnome-network-displays-${finalAttrs.version}.tar.xz";
sha256 = "sha256-zexoyPmzJrqu5UU3Sowrk8qRnkj0uKQkYcsOsjmNqyc=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
desktop-file-utils
appstream-glib
wrapGAppsHook4
python3
];
buildInputs = [
avahi
gtk4
glib
gsettings-desktop-schemas
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-ugly
gst_all_1.gst-rtsp-server
gst_all_1.gst-vaapi
pipewire
networkmanager
json-glib
libadwaita
libportal-gtk4
libpulseaudio
libsoup_3
protobufc
];
/*
Without this flag, we get this include error:
/nix/store/...-gst-rtsp-server-1.22.8-dev/include/gstreamer-1.0/gst/rtsp-server/rtsp-media-factory.h:21:10: fatal error: gst/rtsp/gstrtspurl.h: No such file or directory
21 | #include <gst/rtsp/gstrtspurl.h>
Hence, this is not necessarily an upstream issue, but could be something
wrong with how our gst_all_1 depend on each other.
*/
CFLAGS = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
preConfigure = ''
patchShebangs ./build-aux/meson/postinstall.py
'';
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-network-displays";
description = "Miracast implementation for GNOME";
maintainers = with maintainers; [ doronbehar ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
mainProgram = "gnome-network-displays";
};
})

View File

@@ -0,0 +1,73 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
gnome,
gsound,
gtk4,
wrapGAppsHook4,
librsvg,
gettext,
itstool,
vala,
libxml2,
libadwaita,
libgee,
libgnome-games-support_2_0,
meson,
ninja,
desktop-file-utils,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-nibbles";
version = "4.2.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-nibbles/${lib.versions.majorMinor finalAttrs.version}/gnome-nibbles-${finalAttrs.version}.tar.xz";
hash = "sha256-Pkofm68cV7joNd7fCGnjJy5lNKHdacTib64QxCAKrwA=";
};
nativeBuildInputs = [
meson
ninja
vala
pkg-config
wrapGAppsHook4
gettext
itstool
libxml2
desktop-file-utils
];
buildInputs = [
gsound
gtk4
librsvg
libadwaita
libgee
libgnome-games-support_2_0
];
# The "we can link with libadwaita?" valac.links() check fails otherwise.
# Command line: `valac testfile.vala --pkg=libadwaita-1 --Xcc=-w --Xcc=-DVALA_STRICT_C` -> 1
# testfile.vala.c:50:46: error: passing argument 2 of 'adw_about_dialog_set_developers'
# from incompatible pointer type [-Wincompatible-pointer-types]
# 50 | adw_about_dialog_set_developers (ad, s);
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types";
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-nibbles"; };
};
meta = with lib; {
description = "Guide a worm around a maze";
mainProgram = "gnome-nibbles";
homepage = "https://gitlab.gnome.org/GNOME/gnome-nibbles";
changelog = "https://gitlab.gnome.org/GNOME/gnome-nibbles/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,106 @@
{
stdenv,
lib,
meson,
ninja,
gettext,
fetchurl,
fetchpatch,
pkg-config,
wrapGAppsHook3,
itstool,
desktop-file-utils,
python3,
glib,
gtk3,
evolution-data-server,
gnome-online-accounts,
json-glib,
libuuid,
curl,
libhandy,
webkitgtk_4_1,
gnome,
adwaita-icon-theme,
libxml2,
gsettings-desktop-schemas,
tinysparql,
}:
stdenv.mkDerivation rec {
pname = "gnome-notes";
version = "40.1";
src = fetchurl {
url = "mirror://gnome/sources/bijiben/${lib.versions.major version}/bijiben-${version}.tar.xz";
hash = "sha256-BaBvsGbpgC9fJKtnsNL3FFGGY2O6Pjn593X9SadYe78=";
};
patches = [
# Fix build with meson 0.61
# data/appdata/meson.build:3:5: ERROR: Function does not take positional arguments.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-notes/-/commit/994af76ce5144062d55d141129bf6bf5fab002ee.patch";
hash = "sha256-z7dPOLZzaqvdqUIDy6+V3dKossRbG0EDjBu2oJCF6b4=";
})
# build: Depend on webkit2gtk-4.1
# https://gitlab.gnome.org/GNOME/gnome-notes/-/merge_requests/200
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-notes/-/commit/0791507873c96d0463cd0c83108415541f854edd.patch";
hash = "sha256-TwCi9sDudeiOjrH2VevAynxvy/WTmwB2HrWqhviPg8o=";
})
];
doCheck = true;
postPatch = ''
chmod +x build-aux/meson_post_install.py
patchShebangs build-aux/meson_post_install.py
'';
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
itstool
libxml2
desktop-file-utils
python3
wrapGAppsHook3
];
buildInputs = [
glib
gtk3
json-glib
libuuid
curl
libhandy
webkitgtk_4_1
tinysparql
gnome-online-accounts
gsettings-desktop-schemas
evolution-data-server
adwaita-icon-theme
];
mesonFlags = [ "-Dupdate_mimedb=false" ];
passthru = {
updateScript = gnome.updateScript {
packageName = "bijiben";
attrPath = "gnome-notes";
};
};
meta = with lib; {
description = "Note editor designed to remain simple to use";
mainProgram = "bijiben";
homepage = "https://gitlab.gnome.org/GNOME/gnome-notes";
license = licenses.gpl3;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,81 @@
{
stdenv,
lib,
fetchFromGitLab,
buildPackages,
cargo,
gettext,
meson,
ninja,
pkg-config,
rustPlatform,
rustc,
wrapGAppsHook4,
appstream-glib,
desktop-file-utils,
glib,
gtk4,
gdk-pixbuf,
libadwaita,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-obfuscate";
version = "0.0.10";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "Obfuscate";
rev = finalAttrs.version;
hash = "sha256-/Plvvn1tle8t/bsPcsamn5d81CqnyGCyGYPF6j6U5NI=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-Llgn+dYNKZ9Mles9f9Xor+GZoCCQ0cERkXz4MicZglY=";
};
env = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
# Set the location to gettext to ensure the nixpkgs one on Darwin instead of the vendored one.
# The vendored gettext does not build with clang 16.
GETTEXT_BIN_DIR = "${lib.getBin buildPackages.gettext}/bin";
GETTEXT_INCLUDE_DIR = "${lib.getDev gettext}/include";
GETTEXT_LIB_DIR = "${lib.getLib gettext}/lib";
};
nativeBuildInputs = [
gettext
meson
ninja
pkg-config
rustPlatform.cargoSetupHook
cargo
rustc
wrapGAppsHook4
appstream-glib
desktop-file-utils
];
buildInputs = [
glib
gtk4
gdk-pixbuf
libadwaita
];
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Censor private information";
homepage = "https://gitlab.gnome.org/World/obfuscate";
license = licenses.gpl3Plus;
platforms = platforms.all;
mainProgram = "obfuscate";
maintainers = with maintainers; [ fgaz ];
teams = [ teams.gnome-circle ];
};
})

View File

@@ -0,0 +1,49 @@
{
stdenv,
lib,
fetchFromGitHub,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
glib,
glib-networking,
gnome-online-accounts,
gtk4,
libadwaita,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-online-accounts-gtk";
version = "3.50.7";
src = fetchFromGitHub {
owner = "xapp-project";
repo = "gnome-online-accounts-gtk";
rev = finalAttrs.version;
hash = "sha256-CFPaCx3tfOIoovm9AXofBdZzl/Rxiz5RVOrVKCuxZbI=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook4
];
buildInputs = [
glib
glib-networking
gnome-online-accounts
gtk4
libadwaita # for goa-backend
];
meta = with lib; {
description = "Online accounts configuration utility";
homepage = "https://github.com/xapp-project/gnome-online-accounts-gtk";
license = licenses.gpl3Plus;
platforms = platforms.linux;
teams = [ teams.cinnamon ];
};
})

View File

@@ -0,0 +1,112 @@
{
stdenv,
lib,
fetchurl,
pkg-config,
vala,
glib,
meson,
ninja,
libxslt,
gtk4,
enableBackend ? stdenv.hostPlatform.isLinux,
json-glib,
keyutils,
libadwaita,
librest_1_0,
libxml2,
libsecret,
gobject-introspection,
gettext,
gi-docgen,
glib-networking,
libsoup_3,
docbook-xsl-nons,
gnome,
gcr_4,
libkrb5,
gvfs,
dbus,
wrapGAppsHook4,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-online-accounts";
version = "3.54.5";
outputs = [
"out"
"dev"
]
++ lib.optionals enableBackend [
"man"
"devdoc"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-online-accounts/${lib.versions.majorMinor finalAttrs.version}/gnome-online-accounts-${finalAttrs.version}.tar.xz";
hash = "sha256-6PEntTIpWimRLRwAc0kx35r/pOv8RK0N5cKWw9J9LJU=";
};
mesonFlags = [
"-Dfedora=false" # not useful in NixOS or for NixOS users.
"-Dgoabackend=${lib.boolToString enableBackend}"
"-Ddocumentation=${lib.boolToString enableBackend}"
"-Dman=${lib.boolToString enableBackend}"
"-Dwebdav=true"
];
nativeBuildInputs = [
docbook-xsl-nons # for goa-daemon.xml
gettext
gi-docgen
gobject-introspection
libxslt
meson
ninja
pkg-config
vala
wrapGAppsHook4
];
buildInputs = [
dbus
gcr_4
glib
glib-networking
gtk4
libadwaita
gvfs # OwnCloud, Google Drive
json-glib
libkrb5
librest_1_0
libxml2
libsecret
libsoup_3
]
++ lib.optionals enableBackend [
keyutils
];
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput "share/doc" "$devdoc"
'';
separateDebugInfo = true;
passthru = {
updateScript = gnome.updateScript {
versionPolicy = "odd-unstable";
packageName = "gnome-online-accounts";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-online-accounts";
description = "Single sign-on framework for GNOME";
platforms = platforms.unix;
license = licenses.lgpl2Plus;
teams = [ teams.gnome ];
};
})

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
meson,
ninja,
gettext,
gnome,
packagekit,
polkit,
gtk3,
systemd,
wrapGAppsHook3,
desktop-file-utils,
}:
stdenv.mkDerivation rec {
pname = "gnome-packagekit";
version = "43.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-packagekit/${lib.versions.major version}/gnome-packagekit-${version}.tar.xz";
hash = "sha256-zaRVplKpI7LqL3Axa9D92Clve2Lu8/r9nOUMjmbF8ZU=";
};
nativeBuildInputs = [
pkg-config
meson
ninja
gettext
wrapGAppsHook3
desktop-file-utils
];
buildInputs = [
gtk3
packagekit
systemd
polkit
];
postPatch = ''
patchShebangs meson_post_install.sh
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-packagekit";
};
};
meta = with lib; {
homepage = "https://www.freedesktop.org/software/PackageKit/";
platforms = platforms.linux;
teams = [ teams.gnome ];
license = licenses.gpl2;
description = "Tools for installing software on the GNOME desktop using PackageKit";
};
}

View File

@@ -0,0 +1,31 @@
diff --git a/gnome-panel/gp-module-manager.c b/gnome-panel/gp-module-manager.c
index 58447fd84..7af99de7d 100644
--- a/gnome-panel/gp-module-manager.c
+++ b/gnome-panel/gp-module-manager.c
@@ -49,8 +49,16 @@ load_modules (GpModuleManager *self)
{
GDir *dir;
const gchar *name;
+ const gchar *modules_dir;
- dir = g_dir_open (MODULESDIR, 0, NULL);
+ modules_dir = g_getenv ("NIX_GNOME_PANEL_MODULESDIR");
+
+ if (!modules_dir) {
+ g_warning ("The NIX_GNOME_PANEL_MODULESDIR environment variable was not set, modules will not be loaded.");
+ return;
+ }
+
+ dir = g_dir_open (modules_dir, 0, NULL);
if (!dir)
return;
@@ -63,7 +71,7 @@ load_modules (GpModuleManager *self)
if (!g_str_has_suffix (name, ".so"))
continue;
- path = g_build_filename (MODULESDIR, name, NULL);
+ path = g_build_filename (modules_dir, name, NULL);
module = gp_module_new_from_path (path);
g_free (path);

View File

@@ -0,0 +1,103 @@
{
stdenv,
lib,
fetchurl,
autoreconfHook,
dconf,
evolution-data-server,
gdm,
geocode-glib_2,
gettext,
glib,
gnome-desktop,
gnome-menus,
gnome,
gtk3,
itstool,
libgweather,
libwnck,
libxml2,
pkg-config,
polkit,
systemd,
wrapGAppsHook3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-panel";
version = "3.56.0";
outputs = [
"out"
"dev"
"man"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-panel/${lib.versions.majorMinor finalAttrs.version}/gnome-panel-${finalAttrs.version}.tar.xz";
hash = "sha256-UoptZ92E7a5sgKXuZW+E+9lC87Nx1g+XottgZc9P0XA=";
};
patches = [
# Load modules from path in `NIX_GNOME_PANEL_MODULESDIR` environment variable
# instead of gnome-panels libdir so that the NixOS module can make gnome-panel
# load modules from other packages as well.
./modulesdir-env-var.patch
];
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${gnome-menus}/share"
--prefix XDG_CONFIG_DIRS : "${gnome-menus}/etc/xdg"
)
'';
nativeBuildInputs = [
autoreconfHook
gettext
itstool
libxml2
pkg-config
wrapGAppsHook3
];
buildInputs = [
dconf
evolution-data-server
gdm
geocode-glib_2
glib
gnome-desktop
gnome-menus
gtk3
libgweather
libwnck
polkit
systemd
];
configureFlags = [
"--enable-eds"
];
enableParallelBuilding = true;
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-panel";
versionPolicy = "odd-unstable";
};
};
meta = with lib; {
description = "Component of Gnome Flashback that provides panels and default applets for the desktop";
mainProgram = "gnome-panel";
homepage = "https://gitlab.gnome.org/GNOME/gnome-panel";
changelog = "https://gitlab.gnome.org/GNOME/gnome-panel/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,72 @@
{
stdenv,
lib,
buildEnv,
gnome-panel,
gnome-flashback,
xorg,
glib,
wrapGAppsHook3,
panelModulePackages ? [ ],
}:
let
# We always want to find the built-in panel applets.
selectedPanelModulePackages = [
gnome-panel
gnome-flashback
]
++ panelModulePackages;
panelModulesEnv = buildEnv {
name = "gnome-panel-modules-env";
paths = selectedPanelModulePackages;
pathsToLink = [ "/lib/gnome-panel/modules" ];
};
in
stdenv.mkDerivation {
pname = "${gnome-panel.pname}-with-modules";
inherit (gnome-panel) version;
nativeBuildInputs = [
glib
wrapGAppsHook3
];
buildInputs =
selectedPanelModulePackages ++ lib.forEach selectedPanelModulePackages (x: x.buildInputs or [ ]);
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
preferLocalBuild = true;
allowSubstitutes = false;
installPhase = ''
runHook preInstall
mkdir -p $out
${xorg.lndir}/bin/lndir -silent ${gnome-panel} $out
rm -r $out/lib/gnome-panel/modules
${xorg.lndir}/bin/lndir -silent ${panelModulesEnv} $out
rm $out/share/applications/gnome-panel.desktop
ln -s ${gnome-panel}/share/applications/gnome-panel.desktop \
$out/share/applications/gnome-panel.desktop
runHook postInstall
'';
preFixup = ''
gappsWrapperArgs+=(
--set NIX_GNOME_PANEL_MODULESDIR "$out/lib/gnome-panel/modules"
)
'';
meta = gnome-panel.meta // {
outputsToInstall = [ "out" ];
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
stdenv,
fetchFromGitHub,
python3Packages,
wrapGAppsHook3,
gtk3,
gobject-introspection,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-pass-search-provider";
version = "1.4.0";
src = fetchFromGitHub {
owner = "jle64";
repo = "gnome-pass-search-provider";
rev = finalAttrs.version;
hash = "sha256-PDR8fbDoT8IkHiTopQp0zd4DQg7JlacA6NdKYKYmrWw=";
};
nativeBuildInputs = [
python3Packages.wrapPython
wrapGAppsHook3
];
propagatedBuildInputs = [
python3Packages.dbus-python
python3Packages.pygobject3
python3Packages.fuzzywuzzy
python3Packages.levenshtein
gtk3
gobject-introspection
];
env = {
LIBDIR = placeholder "out" + "/lib";
DATADIR = placeholder "out" + "/share";
};
postPatch = ''
substituteInPlace conf/org.gnome.Pass.SearchProvider.service.{dbus,systemd} \
--replace-fail "/usr/lib" "$LIBDIR"
'';
installPhase = ''
runHook preInstall
bash ./install.sh
runHook postInstall
'';
postFixup = ''
makeWrapperArgs=( "''${gappsWrapperArgs[@]}" )
wrapPythonProgramsIn "$out/lib" "$out $propagatedBuildInputs"
'';
meta = {
description = "Pass password manager search provider for gnome-shell";
homepage = "https://github.com/jle64/gnome-pass-search-provider";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ lelgenio ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,23 @@
diff --git a/meson.build b/meson.build
index dee932dc..f8851913 100644
--- a/meson.build
+++ b/meson.build
@@ -16,8 +16,8 @@
photos_docdir = join_paths(photos_datadir, 'doc', meson.project_name())
photos_libdir = join_paths(photos_prefix, get_option('libdir'), meson.project_name())
-photos_installed_test_metadir = join_paths(photos_datadir, 'installed-tests', meson.project_name())
-photos_installed_test_execdir = join_paths(photos_libexecdir, 'installed-tests', meson.project_name())
+photos_installed_test_metadir = join_paths(get_option('installed_test_prefix'), 'share', 'installed-tests', meson.project_name())
+photos_installed_test_execdir = join_paths(get_option('installed_test_prefix'), 'libexec', 'installed-tests', meson.project_name())
photos_namespace = 'org.gnome.Photos'
diff --git a/meson_options.txt b/meson_options.txt
index f34b5cc0..8e09970b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,2 +1,3 @@
option('dogtail', type: 'boolean', value: true, description: 'test using dogtail')
option('installed_tests', type: 'boolean', value: false, description: 'Enable installation of some test cases')
+option('installed_test_prefix', type: 'string', value: '', description: 'Prefix for installed tests')

View File

@@ -0,0 +1,128 @@
{
stdenv,
lib,
fetchurl,
at-spi2-core,
babl,
dbus,
desktop-file-utils,
dleyna,
gdk-pixbuf,
gegl,
geocode-glib_2,
gettext,
gexiv2,
glib,
gnome-online-accounts,
gnome,
gobject-introspection,
gsettings-desktop-schemas,
gtk3,
itstool,
libdazzle,
libportal-gtk3,
libhandy,
libxml2,
meson,
ninja,
nixosTests,
pkg-config,
python3,
tinysparql,
localsearch,
wrapGAppsHook3,
}:
stdenv.mkDerivation rec {
pname = "gnome-photos";
version = "44.0";
outputs = [
"out"
"installedTests"
];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "544hA5fTxigJxs1VIdpuzLShHd6lvyr4YypH9Npcgp4=";
};
patches = [
./installed-tests-path.patch
];
nativeBuildInputs = [
desktop-file-utils
gettext
gobject-introspection # for setup hook
glib # for setup hook
itstool
libxml2
meson
ninja
pkg-config
(python3.withPackages (
pkgs: with pkgs; [
dogtail
pygobject3
pyatspi
]
))
wrapGAppsHook3
];
buildInputs = [
babl
dbus
dleyna
gdk-pixbuf
gegl
geocode-glib_2
gexiv2
glib
gnome-online-accounts
gsettings-desktop-schemas
gtk3
libdazzle
libportal-gtk3
libhandy
tinysparql
localsearch # For 'org.freedesktop.Tracker.Miner.Files' GSettings schema
at-spi2-core # for tests
];
mesonFlags = [
"-Dinstalled_tests=true"
"-Dinstalled_test_prefix=${placeholder "installedTests"}"
];
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
patchShebangs tests/basic.py
'';
postFixup = ''
wrapGApp "${placeholder "installedTests"}/libexec/installed-tests/gnome-photos/basic.py"
'';
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
};
tests = {
installed-tests = nixosTests.installed-tests.gnome-photos;
};
};
meta = with lib; {
description = "Access, organize and share your photos";
mainProgram = "gnome-photos";
homepage = "https://gitlab.gnome.org/GNOME/gnome-photos";
license = licenses.gpl3Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,90 @@
{
stdenv,
lib,
rustPlatform,
fetchFromGitLab,
cargo,
meson,
ninja,
gettext,
pkg-config,
rustc,
glib,
gtk4,
libadwaita,
appstream-glib,
desktop-file-utils,
dbus,
openssl,
glib-networking,
sqlite,
gst_all_1,
wrapGAppsHook4,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-podcasts";
version = "25.2";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "podcasts";
tag = finalAttrs.version;
hash = "sha256-pVGut7kmwybPrR7ZaXPoDx03FOYeZSvchXl++2cdPck=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-HKU4rd5OzxhYcN6QKiTVj+NnkdyG8T+D6X1txznZ/xM=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
cargo
rustPlatform.cargoSetupHook
rustc
wrapGAppsHook4
appstream-glib
desktop-file-utils
];
buildInputs = [
glib
gtk4
libadwaita
gettext
dbus
openssl
glib-networking
sqlite
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-good
];
# tests require network
doCheck = false;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Listen to your favorite podcasts";
mainProgram = "gnome-podcasts";
homepage = "https://apps.gnome.org/Podcasts/";
changelog = "https://gitlab.gnome.org/World/podcasts/-/releases/${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
teams = [
lib.teams.gnome
lib.teams.gnome-circle
];
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/gnome-podcasts.x86_64-darwin
};
})

View File

@@ -0,0 +1,27 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage {
pname = "gnome-pomodoro-watcher";
version = "0-unstable-2023-12-20";
src = fetchFromGitHub {
owner = "sei40kr";
repo = "gnome-pomodoro-watcher";
rev = "7c1443d470c9a6bfc07fd9d26a138f136de96515";
hash = "sha256-VQjjLK2gnxbf7CzRjNrS/562fBGVAFMTxj6F71hOXrU=";
};
cargoHash = "sha256-eqkdiNww0CBZ0ZfoirZSvpL7i/4b1XjN3NZFPOGkPko=";
meta = with lib; {
description = "Helper tool to watch GNOME Pomodoro timer";
homepage = "https://github.com/sei40kr/gnome-pomodoro-watcher";
license = licenses.mit;
maintainers = with maintainers; [ sei40kr ];
mainProgram = "gnome-pomodoro-watcher";
};
}

View File

@@ -0,0 +1,23 @@
diff --git a/meson.build b/meson.build
index 09857a1..a07d27c 100644
--- a/meson.build
+++ b/meson.build
@@ -40,7 +40,8 @@ add_project_arguments(
)
# We are going to use these variables later on for the plugins
-gschema_dir = get_option('prefix') / get_option('datadir') / 'glib-2.0' / 'schemas'
+nix_package_name = '@pname@' + '-' + '@version@'
+gschema_dir = get_option('prefix') / get_option('datadir') / 'gsettings-schemas' / nix_package_name / 'glib-2.0' / 'schemas'
plugin_libdir = get_option('prefix') / get_option('libdir') / meson.project_name() / 'plugins'
extension_dir = get_option('prefix') / get_option('datadir') / 'gnome-shell' / 'extensions' / 'pomodoro@arun.codito.in'
@@ -134,7 +135,7 @@
subdir('tests')
gnome.post_install(
- glib_compile_schemas: true,
+ glib_compile_schemas: false,
gtk_update_icon_cache: true,
update_desktop_database: true,
)

View File

@@ -0,0 +1,92 @@
{
lib,
stdenv,
fetchFromGitHub,
replaceVars,
meson,
ninja,
pkg-config,
wrapGAppsHook3,
desktop-file-utils,
libcanberra,
gst_all_1,
vala,
gtk3,
gom,
sqlite,
libxml2,
glib,
gobject-introspection,
json-glib,
libpeas,
gsettings-desktop-schemas,
gettext,
}:
stdenv.mkDerivation rec {
pname = "gnome-pomodoro";
version = "0.28.0";
src = fetchFromGitHub {
owner = "gnome-pomodoro";
repo = "gnome-pomodoro";
rev = version;
hash = "sha256-cVuBJ1Rwh/mjlFKKRJkKmdtDHdWNc6uiEE3ywCesirU=";
};
patches = [
# Our glib setup hooks moves GSettings schemas to a subdirectory to prevent conflicts.
# We need to patch the build script so that the extension can find them.
(replaceVars ./fix-schema-path.patch {
inherit pname version;
})
];
# Manually compile schemas for package since meson option
# gnome.post_install(glib_compile_schemas) used by package tries to compile in
# the wrong dir.
preFixup = ''
glib-compile-schemas ${glib.makeSchemaPath "$out" "${pname}-${version}"}
'';
nativeBuildInputs = [
meson
ninja
gettext
gobject-introspection
libxml2
pkg-config
vala
wrapGAppsHook3
desktop-file-utils
];
buildInputs = [
glib
gom
gsettings-desktop-schemas
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gstreamer
gtk3
json-glib
libcanberra
libpeas
sqlite
];
meta = with lib; {
homepage = "https://gnomepomodoro.org/";
description = "Time management utility for GNOME based on the pomodoro technique";
mainProgram = "gnome-pomodoro";
longDescription = ''
This GNOME utility helps to manage time according to Pomodoro Technique.
It intends to improve productivity and focus by taking short breaks.
'';
maintainers = with maintainers; [
aleksana
herschenglime
];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,58 @@
{
stdenv,
lib,
gettext,
fetchurl,
pkg-config,
gtk3,
glib,
meson,
ninja,
upower,
python3,
desktop-file-utils,
wrapGAppsHook3,
gnome,
}:
stdenv.mkDerivation rec {
pname = "gnome-power-manager";
version = "43.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-power-manager/${lib.versions.major version}/gnome-power-manager-${version}.tar.xz";
hash = "sha256-faq0i73bMOnfKrplDLYNBeZnyfiFrOagoeeVDgy90y8=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook3
gettext
# needed by meson_post_install.sh
python3
glib
desktop-file-utils
];
buildInputs = [
gtk3
glib
upower
];
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-power-manager"; };
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-power-manager";
description = "View battery and power statistics provided by UPower";
mainProgram = "gnome-power-statistics";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,36 @@
{
dbus,
fetchFromGitHub,
lib,
pkg-config,
rustPlatform,
}:
let
version = "0.1.1";
in
rustPlatform.buildRustPackage {
pname = "gnome-randr";
inherit version;
src = fetchFromGitHub {
owner = "maxwellainatchi";
repo = "gnome-randr-rust";
rev = "v" + version;
sha256 = "sha256-mciHgBEOCFjRA4MSoEdP7bIag0KE+zRbk4wOkB2PAn0=";
};
cargoHash = "sha256-FnJU/KtZrSXBEf7gjvlME52by3Fj7DwxmxUL4xXNBmk=";
buildInputs = [ dbus ];
nativeBuildInputs = [ pkg-config ];
meta = with lib; {
description = "Xrandr-like CLI for configuring displays on GNOME/Wayland, on distros that don't support `wlr-randr`";
homepage = "https://github.com/maxwellainatchi/gnome-randr-rust";
license = licenses.mit;
maintainers = [ maintainers.roberth ];
platforms = platforms.linux;
mainProgram = "gnome-randr";
};
}

View File

@@ -0,0 +1,89 @@
{
stdenv,
lib,
fetchFromGitLab,
fetchpatch,
meson,
ninja,
pkg-config,
desktop-file-utils,
gettext,
itstool,
python3,
wrapGAppsHook3,
gtk3,
glib,
libsoup_2_4,
gnome-online-accounts,
librest,
json-glib,
gnome-autoar,
gspell,
libcanberra,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "gnome-recipes";
version = "2.0.4";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "recipes";
rev = version;
fetchSubmodules = true;
sha256 = "GyFOwEYmipQdFLtTXn7+NvhDTzxBlOAghr3cZT4QpQw=";
};
patches = [
# gcc-14 build failure fix
(fetchpatch {
name = "gcc-14.patch";
url = "https://gitlab.gnome.org/GNOME/recipes/-/commit/c0304675f63a33737b24fdf37e06c6b154a91a31.patch";
hash = "sha256-YTf4NDwUiU/q96RAXKTO499pW9sPrgh8IvdPBPEnV6Q=";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
desktop-file-utils
gettext
itstool
python3
wrapGAppsHook3
];
buildInputs = [
gtk3
glib
libsoup_2_4
gnome-online-accounts
librest
json-glib
gnome-autoar
gspell
libcanberra
];
postPatch = ''
chmod +x src/list_to_c.py
patchShebangs src/list_to_c.py
patchShebangs meson_post_install.py
'';
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Recipe management application for GNOME";
mainProgram = "gnome-recipes";
homepage = "https://gitlab.gnome.org/GNOME/recipes";
teams = [ teams.gnome ];
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,101 @@
{
stdenv,
lib,
fetchurl,
cairo,
meson,
ninja,
pkg-config,
python3,
asciidoc,
wrapGAppsHook3,
glib,
libei,
libepoxy,
libdrm,
libva,
vulkan-loader,
shaderc,
nv-codec-headers-11,
pipewire,
systemd,
libsecret,
libnotify,
libopus,
libxkbcommon,
gdk-pixbuf,
freerdp,
fdk_aac,
tpm2-tss,
fuse3,
gnome,
polkit,
}:
stdenv.mkDerivation rec {
pname = "gnome-remote-desktop";
version = "48.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-remote-desktop/${lib.versions.major version}/gnome-remote-desktop-${version}.tar.xz";
hash = "sha256-vPN3D8oPrtovrjsaP/by6QoCd492pC6P0QPK4YYo9PI=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
python3
asciidoc
shaderc # for glslc
wrapGAppsHook3
];
buildInputs = [
cairo
freerdp
fdk_aac
tpm2-tss
fuse3
gdk-pixbuf # For libnotify
glib
libei
libepoxy
libdrm
libva
vulkan-loader
nv-codec-headers-11
libnotify
libopus
libsecret
libxkbcommon
pipewire
systemd
polkit # For polkit-gobject
];
mesonFlags = [
"-Dconf_dir=/etc/gnome-remote-desktop"
"-Dsystemd_user_unit_dir=${placeholder "out"}/lib/systemd/user"
"-Dsystemd_system_unit_dir=${placeholder "out"}/lib/systemd/system"
"-Dsystemd_sysusers_dir=${placeholder "out"}/lib/sysusers.d"
"-Dsystemd_tmpfiles_dir=${placeholder "out"}/lib/tmpfiles.d"
"-Dtests=false" # Too deep of a rabbit hole.
# TODO: investigate who should be fixed here.
"-Dc_args=-I${freerdp}/include/winpr3"
];
passthru = {
updateScript = gnome.updateScript { packageName = "gnome-remote-desktop"; };
};
meta = {
homepage = "https://gitlab.gnome.org/GNOME/gnome-remote-desktop";
changelog = "https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/blob/${version}/NEWS?ref_type=tags";
description = "GNOME Remote Desktop server";
mainProgram = "grdctl";
teams = [ lib.teams.gnome ];
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,110 @@
{
lib,
stdenv,
cargo,
desktop-file-utils,
fetchurl,
glib,
gnome,
gtk4,
itstool,
libadwaita,
librsvg,
libxml2,
gst_all_1,
meson,
ninja,
pkg-config,
rustc,
rustPlatform,
wrapGAppsHook4,
_experimental-update-script-combinators,
common-updater-scripts,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-robots";
version = "41.2";
src = fetchurl {
url = "mirror://gnome/sources/gnome-robots/${lib.versions.major finalAttrs.version}/gnome-robots-${finalAttrs.version}.tar.xz";
hash = "sha256-kSHC+DaBIEP+7yumYc1dD9SOPWMZxDlBuf3RWLmw65E=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) src;
name = "gnome-robots-${finalAttrs.version}";
hash = "sha256-1h9+XPmkapzdYsI6qtPPHtlwEEmyIzaAogLiYvIHJak=";
};
nativeBuildInputs = [
pkg-config
meson
ninja
cargo
rustc
rustPlatform.cargoSetupHook
gtk4 # for gtk4-update-icon-cache
wrapGAppsHook4
itstool
desktop-file-utils
];
buildInputs = [
glib
gtk4
libadwaita
librsvg
libxml2
# Sound playback, not checked at build time.
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
];
preFixup = ''
# Seal GStreamer plug-ins so that we can notice when they are missing.
gappsWrapperArgs+=(--set "GST_PLUGIN_SYSTEM_PATH_1_0" "$GST_PLUGIN_SYSTEM_PATH_1_0")
unset GST_PLUGIN_SYSTEM_PATH_1_0
'';
passthru = {
updateScript =
let
updateSource = gnome.updateScript {
packageName = "gnome-robots";
};
updateLockfile = {
command = [
"sh"
"-c"
''
PATH=${
lib.makeBinPath [
common-updater-scripts
]
}
update-source-version gnome-robots --ignore-same-version --source-key=cargoDeps.vendorStaging > /dev/null
''
];
# Experimental feature: do not copy!
supportedFeatures = [ "silent" ];
};
in
_experimental-update-script-combinators.sequence [
updateSource
updateLockfile
];
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-robots";
changelog = "https://gitlab.gnome.org/GNOME/gnome-robots/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
description = "Avoid the robots and make them crash into each other";
mainProgram = "gnome-robots";
teams = [ teams.gnome ];
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
})

View File

@@ -0,0 +1,84 @@
{
stdenv,
lib,
gettext,
libxml2,
libhandy,
fetchurl,
fetchpatch,
pkg-config,
libcanberra-gtk3,
gtk3,
glib,
meson,
ninja,
python3,
wrapGAppsHook3,
appstream-glib,
desktop-file-utils,
gnome,
adwaita-icon-theme,
gsettings-desktop-schemas,
}:
stdenv.mkDerivation rec {
pname = "gnome-screenshot";
version = "41.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-screenshot/${lib.versions.major version}/gnome-screenshot-${version}.tar.xz";
hash = "sha256-Stt97JJkKPdCY9V5ZnPPFC5HILbnaPVGio0JM/mMlZc=";
};
patches = [
# Fix build with meson 0.61
# https://gitlab.gnome.org/GNOME/gnome-screenshot/-/issues/186
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gnome-screenshot/-/commit/b60dad3c2536c17bd201f74ad8e40eb74385ed9f.patch";
hash = "sha256-Js83h/3xxcw2hsgjzGa5lAYFXVrt6MPhXOTh5dZTx/w=";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
appstream-glib
libxml2
desktop-file-utils
python3
wrapGAppsHook3
];
buildInputs = [
gtk3
glib
libcanberra-gtk3
libhandy
adwaita-icon-theme
gsettings-desktop-schemas
];
doCheck = true;
postPatch = ''
chmod +x build-aux/postinstall.py # patchShebangs requires executable file
patchShebangs build-aux/postinstall.py
'';
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-screenshot";
};
};
meta = with lib; {
homepage = "https://gitlab.gnome.org/GNOME/gnome-screenshot";
description = "Utility used in the GNOME desktop environment for taking screenshots";
mainProgram = "gnome-screenshot";
teams = [ teams.gnome ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,82 @@
{
lib,
meson,
ninja,
pkg-config,
gettext,
fetchFromGitLab,
python3Packages,
wrapGAppsHook4,
gtk4,
glib,
gdk-pixbuf,
gobject-introspection,
desktop-file-utils,
appstream-glib,
libadwaita,
nix-update-script,
}:
python3Packages.buildPythonApplication rec {
pname = "gnome-secrets";
version = "10.4";
format = "other";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "secrets";
rev = version;
hash = "sha256-FyBtw7Gkvd5XONkM7OVGxE+S5FpuUIl7KWLFHoQeoN4=";
};
nativeBuildInputs = [
meson
ninja
gettext
pkg-config
wrapGAppsHook4
desktop-file-utils
appstream-glib
gobject-introspection
];
buildInputs = [
gtk4
glib
gdk-pixbuf
libadwaita
];
propagatedBuildInputs = with python3Packages; [
pygobject3
construct
pykcs11
pykeepass
pyotp
validators
yubico
zxcvbn-rs-py
];
# Prevent double wrapping, let the Python wrapper use the args in preFixup.
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Password manager for GNOME which makes use of the KeePass v.4 format";
homepage = "https://gitlab.gnome.org/World/secrets";
license = licenses.gpl3Only;
platforms = platforms.linux;
maintainers = with maintainers; [ mvnetbiz ];
teams = [ teams.gnome-circle ];
mainProgram = "secrets";
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
glib,
systemd,
wrapGAppsHook3,
}:
stdenv.mkDerivation rec {
pname = "gnome-session-ctl";
version = "47.0.1";
src = fetchFromGitHub {
owner = "nix-community";
repo = "gnome-session-ctl";
rev = version;
hash = "sha256-RY0+iIwwjd7268m3EYrZ1yUBLHXmaWddtSxqgUUH6qQ=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook3
];
buildInputs = [
glib
systemd
];
meta = with lib; {
description = "gnome-session-ctl extracted from gnome-session for nixpkgs";
homepage = "https://github.com/nix-community/gnome-session-ctl";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,35 @@
diff --git a/gnome-session/gnome-session.in b/gnome-session/gnome-session.in
index b4b1f8fa..99d52cba 100755
--- a/gnome-session/gnome-session.in
+++ b/gnome-session/gnome-session.in
@@ -4,13 +4,15 @@ if [ "x$XDG_SESSION_TYPE" = "xwayland" ] &&
[ "x$XDG_SESSION_CLASS" != "xgreeter" ] &&
[ -n "$SHELL" ]; then
if [ "$1" != '-l' ]; then
- exec bash -c "exec -l '$SHELL' -c 'exec $0 -l $*'"
+ # Make sure the shell actually sets up the environment.
+ unset __NIXOS_SET_ENVIRONMENT_DONE
+ exec @bash@ -c "exec -l '$SHELL' -c 'exec $0 -l $*'"
else
shift
fi
fi
-SETTING=$(G_MESSAGES_DEBUG='' gsettings get org.gnome.system.locale region)
+SETTING=$(G_MESSAGES_DEBUG='' @gsettings@ get org.gnome.system.locale region)
REGION=${SETTING#\'}
REGION=${REGION%\'}
diff --git a/gnome-session/main.c b/gnome-session/main.c
index a460a849..9d07898f 100644
--- a/gnome-session/main.c
+++ b/gnome-session/main.c
@@ -215,7 +215,7 @@ require_dbus_session (int argc,
}
new_argv[i + 2] = NULL;
- if (!execvp ("dbus-launch", new_argv)) {
+ if (!execvp ("@dbusLaunch@", new_argv)) {
g_set_error (error,
G_SPAWN_ERROR,
G_SPAWN_ERROR_FAILED,

View File

@@ -0,0 +1,141 @@
{
fetchurl,
lib,
stdenv,
replaceVars,
meson,
ninja,
pkg-config,
gnome,
adwaita-icon-theme,
glib,
gtk3,
gsettings-desktop-schemas,
gnome-desktop,
gnome-settings-daemon,
gnome-shell,
dbus,
json-glib,
libICE,
xmlto,
docbook_xsl,
docbook_xml_dtd_412,
python3,
libxslt,
gettext,
makeWrapper,
systemd,
xorg,
libepoxy,
bash,
gnome-session-ctl,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-session";
# Also bump ./ctl.nix when bumping major version.
version = "48.0";
outputs = [
"out"
"sessions"
];
src = fetchurl {
url = "mirror://gnome/sources/gnome-session/${lib.versions.major finalAttrs.version}/gnome-session-${finalAttrs.version}.tar.xz";
hash = "sha256-3ZCfvFsizb2y/E3xpH140bWUPMxeYeaiChhGJGNHxBc=";
};
patches = [
(replaceVars ./fix-paths.patch {
gsettings = "${glib.bin}/bin/gsettings";
dbusLaunch = "${dbus.lib}/bin/dbus-launch";
bash = "${bash}/bin/bash";
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
makeWrapper
xmlto
libxslt
docbook_xsl
docbook_xml_dtd_412
python3
dbus # for DTD
];
buildInputs = [
glib
gtk3
libICE
gnome-desktop
json-glib
xorg.xtrans
adwaita-icon-theme
gnome-settings-daemon
gsettings-desktop-schemas
systemd
libepoxy
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
# Use our provided `gnome-session-ctl`
original="@libexecdir@/gnome-session-ctl"
replacement="${gnome-session-ctl}/libexec/gnome-session-ctl"
find data/ -type f -name "*.service.in" -exec sed -i \
-e s,$original,$replacement,g \
{} +
'';
# We move the GNOME sessions to another output since gnome-session is a dependency of
# GDM itself. If we do not hide them, it will show broken GNOME sessions when GDM is
# enabled without proper GNOME installation.
postInstall = ''
mkdir $sessions
moveToOutput share/wayland-sessions "$sessions"
moveToOutput share/xsessions "$sessions"
# Our provided one is being used
rm -rf $out/libexec/gnome-session-ctl
'';
# `bin/gnome-session` will reset the environment when run in wayland, we
# therefor wrap `libexec/gnome-session-binary` instead which is the actual
# binary needing wrapping
preFixup = ''
wrapProgram "$out/libexec/gnome-session-binary" \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \
--suffix XDG_DATA_DIRS : "${gnome-shell}/share" \
--suffix XDG_CONFIG_DIRS : "${gnome-settings-daemon}/etc/xdg"
'';
separateDebugInfo = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-session";
};
providedSessions = [
"gnome"
"gnome-xorg"
];
};
meta = with lib; {
description = "GNOME session manager";
homepage = "https://gitlab.gnome.org/GNOME/gnome-session";
changelog = "https://gitlab.gnome.org/GNOME/gnome-session/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,58 @@
From aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0 Mon Sep 17 00:00:00 2001
From: WORLDofPEACE <worldofpeace@protonmail.ch>
Date: Sun, 20 Sep 2020 16:09:36 -0400
Subject: [PATCH] build: add a gnome_session_ctl_path option
In gsd.service.in the ExecStopPost expects g-s-d libexecdir to
be from the same prefix as gnome-session's, and this is not necessarily
true as there are linux distro's that install their packages into their
own individual prefixes (like NixOS or Guix).
---
meson_options.txt | 1 +
plugins/gsd.service.in | 2 +-
plugins/meson.build | 6 ++++++
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/meson_options.txt b/meson_options.txt
index 3e04cf64f..21e003c61 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,5 @@
option('udev_dir', type: 'string', value: '', description: 'Absolute path of the udev base directory')
+option('gnome_session_ctl_path', type: 'string', value: '', description: 'Absolute path to the gnome-session-ctl binary')
option('systemd', type: 'boolean', value: true, description: 'Enable systemd integration')
option('alsa', type: 'boolean', value: true, description: 'build with ALSA support (not optional on Linux platforms)')
diff --git a/plugins/gsd.service.in b/plugins/gsd.service.in
index 79b5f5536..bfbde6d05 100644
--- a/plugins/gsd.service.in
+++ b/plugins/gsd.service.in
@@ -23,4 +23,4 @@ BusName=@plugin_dbus_name@
TimeoutStopSec=5
# We cannot use OnFailure as e.g. dependency failures are normal
# https://github.com/systemd/systemd/issues/12352
-ExecStopPost=@libexecdir@/gnome-session-ctl --exec-stop-check
+ExecStopPost=@gnome_session_ctl@ --exec-stop-check
diff --git a/plugins/meson.build b/plugins/meson.build
index 83e018854..266a0f093 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -20,6 +20,11 @@ all_plugins = [
disabled_plugins = []
+gnome_session_ctl = get_option('gnome_session_ctl_path')
+if gnome_session_ctl == ''
+ gnome_session_ctl = join_paths(gsd_libexecdir, 'gnome-session-ctl')
+endif
+
if not enable_smartcard
disabled_plugins += ['smartcard']
endif
@@ -125,6 +130,7 @@ foreach plugin: all_plugins
unit_conf.set('plugin_name', plugin_name)
unit_conf.set('description', plugin_description)
unit_conf.set('libexecdir', gsd_libexecdir)
+ unit_conf.set('gnome_session_ctl', gnome_session_ctl)
unit_conf.set('plugin_dbus_name', plugin_dbus_name)
unit_conf.set('plugin_restart', plugin_restart_rule.get(plugin_name, 'on-failure'))

View File

@@ -0,0 +1,15 @@
--- a/plugins/datetime/tz.h
+++ b/plugins/datetime/tz.h
@@ -27,11 +27,7 @@
#include <glib.h>
-#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;

View File

@@ -0,0 +1,141 @@
{
stdenv,
lib,
replaceVars,
buildPackages,
fetchurl,
meson,
ninja,
pkg-config,
gnome,
perl,
gettext,
gtk3,
glib,
libnotify,
libgnomekbd,
libpulseaudio,
alsa-lib,
libcanberra-gtk3,
upower,
colord,
libgweather,
polkit,
gsettings-desktop-schemas,
geoclue2,
systemd,
libgudev,
libwacom,
libxslt,
libxml2,
modemmanager,
networkmanager,
gnome-desktop,
geocode-glib_2,
docbook_xsl,
wrapGAppsHook3,
python3,
tzdata,
gcr_4,
gnome-session-ctl,
udevCheckHook,
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-settings-daemon";
version = "48.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major finalAttrs.version}/gnome-settings-daemon-${finalAttrs.version}.tar.xz";
hash = "sha256-OGCi6iFNy8tmAK56HjNYpTiSFQh7w+SkfO4/h7ruBi4=";
};
patches = [
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202
./add-gnome-session-ctl-option.patch
(replaceVars ./fix-paths.patch {
inherit tzdata;
})
];
depsBuildBuild = [
buildPackages.stdenv.cc
pkg-config
];
nativeBuildInputs = [
meson
ninja
pkg-config
perl
gettext
glib
libxml2
libxslt
docbook_xsl
wrapGAppsHook3
python3
udevCheckHook
];
buildInputs = [
gtk3
glib
gsettings-desktop-schemas
modemmanager
networkmanager
libnotify
libgnomekbd # for org.gnome.libgnomekbd.keyboard schema
gnome-desktop
libpulseaudio
alsa-lib
libcanberra-gtk3
upower
colord
libgweather
polkit
geocode-glib_2
geoclue2
libgudev
libwacom
gcr_4
]
++ lib.optionals withSystemd [
systemd
];
mesonFlags = [
"-Dudev_dir=${placeholder "out"}/lib/udev"
(lib.mesonBool "systemd" withSystemd)
]
++ lib.optionals withSystemd [
"-Dgnome_session_ctl_path=${gnome-session-ctl}/libexec/gnome-session-ctl"
];
# Default for release buildtype but passed manually because
# we're using plain
env.NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS";
postPatch = ''
for f in plugins/power/gsd-power-constants-update.pl; do
chmod +x $f
patchShebangs $f
done
'';
doInstallCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = "gnome-settings-daemon";
};
};
meta = with lib; {
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,58 @@
From aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0 Mon Sep 17 00:00:00 2001
From: WORLDofPEACE <worldofpeace@protonmail.ch>
Date: Sun, 20 Sep 2020 16:09:36 -0400
Subject: [PATCH] build: add a gnome_session_ctl_path option
In gsd.service.in the ExecStopPost expects g-s-d libexecdir to
be from the same prefix as gnome-session's, and this is not necessarily
true as there are linux distro's that install their packages into their
own individual prefixes (like NixOS or Guix).
---
meson_options.txt | 1 +
plugins/gsd.service.in | 2 +-
plugins/meson.build | 6 ++++++
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/meson_options.txt b/meson_options.txt
index 3e04cf64f..21e003c61 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,5 @@
option('udev_dir', type: 'string', value: '', description: 'Absolute path of the udev base directory')
+option('gnome_session_ctl_path', type: 'string', value: '', description: 'Absolute path to the gnome-session-ctl binary')
option('systemd', type: 'boolean', value: true, description: 'Enable systemd integration')
option('alsa', type: 'boolean', value: true, description: 'build with ALSA support (not optional on Linux platforms)')
diff --git a/plugins/gsd.service.in b/plugins/gsd.service.in
index 79b5f5536..bfbde6d05 100644
--- a/plugins/gsd.service.in
+++ b/plugins/gsd.service.in
@@ -23,4 +23,4 @@ BusName=@plugin_dbus_name@
TimeoutStopSec=5
# We cannot use OnFailure as e.g. dependency failures are normal
# https://github.com/systemd/systemd/issues/12352
-ExecStopPost=@libexecdir@/gnome-session-ctl --exec-stop-check
+ExecStopPost=@gnome_session_ctl@ --exec-stop-check
diff --git a/plugins/meson.build b/plugins/meson.build
index 83e018854..266a0f093 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -20,6 +20,11 @@ all_plugins = [
disabled_plugins = []
+gnome_session_ctl = get_option('gnome_session_ctl_path')
+if gnome_session_ctl == ''
+ gnome_session_ctl = join_paths(gsd_libexecdir, 'gnome-session-ctl')
+endif
+
if not enable_smartcard
disabled_plugins += ['smartcard']
endif
@@ -125,6 +130,7 @@ foreach plugin: all_plugins
unit_conf.set('plugin_name', plugin_name)
unit_conf.set('description', plugin_description)
unit_conf.set('libexecdir', gsd_libexecdir)
+ unit_conf.set('gnome_session_ctl', gnome_session_ctl)
unit_conf.set('plugin_dbus_name', plugin_dbus_name)
unit_conf.set('plugin_restart', plugin_restart_rule.get(plugin_name, 'on-failure'))

View File

@@ -0,0 +1,15 @@
--- a/plugins/datetime/tz.h
+++ b/plugins/datetime/tz.h
@@ -27,11 +27,7 @@
#include <glib.h>
-#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;

View File

@@ -0,0 +1,119 @@
{
stdenv,
lib,
replaceVars,
fetchurl,
meson,
ninja,
pkg-config,
perl,
gettext,
gtk3,
glib,
libnotify,
libgnomekbd,
libpulseaudio,
alsa-lib,
libcanberra-gtk3,
upower,
colord,
libgweather,
polkit,
gsettings-desktop-schemas,
geoclue2,
systemd,
libgudev,
libwacom,
libxslt,
libxml2,
modemmanager,
networkmanager,
gnome-desktop,
geocode-glib_2,
docbook_xsl,
wrapGAppsHook3,
python3,
tzdata,
gcr_4,
gnome-session-ctl,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-settings-daemon";
version = "46.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major finalAttrs.version}/gnome-settings-daemon-${finalAttrs.version}.tar.xz";
hash = "sha256-C5oPZPoYqOfgm0yVo/dU+gM8LNvS3DVwHwYYVywcs9c=";
};
patches = [
# https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202
./add-gnome-session-ctl-option.patch
(replaceVars ./fix-paths.patch {
inherit tzdata;
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
perl
gettext
libxml2
libxslt
docbook_xsl
wrapGAppsHook3
python3
];
buildInputs = [
gtk3
glib
gsettings-desktop-schemas
modemmanager
networkmanager
libnotify
libgnomekbd # for org.gnome.libgnomekbd.keyboard schema
gnome-desktop
libpulseaudio
alsa-lib
libcanberra-gtk3
upower
colord
libgweather
polkit
geocode-glib_2
geoclue2
systemd
libgudev
libwacom
gcr_4
];
mesonFlags = [
"-Dudev_dir=${placeholder "out"}/lib/udev"
"-Dgnome_session_ctl_path=${gnome-session-ctl}/libexec/gnome-session-ctl"
];
# Default for release buildtype but passed manually because
# we're using plain
env.NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS";
postPatch = ''
for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl; do
chmod +x $f
patchShebangs $f
done
'';
meta = with lib; {
description = "GNOME Settings Daemon";
homepage = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/";
license = licenses.gpl2Plus;
teams = [ teams.pantheon ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,22 @@
diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js
index 6eb58f1..28e1195 100644
--- a/extensions/apps-menu/extension.js
+++ b/extensions/apps-menu/extension.js
@@ -10,7 +10,7 @@ import Atk from 'gi://Atk';
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
-import GMenu from 'gi://GMenu';
+import GIRepository from 'gi://GIRepository';
import GObject from 'gi://GObject';
import Gtk from 'gi://Gtk';
import Meta from 'gi://Meta';
@@ -25,6 +25,8 @@ import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
+GIRepository.Repository.prepend_search_path('@gmenu_path@');
+const {default: GMenu} = await import('gi://GMenu');
const appSys = Shell.AppSystem.get_default();
const APPLICATION_ICON_SIZE = 32;

Some files were not shown because too many files have changed in this diff Show More