diff options
Diffstat (limited to 'nixpkgs/pkgs/desktops')
650 files changed, 27273 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/deepin/dbus-factory/default.nix b/nixpkgs/pkgs/desktops/deepin/dbus-factory/default.nix new file mode 100644 index 000000000000..3c99c40ee807 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dbus-factory/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, jq, libxml2, go-dbus-generator, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "dbus-factory"; + version = "3.1.17"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1llq8wzgikgpzj7z36fyzk8kjych2h9nzi3x6zv53z0xc1xn4256"; + }; + + nativeBuildInputs = [ + jq + libxml2 + go-dbus-generator + ]; + + makeFlags = [ "GOPATH=$(out)/share/go" ]; + + postPatch = '' + sed -i -e 's:/share/gocode:/share/go:' Makefile + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Generates static DBus bindings for Golang and QML at build-time"; + homepage = https://github.com/linuxdeepin/dbus-factory; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-api/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-api/default.nix new file mode 100644 index 000000000000..c1321acb853e --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-api/default.nix @@ -0,0 +1,66 @@ +{ stdenv, buildGoPackage, fetchFromGitHub, pkgconfig, + deepin-gettext-tools, go-dbus-factory, go-gir-generator, go-lib, + alsaLib, glib, gtk3, libcanberra, libgudev, librsvg, poppler, + pulseaudio, go, deepin }: + +buildGoPackage rec { + name = "${pname}-${version}"; + pname = "dde-api"; + version = "3.5.0"; + + goPackagePath = "pkg.deepin.io/dde/api"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1g3s0i5wa6qyv00yksz4r4cy2vhiknq8v0yx7aribvwm3gxf7jw3"; + }; + + goDeps = ./deps.nix; + + nativeBuildInputs = [ + pkgconfig + deepin-gettext-tools + go-dbus-factory + go-gir-generator + go-lib + ]; + + buildInputs = [ + alsaLib + glib + gtk3 + libcanberra + libgudev + librsvg + poppler + pulseaudio + ]; + + postPatch = '' + patchShebangs . + sed -i -e "s|/var|$bin/var|" Makefile + ''; + + buildPhase = '' + make -C go/src/${goPackagePath} + ''; + + installPhase = '' + make install PREFIX="$bin" SYSTEMD_LIB_DIR="$bin/lib" -C go/src/${goPackagePath} + mkdir -p $out/share + mv $bin/share/gocode $out/share/go + remove-references-to -t ${go} $bin/bin/* $bin/lib/deepin-api/* + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Go-lang bindings for dde-daemon"; + homepage = https://github.com/linuxdeepin/dde-api; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-api/deps.nix b/nixpkgs/pkgs/desktops/deepin/dde-api/deps.nix new file mode 100644 index 000000000000..bd7a13043da2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-api/deps.nix @@ -0,0 +1,102 @@ +# This file was generated by https://github.com/kamilchm/go2nix v1.2.1 +[ + { + goPackagePath = "github.com/alecthomas/template"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/template"; + rev = "a0175ee3bccc567396460bf5acd36800cb10c49c"; + sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj"; + }; + } + { + goPackagePath = "github.com/alecthomas/units"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/units"; + rev = "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a"; + sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl"; + }; + } + { + goPackagePath = "github.com/cryptix/wav"; + fetch = { + type = "git"; + url = "https://github.com/cryptix/wav"; + rev = "8bdace674401f0bd3b63c65479b6a6ff1f9d5e44"; + sha256 = "18nyqv0ic35fs9fny8sj84c00vbxs8mnric6vr6yl42624fh5id6"; + }; + } + { + goPackagePath = "github.com/disintegration/imaging"; + fetch = { + type = "git"; + url = "https://github.com/disintegration/imaging"; + rev = "9458da53d1e65e098d48467a4317c403327e4424"; + sha256 = "1b0ma9if8s892qfx5b1vjinxn00ah9vsyxijs8knkilrhf5vqcx4"; + }; + } + { + goPackagePath = "github.com/fogleman/gg"; + fetch = { + type = "git"; + url = "https://github.com/fogleman/gg"; + rev = "0e0ff3ade7039063fe954cc1b45fad6cd4ac80db"; + sha256 = "06gvsngfwizdxin90nldix5503fqgnwqmqvxzrz0xg5hfazwfra5"; + }; + } + { + goPackagePath = "github.com/golang/freetype"; + fetch = { + type = "git"; + url = "https://github.com/golang/freetype"; + rev = "e2365dfdc4a05e4b8299a783240d4a7d5a65d4e4"; + sha256 = "194w3djc6fv1rgcjqds085b9fq074panc5vw582bcb8dbfzsrqxc"; + }; + } + { + goPackagePath = "github.com/linuxdeepin/go-x11-client"; + fetch = { + type = "git"; + url = "https://github.com/linuxdeepin/go-x11-client"; + rev = "03541136501cab4910ad8852fe749ef8e18907ca"; + sha256 = "1iiw8qclpklim81hz1sdjp2ajw0ljvjz19n9jly86nbw6m8x4gkp"; + }; + } + { + goPackagePath = "github.com/nfnt/resize"; + fetch = { + type = "git"; + url = "https://github.com/nfnt/resize"; + rev = "83c6a9932646f83e3267f353373d47347b6036b2"; + sha256 = "005cpiwq28krbjf0zjwpfh63rp4s4is58700idn24fs3g7wdbwya"; + }; + } + { + goPackagePath = "golang.org/x/image"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/image"; + rev = "69cc3646b96e61de0b417f4815b86c36e65783ee"; + sha256 = "0nkywb3r0qvwkmykpswnf0svxi463ycn293y5jjididzxv9qxdp9"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "c44066c5c816ec500d459a2a324a753f78531ae0"; + sha256 = "0mgww74bl15d0jvsh4f3qr1ckjzb8icb8hn0mgs5ppa0b2fgpc4f"; + }; + } + { + goPackagePath = "gopkg.in/alecthomas/kingpin.v2"; + fetch = { + type = "git"; + url = "https://gopkg.in/alecthomas/kingpin.v2"; + rev = "947dcec5ba9c011838740e680966fd7087a71d0d"; + sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r"; + }; + } +] diff --git a/nixpkgs/pkgs/desktops/deepin/dde-calendar/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-calendar/default.nix new file mode 100644 index 000000000000..631471527f3a --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-calendar/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, qttools, + deepin-gettext-tools, dtkcore, dtkwidget, deepin +}: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "dde-calendar"; + version = "1.2.6"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0k973rv0prvr7cg1xwg7kr14fkx13aslhiqc3q7vpakfk53qsw4n"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + deepin-gettext-tools + ]; + + buildInputs = [ + dtkcore + dtkwidget + ]; + + postPatch = '' + patchShebangs . + sed -i translate_desktop.sh \ + -e "s,/usr/bin/deepin-desktop-ts-convert,deepin-desktop-ts-convert," + sed -i com.deepin.Calendar.service \ + -e "s,/usr,$out," + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Calendar for Deepin Desktop Environment"; + homepage = https://github.com/linuxdeepin/dde-calendar; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-daemon/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-daemon/default.nix new file mode 100644 index 000000000000..3678694be9ee --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-daemon/default.nix @@ -0,0 +1,92 @@ +{ stdenv, buildGoPackage, fetchFromGitHub, fetchpatch, pkgconfig, + dbus-factory, go-dbus-factory, go-gir-generator, go-lib, + deepin-gettext-tools, dde-api, alsaLib, glib, gtk3, libinput, libnl, + librsvg, linux-pam, networkmanager, pulseaudio, xorg, gnome3, + python3Packages, hicolor-icon-theme, go, deepin }: + +buildGoPackage rec { + name = "${pname}-${version}"; + pname = "dde-daemon"; + version = "3.6.0"; + + goPackagePath = "pkg.deepin.io/dde/daemon"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0gn2zp34wg79lvzdfla6yb4gs3f9ll83kj765zvig1wpx51nq1aj"; + }; + + patches = [ + # https://github.com/linuxdeepin/dde-daemon/issues/51 + (fetchpatch { + name = "dde-daemon_3.2.3.patch"; + url = https://github.com/jouyouyun/tap-gesture-patches/raw/master/patches/dde-daemon_3.2.3.patch; + sha256 = "0a3xb15czpfl2vajpf7ycw37vr7fbw2png1a67mvjjkgx7d1k7dg"; + }) + ]; + + goDeps = ./deps.nix; + + outputs = [ "out" ]; + + nativeBuildInputs = [ + pkgconfig + dbus-factory + go-dbus-factory + go-gir-generator + go-lib + deepin-gettext-tools + dde-api + linux-pam + networkmanager + networkmanager.dev + python3Packages.python + ]; + + buildInputs = [ + alsaLib + glib + gnome3.libgudev + gtk3 + hicolor-icon-theme + libinput + libnl + librsvg + pulseaudio + ]; + + postPatch = '' + patchShebangs . + + sed -i network/nm_generator/Makefile -e 's,/usr/share/gir-1.0/NM-1.0.gir,${networkmanager.dev}/share/gir-1.0/NM-1.0.gir,' + + sed -i -e "s|{DESTDIR}/etc|{DESTDIR}$out/etc|" Makefile + sed -i -e "s|{DESTDIR}/var|{DESTDIR}$out/var|" Makefile + sed -i -e "s|{DESTDIR}/lib|{DESTDIR}$out/lib|" Makefile + + find -type f -exec sed -i -e "s,/usr/lib/deepin-daemon,$out/lib/deepin-daemon," {} + + ''; + + buildPhase = '' + make -C go/src/${goPackagePath} + # compilation of the nm module is failing + #make -C go/src/${goPackagePath}/network/nm_generator gen-nm-code + ''; + + installPhase = '' + make install PREFIX="$out" -C go/src/${goPackagePath} + remove-references-to -t ${go} $out/lib/deepin-daemon/* + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Daemon for handling Deepin Desktop Environment session settings"; + homepage = https://github.com/linuxdeepin/dde-daemon; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-daemon/deps.nix b/nixpkgs/pkgs/desktops/deepin/dde-daemon/deps.nix new file mode 100644 index 000000000000..3d241baa3260 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-daemon/deps.nix @@ -0,0 +1,111 @@ +# This file was generated by https://github.com/kamilchm/go2nix v1.2.1 +[ + { + goPackagePath = "github.com/alecthomas/template"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/template"; + rev = "a0175ee3bccc567396460bf5acd36800cb10c49c"; + sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj"; + }; + } + { + goPackagePath = "github.com/alecthomas/units"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/units"; + rev = "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a"; + sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl"; + }; + } + { + goPackagePath = "github.com/axgle/mahonia"; + fetch = { + type = "git"; + url = "https://github.com/axgle/mahonia"; + rev = "3358181d7394e26beccfae0ffde05193ef3be33a"; + sha256 = "0b8wsrxmv8a0cqbnsg55lpf29pxy2zw8azvgh3ck664lqpcfybhq"; + }; + } + { + goPackagePath = "github.com/cryptix/wav"; + fetch = { + type = "git"; + url = "https://github.com/cryptix/wav"; + rev = "8bdace674401f0bd3b63c65479b6a6ff1f9d5e44"; + sha256 = "18nyqv0ic35fs9fny8sj84c00vbxs8mnric6vr6yl42624fh5id6"; + }; + } + { + goPackagePath = "github.com/linuxdeepin/go-x11-client"; + fetch = { + type = "git"; + url = "https://github.com/linuxdeepin/go-x11-client"; + rev = "03541136501cab4910ad8852fe749ef8e18907ca"; + sha256 = "1iiw8qclpklim81hz1sdjp2ajw0ljvjz19n9jly86nbw6m8x4gkp"; + }; + } + { + goPackagePath = "github.com/msteinert/pam"; + fetch = { + type = "git"; + url = "https://github.com/msteinert/pam"; + rev = "f4cd9f5e29232537a12db1678f48c702ad6896b7"; + sha256 = "1vjawxswy3f23v4d72kk95y3b557580670ai9ffvrwy6wy85qync"; + }; + } + { + goPackagePath = "github.com/nfnt/resize"; + fetch = { + type = "git"; + url = "https://github.com/nfnt/resize"; + rev = "83c6a9932646f83e3267f353373d47347b6036b2"; + sha256 = "005cpiwq28krbjf0zjwpfh63rp4s4is58700idn24fs3g7wdbwya"; + }; + } + { + goPackagePath = "golang.org/x/image"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/image"; + rev = "69cc3646b96e61de0b417f4815b86c36e65783ee"; + sha256 = "0nkywb3r0qvwkmykpswnf0svxi463ycn293y5jjididzxv9qxdp9"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "c44066c5c816ec500d459a2a324a753f78531ae0"; + sha256 = "0mgww74bl15d0jvsh4f3qr1ckjzb8icb8hn0mgs5ppa0b2fgpc4f"; + }; + } + { + goPackagePath = "golang.org/x/text"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/text"; + rev = "6f44c5a2ea40ee3593d98cdcc905cc1fdaa660e2"; + sha256 = "00mwzxly5isgf0glz7k3k2dkyqkjfc4z55qxajx4lgcp3h8xn9xj"; + }; + } + { + goPackagePath = "gopkg.in/alecthomas/kingpin.v2"; + fetch = { + type = "git"; + url = "https://gopkg.in/alecthomas/kingpin.v2"; + rev = "947dcec5ba9c011838740e680966fd7087a71d0d"; + sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r"; + }; + } + { + goPackagePath = "pkg.deepin.io/lib"; + fetch = { + type = "git"; + url = "https://github.com/linuxdeepin/go-lib.git"; + rev = "b199d0dc96e979398ea3985334ccf9c20236d1a7"; + sha256 = "0g84v1adnnyqc1mv45n3wlvnivkm1fi8ywszzgwx8irl3iddfvxv"; + }; + } +] diff --git a/nixpkgs/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix new file mode 100644 index 000000000000..f28d8f77b3c3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-qt-dbus-factory/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, python, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "dde-qt-dbus-factory"; + version = "1.0.5"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0cz55hsbhy1ab1mndv0sp6xnqrhz2y66w7pcxy8v9k87ii32czf8"; + }; + + nativeBuildInputs = [ + qmake + python + ]; + + postPatch = '' + sed -i libdframeworkdbus/{DFrameworkdbusConfig.in,libdframeworkdbus.pro} \ + -e "s,/usr,$out," + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Qt DBus interface library for Deepin software"; + homepage = https://github.com/linuxdeepin/dde-qt-dbus-factory; + license = with licenses; [ gpl3Plus lgpl2Plus ]; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dde-session-ui/default.nix b/nixpkgs/pkgs/desktops/deepin/dde-session-ui/default.nix new file mode 100644 index 000000000000..d3970cf87108 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dde-session-ui/default.nix @@ -0,0 +1,62 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, qtsvg, qttools, + qtx11extras, xkeyboard_config, xorg, lightdm_qt, gsettings-qt, + dde-qt-dbus-factory, deepin-gettext-tools, dtkcore, dtkwidget, + hicolor-icon-theme, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "dde-session-ui"; + version = "4.6.2"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1fxlrj7vv7nqllwpwc8mxiv9bfqcj9b2qwkpjaq326pfmg5p5lhq"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + deepin-gettext-tools + ]; + + buildInputs = [ + dde-qt-dbus-factory + dtkcore + dtkwidget + gsettings-qt + lightdm_qt + qtsvg + qtx11extras + xorg.libXcursor + xorg.libXrandr + xorg.libXtst + xkeyboard_config + hicolor-icon-theme + ]; + + postPatch = '' + patchShebangs . + sed -i translate_desktop.sh -e "s,/usr/bin/deepin-desktop-ts-convert,deepin-desktop-ts-convert," + find -type f -exec sed -i -e "s,path = /etc,path = $out/etc," {} + + find -type f -exec sed -i -e "s,path = /usr,path = $out," {} + + find -type f -exec sed -i -e "s,Exec=/usr,Exec=$out," {} + + find -type f -exec sed -i -e "s,/usr/share/dde-session-ui,$out/share/dde-session-ui," {} + + sed -i global_util/xkbparser.h -e "s,/usr/share/X11/xkb/rules/base.xml,${xkeyboard_config}/share/X11/xkb/rules/base.xml," + sed -i lightdm-deepin-greeter/scripts/lightdm-deepin-greeter -e "s,/usr/bin/lightdm-deepin-greeter,$out/bin/lightdm-deepin-greeter," + # fix default background url + sed -i widgets/*.cpp boxframe/*.cpp -e 's,/usr/share/backgrounds/default_background.jpg,/usr/share/backgrounds/deepin/desktop.jpg,' + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin desktop-environment - Session UI module"; + homepage = https://github.com/linuxdeepin/dde-session-ui; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-desktop-base/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-desktop-base/default.nix new file mode 100644 index 000000000000..80a368c5be99 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-desktop-base/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub, deepin-wallpapers, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-desktop-base"; + version = "2018.10.29"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0l2zb7rpag2q36lqsgvirhjgmj7w243nsi1rywkypf2xm7g2v235"; + }; + + buildInputs = [ deepin-wallpapers ]; + + postPatch = '' + sed -i Makefile -e "s:/usr:$out:" -e "s:/etc:$out/etc:" + ''; + + postInstall = '' + # Remove Deepin distro's lsb-release + rm $out/etc/lsb-release + + # Don't override systemd timeouts + rm -r $out/etc/systemd + + # Remove apt-specific templates + rm -r $out/share/python-apt + + # Remove empty backgrounds directory + rm -r $out/share/backgrounds + + # Make a symlink for deepin-version + ln -s ../lib/deepin/desktop-version $out/etc/deepin-version + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Base assets and definitions for Deepin Desktop Environment"; + homepage = https://github.com/linuxdeepin/deepin-desktop-base; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix new file mode 100644 index 000000000000..d2b70ec4a896 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-desktop-schemas/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchFromGitHub, python, deepin-gtk-theme, + deepin-icon-theme, deepin-sound-theme, deepin-wallpapers, gnome3, + deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-desktop-schemas"; + version = "3.4.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "10x0rh9z925yzyp8h0vgmg4313smvran06lvr12c3931qkmkzwgq"; + }; + + nativeBuildInputs = [ + python + ]; + + buildInputs = [ + gnome3.dconf + deepin-gtk-theme + deepin-icon-theme + deepin-sound-theme + deepin-wallpapers + ]; + + postPatch = '' + # fix default background url + sed -i '/picture-uri/s|/usr/share/backgrounds/default_background.jpg|$out/share/backgrounds/deepin/default.png|' \ + overrides/common/com.deepin.wrap.gnome.desktop.override + ''; + + makeFlags = [ "PREFIX=$(out)" ]; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "GSettings deepin desktop-wide schemas"; + homepage = https://github.com/linuxdeepin/deepin-desktop-schemas; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-gettext-tools/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-gettext-tools/default.nix new file mode 100644 index 000000000000..779fae6a113e --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-gettext-tools/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, gettext, python3Packages, perlPackages, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-gettext-tools"; + version = "1.0.8"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "03cwa82dd14a31v44jd3z0kpiri6g21ar4f48s8ph78nvjy55880"; + }; + + nativeBuildInputs = [ + python3Packages.wrapPython + ]; + + buildInputs = [ + gettext + perlPackages.perl + perlPackages.XMLLibXML + perlPackages.ConfigTiny + python3Packages.python + ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + postPatch = '' + sed -e 's/sudo cp/cp/' -i src/generate_mo.py + ''; + + postFixup = '' + wrapPythonPrograms + wrapPythonProgramsIn "$out/lib/${pname}" + wrapProgram $out/bin/deepin-desktop-ts-convert --set PERL5LIB $PERL5LIB + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin Internationalization utilities"; + homepage = https://github.com/linuxdeepin/deepin-gettext-tools; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-gtk-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-gtk-theme/default.nix new file mode 100644 index 000000000000..8d11ca8bf42a --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-gtk-theme/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub, gtk-engine-murrine, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-gtk-theme"; + version = "17.10.10"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-gtk-theme"; + rev = version; + sha256 = "0vwly24cvjwhvda7g3l595vpf99d2z7b2zr0q5kna4df4iql7vn4"; + }; + + propagatedUserEnvPkgs = [ gtk-engine-murrine ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin GTK Theme"; + homepage = https://github.com/linuxdeepin/deepin-gtk-theme; + license = licenses.lgpl3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-icon-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-icon-theme/default.nix new file mode 100644 index 000000000000..ef4574206019 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-icon-theme/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, gtk3, papirus-icon-theme, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-icon-theme"; + version = "15.12.64"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0z1yrp6yg2hb67azrbd9ac743jjh83vxdf2j0mmv2lfpd4fqw8qc"; + }; + + nativeBuildInputs = [ gtk3 papirus-icon-theme ]; + + postPatch = '' + patchShebangs . + + # install in $out + sed -i -e "s|/usr|$out|g" Makefile tools/hicolor.links + + # keep icon-theme.cache + sed -i -e 's|\(-rm -f .*/icon-theme.cache\)|# \1|g' Makefile + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Icons for the Deepin Desktop Environment"; + homepage = https://github.com/linuxdeepin/deepin-icon-theme; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-image-viewer/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-image-viewer/default.nix new file mode 100644 index 000000000000..0b08f7cd39a0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-image-viewer/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, qttools, qtsvg, + qtx11extras, dtkcore, dtkwidget, qt5integration, freeimage, libraw, + libexif, deepin +}: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-image-viewer"; + version = "1.3.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0dxdvm6hzj6izfxka35za8y7vacd06nksfgzx6xsv7ywzagri4k5"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + ]; + + buildInputs = [ + qtsvg + qtx11extras + dtkcore + dtkwidget + qt5integration + freeimage + libraw + libexif + ]; + + postPatch = '' + patchShebangs . + sed -i qimage-plugins/freeimage/freeimage.pro \ + qimage-plugins/libraw/libraw.pro \ + -e "s,\$\$\[QT_INSTALL_PLUGINS\],$out/$qtPluginPrefix," + sed -i viewer/com.deepin.ImageViewer.service \ + -e "s,/usr,$out," + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Image Viewer for Deepin Desktop Environment"; + homepage = https://github.com/linuxdeepin/deepin-image-viewer; + license = licenses.gpl3Plus; + platforms = platforms.linux; + badPlatforms = [ "aarch64-linux" ]; # See https://github.com/NixOS/nixpkgs/pull/46463#issuecomment-420274189 + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-menu/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-menu/default.nix new file mode 100644 index 000000000000..645abfedad71 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-menu/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, dtkcore, dtkwidget, + qt5integration, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-menu"; + version = "3.4.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0aga4d4qwd7av6aa4cynhk0sidns7m7y6x0rq1swnkpr9ksr80gi"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + dtkcore + dtkwidget + qt5integration + ]; + + postPatch = '' + sed -i deepin-menu.pro -e "s,/usr,$out," + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin menu service"; + homepage = https://github.com/linuxdeepin/deepin-menu; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-metacity/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-metacity/default.nix new file mode 100644 index 000000000000..78b6303188a2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-metacity/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchFromGitHub, pkgconfig, intltool, libtool, gnome3, bamf, + json-glib, libcanberra-gtk3, libxkbcommon, libstartup_notification, + deepin-wallpapers, deepin-desktop-schemas, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-metacity"; + version = "3.22.22"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0gr10dv8vphla6z7zqiyyg3n3ag4rrlz43c4kr7fd5xwx2bfvp3d"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + libtool + gnome3.gnome-common + gnome3.glib.dev + ]; + + buildInputs = [ + gnome3.dconf + gnome3.gtk + gnome3.libgtop + gnome3.zenity + bamf + json-glib + libcanberra-gtk3 + libstartup_notification + libxkbcommon + deepin-wallpapers + deepin-desktop-schemas + ]; + + postPatch = '' + sed -i src/ui/deepin-background-cache.c \ + -e 's;/usr/share/backgrounds/default_background.jpg;${deepin-wallpapers}/share/backgrounds/deepin/desktop.jpg;' + ''; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0"; + + configureFlags = [ "--disable-themes-documentation" ]; + + preConfigure = '' + HOME=$TMP + NOCONFIGURE=1 ./autogen.sh + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "2D window manager for Deepin"; + homepage = https://github.com/linuxdeepin/deepin-metacity; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix new file mode 100644 index 000000000000..3d195f8f1c0c --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-movie-reborn/default.nix @@ -0,0 +1,55 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, qttools, qtx11extras, + dtkcore, dtkwidget, ffmpeg, ffmpegthumbnailer, mpv, pulseaudio, + libdvdnav, libdvdread, xorg, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-movie-reborn"; + version = "3.2.14"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1i9sdg2p6qp57rqzrnjbxnqj3mg1qggzyq3yykw271vs8h85a707"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + qttools + ]; + + buildInputs = [ + dtkcore + dtkwidget + ffmpeg + ffmpegthumbnailer + libdvdnav + libdvdread + mpv + pulseaudio + qtx11extras + xorg.libXdmcp + xorg.libXtst + xorg.libpthreadstubs + xorg.xcbproto + ]; + + NIX_LDFLAGS = "-ldvdnav"; + + postPatch = '' + sed -i src/CMakeLists.txt -e "s,/usr/lib/dtk2,${dtkcore}/lib/dtk2," + sed -i src/libdmr/libdmr.pc.in -e "s,/usr,$out," -e 's,libdir=''${prefix}/,libdir=,' + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin movie player"; + homepage = https://github.com/linuxdeepin/deepin-movie-reborn; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-mutter/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-mutter/default.nix new file mode 100644 index 000000000000..be845d3c6bac --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-mutter/default.nix @@ -0,0 +1,62 @@ +{ stdenv, fetchFromGitHub, pkgconfig, intltool, libtool, gnome3, xorg, + libcanberra-gtk3, upower, xkeyboard_config, libxkbcommon, + libstartup_notification, libinput, cogl, clutter, systemd, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-mutter"; + version = "3.20.35"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0mwk06kgw8qp8rg1j6px1zlya4x5rr9llax0qks59j56b3m9yim7"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + libtool + gnome3.gnome-common + ]; + + buildInputs = [ + gnome3.gtk + gnome3.gnome-desktop + gnome3.gsettings-desktop-schemas + gnome3.libgudev + gnome3.zenity + upower + xorg.libxkbfile + libxkbcommon + libcanberra-gtk3 + libstartup_notification + libinput + xkeyboard_config + cogl + clutter + systemd + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--enable-native-backend" + "--enable-compile-warnings=minimum" + ]; + + preConfigure = '' + NOCONFIGURE=1 ./autogen.sh + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Base window manager for deepin, fork of gnome mutter"; + homepage = https://github.com/linuxdeepin/deepin-mutter; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-shortcut-viewer/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-shortcut-viewer/default.nix new file mode 100644 index 000000000000..737c99261f9d --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-shortcut-viewer/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, dtkcore, dtkwidget, + qt5integration, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-shortcut-viewer"; + version = "1.3.5"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "13vz8kjdqkrhgpvdgrvwn62vwzbyqp88hjm5m4rcqg3bh56709ma"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + dtkcore + dtkwidget + qt5integration + ]; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Pop-up shortcut viewer for Deepin applications"; + homepage = https://github.com/linuxdeepin/deepin-shortcut-viewer; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-sound-theme/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-sound-theme/default.nix new file mode 100644 index 000000000000..bb004372497f --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-sound-theme/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-sound-theme"; + version = "15.10.3"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-sound-theme"; + rev = version; + sha256 = "1sw4nrn7q7wk1hpicm05apyc0mihaw42iqm52wb8ib8gm1qiylr9"; + }; + + makeFlags = [ "PREFIX=$(out)" ]; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin sound theme"; + homepage = https://github.com/linuxdeepin/deepin-sound-theme; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-terminal/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-terminal/default.nix new file mode 100644 index 000000000000..70e15441436d --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-terminal/default.nix @@ -0,0 +1,71 @@ +{ stdenv, fetchurl, fetchFromGitHub, pkgconfig, cmake, ninja, vala, + gettext, gobject-introspection, at-spi2-core, dbus, epoxy, expect, + gtk3, json-glib, libXdmcp, libgee, libpthreadstubs, librsvg, + libsecret, libtasn1, libxcb, libxkbcommon, p11-kit, pcre, vte, wnck, + deepin-menu, deepin-shortcut-viewer, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-terminal"; + version = "3.0.10.2"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-terminal"; + rev = version; + sha256 = "0ylhp8q9kfdq9l69drawjaf0q8vcqyflb2a3zfnwbnf06dlpvkz6"; + }; + + nativeBuildInputs = [ + pkgconfig + cmake + ninja + vala + gettext + gobject-introspection # For setup hook + ]; + + buildInputs = [ + at-spi2-core + dbus + deepin-menu + deepin-shortcut-viewer + epoxy + expect + gtk3 + json-glib + libXdmcp + libgee + libpthreadstubs + librsvg + libsecret + libtasn1 + libxcb + libxkbcommon + p11-kit + pcre + vte + wnck + ]; + + postPatch = '' + patchShebangs . + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "The default terminal emulation for Deepin"; + longDescription = '' + Deepin terminal, it sharpens your focus in the world of command line! + It is an advanced terminal emulator with workspace, multiple + windows, remote management, quake mode and other features. + ''; + homepage = https://github.com/linuxdeepin/deepin-terminal; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-wallpapers/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-wallpapers/default.nix new file mode 100644 index 000000000000..8f04bd482184 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-wallpapers/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchFromGitHub, dde-api, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-wallpapers"; + version = "1.7.5"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = "deepin-wallpapers"; + rev = version; + sha256 = "0mfjkh81ci0gjwmgycrh32by7v9b73nyvyjbqd29ccpb8bpyyakn"; + }; + + nativeBuildInputs = [ dde-api.bin ]; + + postPatch = '' + sed -i -e "s:/usr/lib/deepin-api:${dde-api.bin}/lib/deepin-api:" Makefile + sed -i -e "s:/usr/share/wallpapers:$out/share/wallpapers:" Makefile + ''; + + installPhase = '' + mkdir -p $out/share/wallpapers/deepin + cp -a deepin/* deepin-community/* deepin-private/* $out/share/wallpapers/deepin + mkdir -p $out/var/cache + cp -a image-blur $out/var/cache + + # Suggested by upstream + mkdir -p $out/share/backgrounds/deepin + ln -s ../../wallpapers/deepin/Hummingbird_by_Shu_Le.jpg $out/share/backgrounds/deepin/desktop.jpg + ln -s $(echo -n $out/share/wallpapers/deepin/Hummingbird_by_Shu_Le.jpg | md5sum | cut -d " " -f 1).jpg \ + $out/var/cache/image-blur/$(echo -n $out/share/backgrounds/deepin/desktop.jpg | md5sum | cut -d " " -f 1).jpg + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Wallpapers for Deepin Desktop Environment"; + homepage = https://github.com/linuxdeepin/deepin-wallpapers; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/deepin-wm/default.nix b/nixpkgs/pkgs/desktops/deepin/deepin-wm/default.nix new file mode 100644 index 000000000000..ea2f06aae607 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/deepin-wm/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchFromGitHub, pkgconfig, intltool, libtool, vala, gnome3, + bamf, clutter-gtk, pantheon, libcanberra-gtk3, libwnck3, + deepin-mutter, deepin-wallpapers, deepin-desktop-schemas, + hicolor-icon-theme, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "deepin-wm"; + version = "1.9.34"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "13hydcalifdc6723k8l4pk905y9sxic5x1fqww0fyx7j6b3hm13f"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + libtool + gnome3.gnome-common + vala + ]; + + buildInputs = [ + gnome3.gnome-desktop + gnome3.libgee + bamf + clutter-gtk + pantheon.granite + libcanberra-gtk3 + libwnck3 + deepin-mutter + deepin-wallpapers + deepin-desktop-schemas + hicolor-icon-theme + ]; + + postPatch = '' + sed -i src/Background/BackgroundSource.vala \ + -e 's;/usr/share/backgrounds/default_background.jpg;${deepin-wallpapers}/share/backgrounds/deepin/desktop.jpg;' + ''; + + preConfigure = '' + ./autogen.sh + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin Window Manager"; + homepage = https://github.com/linuxdeepin/deepin-wm; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/default.nix b/nixpkgs/pkgs/desktops/deepin/default.nix new file mode 100644 index 000000000000..4fe787bc5d4b --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/default.nix @@ -0,0 +1,44 @@ +{ pkgs, makeScope, libsForQt5 }: + +let + packages = self: with self; { + updateScript = callPackage ./update.nix { }; + + dbus-factory = callPackage ./dbus-factory { }; + dde-api = callPackage ./dde-api { }; + dde-calendar = callPackage ./dde-calendar { }; + dde-daemon = callPackage ./dde-daemon { }; + dde-qt-dbus-factory = callPackage ./dde-qt-dbus-factory { }; + dde-session-ui = callPackage ./dde-session-ui { }; + deepin-desktop-base = callPackage ./deepin-desktop-base { }; + deepin-desktop-schemas = callPackage ./deepin-desktop-schemas { }; + deepin-gettext-tools = callPackage ./deepin-gettext-tools { }; + deepin-gtk-theme = callPackage ./deepin-gtk-theme { }; + deepin-icon-theme = callPackage ./deepin-icon-theme { }; + deepin-image-viewer = callPackage ./deepin-image-viewer { }; + deepin-menu = callPackage ./deepin-menu { }; + deepin-metacity = callPackage ./deepin-metacity { }; + deepin-movie-reborn = callPackage ./deepin-movie-reborn { }; + deepin-mutter = callPackage ./deepin-mutter { }; + deepin-shortcut-viewer = callPackage ./deepin-shortcut-viewer { }; + deepin-sound-theme = callPackage ./deepin-sound-theme { }; + deepin-terminal = callPackage ./deepin-terminal { + inherit (pkgs.gnome3) libgee; + wnck = pkgs.libwnck3; + }; + deepin-wallpapers = callPackage ./deepin-wallpapers { }; + deepin-wm = callPackage ./deepin-wm { }; + dtkcore = callPackage ./dtkcore { }; + dtkwm = callPackage ./dtkwm { }; + dtkwidget = callPackage ./dtkwidget { }; + go-dbus-factory = callPackage ./go-dbus-factory { }; + go-dbus-generator = callPackage ./go-dbus-generator { }; + go-gir-generator = callPackage ./go-gir-generator { }; + go-lib = callPackage ./go-lib { }; + qt5dxcb-plugin = callPackage ./qt5dxcb-plugin { }; + qt5integration = callPackage ./qt5integration { }; + + }; + +in + makeScope libsForQt5.newScope packages diff --git a/nixpkgs/pkgs/desktops/deepin/dtkcore/default.nix b/nixpkgs/pkgs/desktops/deepin/dtkcore/default.nix new file mode 100644 index 000000000000..9904c58128f5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dtkcore/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, gsettings-qt, pythonPackages, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "dtkcore"; + version = "2.0.9.8"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "06jj5gpy2qbmc21nf0fnbvgw7nbjjgvzx7m2vg9byw5il8l4g22h"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + pythonPackages.wrapPython + ]; + + buildInputs = [ + gsettings-qt + ]; + + postPatch = '' + # Only define QT_HOST_DATA if it is empty + sed '/QT_HOST_DATA=/a }' -i src/dtk_module.prf + sed '/QT_HOST_DATA=/i isEmpty(QT_HOST_DATA) {' -i src/dtk_module.prf + + # Fix shebang + sed -i tools/script/dtk-translate.py -e "s,#!env,#!/usr/bin/env," + ''; + + preConfigure = '' + qmakeFlags="$qmakeFlags QT_HOST_DATA=$out" + ''; + + postFixup = '' + chmod +x $out/lib/dtk2/*.py + wrapPythonProgramsIn "$out/lib/dtk2" "$out $pythonPath" + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin tool kit core modules"; + homepage = https://github.com/linuxdeepin/dtkcore; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dtkwidget/default.nix b/nixpkgs/pkgs/desktops/deepin/dtkwidget/default.nix new file mode 100644 index 000000000000..b61f31e40ee9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dtkwidget/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, qttools, qtmultimedia, + qtsvg, qtx11extras, librsvg, libstartup_notification, gsettings-qt, + dde-qt-dbus-factory, dtkcore, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "dtkwidget"; + version = "2.0.9.10"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0757dzy82bfv97b1gzkwa9zx3jzfbap20v3r1h7lkfcfw95410iw"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + qttools + ]; + + buildInputs = [ + qtmultimedia + qtsvg + qtx11extras + librsvg + libstartup_notification + gsettings-qt + dde-qt-dbus-factory + dtkcore + ]; + + preConfigure = '' + qmakeFlags="$qmakeFlags \ + INCLUDE_INSTALL_DIR=$out/include \ + LIB_INSTALL_DIR=$out/lib \ + QT_HOST_DATA=$out" + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin graphical user interface library"; + homepage = https://github.com/linuxdeepin/dtkwidget; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/dtkwm/default.nix b/nixpkgs/pkgs/desktops/deepin/dtkwm/default.nix new file mode 100644 index 000000000000..7154ae3da6a9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/dtkwm/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, qtx11extras, dtkcore, + deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "dtkwm"; + version = "2.0.9"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0vkx6vlz83pgawhdwqkwpq3dy8whxmjdzfpgrvm2m6jmspfk9bab"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + dtkcore + qtx11extras + ]; + + preConfigure = '' + qmakeFlags="$qmakeFlags \ + QT_HOST_DATA=$out \ + INCLUDE_INSTALL_DIR=$out/include \ + LIB_INSTALL_DIR=$out/lib" + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Deepin graphical user interface library"; + homepage = https://github.com/linuxdeepin/dtkwm; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/go-dbus-factory/default.nix b/nixpkgs/pkgs/desktops/deepin/go-dbus-factory/default.nix new file mode 100644 index 000000000000..01d504eda896 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/go-dbus-factory/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchFromGitHub, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "go-dbus-factory"; + version = "0.0.7.1"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0gj2xxv45gh7wr5ry3mcsi46kdsyq9nbd7znssn34kapiv40ixcx"; + }; + + makeFlags = [ "PREFIX=$(out)" ]; + + postPatch = '' + sed -i -e 's:/share/gocode:/share/go:' Makefile + ''; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "GoLang DBus factory for the Deepin Desktop Environment"; + homepage = https://github.com/linuxdeepin/go-dbus-factory; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/go-dbus-generator/default.nix b/nixpkgs/pkgs/desktops/deepin/go-dbus-generator/default.nix new file mode 100644 index 000000000000..28873d8459ec --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/go-dbus-generator/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, go, go-lib, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "go-dbus-generator"; + version = "0.6.6"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "17rzicqizyyrhjjf4rild7py1cyd07b2zdcd9nabvwn4gvj6lhfb"; + }; + + nativeBuildInputs = [ + go + go-lib + ]; + + makeFlags = [ + "PREFIX=$(out)" + "GOCACHE=off" + ]; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Convert dbus interfaces to go-lang or qml wrapper code"; + homepage = https://github.com/linuxdeepin/go-dbus-generator; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/go-gir-generator/default.nix b/nixpkgs/pkgs/desktops/deepin/go-gir-generator/default.nix new file mode 100644 index 000000000000..d33837b21c31 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/go-gir-generator/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchFromGitHub, pkgconfig, go, gobject-introspection, + libgudev, deepin, fetchurl }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "go-gir-generator"; + version = "1.1.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0grp4ffy3vmlknzmymnxq1spwshff2ylqsw82pj4y2v2fcvnqfvb"; + }; + + patches = [ + # fix: dde-api build error with gobject-introspection 1.58+ + (fetchurl { + url = https://github.com/linuxdeepin/go-gir-generator/commit/a7ab229201e28d1be727f5021b3588fa4a1acf5f.patch; + sha256 = "13ywalwkjg8wwvd0pvmc2rv1h38airyvimdn9jfb5wis9xm48401"; + }) + ]; + + nativeBuildInputs = [ + pkgconfig + go + ]; + + buildInputs = [ + gobject-introspection + libgudev + ]; + + postPatch = '' + sed -i -e 's:/share/gocode:/share/go:' Makefile + ''; + + makeFlags = [ + "PREFIX=$(out)" + "GOCACHE=off" + ]; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Generate static golang bindings for GObject"; + homepage = https://github.com/linuxdeepin/go-gir-generator; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/go-lib/default.nix b/nixpkgs/pkgs/desktops/deepin/go-lib/default.nix new file mode 100644 index 000000000000..684f1dd7f32d --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/go-lib/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, glib, xorg, gdk_pixbuf, pulseaudio, + mobile-broadband-provider-info, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "go-lib"; + version = "1.3.0"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "0g84v1adnnyqc1mv45n3wlvnivkm1fi8ywszzgwx8irl3iddfvxv"; + }; + + buildInputs = [ + glib + xorg.libX11 + gdk_pixbuf + pulseaudio + mobile-broadband-provider-info + ]; + + makeFlags = [ + "PREFIX=$(out)" + "GOSITE_DIR=$(out)/share/go" + ]; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Go bindings for Deepin Desktop Environment development"; + homepage = https://github.com/linuxdeepin/go-lib; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix b/nixpkgs/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix new file mode 100644 index 000000000000..c4ce0ca563bd --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/qt5dxcb-plugin/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, qtx11extras, libSM, + mtdev, cairo, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "qt5dxcb-plugin"; + version = "1.1.13"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "12lvh3agw3qdviqf32brmzba5kscnj5al5jhc08lq69a9kmip05x"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + qtx11extras + libSM + mtdev + cairo + ]; + + preConfigure = '' + qmakeFlags="$qmakeFlags INSTALL_PATH=$out/$qtPluginPrefix/platforms" + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Qt platform theme integration plugin for DDE"; + homepage = https://github.com/linuxdeepin/qt5dxcb-plugin; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/qt5integration/default.nix b/nixpkgs/pkgs/desktops/deepin/qt5integration/default.nix new file mode 100644 index 000000000000..809156377225 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/qt5integration/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchFromGitHub, pkgconfig, qmake, mtdev, gsettings-qt , + lxqt, qtx11extras, qtmultimedia, qtsvg, fontconfig, freetype , + qt5dxcb-plugin, qtstyleplugins, dtkcore, dtkwidget, deepin }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "qt5integration"; + version = "0.3.6"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "1v9whlqn07c5c8xnaiicdshj9n88a667gfbn8y8bk5bfylilfzcy"; + }; + + nativeBuildInputs = [ + pkgconfig + qmake + ]; + + buildInputs = [ + dtkcore + dtkwidget + qt5dxcb-plugin + mtdev + lxqt.libqtxdg + qtstyleplugins + qtx11extras + qtmultimedia + qtsvg + ]; + + postPatch = '' + sed -i dstyleplugin/dstyleplugin.pro \ + platformthemeplugin/qt5deepintheme-plugin.pro \ + iconengineplugins/svgiconengine/svgiconengine.pro \ + imageformatplugins/svg/svg.pro \ + -e "s,\$\$\[QT_INSTALL_PLUGINS\],$out/$qtPluginPrefix," + ''; + + enableParallelBuilding = true; + + passthru.updateScript = deepin.updateScript { inherit name; }; + + meta = with stdenv.lib; { + description = "Qt platform theme integration plugins for DDE"; + homepage = https://github.com/linuxdeepin/qt5integration; + license = with licenses; [ gpl3 lgpl2Plus bsd2 ]; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/deepin/update.nix b/nixpkgs/pkgs/desktops/deepin/update.nix new file mode 100644 index 000000000000..22a6acb8ce31 --- /dev/null +++ b/nixpkgs/pkgs/desktops/deepin/update.nix @@ -0,0 +1,38 @@ +{ stdenv, lib, writeScript, coreutils, curl, gnugrep, gnused, jq, common-updater-scripts, nix }: +{ name, ignored-versions ? "^2014\\.|^v[0-9]+" }: + +let + nameAndVersion = builtins.parseDrvName name; + packageVersion = nameAndVersion.version; + packageName = nameAndVersion.name; + attrPath = "deepin.${packageName}"; +in + +writeScript "update-${packageName}" '' + #!${stdenv.shell} + set -o errexit + set -x + + # search for the latest version of the package on github + PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep gnused jq ]} + tags=$(curl -s https://api.github.com/repos/linuxdeepin/${packageName}/tags) + tags=$(echo "$tags" | jq -r '.[] | .name') + echo "# ${name}" >> git-commits.txt + echo "# available tags:" >> git-commits.txt + echo "$tags" | ${gnused}/bin/sed -e 's/^/# /' >> git-commits.txt + if [ -n "${ignored-versions}" ]; then + tags=$(echo "$tags" | grep -vE "${ignored-versions}") + fi + latest_tag=$(echo "$tags" | sort --version-sort | tail -1) + + # generate commands to commit the changes + if [ "${packageVersion}" != "$latest_tag" ]; then + pfile=$(EDITOR=echo ${nix}/bin/nix edit -f. ${attrPath}) + echo " git add $pfile " >> git-commits.txt + echo " git commit -m \"${attrPath}: ${packageVersion} -> $latest_tag\"" >> git-commits.txt + fi + + # update the nix expression + update-source-version "${attrPath}" "$latest_tag" + echo "" >> git-commits.txt +'' diff --git a/nixpkgs/pkgs/desktops/enlightenment/default.nix b/nixpkgs/pkgs/desktops/enlightenment/default.nix new file mode 100644 index 000000000000..a8b5e08abd65 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/default.nix @@ -0,0 +1,14 @@ +{ callPackage, pkgs }: +rec { + #### CORE EFL + efl = callPackage ./efl.nix { openjpeg = pkgs.openjpeg_1; }; + + #### WINDOW MANAGER + enlightenment = callPackage ./enlightenment.nix { }; + + #### APPLICATIONS + econnman = callPackage ./econnman.nix { }; + terminology = callPackage ./terminology.nix { }; + rage = callPackage ./rage.nix { }; + ephoto = callPackage ./ephoto.nix { }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/econnman.nix b/nixpkgs/pkgs/desktops/enlightenment/econnman.nix new file mode 100644 index 000000000000..60e63dc68ed9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/econnman.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, efl, python2Packages, dbus, makeWrapper }: + +stdenv.mkDerivation rec { + name = "econnman-${version}"; + version = "1.1"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/apps/econnman/${name}.tar.gz"; + sha256 = "057pwwavlvrrq26bncqnfrf449zzaim0zq717xv86av4n940gwv0"; + }; + + nativeBuildInputs = [ makeWrapper pkgconfig python2Packages.wrapPython ]; + + buildInputs = [ efl python2Packages.python dbus ]; + + pythonPath = [ python2Packages.pythonefl python2Packages.dbus-python ]; + + postInstall = '' + wrapPythonPrograms + ''; + + meta = { + description = "A user interface for the connman network connection manager"; + homepage = http://enlightenment.org/; + maintainers = with stdenv.lib.maintainers; [ matejc tstrobel ftrvxmtrx ]; + platforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.lgpl3; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/efl-elua.patch b/nixpkgs/pkgs/desktops/enlightenment/efl-elua.patch new file mode 100644 index 000000000000..96c42b3ff3ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/efl-elua.patch @@ -0,0 +1,14 @@ +--- ./src/scripts/elua/core/util.lua.old 2015-05-17 11:59:57.307743243 +0200 ++++ ./src/scripts/elua/core/util.lua 2015-05-17 12:39:11.906797377 +0200 +@@ -159,7 +159,10 @@ + local ev = os.getenv("ELUA_" .. libname:upper() .. "_LIBRARY_PATH") + local succ, v = load_lib(libname, ev) + if not succ then +- error(v, 2) ++ succ, v = load_lib(libname, "$out/lib") ++ if not succ then ++ error(v, 2) ++ end + end + lib = v + loaded_libs[libname] = lib diff --git a/nixpkgs/pkgs/desktops/enlightenment/efl.nix b/nixpkgs/pkgs/desktops/enlightenment/efl.nix new file mode 100644 index 000000000000..ea4e6cd1f1c9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/efl.nix @@ -0,0 +1,94 @@ +{ stdenv, fetchurl, pkgconfig, openssl, libjpeg, zlib, lz4, freetype, fontconfig +, fribidi, SDL2, SDL, libGL, giflib, libpng, libtiff, glib, gst_all_1, libpulseaudio +, libsndfile, xorg, libdrm, libxkbcommon, udev, utillinux, bullet, luajit +, python27Packages, openjpeg, doxygen, expat, harfbuzz, jbig2dec, librsvg +, dbus, alsaLib, poppler, ghostscript, libraw, libspectre, xineLib, libwebp +, curl, libinput, systemd, mesa_noglu, writeText, gtk3 +}: + +stdenv.mkDerivation rec { + name = "efl-${version}"; + version = "1.21.1"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/libs/efl/${name}.tar.xz"; + sha256 = "0a5907h896pvpix7a6idc2fspzy6d78xrzf84k8y9fyvnd14nxs4"; + }; + + nativeBuildInputs = [ pkgconfig gtk3 ]; + + buildInputs = [ openssl zlib lz4 freetype fontconfig SDL libGL mesa_noglu + giflib libpng libtiff glib gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + gst_all_1.gst-libav libpulseaudio libsndfile xorg.libXcursor xorg.xorgproto + xorg.libX11 udev systemd ]; + + propagatedBuildInputs = [ libxkbcommon python27Packages.dbus-python dbus libjpeg xorg.libXcomposite + xorg.libXdamage xorg.libXinerama xorg.libXp xorg.libXtst xorg.libXi xorg.libXext + bullet xorg.libXScrnSaver xorg.libXrender xorg.libXfixes xorg.libXrandr + xorg.libxkbfile xorg.libxcb xorg.xcbutilkeysyms openjpeg doxygen expat luajit + harfbuzz jbig2dec librsvg dbus alsaLib poppler ghostscript libraw libspectre xineLib libwebp curl libdrm + libinput utillinux fribidi SDL2 ]; + + # as of 1.21.0 compilation will fail due to -Werror=format-security + hardeningDisable = [ "format" ]; + + # ac_ct_CXX must be set to random value, because then it skips some magic which does alternative searching for g++ + configureFlags = [ + "--enable-sdl" + "--enable-drm" + "--enable-elput" + "--with-opengl=full" + "--enable-image-loader-jp2k" + "--enable-xinput22" + "--enable-multisense" + "--enable-liblz4" + "--enable-systemd" + "--enable-image-loader-webp" + "--enable-harfbuzz" + "--enable-xine" + "--enable-fb" + "--disable-tslib" + "--with-systemdunitdir=$out/systemd/user" + "ac_ct_CXX=foo" + ]; + + patches = [ ./efl-elua.patch ]; + + # bin/edje_cc creates $HOME/.run, which would break build of reverse dependencies. + setupHook = writeText "setupHook.sh" '' + export HOME="$TEMPDIR" + ''; + + preConfigure = '' + export LD_LIBRARY_PATH="$(pwd)/src/lib/eina/.libs:$LD_LIBRARY_PATH" + source "$setupHook" + ''; + + NIX_CFLAGS_COMPILE = [ "-DluaL_reg=luaL_Reg" ]; # needed since luajit-2.1.0-beta3 + + postInstall = '' + substituteInPlace "$out/share/elua/core/util.lua" --replace '$out' "$out" + modules=$(for i in "$out/include/"*/; do printf ' -I''${includedir}/'`basename $i`; done) + substituteInPlace "$out/lib/pkgconfig/efl.pc" --replace 'Cflags: -I''${includedir}/efl-1' \ + 'Cflags: -I''${includedir}/eina-1/eina'"$modules" + + # build icon cache + gtk-update-icon-cache "$out"/share/icons/Enlightenment-X + ''; + + # EFL applications depend on libcurl, although it is linked at + # runtime by hand in code (it is dlopened). + postFixup = '' + patchelf --add-needed ${curl.out}/lib/libcurl.so $out/lib/libecore_con.so + ''; + + enableParallelBuilding = true; + + meta = { + description = "Enlightenment foundation libraries"; + homepage = http://enlightenment.org/; + platforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.lgpl3; + maintainers = with stdenv.lib.maintainers; [ matejc tstrobel ftrvxmtrx ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/elementary.patch b/nixpkgs/pkgs/desktops/enlightenment/elementary.patch new file mode 100644 index 000000000000..32080c81cb38 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/elementary.patch @@ -0,0 +1,18 @@ +--- a/elementary.pc.in 2015-05-16 21:08:14.321148417 +0200 ++++ b/elementary.pc.in 2015-05-16 21:08:30.643412725 +0200 +@@ -14,4 +14,4 @@ + Requires.private: @requirement_elm_pc@ + Version: @VERSION@ + Libs: -L${libdir} -lelementary @ELEMENTARY_PC_LIBS@ +-Cflags: -I${includedir}/elementary-@VMAJ@ ++Cflags: -I${includedir}/elementary-@VMAJ@ @ELEMENTARY_PC_CFLAGS@ +--- a/Makefile.am 2015-05-16 21:08:14.322148433 +0200 ++++ b/Makefile.am 2015-05-16 21:08:30.643412725 +0200 +@@ -84,6 +84,7 @@ + -e 's,@requirement_elm_pc\@,$(requirement_elm_pc),g' \ + -e 's,@ELEMENTARY_LIBS\@,$(ELEMENTARY_LIBS),g' \ + -e 's,@ELEMENTARY_PC_LIBS\@,$(ELEMENTARY_PC_LIBS),g' \ ++-e 's,@ELEMENTARY_PC_CFLAGS\@,$(ELEMENTARY_PC_CFLAGS),g' \ + < $< > $@ || rm $@ + + pc_verbose = $(pc_verbose_@AM_V@) diff --git a/nixpkgs/pkgs/desktops/enlightenment/enlightenment.nix b/nixpkgs/pkgs/desktops/enlightenment/enlightenment.nix new file mode 100644 index 000000000000..8edf702a24c6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/enlightenment.nix @@ -0,0 +1,78 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, efl, + xcbutilkeysyms, libXrandr, libXdmcp, libxcb, libffi, pam, alsaLib, + luajit, bzip2, libpthreadstubs, gdbm, libcap, mesa_noglu, + xkeyboard_config, pcre +}: + +stdenv.mkDerivation rec { + name = "enlightenment-${version}"; + version = "0.22.4"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/apps/enlightenment/${name}.tar.xz"; + sha256 = "0ygy891rrw5c7lhk539nhif77j88phvz2h0fhx172iaridy9kx2r"; + }; + + nativeBuildInputs = [ + meson + ninja + (pkgconfig.override { vanilla = true; }) + gettext + ]; + + buildInputs = [ + efl + libXdmcp + libxcb + xcbutilkeysyms + libXrandr + libffi + pam + alsaLib + luajit + bzip2 + libpthreadstubs + gdbm + pcre + mesa_noglu + xkeyboard_config + ] ++ + stdenv.lib.optionals stdenv.isLinux [ libcap ]; + + patches = [ + # Some programs installed by enlightenment (to set the cpu frequency, + # for instance) need root ownership and setuid/setgid permissions, which + # are not allowed for files in /nix/store. Instead of allowing the + # installer to try to do this, the file $out/e-wrappers.nix is created, + # containing the needed configuration for wrapping those programs. It + # can be used in the enlightenment module. The idea is: + # + # 1) rename the original binary adding the extension .orig + # 2) wrap the renamed binary at /run/wrappers/bin/ + # 3) create a new symbolic link using the original binary name (in the + # original directory where enlightenment wants it) pointing to the + # wrapper + + ./enlightenment.suid-exes.patch + ]; + + postPatch = '' + # edge_cc is a binary provided by efl and cannot be found at the directory + # given by e_prefix_bin_get(), which is $out/bin + + substituteInPlace src/bin/e_import_config_dialog.c \ + --replace "e_prefix_bin_get()" "\"${efl}/bin\"" + ''; + + mesonFlags = [ "-Dsystemdunitdir=lib/systemd/user" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "The Compositing Window Manager and Desktop Shell"; + homepage = https://www.enlightenment.org; + license = licenses.bsd2; + platforms = platforms.linux; + maintainers = with maintainers; [ matejc tstrobel ftrvxmtrx romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/enlightenment.suid-exes.patch b/nixpkgs/pkgs/desktops/enlightenment/enlightenment.suid-exes.patch new file mode 100644 index 000000000000..f53f6ffa7ca8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/enlightenment.suid-exes.patch @@ -0,0 +1,25 @@ +--- enlightenment-0.22.0.orig/meson/meson_inst.sh 2017-09-25 10:55:43.000000000 -0300 ++++ enlightenment-0.22.0/meson/meson_inst.sh 2017-11-15 08:31:03.336844920 -0200 +@@ -1,6 +1,19 @@ +-#!/bin/sh ++#!/bin/sh -x ++ ++w="$out"/e-wrappers.nix ++ ++echo "# Wrappers for programs installed by enlightenment that should be setuid" > $w ++echo "" >> $w ++echo "{" >> $w ++echo " security.wrappers = {" >> $w + + for x in "$@" ; do +- chown root "$DESTDIR/$x" +- chmod a=rx,u+xs "$DESTDIR/$x" ++ f="$DESTDIR$x"; ++ b=$(basename "$f".orig) ++ mv -v "$f" "$f".orig ++ ln -sv /run/wrappers/bin/"$b" "$f" ++ echo " \"$b\".source = \"$f.orig\";" >> $w + done ++ ++echo " };" >> $w ++echo "}" >> $w diff --git a/nixpkgs/pkgs/desktops/enlightenment/ephoto.nix b/nixpkgs/pkgs/desktops/enlightenment/ephoto.nix new file mode 100644 index 000000000000..ad4620d4f450 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/ephoto.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, efl, pcre, mesa_noglu, makeWrapper }: + +stdenv.mkDerivation rec { + name = "ephoto-${version}"; + version = "1.5"; + + src = fetchurl { + url = "http://www.smhouston.us/stuff/${name}.tar.gz"; + sha256 = "09kraa5zz45728h2dw1ssh23b87j01bkfzf977m48y1r507sy3vb"; + }; + + nativeBuildInputs = [ + (pkgconfig.override { vanilla = true; }) + mesa_noglu.dev # otherwise pkg-config does not find gbm + makeWrapper + ]; + + buildInputs = [ + efl + pcre + ]; + + meta = { + description = "Image viewer and editor written using the Enlightenment Foundation Libraries"; + homepage = http://smhouston.us/ephoto/; + license = stdenv.lib.licenses.bsd2; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/rage.nix b/nixpkgs/pkgs/desktops/enlightenment/rage.nix new file mode 100644 index 000000000000..e7dfb5ca3989 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/rage.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, efl, gst_all_1, pcre, mesa_noglu, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "rage-${version}"; + version = "0.3.0"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/apps/rage/${name}.tar.xz"; + sha256 = "0gfzdd4jg78bkmj61yg49w7bzspl5m1nh6agqgs8k7qrq9q26xqy"; + }; + + nativeBuildInputs = [ + meson + ninja + (pkgconfig.override { vanilla = true; }) + mesa_noglu.dev + wrapGAppsHook + ]; + + buildInputs = [ + efl + 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-libav + pcre + ]; + + meta = { + description = "Video + Audio player along the lines of mplayer"; + homepage = http://enlightenment.org/; + maintainers = with stdenv.lib.maintainers; [ matejc ftrvxmtrx romildo ]; + platforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.bsd2; + }; +} diff --git a/nixpkgs/pkgs/desktops/enlightenment/terminology.nix b/nixpkgs/pkgs/desktops/enlightenment/terminology.nix new file mode 100644 index 000000000000..f11f21f5b955 --- /dev/null +++ b/nixpkgs/pkgs/desktops/enlightenment/terminology.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, efl, pcre, mesa_noglu, makeWrapper }: + +stdenv.mkDerivation rec { + name = "terminology-${version}"; + version = "1.3.2"; + + src = fetchurl { + url = "http://download.enlightenment.org/rel/apps/terminology/${name}.tar.xz"; + sha256 = "1kclxzadmk272s9spa7n704pcb1c611ixxrq88w5zk22va0i25xm"; + }; + + nativeBuildInputs = [ + meson + ninja + (pkgconfig.override { vanilla = true; }) + makeWrapper + ]; + + buildInputs = [ + efl + pcre + mesa_noglu + ]; + + meta = { + description = "Powerful terminal emulator based on EFL"; + homepage = https://www.enlightenment.org/about-terminology; + platforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.bsd2; + maintainers = with stdenv.lib.maintainers; [ matejc tstrobel ftrvxmtrx ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python-desktop/default.nix new file mode 100644 index 000000000000..e7f687d96068 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python-desktop/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, gnome_python, librsvg, libwnck, libgtop, pkgconfig, python2, gtk }: + +let + inherit (python2.pkgs) python pygtk; +in stdenv.mkDerivation rec { + ver_maj = "2.32"; + ver_min = "0"; + version = "${ver_maj}.${ver_min}"; + name = "gnome-python-desktop-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-python-desktop/${ver_maj}/gnome-python-desktop-${version}.tar.bz2"; + sha256 = "1s8f9rns9v7qlwjv9qh9lr8crp88dpzfm45hj47zc3ivpy0dbnq9"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk librsvg libwnck libgtop python ]; + propagatedBuildInputs = [ gnome_python pygtk ]; + + # gnome-python-desktop expects that .pth file is already installed by PyGTK + # in the same directory. This is not the case for Nix. + postInstall = '' + echo "gtk-2.0" > $out/${python2.sitePackages}/${name}.pth + ''; + + meta = with stdenv.lib; { + homepage = http://www.pygtk.org; + description = "Python bindings for GNOME desktop packages"; + license = licenses.lgpl21; + maintainers = [ maintainers.goibhniu ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix b/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix new file mode 100644 index 000000000000..f571cf8738f6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, python2, pkgconfig, libgnome, GConf, glib, gtk, gnome_vfs }: + +with stdenv.lib; + +let + inherit (python2.pkgs) python pygobject2 pygtk dbus-python; +in stdenv.mkDerivation rec { + version = "2.28"; + name = "gnome-python-${version}.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-python/${version}/${name}.tar.bz2"; + sha256 = "759ce9344cbf89cf7f8449d945822a0c9f317a494f56787782a901e4119b96d8"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ python glib gtk GConf libgnome gnome_vfs ]; + propagatedBuildInputs = [ pygobject2 pygtk dbus-python ]; + + # gnome-python expects that .pth file is already installed by PyGTK in the + # same directory. This is not the case for Nix. + postInstall = '' + echo "gtk-2.0" > $out/${python2.sitePackages}/${name}.pth + ''; + + meta = with stdenv.lib; { + homepage = http://pygtk.org/; + description = "Python wrapper for GNOME libraries"; + platforms = platforms.linux; + license = licenses.lgpl2; + maintainers = with maintainers; [ qknight ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/bindings/libglademm/default.nix b/nixpkgs/pkgs/desktops/gnome-2/bindings/libglademm/default.nix new file mode 100644 index 000000000000..d4813eb2a938 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/bindings/libglademm/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtkmm, libglade }: + +stdenv.mkDerivation rec { + name = "libglademm-2.6.7"; + + src = fetchurl { + url = "mirror://gnome/sources/libglademm/2.6/${name}.tar.bz2"; + sha256 = "1hrbg9l5qb7w0xvr7013qamkckyj0fqc426c851l69zpmhakqm1q"; + }; + + outputs = [ "out" "devdoc" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool ]; + + propagatedBuildInputs = [ gtkmm libglade ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/default.nix b/nixpkgs/pkgs/desktops/gnome-2/default.nix new file mode 100644 index 000000000000..f67dc13c8545 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/default.nix @@ -0,0 +1,88 @@ +{ callPackage, self, stdenv, gettext, gvfs, libunique, bison2, rarian +, libstartup_notification, overrides ? {} }: + +let overridden = set // overrides; set = with overridden; { + # Backward compatibility. + gtkdoc = self.gtk-doc; + startup_notification = libstartup_notification; + startupnotification = libstartup_notification; + gnomedocutils = self.gnome-doc-utils; + gnomeicontheme = self.gnome_icon_theme; + gnome_common = gnome-common; + inherit rarian; + +#### PLATFORM + + libIDL = callPackage ./platform/libIDL { + gettext = if stdenv.isDarwin then gettext else null; + }; + + ORBit2 = callPackage ./platform/ORBit2 { }; + + libart_lgpl = callPackage ./platform/libart_lgpl { }; + + libglade = callPackage ./platform/libglade { }; + + libgnomeprint = callPackage ./platform/libgnomeprint { + bison = bison2; + }; + + libgnomeprintui = callPackage ./platform/libgnomeprintui { }; + + libgnomecups = callPackage ./platform/libgnomecups { }; + + libgtkhtml = callPackage ./platform/libgtkhtml { }; + + GConf = callPackage ./platform/GConf { }; + + libgnomecanvas = callPackage ./platform/libgnomecanvas { }; + + libgnomecanvasmm = callPackage ./platform/libgnomecanvasmm { }; + + # for git-head builds + gnome-common = callPackage platform/gnome-common { }; + + gnome_mime_data = callPackage ./platform/gnome-mime-data { }; + + gnome_python = callPackage ./bindings/gnome-python { }; + + gnome_python_desktop = callPackage ./bindings/gnome-python-desktop { }; + python_rsvg = overridden.gnome_python_desktop; + + gnome_vfs = callPackage ./platform/gnome-vfs { }; + + libgnome = callPackage ./platform/libgnome { }; + + libgnomeui = callPackage ./platform/libgnomeui { }; + + libbonobo = callPackage ./platform/libbonobo { }; + + libbonoboui = callPackage ./platform/libbonoboui { }; + + gtkhtml = callPackage ./platform/gtkhtml { }; + + gtkhtml4 = callPackage ./platform/gtkhtml/4.x.nix { }; + + # Required for nautilus + inherit (libunique); + + gtkglext = callPackage ./platform/gtkglext { }; + +#### DESKTOP + + gvfs = gvfs.override { gnome = self; }; + + # Removed from recent GNOME releases, but still required + scrollkeeper = callPackage ./desktop/scrollkeeper { }; + + gtksourceview = callPackage ./desktop/gtksourceview { }; + + gnome_icon_theme = callPackage ./desktop/gnome-icon-theme { }; + + vte = callPackage ./desktop/vte { }; + +#### BINDINGS + + libglademm = callPackage ./bindings/libglademm { }; + +}; in overridden diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/gnome-icon-theme/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/gnome-icon-theme/default.nix new file mode 100644 index 000000000000..dd7e269f94e5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/gnome-icon-theme/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, intltool, iconnamingutils, gtk }: + +stdenv.mkDerivation rec { + name = "gnome-icon-theme-2.91.93"; + + src = fetchurl { + #url = "mirror://gnome/sources/gnome-icon-theme/3.4/${name}.tar.xz"; + url = "mirror://gnome/sources/gnome-icon-theme/2.91/${name}.tar.bz2"; + sha256 = "cc7f15e54e2640697b58c26e74cc3f6ebadeb4ef6622bffe9c1e6874cc3478d6"; + }; + + nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ]; + + # remove a tree of dirs with no files within + postInstall = '' rm -r "$out/share/locale" ''; + + meta = { + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix new file mode 100644 index 000000000000..b40cb98cbefc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/gtksourceview/default.nix @@ -0,0 +1,43 @@ +{stdenv, fetchpatch, fetchurl, autoreconfHook, pkgconfig, atk, cairo, glib +, gnome-common, gtk, pango +, libxml2Python, perl, intltool, gettext, gtk-mac-integration-gtk2 }: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "gtksourceview-${version}"; + version = "2.10.5"; + + src = fetchurl { + url = "mirror://gnome/sources/gtksourceview/2.10/${name}.tar.bz2"; + sha256 = "c585773743b1df8a04b1be7f7d90eecdf22681490d6810be54c81a7ae152191e"; + }; + + patches = optionals stdenv.isDarwin [ + (fetchpatch { + name = "change-igemacintegration-to-gtkosxapplication.patch"; + url = "https://gitlab.gnome.org/GNOME/gtksourceview/commit/e88357c5f210a8796104505c090fb6a04c213902.patch"; + sha256 = "0h5q79q9dqbg46zcyay71xn1pm4aji925gjd5j93v4wqn41wj5m7"; + }) + (fetchpatch { + name = "update-to-gtk-mac-integration-2.0-api.patch"; + url = "https://gitlab.gnome.org/GNOME/gtksourceview/commit/ab46e552e1d0dae73f72adac8d578e40bdadaf95.patch"; + sha256 = "0qzrbv4hpa0v8qbmpi2vp575n13lkrvp3cgllwrd2pslw1v9q3aj"; + }) + ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + atk cairo glib gtk + pango libxml2Python perl intltool + gettext + ] ++ optionals stdenv.isDarwin [ + autoreconfHook gnome-common gtk-mac-integration-gtk2 + ]; + + preConfigure = optionalString stdenv.isDarwin '' + intltoolize --force + ''; + + doCheck = false; # requires X11 daemon +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/default.nix new file mode 100644 index 000000000000..ac9a87299ab8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchFromGitHub, pkgconfig, glib, gnome2, dbus-glib, gmime, libnotify, libgnome-keyring, openssl, cyrus_sasl, gnonlin, sylpheed, gob2, gettext, intltool, libxml2, hicolor-icon-theme, tango-icon-theme }: + +stdenv.mkDerivation rec { + rev = "9ae8768"; + version = "5.4"; + name = "mail-notification-${version}"; + + src = fetchFromGitHub { + inherit rev; + owner = "epienbroek"; + repo = "mail-notification"; + sha256 = "1slb7gajn30vdaq0hf5rikwdly1npmg1cf83hpjs82xd98knl13d"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib dbus-glib gmime libnotify libgnome-keyring openssl cyrus_sasl gnonlin sylpheed gob2 gettext intltool gnome2.GConf gnome2.libgnomeui dbus-glib gmime libnotify gnome2.scrollkeeper libxml2 gnome2.gnome_icon_theme hicolor-icon-theme tango-icon-theme ]; + + prePatch = '' + sed -i -e '/jb_rule_set_install_message/d' -e '/jb_rule_add_install_command/d' jbsrc/jb.c + + # currently disable the check for missing sheme until a better solution + # is found; needed, because otherwise the application doesn't even start + # and fails saying it unable to find gconf scheme values. + sed -i -e 's/(schema_missing)/(!schema_missing)/g' src/mn-conf.c + ''; + + patches = [ + ./patches/mail-notification-dont-link-against-bsd-compat.patch + ]; + + patchFlags = "-p0"; + NIX_CFLAGS_COMPILE = "-Wno-error"; + + preConfigure = "./jb configure prefix=$out"; + + postConfigure = '' + substituteInPlace build/config \ + --replace "omf-dir|string|1|${gnome2.scrollkeeper}/share/omf" "omf-dir|string|1|$out/share/omf" \ + --replace "scrollkeeper-dir|string|1|${gnome2.scrollkeeper}/var/lib/scrollkeeper" "omf-dir|string|1|$out/var/lib/scrollkeeper" \ + ''; + + buildPhase = "./jb build"; + installPhase = "./jb install"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Tray status icon, which notifies us when new email arrives"; + homepage = https://www.nongnu.org/mailnotify/; + license = with licenses; [ gpl3 ]; + platforms = platforms.unix; + maintainers = [ maintainers.eleanor ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/patches/mail-notification-dont-link-against-bsd-compat.patch b/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/patches/mail-notification-dont-link-against-bsd-compat.patch new file mode 100644 index 000000000000..e246a8cc9389 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/mail-notification/patches/mail-notification-dont-link-against-bsd-compat.patch @@ -0,0 +1,10 @@ +--- jbsrc/jb.c.orig 2014-01-19 20:06:48.525462981 +0100 ++++ jbsrc/jb.c 2014-01-19 20:07:36.087934897 +0100 +@@ -425,7 +425,6 @@ + */ + jb_compile_options_add_cflags(object->compile_options, "-std=c99"); + jb_compile_options_add_cppflags(object->compile_options, "-D_BSD_SOURCE -D_POSIX_C_SOURCE=199309L"); +- jb_compile_options_add_libs(object->compile_options, "-lbsd-compat"); + } + + jb_compile_options_add_string_defines(object->compile_options, diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/scrollkeeper/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/scrollkeeper/default.nix new file mode 100644 index 000000000000..7c713cb91221 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/scrollkeeper/default.nix @@ -0,0 +1,20 @@ +{stdenv, fetchurl, pkgconfig, perlPackages, libxml2, libxslt, docbook_xml_dtd_42, automake, gettext}: + +stdenv.mkDerivation { + name = "scrollkeeper-0.3.14"; + src = fetchurl { + url = mirror://gnome/sources/scrollkeeper/0.3/scrollkeeper-0.3.14.tar.bz2; + sha256 = "08n1xgj1f53zahwm0wpn3jid3rfbhi3iwby0ilaaldnid5qriqgc"; + }; + + # The fuloong2f is not supported by scrollkeeper-0.3.14 config.guess + preConfigure = " + substituteInPlace extract/dtds/Makefile.am --replace /usr/bin/xmlcatalog xmlcatalog + cp ${automake}/share/automake*/config.{sub,guess} . + "; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libxml2 libxslt gettext ] + ++ (with perlPackages; [ perl XMLParser ]); + configureFlags = [ "--with-xml-catalog=${docbook_xml_dtd_42}/xml/dtd/docbook/catalog.xml" ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/alt.patch b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/alt.patch new file mode 100644 index 000000000000..65c3ddf1fcf8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/alt.patch @@ -0,0 +1,50 @@ +From a9d6a34708f846952f423d078397352858f7b1a4 Mon Sep 17 00:00:00 2001 +From: Christian Persch <chpe@gnome.org> +Date: Sat, 12 May 2012 18:48:05 +0200 +Subject: [PATCH] keymap: Treat ALT as META + +https://bugzilla.gnome.org/show_bug.cgi?id=663779 +--- + src/vte.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +diff --git a/src/vte.c b/src/vte.c +index dd27e9a..0657921 100644 +--- a/src/vte.c ++++ b/src/vte.c +@@ -5170,19 +5170,24 @@ static void + vte_terminal_read_modifiers (VteTerminal *terminal, + GdkEvent *event) + { ++ GdkKeymap *keymap; + GdkModifierType modifiers; + + /* Read the modifiers. */ +- if (gdk_event_get_state((GdkEvent*)event, &modifiers)) { +- GdkKeymap *keymap; +-#if GTK_CHECK_VERSION (2, 90, 8) +- keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window)); +-#else +- keymap = gdk_keymap_get_for_display(gdk_drawable_get_display(((GdkEventAny*)event)->window)); ++ if (!gdk_event_get_state((GdkEvent*)event, &modifiers)) ++ return; ++ ++ keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window)); ++ ++ gdk_keymap_add_virtual_modifiers (keymap, &modifiers); ++ ++#if 1 ++ /* HACK! Treat ALT as META; see bug #663779. */ ++ if (modifiers & GDK_MOD1_MASK) ++ modifiers |= VTE_META_MASK; + #endif +- gdk_keymap_add_virtual_modifiers (keymap, &modifiers); +- terminal->pvt->modifiers = modifiers; +- } ++ ++ terminal->pvt->modifiers = modifiers; + } + + /* Read and handle a keypress event. */ +-- +1.7.5.1.217.g4e3aa.dirty \ No newline at end of file diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/change-scroll-region.patch b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/change-scroll-region.patch new file mode 100644 index 000000000000..9e3e83b1262a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/change-scroll-region.patch @@ -0,0 +1,67 @@ +Index: vte-0.26.0/src/vte.c +=================================================================== +--- vte-0.26.0.orig/src/vte.c 2010-11-30 23:04:53.000000000 -0800 ++++ vte-0.26.0/src/vte.c 2010-12-07 20:05:07.865548000 -0800 +@@ -3862,6 +3862,7 @@ vte_terminal_process_incoming(VteTermina + long wcount, start, delta; + gboolean leftovers, modified, bottom, again; + gboolean invalidated_text; ++ gboolean in_scroll_region; + GArray *unichars; + struct _vte_incoming_chunk *chunk, *next_chunk, *achunk = NULL; + +@@ -3881,6 +3882,10 @@ vte_terminal_process_incoming(VteTermina + cursor = screen->cursor_current; + cursor_visible = terminal->pvt->cursor_visible; + ++ in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ + /* We should only be called when there's data to process. */ + g_assert(terminal->pvt->incoming || + (terminal->pvt->pending->len > 0)); +@@ -3979,6 +3984,8 @@ skip_chunk: + * points to the first character which isn't part of this + * sequence. */ + if ((match != NULL) && (match[0] != '\0')) { ++ gboolean new_in_scroll_region; ++ + /* Call the right sequence handler for the requested + * behavior. */ + _vte_terminal_handle_sequence(terminal, +@@ -3989,12 +3996,20 @@ skip_chunk: + start = (next - wbuf); + modified = TRUE; + +- /* if we have moved during the sequence handler, restart the bbox */ ++ new_in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ ++ delta = screen->scroll_delta; /* delta may have changed from sequence. */ ++ ++ /* if we have moved greatly during the sequence handler, or moved into a scroll_region ++ * from outside it, restart the bbox */ + if (invalidated_text && +- (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK)) { ++ ((new_in_scroll_region && !in_scroll_region) || ++ (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK))) { + /* Clip off any part of the box which isn't already on-screen. */ + bbox_topleft.x = MAX(bbox_topleft.x, 0); + bbox_topleft.y = MAX(bbox_topleft.y, delta); +@@ -4014,6 +4029,8 @@ skip_chunk: + bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT; + bbox_topleft.x = bbox_topleft.y = G_MAXINT; + } ++ ++ in_scroll_region = new_in_scroll_region; + } else + /* Second, we have a NULL match, and next points to the very + * next character in the buffer. Insert the character which diff --git a/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/default.nix b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/default.nix new file mode 100644 index 000000000000..0c8efc57c71f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/desktop/vte/default.nix @@ -0,0 +1,61 @@ +{ stdenv, fetchurl, fetchpatch, intltool, pkgconfig, glib, gtk, ncurses +, pythonSupport ? false, python27Packages}: + +let + inherit (python27Packages) python pygtk; +in stdenv.mkDerivation rec { + name = "vte-0.28.2"; + + src = fetchurl { + url = "mirror://gnome/sources/vte/0.28/${name}.tar.bz2"; + sha256 = "00zrip28issgmz2cqk5k824cbqpbixi5x7k88zxksdqpnq1f414d"; + }; + + patches = [ + ./alt.patch + ./change-scroll-region.patch + # CVE-2012-2738 + # fixed in upstream version 0.32.2 + (fetchpatch{ + name = "CVE-2012-2738-1.patch"; + url = https://gitlab.gnome.org/GNOME/vte/commit/feeee4b5832b17641e505b7083e0d299fdae318e.patch; + sha256 = "1455i6zxcx4rj2cz639s8qdc04z2nshprwl7k00mcsw49gv3hk5n"; + }) + (fetchpatch{ + name = "CVE-2012-2738-2.patch"; + url = https://gitlab.gnome.org/GNOME/vte/commit/98ce2f265f986fb88c38d508286bb5e3716b9e74.patch; + sha256 = "0n24vw49h89w085ggq23iwlnnb6ajllfh2dg4vsar21d82jxc0sn"; + }) + ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool glib gtk ncurses ] ++ + stdenv.lib.optionals pythonSupport [python pygtk]; + + configureFlags = [ + (stdenv.lib.enableFeature pythonSupport "python") + ]; + + postInstall = stdenv.lib.optionalString pythonSupport '' + cd $(toPythonPath $out)/gtk-2.0 + for n in *; do + ln -s "gtk-2.0/$n" "../$n" + done + ''; + + meta = { + homepage = https://www.gnome.org/; + description = "A library implementing a terminal emulator widget for GTK+"; + longDescription = '' + VTE is a library (libvte) implementing a terminal emulator widget for + GTK+, and a minimal sample application (vte) using that. Vte is + mainly used in gnome-terminal, but can also be used to embed a + console/terminal in games, editors, IDEs, etc. VTE supports Unicode and + character set conversion, as well as emulating any terminal known to + the system's terminfo database. + ''; + license = stdenv.lib.licenses.lgpl2; + maintainers = with stdenv.lib.maintainers; [ astsmtl ]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix new file mode 100644 index 000000000000..df3de11e738d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/GConf/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, dbus-glib, glib, ORBit2, libxml2, polkit, python2, intltool }: + +stdenv.mkDerivation rec { + name = "gconf-${version}"; + version = "3.2.6"; + + src = fetchurl { + url = "mirror://gnome/sources/GConf/${stdenv.lib.versions.majorMinor version}/GConf-${version}.tar.xz"; + sha256 = "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr"; + }; + + outputs = [ "out" "dev" "man" ]; + + buildInputs = [ ORBit2 libxml2 python2 ] + # polkit requires pam, which requires shadow.h, which is not available on + # darwin + ++ stdenv.lib.optional (!stdenv.isDarwin) polkit; + + propagatedBuildInputs = [ glib dbus-glib ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + + configureFlags = + # fixes the "libgconfbackend-oldxml.so is not portable" error on darwin + stdenv.lib.optional stdenv.isDarwin [ "--enable-static" ]; + + meta = with stdenv.lib; { + homepage = https://projects.gnome.org/gconf/; + description = "Deprecated system for storing application preferences"; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix new file mode 100644 index 000000000000..ef18f0783ce3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/ORBit2/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, glib, libIDL, libintl }: + +stdenv.mkDerivation rec { + name = "ORBit2-${minVer}.19"; + minVer = "2.14"; + + src = fetchurl { + url = "mirror://gnome/sources/ORBit2/${minVer}/${name}.tar.bz2"; + sha256 = "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam"; + }; + + nativeBuildInputs = [ pkgconfig libintl ]; + propagatedBuildInputs = [ glib libIDL ]; + + outputs = [ "out" "dev" ]; + + preBuild = '' + sed 's/-DG_DISABLE_DEPRECATED//' -i linc2/src/Makefile + ''; + + preFixup = '' + moveToOutput "bin/orbit2-config" "$dev" + ''; + + meta = with stdenv.lib; { + homepage = https://projects.gnome.org/ORBit2/; + description = "A CORBA 2.4-compliant Object Request Broker"; + platforms = platforms.unix; + maintainers = with maintainers; [ lovek323 ]; + + longDescription = '' + ORBit2 is a CORBA 2.4-compliant Object Request Broker (ORB) featuring + mature C, C++ and Python bindings. Bindings (in various degrees of + completeness) are also available for Perl, Lisp, Pascal, Ruby, and TCL; + others are in-progress. It supports POA, DII, DSI, TypeCode, Any, IR and + IIOP. Optional features including INS and threading are available. ORBit2 + is engineered for the desktop workstation environment, with a focus on + performance, low resource usage, and security. The core ORB is written in + C, and runs under Linux, UNIX (BSD, Solaris, HP-UX, ...), and Windows. + ORBit2 is developed and released as open source software under GPL/LGPL. + ''; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix new file mode 100644 index 000000000000..54a2bd526a94 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-common/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, which }: + +stdenv.mkDerivation rec { + name = "gnome-common-${minVer}.0"; + minVer = "2.34"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-common/${minVer}/${name}.tar.bz2"; + sha256 = "1pz13mpp09q5s3bikm8ml92s1g0scihsm4iipqv1ql3mp6d4z73s"; + }; + + propagatedBuildInputs = [ which ]; # autogen.sh which is using gnome-common tends to require which + + patches = [(fetchurl { + name = "gnome-common-patch"; + url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935"; + sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl"; + })]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix new file mode 100644 index 000000000000..c3aee9024a20 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix @@ -0,0 +1,10 @@ +{stdenv, fetchurl, intltool}: + +stdenv.mkDerivation { + name = "gnome-mime-data-2.18.0"; + src = fetchurl { + url = mirror://gnome/sources/gnome-mime-data/2.18/gnome-mime-data-2.18.0.tar.bz2; + sha256 = "1mvg8glb2a40yilmyabmb7fkbzlqd3i3d31kbkabqnq86xdnn69p"; + }; + buildInputs = [ intltool ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix new file mode 100644 index 000000000000..c15f43b542aa --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, bzip2, openssl, dbus-glib +, glib, gamin, cdparanoia, intltool, GConf, gnome_mime_data, avahi, acl }: + +stdenv.mkDerivation rec { + name = "gnome-vfs-${minVer}.4"; + minVer = "2.24"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-vfs/${minVer}/${name}.tar.bz2"; + sha256 = "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ intltool pkgconfig ]; + buildInputs = + [ libxml2 bzip2 openssl dbus-glib gamin cdparanoia + gnome_mime_data avahi acl + ]; + + propagatedBuildInputs = [ GConf glib ]; + + postPatch = "find . -name Makefile.in | xargs sed 's/-DG_DISABLE_DEPRECATED//g' -i "; + + doCheck = false; # needs dbus daemon +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix new file mode 100644 index 000000000000..834ec2201581 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkglext/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, glib, gtk, libGLU_combined, pango, pangox_compat, xorg }: + +stdenv.mkDerivation rec { + name = "gtkglext-1.2.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gtkglext/1.2/${name}.tar.bz2"; + sha256 = "0lbz96jwz57hnn52b8rfj54inwpwcc9fkdq6ya043cgnfih77g8n"; + }; + + buildInputs = with xorg; + [ pkgconfig glib gtk libGLU_combined pango libX11 libXmu ]; + propagatedBuildInputs = [ pangox_compat ]; + + patches = [ + # The library uses `GTK_WIDGET_REALIZED', `GTK_WIDGET_TOPLEVEL', and + # `GTK_WIDGET_NO_WINDOW', all of which appear to be deprecated nowadays. + (fetchpatch { + name = "02_fix_gtk-2.20_deprecated_symbols.diff"; + url = https://git.gnome.org/browse/gtkglext/patch/?id=d8f285d1397f6c41099c67e668288eecc1cdae67; + sha256 = "1zxak73plhy3m6psil1q9ssvjh9aqrif7kcbcz69y480qfb4ja08"; + }) + # Fix build with glibc ≥ 2.27 + (fetchurl { + url = https://salsa.debian.org/gewo/gtkglext/raw/3b002677c907890c7de002c9f5b4b3ec71d11b31/debian/patches/04_glibc2.27-ftbfs.diff; + sha256 = "1l1swkjkai6pnah23xfsfpbq2fgbhp5pzj3l0ybsx6b858cxqzj5"; + }) + ]; + + meta = with stdenv.lib; { + homepage = https://projects.gnome.org/gtkglext/; + description = "GtkGLExt, an OpenGL extension to GTK+"; + longDescription = + '' GtkGLExt is an OpenGL extension to GTK+. It provides additional GDK + objects which support OpenGL rendering in GTK+ and GtkWidget API + add-ons to make GTK+ widgets OpenGL-capable. In contrast to Janne + Löf's GtkGLArea, GtkGLExt provides a GtkWidget API that enables + OpenGL drawing for standard and custom GTK+ widgets. + ''; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/01_remove-disable-deprecated.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/01_remove-disable-deprecated.patch new file mode 100644 index 000000000000..1d9a179d236b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/01_remove-disable-deprecated.patch @@ -0,0 +1,17 @@ +diff -Naur gtkhtml-3.32.2-orig/configure gtkhtml-3.32.2/configure +--- gtkhtml-3.32.2-orig/configure 2011-02-05 23:12:31.000000000 -0500 ++++ gtkhtml-3.32.2/configure 2011-04-22 13:03:18.228874636 -0400 +@@ -5761,12 +5761,7 @@ + + if test "x${enable_deprecated_flags}" = "xyes"; then + +- list="-DG_DISABLE_DEPRECATED +- -DPANGO_DISABLE_DEPRECATED +- -DGDK_DISABLE_DEPRECATED +- -DGDK_PIXBUF_DISABLE_DEPRECATED +- -DGTK_DISABLE_DEPRECATED +- -DGNOME_DISABLE_DEPRECATED" ++ list="" + flags_supported="" + flags_unsupported="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported compiler flags" >&5 diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/4.x.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/4.x.nix new file mode 100644 index 000000000000..493f88290f3a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/4.x.nix @@ -0,0 +1,16 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, intltool, +GConf, enchant, isocodes, gnome_icon_theme, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + version = "4.10.0"; + name = "gtkhtml-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/gtkhtml/4.10/${name}.tar.xz"; + sha256 = "1hq6asgb5n9q3ryx2vngr4jyi8lg65lzpnlgrgcwayiczcj68fya"; + }; + + propagatedBuildInputs = [ gsettings-desktop-schemas gtk3 gnome_icon_theme GConf ]; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool enchant isocodes ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/default.nix new file mode 100644 index 000000000000..b4615683939f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/gtkhtml/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, gtk, intltool, +GConf, enchant, isocodes, gnome_icon_theme }: + +stdenv.mkDerivation rec { + name = "gtkhtml-3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gtkhtml/3.32/${name}.tar.bz2"; + sha256 = "17z3jwvpn8waz7bhwrk7a6vs9pad6sqmlxxcqwvxxq89ywy0ail7"; + }; + + #From Debian, fixes build issue described here: + #http://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg250091.html + patches = [ ./01_remove-disable-deprecated.patch ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk intltool GConf enchant isocodes gnome_icon_theme ]; + + NIX_LDFLAGS = [ "-lgthread-2.0" ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix new file mode 100644 index 000000000000..1fc780026064 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libIDL/default.nix @@ -0,0 +1,15 @@ +{stdenv, fetchurl, flex, bison, pkgconfig, glib, gettext}: + +stdenv.mkDerivation rec { + name = "libIDL-${minVer}.14"; + minVer = "0.8"; + + src = fetchurl { + url = "mirror://gnome/sources/libIDL/${minVer}/${name}.tar.bz2"; + sha256 = "08129my8s9fbrk0vqvnmx6ph4nid744g5vbwphzkaik51664vln5"; + }; + + buildInputs = [ glib gettext ]; + + nativeBuildInputs = [ flex bison pkgconfig ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix new file mode 100644 index 000000000000..7b1ccb97dc4b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix @@ -0,0 +1,9 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation rec { + name = "libart_lgpl-2.3.21"; + src = fetchurl { + url = "mirror://gnome/sources/libart_lgpl/2.3/${name}.tar.bz2"; + sha256 = "1yknfkyzgz9s616is0l9gp5aray0f2ry4dw533jgzj8gq5s1xhgx"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix new file mode 100644 index 000000000000..bf0cec8dfbe6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonobo/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, flex, bison, pkgconfig, glib, libxml2, popt +, intltool, ORBit2, procps }: + +stdenv.mkDerivation rec { + name = "libbonobo-${minVer}.1"; + minVer = "2.32"; + + src = fetchurl { + url = "mirror://gnome/sources/libbonobo/${minVer}/${name}.tar.bz2"; + sha256 = "0swp4kk6x7hy1rvd1f9jba31lvfc6qvafkvbpg9h0r34fzrd8q4i"; + }; + + outputs = [ "out" "dev" ]; + + preConfigure = # still using stuff deprecated in new glib versions + "sed 's/-DG_DISABLE_DEPRECATED//g' -i configure activation-server/Makefile.in"; + + nativeBuildInputs = [ flex bison pkgconfig intltool procps ]; + buildInputs = [ libxml2 ]; + propagatedBuildInputs = [ popt glib ORBit2 ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix new file mode 100644 index 000000000000..a71d6eb789ba --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libbonoboui/default.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchurl, bison, pkgconfig, popt, libxml2, gtk, libtool +, intltool, libbonobo, GConf, libgnomecanvas, libgnome, libglade }: + +stdenv.mkDerivation rec { + name = "libbonoboui-${minVer}.5"; + minVer = "2.24"; + + src = fetchurl { + url = "mirror://gnome/sources/libbonoboui/${minVer}/${name}.tar.bz2"; + sha256 = "1kbgqh7bw0fdx4f1a1aqwpff7gp5mwhbaz60c6c98bc4djng5dgs"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ bison popt gtk libxml2 GConf libglade libtool ]; + propagatedBuildInputs = [ libbonobo libgnomecanvas libgnome ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix new file mode 100644 index 000000000000..1f4af86ffeb6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libglade/default.nix @@ -0,0 +1,19 @@ +{stdenv, fetchurl, pkgconfig, gtk, libxml2, python, gettext}: + +stdenv.mkDerivation { + name = "libglade-2.6.4"; + + src = fetchurl { + url = mirror://gnome/sources/libglade/2.6/libglade-2.6.4.tar.bz2; + sha256 = "1v2x2s04jry4gpabws92i0wq2ghd47yr5n9nhgnkd7c38xv1wdk4"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk python gettext ]; + + NIX_LDFLAGS = "-lgmodule-2.0"; + + propagatedBuildInputs = [ libxml2 ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix new file mode 100644 index 000000000000..42f47bc5a83f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, glib, popt, zlib, libcanberra-gtk2 +, intltool, libbonobo, GConf, gnome_vfs, libtool, libogg +}: + +stdenv.mkDerivation rec { + name = "libgnome-${minVer}.1"; + minVer = "2.32"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnome/${minVer}/${name}.tar.bz2"; + sha256 = "197pnq8y0knqjhm2fg4j6hbqqm3qfzfnd0irhwxpk1b4hqb3kimj"; + }; + + patches = [ ./new-glib.patch ]; + /* There's a comment containing an invalid utf-8 sequence, breaking glib-mkenums. */ + postPatch = "sed '/returns the true filename/d' -i libgnome/gnome-config.h"; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ popt zlib intltool GConf gnome_vfs libcanberra-gtk2 libtool ]; + propagatedBuildInputs = [ glib libbonobo libogg ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch new file mode 100644 index 000000000000..ceabfbdd158e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch @@ -0,0 +1,65 @@ +Porting libgnome to newer glib: + * remove g_thread_init and g_thread_supported, which are longer needed + https://developer.gnome.org/glib/2.36/glib-Deprecated-Thread-APIs.html#g-thread-init + * replace GStaticRecMutex by GRecMutex + https://developer.gnome.org/glib/2.36/glib-Deprecated-Thread-APIs.html#GStaticRecMutex + +diff --git a/libgnome/gnome-i18n.c b/libgnome/gnome-i18n.c +index 531c56c..f13d61e 100644 +--- a/libgnome/gnome-i18n.c ++++ b/libgnome/gnome-i18n.c +@@ -55,12 +55,14 @@ + const GList * + gnome_i18n_get_language_list (const gchar *ignored) + { +- static GStaticRecMutex lang_list_lock = G_STATIC_REC_MUTEX_INIT; ++ static GRecMutex lang_list_lock; ++ g_rec_mutex_init (&lang_list_lock); ++ + static GList *list = NULL; + const char * const* langs; + int i; + +- g_static_rec_mutex_lock (&lang_list_lock); ++ g_rec_mutex_lock (&lang_list_lock); + + if (list == NULL) { + langs = g_get_language_names (); +@@ -71,7 +73,7 @@ gnome_i18n_get_language_list (const gchar *ignored) + list = g_list_reverse (list); + } + +- g_static_rec_mutex_unlock (&lang_list_lock); ++ g_rec_mutex_unlock (&lang_list_lock); + + return list; + } +diff --git a/libgnome/gnome-init.c b/libgnome/gnome-init.c +index fe3efd4..c6619af 100644 +--- a/libgnome/gnome-init.c ++++ b/libgnome/gnome-init.c +@@ -115,9 +115,6 @@ gnome_bonobo_module_info_get (void) + static void + bonobo_activation_pre_args_parse (GnomeProgram *program, GnomeModuleInfo *mod_info) + { +- if (!g_thread_supported ()) +- g_thread_init (NULL); +- + if (!bonobo_activation_is_initialized ()) + bonobo_activation_preinit (program, mod_info); + } +diff --git a/libgnome/gnome-program.c b/libgnome/gnome-program.c +index 739765e..cd14999 100644 +--- a/libgnome/gnome-program.c ++++ b/libgnome/gnome-program.c +@@ -1878,10 +1878,6 @@ gnome_program_init (const char *app_id, const char *app_version, + GnomeProgram *program; + va_list args; + +- /* g_thread_init() has to be the first GLib function called ever */ +- if (!g_threads_got_initialized) +- g_thread_init (NULL); +- + g_type_init (); + + va_start(args, first_property_name); diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix new file mode 100644 index 000000000000..2be8c29e4931 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, pkgconfig, gtk, intltool, libart_lgpl, libglade }: + +stdenv.mkDerivation rec { + name = "libgnomecanvas-${minVer}.3"; + minVer = "2.30"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomecanvas/${minVer}/${name}.tar.bz2"; + sha256 = "0h6xvswbqspdifnyh5pm2pqq55yp3kn6yrswq7ay9z49hkh7i6w5"; + }; + + outputs = [ "out" "dev" ]; + + buildInputs = [ libglade ]; + nativeBuildInputs = [ pkgconfig intltool ]; + propagatedBuildInputs = [ libart_lgpl gtk ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvasmm/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvasmm/default.nix new file mode 100644 index 000000000000..9d22488c25da --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecanvasmm/default.nix @@ -0,0 +1,13 @@ +{ stdenv, fetchurl, pkgconfig, libgnomecanvas, gtkmm }: + +stdenv.mkDerivation { + name = "libgnomecanvasmm-2.26.0"; + + src = fetchurl { + url = mirror://gnome/sources/libgnomecanvasmm/2.26/libgnomecanvasmm-2.26.0.tar.bz2; + sha256 = "996577f97f459a574919e15ba7fee6af8cda38a87a98289e9a4f54752d83e918"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libgnomecanvas gtkmm ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/cups_1.6.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/cups_1.6.patch new file mode 100644 index 000000000000..68f379c25109 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/cups_1.6.patch @@ -0,0 +1,285 @@ +From ae783efde4fa69578651994505462f02b8639220 Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev <tetromino@gentoo.org> +Date: Tue, 7 Aug 2012 06:53:09 -0400 +Subject: [PATCH] Use CUPS-1.6 IPP API getter/setter functions + +CUPS 1.6 makes various structures private and introduces these ippGet +and ippSet functions for all of the fields in these structures. +http://www.cups.org/str.php?L3928 + +We define our own accessors when building against CUPS < 1.6. + +Based on work by Jiri Popelka <jpopelka@redhat.com> at +https://bugzilla.gnome.org/show_bug.cgi?id=679759 +--- + libgnomecups/gnome-cups-printer.c | 48 +++++++++++++++++++++++++++++------- + libgnomecups/gnome-cups-queue.c | 43 +++++++++++++++++++++++++++------ + libgnomecups/gnome-cups-request.c | 44 ++++++++++++++++++++++++++++----- + 3 files changed, 110 insertions(+), 25 deletions(-) + +diff --git a/libgnomecups/gnome-cups-printer.c b/libgnomecups/gnome-cups-printer.c +index c924af0..f5e1ef7 100644 +--- a/libgnomecups/gnome-cups-printer.c ++++ b/libgnomecups/gnome-cups-printer.c +@@ -37,6 +37,34 @@ + + #define UPDATE_TIMEOUT 5000 + ++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) ++#define HAVE_CUPS_1_6 1 ++#endif ++ ++#ifndef HAVE_CUPS_1_6 ++#define ippGetCount(attr) attr->num_values ++#define ippGetName(attr) attr->name ++#define ippGetInteger(attr, element) attr->values[element].integer ++#define ippGetString(attr, element, language) attr->values[element].string.text ++ ++static ipp_attribute_t * ++ippFirstAttribute(ipp_t *ipp) ++{ ++ if (!ipp) ++ return (NULL); ++ return (ipp->current = ipp->attrs); ++} ++ ++static ipp_attribute_t * ++ippNextAttribute(ipp_t *ipp) ++{ ++ if (!ipp || !ipp->current) ++ return (NULL); ++ return (ipp->current = ipp->current->next); ++} ++#endif ++ ++ + struct _GnomeCupsPPDFile { + char name[1]; + }; +@@ -173,9 +201,9 @@ map_reasons (GnomeCupsPrinter *printer, + printer->details->state_reasons = NULL; + + /* cf. RFC2911 4.4.12 */ +- for (i = 0; i < attr->num_values; i++) { ++ for (i = 0; i < ippGetCount (attr); i++) { + const char *p; +- const char *keyword = attr->values [i].string.text; ++ const char *keyword = ippGetString (attr, i, NULL); + + reason = g_new (GnomeCupsPrinterReason, 1); + +@@ -224,8 +252,8 @@ gnome_cups_printer_get_info (GnomeCupsPrinter *printer) + return printer->details->info; + } + +-#define MAP_INT(v,a) {if (!g_ascii_strcasecmp (attr->name, (a))) { if ((v) != attr->values[0].integer) { changed = TRUE; } (v) = attr->values[0].integer; }} +-#define MAP_STRING(v,a) {if (!g_ascii_strcasecmp (attr->name, (a))) { if (!v || strcmp (v, attr->values[0].string.text)) { g_free (v); changed = TRUE; (v) = g_strdup (attr->values[0].string.text); }}} ++#define MAP_INT(v,a) {if (!g_ascii_strcasecmp (ippGetName (attr), (a))) { if ((v) != ippGetInteger (attr, 0)) { changed = TRUE; } (v) = ippGetInteger (attr, 0); }} ++#define MAP_STRING(v,a) {if (!g_ascii_strcasecmp (ippGetName (attr), (a))) { if (!v || strcmp (v, ippGetString (attr, 0, NULL))) { g_free (v); changed = TRUE; (v) = g_strdup (ippGetString (attr, 0, NULL)); }}} + + static void + attributes_update_cb (guint id, +@@ -243,14 +271,14 @@ attributes_update_cb (guint id, + changed = FALSE; + + if (!error && response) { +- for (attr = response->attrs; attr != NULL; attr = attr->next) { +- if (!attr->name) { ++ for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) { ++ if (!ippGetName (attr)) { + continue; + } +- if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !strcmp (attr->name, "attributes-charset")) { ++ if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !strcmp (ippGetName (attr), "attributes-charset")) { + continue; + } +- if (!g_ascii_strcasecmp (attr->name, "printer-state-reasons")) { ++ if (!g_ascii_strcasecmp (ippGetName (attr), "printer-state-reasons")) { + map_reasons (printer, attr); + } + MAP_INT (printer->details->state, "printer-state"); +@@ -570,7 +598,7 @@ get_default (void) + + attr = ippFindAttribute (response, "printer-name", IPP_TAG_NAME); + if (attr) { +- name = g_strdup (attr->values[0].string.text); ++ name = g_strdup (ippGetString (attr, 0, NULL)); + } else { + name = NULL; + } +@@ -698,7 +726,7 @@ get_printer_names (void) + attr = ippFindAttribute (response, "printer-name", IPP_TAG_NAME); + while (attr) { + ret = g_list_prepend (ret, +- g_strdup (attr->values[0].string.text)); ++ g_strdup (ippGetString (attr, 0, NULL))); + + attr = ippFindNextAttribute (response, + "printer-name", +diff --git a/libgnomecups/gnome-cups-queue.c b/libgnomecups/gnome-cups-queue.c +index 9f98ed9..298db42 100644 +--- a/libgnomecups/gnome-cups-queue.c ++++ b/libgnomecups/gnome-cups-queue.c +@@ -15,6 +15,33 @@ + + #define UPDATE_TIMEOUT 3000 + ++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) ++#define HAVE_CUPS_1_6 1 ++#endif ++ ++#ifndef HAVE_CUPS_1_6 ++#define ippGetName(attr) attr->name ++#define ippGetInteger(attr, element) attr->values[element].integer ++#define ippGetString(attr, element, language) attr->values[element].string.text ++ ++static ipp_attribute_t * ++ippFirstAttribute(ipp_t *ipp) ++{ ++ if (!ipp) ++ return (NULL); ++ return (ipp->current = ipp->attrs); ++} ++ ++static ipp_attribute_t * ++ippNextAttribute(ipp_t *ipp) ++{ ++ if (!ipp || !ipp->current) ++ return (NULL); ++ return (ipp->current = ipp->current->next); ++} ++#endif ++ ++ + struct _GnomeCupsQueueDetails { + char *queue_name; + GList *jobs; +@@ -199,8 +226,8 @@ finish_job (GnomeCupsJob *job) + job->size = job->size * 1024; + } + +-#define MAP_STR(dest, src) { if (!g_ascii_strcasecmp (attr->name, (src))) { if ((dest) != NULL) g_free (dest); (dest) = g_strdup (attr->values[0].string.text);}} +-#define MAP_INT(dest, src) { if (!g_ascii_strcasecmp (attr->name, (src))) { (dest) = attr->values[0].integer; } } ++#define MAP_STR(dest, src) { if (!g_ascii_strcasecmp (ippGetName (attr), (src))) { if ((dest) != NULL) g_free (dest); (dest) = g_strdup (ippGetString (attr, 0, NULL));}} ++#define MAP_INT(dest, src) { if (!g_ascii_strcasecmp (ippGetName (attr), (src))) { (dest) = ippGetInteger (attr, 0); } } + + static void + get_jobs_cb (guint id, +@@ -231,8 +258,8 @@ get_jobs_cb (guint id, + + if (response) { + job = g_new0 (GnomeCupsJob, 1); +- for (attr = response->attrs; attr != NULL; attr = attr->next) { +- if (attr->name == NULL) { ++ for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) { ++ if (ippGetName (attr) == NULL) { + if (job->name) { + finish_job (job); + jobs = g_list_prepend (jobs, job); +@@ -244,7 +271,7 @@ get_jobs_cb (guint id, + continue; + } + +- if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !g_ascii_strcasecmp (attr->name, "attributes-charset")) { ++ if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !g_ascii_strcasecmp (ippGetName (attr), "attributes-charset")) { + continue; + + } +@@ -355,8 +382,8 @@ gnome_cups_queue_get_job_nocache (GnomeCupsQueue *queue, + + if (response) { + job = g_new0 (GnomeCupsJob, 1); +- for (attr = response->attrs; attr != NULL; attr = attr->next) { +- if (attr->name == NULL) { ++ for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) { ++ if (ippGetName (attr) == NULL) { + if (job->name) { + finish_job (job); + } else { +@@ -366,7 +393,7 @@ gnome_cups_queue_get_job_nocache (GnomeCupsQueue *queue, + break; + } + +- if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !g_ascii_strcasecmp (attr->name, "attributes-charset")) { ++ if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !g_ascii_strcasecmp (ippGetName (attr), "attributes-charset")) { + continue; + } + +diff --git a/libgnomecups/gnome-cups-request.c b/libgnomecups/gnome-cups-request.c +index c94f623..13f0948 100644 +--- a/libgnomecups/gnome-cups-request.c ++++ b/libgnomecups/gnome-cups-request.c +@@ -19,6 +19,36 @@ + #define STOP_UNUSED_THREADS_TIMEOUT 60 + #define CLOSE_UNUSED_CONNECTIONS_TIMEOUT 30 + ++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) ++#define HAVE_CUPS_1_6 1 ++#endif ++ ++#ifndef HAVE_CUPS_1_6 ++#define ippGetCount(attr) attr->num_values ++#define ippGetValueTag(attr) attr->value_tag ++#define ippGetName(attr) attr->name ++#define ippGetBoolean(attr, element) attr->values[element].boolean ++#define ippGetInteger(attr, element) attr->values[element].integer ++#define ippGetString(attr, element, language) attr->values[element].string.text ++ ++static ipp_attribute_t * ++ippFirstAttribute(ipp_t *ipp) ++{ ++ if (!ipp) ++ return (NULL); ++ return (ipp->current = ipp->attrs); ++} ++ ++static ipp_attribute_t * ++ippNextAttribute(ipp_t *ipp) ++{ ++ if (!ipp || !ipp->current) ++ return (NULL); ++ return (ipp->current = ipp->current->next); ++} ++#endif ++ ++ + typedef struct + { + GMutex *mutex; +@@ -276,14 +306,14 @@ dump_request (ipp_t const *req) + unsigned i; + ipp_attribute_t *attr; + +- for (attr = req->attrs; attr != NULL; attr = attr->next) { +- g_print ("%s", attr->name); +- for (i = 0 ; i < attr->num_values ; i++) { ++ for (attr = ippFirstAttribute (req); attr != NULL; attr = ippNextAttribute (req)) { ++ g_print ("%s", ippGetName (attr)); ++ for (i = 0 ; i < ippGetCount (attr) ; i++) { + g_print ("\t[%d] = ", i); +- switch (attr->value_tag & ~IPP_TAG_COPY) { ++ switch (ippGetValueTag (attr) & ~IPP_TAG_COPY) { + case IPP_TAG_INTEGER: + case IPP_TAG_ENUM: +- g_print ("%d\n", attr->values[i].integer); ++ g_print ("%d\n", ippGetInteger (attr, i)); + break; + + case IPP_TAG_STRING: +@@ -294,11 +324,11 @@ dump_request (ipp_t const *req) + case IPP_TAG_CHARSET: + case IPP_TAG_LANGUAGE: + case IPP_TAG_MIMETYPE: +- g_print ("'%s'\n", attr->values[i].string.text); ++ g_print ("'%s'\n", ippGetString (attr, i, NULL)); + break; + + case IPP_TAG_BOOLEAN: +- g_print ("%s\n", (int)attr->values[i].boolean ? "true" : "false"); ++ g_print ("%s\n", (int)ippGetBoolean (attr, i) ? "true" : "false"); + break; + + default: +-- +1.7.8.6 + diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/default.nix new file mode 100644 index 000000000000..2365e166d5ee --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gtk, gettext, libxml2, intltool, libart_lgpl }: + +stdenv.mkDerivation rec { + name = "libgnomecups-0.2.3"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomecups/0.2/${name}.tar.bz2"; + sha256 = "0a8xdaxzz2wc0n1fjcav65093gixzyac3948l8cxx1mk884yhc71"; + }; + + hardeningDisable = [ "format" ]; + + patches = [ ./glib.patch ./cups_1.6.patch ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk gettext intltool libart_lgpl ]; + + propagatedBuildInputs = [ libxml2 ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/glib.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/glib.patch new file mode 100644 index 000000000000..3f73af861c04 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomecups/glib.patch @@ -0,0 +1,38 @@ +From d84eee9450b3b6f6155074915efc61bedcc8d446 Mon Sep 17 00:00:00 2001 +From: Dominique Leuenberger <dimstar@opensuse.org> +Date: Sun, 27 Nov 2011 21:36:41 +0100 +Subject: [PATCH] Fix: Only glib.h can be included + +--- + libgnomecups/gnome-cups-i18n.c | 2 +- + libgnomecups/gnome-cups-init.h | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/libgnomecups/gnome-cups-i18n.c b/libgnomecups/gnome-cups-i18n.c +index 8987c5c..127756d 100644 +--- a/libgnomecups/gnome-cups-i18n.c ++++ b/libgnomecups/gnome-cups-i18n.c +@@ -1,5 +1,5 @@ + #include <config.h> +-#include <glib/gmacros.h> ++#include <glib.h> + #include "gnome-cups-i18n.h" + + #ifdef ENABLE_NLS +diff --git a/libgnomecups/gnome-cups-init.h b/libgnomecups/gnome-cups-init.h +index 22b682a..c4600fc 100644 +--- a/libgnomecups/gnome-cups-init.h ++++ b/libgnomecups/gnome-cups-init.h +@@ -1,8 +1,7 @@ + #ifndef GNOME_CUPS_INIT + #define GNOME_CUPS_INIT + +-#include <glib/gtypes.h> +-#include <glib/gmacros.h> ++#include <glib.h> + + G_BEGIN_DECLS + +-- +1.7.7 + diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/bug653388.patch b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/bug653388.patch new file mode 100644 index 000000000000..468f8e287a7c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/bug653388.patch @@ -0,0 +1,21 @@ +From 9b82b7e75b83395e7c5692085e1934202cf7f65f Mon Sep 17 00:00:00 2001 +From: Jeremy Huddleston <jeremyhu@freedesktop.org> +Date: Wed, 12 Oct 2011 15:08:59 +0000 +Subject: Add missing include + +https://bugzilla.gnome.org/show_bug.cgi?id=653388 +--- +diff --git a/libgnomeprint/modules/cups/gnome-print-cups-transport.c b/libgnomeprint/modules/cups/gnome-print-cups-transport.c +index aeb7111..85de91b 100644 +--- a/libgnomeprint/modules/cups/gnome-print-cups-transport.c ++++ b/libgnomeprint/modules/cups/gnome-print-cups-transport.c +@@ -34,6 +34,7 @@ + #include <sys/types.h> + #include <sys/stat.h> + #include <fcntl.h> ++#include <stdio.h> + #include <unistd.h> + #include <locale.h> + +-- +cgit v0.9.0.2 diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix new file mode 100644 index 000000000000..6945ad1f04b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, gtk, gettext, libxml2, intltool, libart_lgpl +, libgnomecups, bison, flex }: + +stdenv.mkDerivation rec { + name = "libgnomeprint-2.18.8"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomeprint/2.18/${name}.tar.bz2"; + sha256 = "1034ec8651051f84d2424e7a1da61c530422cc20ce5b2d9e107e1e46778d9691"; + }; + + patches = [ ./bug653388.patch ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk gettext intltool libart_lgpl libgnomecups bison flex ]; + + propagatedBuildInputs = [ libxml2 ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprintui/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprintui/default.nix new file mode 100644 index 000000000000..a8072aa37525 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeprintui/default.nix @@ -0,0 +1,13 @@ +{stdenv, fetchurl, pkgconfig, gtk, gettext, intltool, libgnomecanvas, libgnomeprint, gnomeicontheme}: + +stdenv.mkDerivation { + name = "libgnomeprintui-2.18.6"; + + src = fetchurl { + url = mirror://gnome/sources/libgnomeprintui/2.18/libgnomeprintui-2.18.6.tar.bz2; + sha256 = "0spl8vinb5n6n1krnfnr61dwaxidg67h8j94z9p59k2xdsvfashm"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk gettext intltool libgnomecanvas libgnomeprint gnomeicontheme]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix new file mode 100644 index 000000000000..838e51337453 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgnomeui/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, libxml2, xorg, glib, pango +, intltool, libgnome, libgnomecanvas, libbonoboui, GConf, libtool +, gnome_vfs, libgnome-keyring, libglade }: + +stdenv.mkDerivation rec { + name = "libgnomeui-${minVer}.5"; + minVer = "2.24"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomeui/${minVer}/${name}.tar.bz2"; + sha256 = "03rwbli76crkjl6gp422wrc9lqpl174k56cp9i96b7l8jlj2yddf"; + }; + + outputs = [ "out" "dev" ]; + + patches = [ + (fetchpatch { + name = "0001-gnome-scores.h-Convert-to-UTF-8.patch"; + url = https://github.com/GNOME/libgnomeui/commit/30334c28794ef85d8973f4ed0779b5ceed6594f2.diff; + sha256 = "1sn8j8dkam14wfkpw8nga3gk63wniff243mzv3jp0fvv52q8sqhk"; + }) + ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = + [ xorg.xlibsWrapper libxml2 GConf pango glib libgnome-keyring libglade libtool ]; + + propagatedBuildInputs = [ libgnome libbonoboui libgnomecanvas gnome_vfs ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-2/platform/libgtkhtml/default.nix b/nixpkgs/pkgs/desktops/gnome-2/platform/libgtkhtml/default.nix new file mode 100644 index 000000000000..b9db3422723e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-2/platform/libgtkhtml/default.nix @@ -0,0 +1,16 @@ +{stdenv, fetchurl, pkgconfig, gtk, gettext, libxml2 }: + +stdenv.mkDerivation { + name = "libgtkhtml-2.11.1"; + + src = fetchurl { + url = mirror://gnome/sources/libgtkhtml/2.11/libgtkhtml-2.11.1.tar.bz2; + sha256 = "0msajafd42545dxzyr5zqka990cjrxw2yz09ajv4zs8m1w6pm9rw"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk gettext ]; + propagatedBuildInputs = [ libxml2 ]; + + hardeningDisable = [ "format" ]; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix new file mode 100644 index 000000000000..5de7d93f49c6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook, gobject-introspection +, itstool, libxml2, python3Packages, at-spi2-core +, dbus, intltool, libwnck3 }: + +stdenv.mkDerivation rec { + name = "accerciser-${version}"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/accerciser/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "883306274442c7ecc076b24afca5190c835c40871ded1b9790da69347e9ca3c5"; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook itstool intltool + gobject-introspection # For setup hook + ]; + buildInputs = [ + gtk3 libxml2 python3Packages.python python3Packages.pyatspi + python3Packages.pygobject3 python3Packages.ipython + at-spi2-core dbus libwnck3 gnome3.defaultIconTheme + ]; + + wrapPrefixVariables = [ "PYTHONPATH" ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "accerciser"; + attrPath = "gnome3.accerciser"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Accerciser; + description = "Interactive Python accessibility explorer"; + maintainers = gnome3.maintainers; + license = licenses.bsd3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix new file mode 100644 index 000000000000..ea2091524c9c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix @@ -0,0 +1,58 @@ +{ stdenv, intltool, fetchurl, wrapGAppsHook, gnome-video-effects, libcanberra-gtk3 +, pkgconfig, gtk3, glib, clutter-gtk, clutter-gst, udev, gst_all_1, itstool +, libgudev, autoreconfHook, vala, docbook_xml_dtd_43, docbook_xsl, appstream-glib +, libxslt, yelp-tools, gnome-common, gtk-doc +, adwaita-icon-theme, librsvg, totem, gdk_pixbuf, gnome3, gnome-desktop, libxml2 }: + +stdenv.mkDerivation rec { + name = "cheese-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/cheese/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0zz2bgjaf2lsmfs3zn24925vbjb0rycr39i288brlbzixrpcyljr"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "cheese"; attrPath = "gnome3.cheese"; }; + }; + + nativeBuildInputs = [ + pkgconfig intltool itstool vala wrapGAppsHook libxml2 appstream-glib + libxslt docbook_xml_dtd_43 docbook_xsl + autoreconfHook gtk-doc yelp-tools gnome-common + ]; + buildInputs = [ gtk3 glib gnome-video-effects + gdk_pixbuf adwaita-icon-theme librsvg udev gst_all_1.gstreamer + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gnome-desktop + gst_all_1.gst-plugins-bad clutter-gtk clutter-gst + libcanberra-gtk3 libgudev ]; + + outputs = [ "out" "man" "devdoc" ]; + + patches = [ + gtk-doc.respect_xml_catalog_files_var_patch + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Effects + --prefix XDG_DATA_DIRS : "${gnome-video-effects}/share" + # vp8enc preset + --prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets" + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk_pixbuf}/share" + --prefix XDG_DATA_DIRS : "${totem}/share" + ) + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Cheese; + description = "Take photos and videos with your webcam, with fun graphical effects"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix new file mode 100644 index 000000000000..310f8ccb63b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix @@ -0,0 +1,59 @@ +{ stdenv, cmake, ninja, intltool, fetchurl, libxml2, webkitgtk, highlight +, pkgconfig, gtk3, glib, libnotify, gtkspell3 +, wrapGAppsHook, itstool, shared-mime-info, libical, db, gcr, sqlite +, gnome3, librsvg, gdk_pixbuf, libsecret, nss, nspr, icu +, libcanberra-gtk3, bogofilter, gst_all_1, procps, p11-kit, openldap }: + +let + version = "3.30.5"; +in stdenv.mkDerivation rec { + name = "evolution-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/evolution/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1hhxj3rh921pp3l3c5k33bdypcas1p66krzs65k1qn82c5fpgl2h"; + }; + + propagatedUserEnvPkgs = [ gnome3.evolution-data-server ]; + + buildInputs = [ + gtk3 glib gdk_pixbuf gnome3.defaultIconTheme librsvg db icu + gnome3.evolution-data-server libsecret libical gcr + webkitgtk shared-mime-info gnome3.gnome-desktop gtkspell3 + libcanberra-gtk3 bogofilter gnome3.libgdata sqlite + gst_all_1.gstreamer gst_all_1.gst-plugins-base p11-kit + nss nspr libnotify procps highlight gnome3.libgweather + gnome3.gsettings-desktop-schemas + gnome3.glib-networking openldap + ]; + + nativeBuildInputs = [ cmake ninja intltool itstool libxml2 pkgconfig wrapGAppsHook ]; + + cmakeFlags = [ + "-DENABLE_AUTOAR=OFF" + "-DENABLE_LIBCRYPTUI=OFF" + "-DENABLE_YTNEF=OFF" + "-DENABLE_PST_IMPORT=OFF" + ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "evolution"; + attrPath = "gnome3.evolution"; + }; + }; + + PKG_CONFIG_LIBEDATASERVERUI_1_2_UIMODULEDIR = "${placeholder "out"}/lib/evolution-data-server/ui-modules"; + + requiredSystemFeatures = [ "big-parallel" ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Evolution; + description = "Personal information management application that provides integrated mail, calendaring and address book functionality"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix new file mode 100644 index 000000000000..fe307bca797b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, glib, gtk, meson, ninja, pkgconfig, gnome3, gettext, itstool, libxml2, libarchive +, file, json-glib, python3, wrapGAppsHook, desktop-file-utils, libnotify, nautilus, glibcLocales }: + +stdenv.mkDerivation rec { + name = "file-roller-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/file-roller/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0kiragsqyixyx15747b71qc4nw8y4jx9d55wgg612xb0hp5l9pj1"; + }; + + LANG = "en_US.UTF-8"; # postinstall.py + + nativeBuildInputs = [ meson ninja gettext itstool pkgconfig libxml2 python3 wrapGAppsHook glibcLocales desktop-file-utils ]; + + buildInputs = [ glib gtk json-glib libarchive file gnome3.defaultIconTheme libnotify nautilus ]; + + PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0"; + + postPatch = '' + chmod +x postinstall.py # patchShebangs requires executable file + patchShebangs postinstall.py + patchShebangs data/set-mime-type-entry.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "file-roller"; + attrPath = "gnome3.file-roller"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/FileRoller; + description = "Archive manager for the GNOME desktop environment"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix new file mode 100644 index 000000000000..61eda9421945 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix @@ -0,0 +1,40 @@ +{ stdenv, intltool, fetchurl +, pkgconfig, gtk3, glib +, wrapGAppsHook, itstool, libsoup, libxml2 +, gnome3, gspell }: + +stdenv.mkDerivation rec { + name = "gedit-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gedit/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0qwig35hzvjaqic9x92jcpmycnvcybsbnbiw6rppryx0arwb3wza"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook intltool itstool libxml2 ]; + + buildInputs = [ + gtk3 glib + gnome3.defaultIconTheme libsoup + gnome3.libpeas gnome3.gtksourceview + gnome3.gsettings-desktop-schemas gspell + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gedit"; + attrPath = "gnome3.gedit"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Gedit; + description = "Official text editor of the GNOME desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix new file mode 100644 index 000000000000..d9f1e7850afd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, intltool, itstool, libxml2, + wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "ghex-${version}"; + version = "3.18.3"; + + src = fetchurl { + url = "mirror://gnome/sources/ghex/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "c67450f86f9c09c20768f1af36c11a66faf460ea00fbba628a9089a6804808d3"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "ghex"; attrPath = "gnome3.ghex"; }; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook ]; + + buildInputs = [ gnome3.gtk intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Ghex; + description = "Hex editor for GNOME desktop environment"; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix new file mode 100644 index 000000000000..39e0f2ba23e1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix @@ -0,0 +1,37 @@ +{ stdenv, intltool, fetchurl, python3 +, pkgconfig, gtk3, glib, gobject-introspection +, wrapGAppsHook, itstool, libxml2, docbook_xsl +, gnome3, gdk_pixbuf, libxslt }: + +stdenv.mkDerivation rec { + name = "glade-${version}"; + version = "3.22.1"; + + src = fetchurl { + url = "mirror://gnome/sources/glade/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "16p38xavpid51qfy0s26n0n21f9ws1w9k5s65bzh1w7ay8p9my6z"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "glade"; attrPath = "gnome3.glade"; }; + }; + + nativeBuildInputs = [ + pkgconfig intltool itstool wrapGAppsHook docbook_xsl libxslt gobject-introspection + ]; + buildInputs = [ + gtk3 glib libxml2 python3 python3.pkgs.pygobject3 + gnome3.gsettings-desktop-schemas + gdk_pixbuf gnome3.defaultIconTheme + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Glade; + description = "User interface designer for GTK+ applications"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix new file mode 100644 index 000000000000..357cd42d66bd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, meson, ninja, wrapGAppsHook, pkgconfig, gettext, itstool, libvirt-glib +, glib, gobject-introspection, libxml2, gtk3, gtk-vnc, freerdp, libvirt, spice-gtk, python3 +, spice-protocol, libsoup, libosinfo, systemd, tracker, tracker-miners, vala +, libcap, yajl, gmp, gdbm, cyrus_sasl, gnome3, librsvg, desktop-file-utils +, mtools, cdrkit, libcdio, libusb, libarchive, acl, libgudev, qemu, libsecret +, libcap_ng, numactl, xen, libapparmor, json-glib, webkitgtk +}: + +# TODO: ovirt (optional) + +let + version = "3.30.3"; +in stdenv.mkDerivation rec { + name = "gnome-boxes-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-boxes/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0a9ljwhkanszzyzl0bhad8vmzk7v4wafl9b1zn09pf57znyymf3s"; + }; + + doCheck = true; + + nativeBuildInputs = [ + meson ninja vala pkgconfig gettext itstool wrapGAppsHook gobject-introspection desktop-file-utils python3 + ]; + + # Required for USB redirection PolicyKit rules file + propagatedUserEnvPkgs = [ spice-gtk ]; + + buildInputs = [ + libvirt-glib glib gtk3 gtk-vnc freerdp libxml2 + libvirt spice-gtk spice-protocol libsoup json-glib webkitgtk libosinfo systemd + tracker tracker-miners libcap yajl gmp gdbm cyrus_sasl libusb libarchive + gnome3.defaultIconTheme librsvg acl libgudev libsecret + libcap_ng numactl xen libapparmor + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : "${stdenv.lib.makeBinPath [ mtools cdrkit libcdio qemu ]}") + ''; + + mesonFlags = [ + "-Dovirt=false" + ]; + + postPatch = '' + chmod +x build-aux/post_install.py # patchShebangs requires executable file + patchShebangs build-aux/post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-boxes"; + attrPath = "gnome3.gnome-boxes"; + }; + }; + + meta = with stdenv.lib; { + description = "Simple GNOME 3 application to access remote or virtual systems"; + homepage = https://wiki.gnome.org/Apps/Boxes; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ bjornfor ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix new file mode 100644 index 000000000000..8cc8712a15de --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, wrapGAppsHook, libdazzle, libgweather, geoclue2, geocode-glib, python3 +, gettext, libxml2, gnome3, gtk, evolution-data-server, libsoup +, glib, gnome-online-accounts, gsettings-desktop-schemas }: + +let + pname = "gnome-calendar"; + version = "3.30.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1avi7a29y8d8kzwslp51nwy6s692alms7917454j0xpfc6hnw62s"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext libxml2 wrapGAppsHook python3 ]; + buildInputs = [ + gtk evolution-data-server libsoup glib gnome-online-accounts libdazzle libgweather geoclue2 geocode-glib + gsettings-desktop-schemas gnome3.defaultIconTheme + ]; + + postPatch = '' + chmod +x build-aux/meson/meson_post_install.py # patchShebangs requires executable file + patchShebangs build-aux/meson/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Calendar; + description = "Simple and beautiful calendar application for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix new file mode 100644 index 000000000000..047f9bc22102 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, gnome3, glib, gtk3, pango, wrapGAppsHook, python3 +, gobject-introspection, gjs, libunistring }: + +stdenv.mkDerivation rec { + name = "gnome-characters-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-characters/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "08cwz39iwgsyyb2wqhb8vfbmh1cwfkgfiy7adp08w7rwqi99x3dp"; + }; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-characters"; + attrPath = "gnome3.gnome-characters"; + }; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext wrapGAppsHook python3 gobject-introspection ]; + buildInputs = [ + glib gtk3 gjs pango gnome3.gsettings-desktop-schemas + gnome3.defaultIconTheme libunistring + # typelib + gnome3.gnome-desktop + ]; + + mesonFlags = [ + "-Ddbus_service_dir=${placeholder "out"}/share/dbus-1/services" + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Design/Apps/CharacterMap; + description = "Simple utility application to find and insert unusual characters"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix new file mode 100644 index 000000000000..30323cf62f53 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchurl +, meson, ninja, gettext, pkgconfig, wrapGAppsHook, itstool, desktop-file-utils +, vala, gobject-introspection, libxml2, gtk3, glib, gsound, sound-theme-freedesktop +, gnome3, gdk_pixbuf, geoclue2, libgweather }: + +stdenv.mkDerivation rec { + name = "gnome-clocks-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-clocks/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "009fr6zwv37wryi0c0syi4i7pxpdbn3gliws68l99cjsbn2qd6pc"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-clocks"; + attrPath = "gnome3.gnome-clocks"; + }; + }; + + doCheck = true; + + nativeBuildInputs = [ + vala meson ninja pkgconfig gettext itstool wrapGAppsHook desktop-file-utils libxml2 + gobject-introspection # for finding vapi files + ]; + buildInputs = [ + gtk3 glib gnome3.gsettings-desktop-schemas gdk_pixbuf gnome3.defaultIconTheme + gnome3.gnome-desktop gnome3.geocode-glib geoclue2 libgweather gsound + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Fallback sound theme + --prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share" + ) + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Clocks; + description = "Clock application designed for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix new file mode 100644 index 000000000000..d2792304016f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix @@ -0,0 +1,65 @@ +{ stdenv, meson, ninja, gettext, fetchurl, fetchpatch, evince, gjs +, pkgconfig, gtk3, glib, tracker, tracker-miners +, itstool, libxslt, webkitgtk, libgdata +, gnome-desktop, libzapojit, libgepub +, gnome3, gdk_pixbuf, libsoup, docbook_xsl, docbook_xml_dtd_42 +, gobject-introspection, inkscape, poppler_utils +, desktop-file-utils, wrapGAppsHook, python3 }: + +stdenv.mkDerivation rec { + name = "gnome-documents-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-documents/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0zchkjpc9algmxrpj0f9i2lc4h1yp8z0h76vn32xa9jr46x4lsh6"; + }; + + doCheck = true; + + mesonFlags = [ "-Dgetting-started=true" ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxslt desktop-file-utils docbook_xsl docbook_xml_dtd_42 wrapGAppsHook python3 + inkscape poppler_utils # building getting started + ]; + buildInputs = [ + gtk3 glib gnome3.gsettings-desktop-schemas + gdk_pixbuf gnome3.defaultIconTheme evince + libsoup webkitgtk gjs gobject-introspection + tracker tracker-miners libgdata + gnome-desktop libzapojit libgepub + ]; + + patches = [ + # fix RPATH to libgd + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-documents/commit/d18a92e0a940073ac766f609937539e4fc6cdbb7.patch"; + sha256 = "0s3mk8vrl1gzk93yvgqbnz44i27qw1d9yvvmnck3fv23phrxkzk9"; + }) + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + preFixup = '' + substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib.bin}/bin/gapplication" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-documents"; + attrPath = "gnome3.gnome-documents"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Documents; + description = "Document manager application designed to work with GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix new file mode 100644 index 000000000000..e7a1954c8924 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + name = "gnome-getting-started-docs-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-getting-started-docs/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "10vihv6n8703rapf915waz1vzr7axk43bjlhmm3hb7kwm32rc61k"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-getting-started-docs"; attrPath = "gnome3.gnome-getting-started-docs"; }; + }; + + buildInputs = [ intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = https://live.gnome.org/DocumentationProject; + description = "Help a new user get started in GNOME"; + maintainers = gnome3.maintainers; + license = licenses.cc-by-sa-30; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix new file mode 100644 index 000000000000..c6140a53fd9b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, glib, gtk3, wrapGAppsHook, desktop-file-utils +, gettext, itstool, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_43, systemd, python3 }: + +stdenv.mkDerivation rec { + name = "gnome-logs-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-logs/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1rsk2whps7rwl01mmjmhwwww4iv09fsszils9zmgqd79y7l3fmyh"; + }; + + mesonFlags = [ + "-Dtests=true" + "-Dman=true" + ]; + + nativeBuildInputs = [ + python3 + meson ninja pkgconfig wrapGAppsHook gettext itstool desktop-file-utils + libxml2 libxslt docbook_xsl docbook_xml_dtd_43 + ]; + buildInputs = [ glib gtk3 systemd gnome3.gsettings-desktop-schemas gnome3.defaultIconTheme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-logs"; + attrPath = "gnome3.gnome-logs"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Logs; + description = "A log viewer for the systemd journal"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix new file mode 100644 index 000000000000..2f7e5bbe8071 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchurl, meson, ninja, gettext, python3, pkgconfig, gnome3, gtk3 +, gobject-introspection, gdk_pixbuf, librsvg, libgweather +, geoclue2, wrapGAppsHook, folks, libchamplain, gfbgraph, libsoup +, webkitgtk, gjs, libgee, geocode-glib, evolution-data-server, gnome-online-accounts }: + +let + pname = "gnome-maps"; + version = "3.30.3"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0s1k6v1yzchbv6big09fdhmm0rzyjdh2y7qg6fsp7d0x4qnch9nq"; + }; + + doCheck = true; + + nativeBuildInputs = [ meson ninja pkgconfig gettext python3 wrapGAppsHook ]; + buildInputs = [ + gobject-introspection + gtk3 geoclue2 gjs libgee folks gfbgraph + geocode-glib libchamplain libsoup + gdk_pixbuf librsvg libgweather + gnome3.gsettings-desktop-schemas evolution-data-server + gnome-online-accounts gnome3.defaultIconTheme + webkitgtk + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + + # 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 "Exec=@pkgdatadir@/org.gnome.Maps" \ + "Exec=$out/bin/gnome-maps" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Maps; + description = "A map application for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix new file mode 100644 index 000000000000..3edf1f5dd402 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix @@ -0,0 +1,52 @@ +{ stdenv, meson, ninja, gettext, fetchurl, gdk_pixbuf, tracker +, libxml2, python3, libnotify, wrapGAppsHook, libmediaart +, gobject-introspection, gnome-online-accounts, grilo, grilo-plugins +, pkgconfig, gtk3, glib, desktop-file-utils, appstream-glib +, itstool, gnome3, gst_all_1, libdazzle, libsoup }: + +python3.pkgs.buildPythonApplication rec { + pname = "gnome-music"; + version = "3.30.2"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1d9gd9rqy71hibfrz4zglimvgv6yn1pw22cnrn7pbdz6k4yq209d"; + }; + + nativeBuildInputs = [ meson ninja gettext itstool pkgconfig libxml2 wrapGAppsHook desktop-file-utils appstream-glib gobject-introspection ]; + buildInputs = with gst_all_1; [ + gtk3 glib libmediaart gnome-online-accounts + gdk_pixbuf gnome3.defaultIconTheme python3 + grilo grilo-plugins libnotify libdazzle libsoup + gnome3.gsettings-desktop-schemas tracker + gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly + ]; + propagatedBuildInputs = with python3.pkgs; [ pycairo dbus-python pygobject3 ]; + + + postPatch = '' + for f in meson_post_conf.py meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + doCheck = false; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Music; + description = "Music player and management application for the GNOME desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix new file mode 100644 index 000000000000..dcee87dc799c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libgtop, intltool, itstool, libxml2, nmap, inetutils }: + +stdenv.mkDerivation rec { + name = "gnome-nettool-3.8.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-nettool/3.8/${name}.tar.xz"; + sha256 = "1c9cvzvyqgfwa5zzyvp7118pkclji62fkbb33g4y9sp5kw6m397h"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk3 wrapGAppsHook libgtop intltool itstool libxml2 + gnome3.defaultIconTheme + ]; + + propagatedUserEnvPkgs = [ nmap inetutils ]; + + meta = with stdenv.lib; { + homepage = http://projects.gnome.org/gnome-network; + description = "A collection of networking tools"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix new file mode 100644 index 000000000000..e39ce00fd658 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix @@ -0,0 +1,55 @@ +{ stdenv, meson, ninja, gettext, fetchurl, pkgconfig +, wrapGAppsHook, itstool, desktop-file-utils, python3 +, glib, gtk3, evolution-data-server +, libuuid, webkitgtk, zeitgeist +, gnome3, libxml2 }: + +let + version = "3.30.3"; +in stdenv.mkDerivation rec { + name = "gnome-notes-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/bijiben/${stdenv.lib.versions.majorMinor version}/bijiben-${version}.tar.xz"; + sha256 = "1mkpi2i9nqpip5l15ihjcscyiri113s0705sjgh6b89164ahyn5k"; + }; + + doCheck = true; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxml2 desktop-file-utils python3 wrapGAppsHook + ]; + + buildInputs = [ + glib gtk3 libuuid webkitgtk gnome3.tracker + gnome3.gnome-online-accounts zeitgeist + gnome3.gsettings-desktop-schemas + evolution-data-server + gnome3.defaultIconTheme + ]; + + mesonFlags = [ + "-Dzeitgeist=true" + "-Dupdate_mimedb=false" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "bijiben"; + attrPath = "gnome3.gnome-notes"; + }; + }; + + meta = with stdenv.lib; { + description = "Note editor designed to remain simple to use"; + homepage = https://wiki.gnome.org/Apps/Notes; + license = licenses.gpl3; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-photos/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-photos/default.nix new file mode 100644 index 000000000000..508b8af3f4f7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-photos/default.nix @@ -0,0 +1,48 @@ +{ stdenv, gettext, fetchurl, libxml2, libgdata +, pkgconfig, gtk3, glib, tracker, tracker-miners +, itstool, gegl, babl, libdazzle, gfbgraph, grilo-plugins +, grilo, gnome-online-accounts +, desktop-file-utils, wrapGAppsHook +, gnome3, gdk_pixbuf, gexiv2, geocode-glib +, dleyna-renderer }: + +let + pname = "gnome-photos"; + version = "3.30.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1mf1887x0pk46h6l51rfkpn29fwp3yvmqkk99kr1iwpz0lakyx6f"; + }; + + # doCheck = true; + + nativeBuildInputs = [ pkgconfig gettext itstool libxml2 desktop-file-utils wrapGAppsHook ]; + buildInputs = [ + gtk3 glib gegl babl libgdata libdazzle + gnome3.gsettings-desktop-schemas + gdk_pixbuf gnome3.defaultIconTheme + gfbgraph grilo-plugins grilo + gnome-online-accounts tracker + gexiv2 geocode-glib dleyna-renderer + tracker-miners # For 'org.freedesktop.Tracker.Miner.Files' GSettings schema + ]; + + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Photos; + description = "Access, organize and share your photos"; + maintainers = gnome3.maintainers; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix new file mode 100644 index 000000000000..3f8ce7f4a51a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix @@ -0,0 +1,60 @@ +{ stdenv +, gettext +, fetchurl +, pkgconfig +, gtk3 +, glib +, meson +, ninja +, upower +, python3 +, desktop-file-utils +, wrapGAppsHook +, gnome3 }: + +let + pname = "gnome-power-manager"; + version = "3.30.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0m15x6i279wrfimz9ma2gfjv7jlkca2qbl2wcnxgx1pb3hzrwggm"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + wrapGAppsHook + gettext + + # needed by meson_post_install.sh + python3 + glib.dev + desktop-file-utils + ]; + + buildInputs = [ + gtk3 + glib + upower + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://projects-old.gnome.org/gnome-power-manager/; + description = "View battery and power statistics provided by UPower"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix new file mode 100644 index 000000000000..1f902dc9c80a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, intltool, gobject-introspection, wrapGAppsHook, gjs, glib, gtk3, gdk_pixbuf, gst_all_1, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-sound-recorder"; + version = "3.28.2"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1k63xr3d16qbzi88md913ndaf2mzwmhmi6hipj0123sm7nsz1p94"; + }; + + patches = [ + # Fix crash when trying to play recordings + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/gnome-sound-recorder/commit/2b311ef67909bc20d0e87f334fe37bf5c4e9f29f.patch; + sha256 = "0hqmk846bxma0p66cqp94zd02zc1if836ywjq3sv5dsfwnz7jv3f"; + }) + ]; + + nativeBuildInputs = [ pkgconfig intltool gobject-introspection wrapGAppsHook ]; + buildInputs = [ gjs glib gtk3 gdk_pixbuf ] ++ (with gst_all_1; [ gstreamer.dev gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad ]); + + # TODO: fix this in gstreamer + # TODO: make stdenv.lib.getBin respect outputBin + PKG_CONFIG_GSTREAMER_1_0_TOOLSDIR = "${gst_all_1.gstreamer.dev}/bin"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A simple and modern sound recorder"; + homepage = https://wiki.gnome.org/Apps/SoundRecorder; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix new file mode 100644 index 000000000000..37b48a744822 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, python3, wrapGAppsHook +, gettext, gnome3, glib, gtk, libpeas +, gnome-online-accounts, gsettings-desktop-schemas +, evolution-data-server, libxml2, libsoup, libical, rest, json-glib }: + +let + pname = "gnome-todo"; + version = "3.28.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext python3 wrapGAppsHook + ]; + buildInputs = [ + glib gtk libpeas gnome-online-accounts + gsettings-desktop-schemas gnome3.defaultIconTheme + # Plug-ins + evolution-data-server libxml2 libsoup libical + rest json-glib + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Personal task manager for GNOME"; + homepage = https://wiki.gnome.org/Apps/Todo; + license = licenses.gpl3Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix new file mode 100644 index 000000000000..6a827b7f0e3c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook, gjs, gobject-introspection +, libgweather, intltool, itstool, geoclue2, gnome-desktop }: + +stdenv.mkDerivation rec { + name = "gnome-weather-${version}"; + version = "3.26.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-weather/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "965cc0d1b4d4e53c06d494db96f0b124d232af5c0e731ca900edd10f77a74c78"; + }; + + nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook ]; + buildInputs = [ + gtk3 gjs gobject-introspection gnome-desktop + libgweather gnome3.defaultIconTheme geoclue2 gnome3.gsettings-desktop-schemas + ]; + + # 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. + preConfigure = '' + substituteInPlace "data/org.gnome.Weather.Application.service.in" \ + --replace "Exec=@pkgdatadir@/@PACKAGE_NAME@.Application" \ + "Exec=$out/bin/gnome-weather" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-weather"; + attrPath = "gnome3.gnome-weather"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Weather; + description = "Access current weather conditions and forecasts"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/nautilus-sendto/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/nautilus-sendto/default.nix new file mode 100644 index 000000000000..7ac8b4dfe116 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/nautilus-sendto/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, meson, ninja, glib, pkgconfig, gnome3, appstream-glib, gettext }: + +let + pname = "nautilus-sendto"; + version = "3.8.6"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/3.8/${name}.tar.xz"; + sha256 = "164d7c6e8bae29c4579bcc67a7bf50d783662b1545b62f3008e7ea3c0410e04d"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig appstream-glib gettext ]; + buildInputs = [ glib ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Integrates Evolution and Pidgin into the Nautilus file manager"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix new file mode 100644 index 000000000000..080fa664b0db --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix @@ -0,0 +1,43 @@ +{ stdenv, itstool, fetchurl, gdk_pixbuf, adwaita-icon-theme +, telepathy-glib, gjs, meson, ninja, gettext, telepathy-idle, libxml2, desktop-file-utils +, pkgconfig, gtk3, glib, libsecret, libsoup, gobject-introspection, appstream-glib +, gnome3, wrapGAppsHook, telepathy-logger, gspell }: + +let + pname = "polari"; + version = "3.30.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "02wxkdq5s5ami9wj9vpqhs6n8qxr299bpmvpvd89mn49x73lq2w2"; + }; + + propagatedUserEnvPkgs = [ telepathy-idle telepathy-logger ]; + + nativeBuildInputs = [ + meson ninja pkgconfig itstool gettext wrapGAppsHook libxml2 + desktop-file-utils gobject-introspection appstream-glib + ]; + + buildInputs = [ + gtk3 glib adwaita-icon-theme gnome3.gsettings-desktop-schemas + telepathy-glib telepathy-logger gjs gspell gdk_pixbuf libsecret libsoup + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Polari; + description = "IRC chat client designed to integrate with the GNOME desktop"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix new file mode 100644 index 000000000000..9ef2b57e6d14 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchurl, vala, meson, ninja +, pkgconfig, gtk3, glib, gobject-introspection +, wrapGAppsHook, itstool, gnupg, libsoup +, gnome3, gpgme, python3, openldap, gcr +, libsecret, avahi, p11-kit, openssh }: + +stdenv.mkDerivation rec { + pname = "seahorse"; + version = "3.30.1.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "12x7xmwh62yl0ax90v8nkx3jqzviaz9hz2g56yml78wzww20gawy"; + }; + + doCheck = true; + + nativeBuildInputs = [ + meson ninja pkgconfig vala itstool wrapGAppsHook + python3 gobject-introspection + ]; + buildInputs = [ + gtk3 glib gcr + gnome3.gsettings-desktop-schemas gnupg + gnome3.defaultIconTheme gpgme + libsecret avahi libsoup p11-kit + openssh openldap + ]; + + postPatch = '' + patchShebangs build-aux/ + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Seahorse; + description = "Application for managing encryption keys and passwords in the GnomeKeyring"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix new file mode 100644 index 000000000000..00037f526b64 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, vte, libxml2, gtk-vnc, intltool +, libsecret, itstool, wrapGAppsHook, librsvg }: + +stdenv.mkDerivation rec { + name = "vinagre-${version}"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/vinagre/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "cd1cdbacca25c8d1debf847455155ee798c3e67a20903df8b228d4ece5505e82"; + }; + + nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook ]; + buildInputs = [ + gtk3 vte libxml2 gtk-vnc libsecret gnome3.defaultIconTheme librsvg + ]; + + NIX_CFLAGS_COMPILE = "-Wno-format-nonliteral"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "vinagre"; + attrPath = "gnome3.vinagre"; + }; + }; + + meta = with stdenv.lib; { + description = "Remote desktop viewer for GNOME"; + homepage = https://wiki.gnome.org/Apps/Vinagre; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix new file mode 100644 index 000000000000..4fa40a6c1b08 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3 +, iconnamingutils, gtk, gdk_pixbuf, librsvg, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + name = "adwaita-icon-theme-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/adwaita-icon-theme/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1kp1lis3dr16jmlgycz1b29jsr6ir8wmqj6laqwlhs663cmjlxbd"; + }; + + # For convenience, we can specify adwaita-icon-theme only in packages + propagatedBuildInputs = [ hicolor-icon-theme ]; + + buildInputs = [ gdk_pixbuf librsvg ]; + + nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ]; + + # remove a tree of dirs with no files within + postInstall = '' rm -rf "$out/locale" ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "adwaita-icon-theme"; + attrPath = "gnome3.adwaita-icon-theme"; + }; + }; + + meta = with stdenv.lib; { + platforms = with platforms; linux ++ darwin; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix new file mode 100644 index 000000000000..c29e3ff5200d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix @@ -0,0 +1,34 @@ +{ stdenv, gettext, fetchurl, vala, desktop-file-utils +, meson, ninja, pkgconfig, gtk3, glib, libxml2 +, wrapGAppsHook, itstool, gnome3 }: + +let + pname = "baobab"; + version = "3.30.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0kx721s1hhw1g0nvbqhb93g8iq6f852imyhfhl02zcqy4ipx0kay"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig vala gettext itstool libxml2 desktop-file-utils wrapGAppsHook ]; + buildInputs = [ gtk3 glib gnome3.defaultIconTheme ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + description = "Graphical application to analyse disk usage in any GNOME environment"; + homepage = https://wiki.gnome.org/Apps/DiskUsageAnalyzer; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix new file mode 100644 index 000000000000..fe2b50f296a4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix @@ -0,0 +1,54 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, glib, gtk3, clutter, dbus, python3, libxml2 +, libxklavier, libXtst, gtk2, intltool, libxslt, at-spi2-core, autoreconfHook +, wrapGAppsHook }: + +let + pname = "caribou"; + version = "0.4.21"; + pythonEnv = python3.withPackages ( ps: with ps; [ pygobject3 ] ); +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0mfychh1q3dx0b96pjz9a9y112bm9yqyim40yykzxx1hppsdjhww"; + }; + + patches = [ + # Fix crash in GNOME Flashback + # https://bugzilla.gnome.org/show_bug.cgi?id=791001 + (fetchurl { + url = https://bugzilla.gnome.org/attachment.cgi?id=364774; + sha256 = "15k1455grf6knlrxqbjnk7sals1730b0whj30451scp46wyvykvd"; + }) + ]; + + nativeBuildInputs = [ pkgconfig intltool libxslt libxml2 autoreconfHook wrapGAppsHook ]; + + buildInputs = [ + glib gtk3 clutter at-spi2-core dbus pythonEnv python3.pkgs.pygobject3 + libXtst gtk2 + ]; + + propagatedBuildInputs = [ gnome3.libgee libxklavier ]; + + postPatch = '' + patchShebangs . + substituteInPlace libcaribou/Makefile.am --replace "--shared-library=libcaribou.so.0" "--shared-library=$out/lib/libcaribou.so.0" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "An input assistive technology intended for switch and pointer users"; + homepage = https://wiki.gnome.org/Projects/Caribou; + license = licenses.lgpl21; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix new file mode 100644 index 000000000000..0d583dccf766 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, meson, ninja, vala, libxslt, pkgconfig, glib, gtk3, gnome3, python3 +, libxml2, gettext, docbook_xsl, wrapGAppsHook, gobject-introspection }: + +let + pname = "dconf-editor"; + version = "3.30.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "06f736spn20s7qjsz00xw44v8r8bjhyrz1v3bix6v416jc5jp6ia"; + }; + + nativeBuildInputs = [ meson ninja vala libxslt pkgconfig wrapGAppsHook gettext docbook_xsl libxml2 gobject-introspection python3 ]; + + buildInputs = [ glib gtk3 gnome3.dconf ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "${pname}"; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/dconf/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/dconf/default.nix new file mode 100644 index 000000000000..9c1d7d7d1a98 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/dconf/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, meson, ninja, python3, vala, libxslt, pkgconfig, glib, bash-completion, dbus, gnome3 +, libxml2, gtk-doc, docbook_xsl, docbook_xml_dtd_42 }: + +let + pname = "dconf"; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + version = "0.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1dq2dn7qmxr4fxzx9wnag89ck24gxq17p2n4gl81h4w8qdy3m6jl"; + }; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + outputs = [ "out" "lib" "dev" "devdoc" ]; + + nativeBuildInputs = [ meson ninja vala pkgconfig python3 libxslt libxml2 gtk-doc docbook_xsl docbook_xml_dtd_42 ]; + buildInputs = [ glib bash-completion dbus ]; + + mesonFlags = [ + "--sysconfdir=/etc" + "-Dgtk_doc=true" + ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/dconf; + license = licenses.lgpl21Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix new file mode 100644 index 000000000000..1a4ef2a1cf41 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix @@ -0,0 +1,64 @@ +{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib +, file, librsvg, gnome3, gdk_pixbuf, python3 +, telepathy-glib, telepathy-farstream, glibcLocales +, clutter-gtk, clutter-gst, gst_all_1, cogl, gnome-online-accounts +, gcr, libsecret, folks, libpulseaudio, telepathy-mission-control +, telepathy-logger, libnotify, clutter, libsoup, gnutls +, evolution-data-server, yelp-xsl +, libcanberra-gtk3, p11-kit, farstream, libtool, shared-mime-info +, wrapGAppsHook, itstool, libxml2, libxslt, icu, libgee +, isocodes, enchant, libchamplain, geoclue2, geocode-glib, cheese, libgudev }: + +stdenv.mkDerivation rec { + name = "empathy-${version}"; + version = "3.25.90"; + + src = fetchurl { + url = "mirror://gnome/sources/empathy/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0sn10fcymc6lyrabk7vx8lpvlaxxkqnmcwj9zdkfa8qf3388k4nc"; + }; + + propagatedUserEnvPkgs = [ + gnome-online-accounts shared-mime-info + ]; + propagatedBuildInputs = [ + folks telepathy-logger evolution-data-server telepathy-mission-control + ]; + nativeBuildInputs = [ + pkgconfig libtool intltool itstool file wrapGAppsHook + libxml2 libxslt yelp-xsl python3 glibcLocales + ]; + buildInputs = [ + gtk3 glib webkitgtk icu gnome-online-accounts + telepathy-glib clutter-gtk clutter-gst cogl + gst_all_1.gstreamer gst_all_1.gst-plugins-base + gcr libsecret libpulseaudio gdk_pixbuf + libnotify clutter libsoup gnutls libgee p11-kit + libcanberra-gtk3 telepathy-farstream farstream + gnome3.defaultIconTheme gnome3.gsettings-desktop-schemas + librsvg + # Spell-checking + enchant isocodes + # Display maps, location awareness, geocode support + libchamplain geoclue2 geocode-glib + # Cheese webcam support, camera monitoring + cheese libgudev + ]; + + LC_ALL = "en_US.UTF-8"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "empathy"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Empathy; + description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols"; + maintainers = gnome3.maintainers; + license = [ licenses.gpl2 ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix new file mode 100644 index 000000000000..5b6281869cc5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix @@ -0,0 +1,51 @@ +{ fetchurl, stdenv, meson, ninja, gettext, itstool, pkgconfig, libxml2, libjpeg, libpeas, gnome3 +, gtk3, glib, gsettings-desktop-schemas, adwaita-icon-theme, gnome-desktop, lcms2, gdk_pixbuf, exempi +, shared-mime-info, wrapGAppsHook, librsvg, libexif, gobject-introspection, python3 }: + +let + pname = "eog"; + version = "3.28.4"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1wrq3l3z0x6q0hnc1vqr2hnyb1b14qw6aqvc5dldfgbs0yys6p55"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext itstool wrapGAppsHook libxml2 gobject-introspection python3 ]; + + buildInputs = [ + libjpeg gtk3 gdk_pixbuf glib libpeas librsvg lcms2 gnome-desktop libexif exempi + gsettings-desktop-schemas shared-mime-info adwaita-icon-theme + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk_pixbuf}/share" + --prefix XDG_DATA_DIRS : "${librsvg}/share" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME image viewer"; + homepage = https://wiki.gnome.org/Apps/EyeOfGnome; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix new file mode 100644 index 000000000000..c8ca0016d57d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix @@ -0,0 +1,50 @@ +{ stdenv, meson, ninja, gettext, fetchurl, pkgconfig, gtk, glib, icu +, wrapGAppsHook, gnome3, libxml2, libxslt, itstool +, webkitgtk, libsoup, glib-networking, libsecret, gnome-desktop, libnotify, p11-kit +, sqlite, gcr, isocodes, desktop-file-utils, python3 +, gdk_pixbuf, gst_all_1, json-glib, libdazzle }: + +stdenv.mkDerivation rec { + name = "epiphany-${version}"; + version = "3.30.3"; + + src = fetchurl { + url = "mirror://gnome/sources/epiphany/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "05qdzx18ld1m3xiajpz6y6snfj56bgyjsgm7f4rqrnpjdbdvikbn"; + }; + + # Tests need an X display + mesonFlags = [ "-Dunit_tests=false" ]; + + nativeBuildInputs = [ + meson ninja libxslt pkgconfig itstool gettext wrapGAppsHook desktop-file-utils python3 + ]; + + buildInputs = [ + gtk glib webkitgtk libsoup libxml2 libsecret gnome-desktop libnotify + sqlite isocodes p11-kit icu + gdk_pixbuf gnome3.defaultIconTheme gcr + glib-networking 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-libav json-glib libdazzle + ]; + + postPatch = '' + chmod +x post_install.py # patchShebangs requires executable file + patchShebangs post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "epiphany"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Epiphany; + description = "WebKit based web browser for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix new file mode 100644 index 000000000000..94d39964bc48 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix @@ -0,0 +1,68 @@ +{ fetchurl, stdenv, pkgconfig, intltool, libxml2 +, glib, gtk3, pango, atk, gdk_pixbuf, shared-mime-info, itstool, gnome3 +, poppler, ghostscriptX, djvulibre, libspectre, libarchive, libsecret, wrapGAppsHook +, librsvg, gobject-introspection, yelp-tools, gspell +, recentListSize ? null # 5 is not enough, allow passing a different number +, supportXPS ? false # Open XML Paper Specification via libgxps +, autoreconfHook, pruneLibtoolFiles +}: + +stdenv.mkDerivation rec { + name = "evince-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/evince/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0k7jln6dpg4bpv61niicjzkzyq6fhb3yfld7pc8ck71c8pmvsnx9"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "evince"; }; + }; + + nativeBuildInputs = [ + pkgconfig gobject-introspection intltool itstool wrapGAppsHook yelp-tools autoreconfHook pruneLibtoolFiles + ]; + + buildInputs = [ + glib gtk3 pango atk gdk_pixbuf libxml2 + gnome3.gsettings-desktop-schemas + poppler ghostscriptX djvulibre libspectre libarchive + libsecret librsvg gnome3.adwaita-icon-theme gspell + ] ++ stdenv.lib.optional supportXPS gnome3.libgxps; + + configureFlags = [ + "--disable-nautilus" # Do not build nautilus plugin + "--enable-introspection" + (if supportXPS then "--enable-xps" else "--disable-xps") + ]; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0"; + + preConfigure = stdenv.lib.optionalString (recentListSize != null) '' + sed -i 's/\(gtk_recent_chooser_set_limit .*\)5)/\1${builtins.toString recentListSize})/' shell/ev-open-recent-action.c + sed -i 's/\(if (++n_items == \)5\(.*\)/\1${builtins.toString recentListSize}\2/' shell/ev-window.c + ''; + + preFixup = '' + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share") + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Evince; + description = "GNOME's document viewer"; + + longDescription = '' + Evince is a document viewer for multiple document formats. It + currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal + of Evince is to replace the multiple document viewers that exist + on the GNOME Desktop with a single simple application. + ''; + + license = stdenv.lib.licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = gnome3.maintainers ++ [ maintainers.vcunat ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix new file mode 100644 index 000000000000..a27bc2cc9ae5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix @@ -0,0 +1,63 @@ +{ fetchurl, stdenv, substituteAll, pkgconfig, gnome3, python3, gobject-introspection +, intltool, libsoup, libxml2, libsecret, icu, sqlite, tzdata, libcanberra-gtk3, gcr +, p11-kit, db, nspr, nss, libical, gperf, wrapGAppsHook, glib-networking, pcre +, vala, cmake, ninja, kerberos, openldap, webkitgtk, libaccounts-glib, json-glib }: + +stdenv.mkDerivation rec { + name = "evolution-data-server-${version}"; + version = "3.30.5"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/evolution-data-server/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1s952wyhgcbmq9nfgk75v15zdy1h3wy5p5rmkqibaavmc0pk3mli"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata; + }) + ./hardcode-gsettings.patch + ]; + + nativeBuildInputs = [ + cmake ninja pkgconfig intltool python3 gperf wrapGAppsHook gobject-introspection vala + ]; + buildInputs = with gnome3; [ + glib libsoup libxml2 gtk gnome-online-accounts + gcr p11-kit libgweather libgdata libaccounts-glib json-glib + icu sqlite kerberos openldap webkitgtk glib-networking + libcanberra-gtk3 pcre + ]; + + propagatedBuildInputs = [ libsecret nss nspr libical db ]; + + cmakeFlags = [ + "-DENABLE_UOA=OFF" + "-DENABLE_VALA_BINDINGS=ON" + "-DENABLE_INTROSPECTION=ON" + "-DCMAKE_SKIP_BUILD_RPATH=OFF" + "-DINCLUDE_INSTALL_DIR=${placeholder "dev"}/include" + ]; + + postPatch = '' + substituteInPlace src/libedataserver/e-source-registry.c --subst-var-by ESD_GSETTINGS_PATH $out/share/gsettings-schemas/${name}/glib-2.0/schemas + ''; + + + passthru = { + updateScript = gnome3.updateScript { + packageName = "evolution-data-server"; + }; + }; + + meta = with stdenv.lib; { + description = "Unified backend for programs that work with contacts, tasks, and calendar information"; + homepage = https://wiki.gnome.org/Apps/Evolution; + license = licenses.lgpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch new file mode 100644 index 000000000000..334235516591 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/calendar/libecal/e-cal-system-timezone.c ++++ b/src/calendar/libecal/e-cal-system-timezone.c +@@ -26,7 +26,7 @@ + #ifdef HAVE_SOLARIS + #define SYSTEM_ZONEINFODIR "/usr/share/lib/zoneinfo/tab" + #else +-#define SYSTEM_ZONEINFODIR "/usr/share/zoneinfo" ++#define SYSTEM_ZONEINFODIR "@tzdata@/share/zoneinfo" + #endif + + #define ETC_TIMEZONE "/etc/timezone" diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch new file mode 100644 index 000000000000..8b64b3df8015 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch @@ -0,0 +1,36 @@ +diff --git a/src/libedataserver/e-source-registry.c b/src/libedataserver/e-source-registry.c +index 9c166dbaf..ef368f8d4 100644 +--- a/src/libedataserver/e-source-registry.c ++++ b/src/libedataserver/e-source-registry.c +@@ -116,6 +116,8 @@ struct _ESourceRegistryPrivate { + GHashTable *sources; + GMutex sources_lock; + ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; + GSettings *settings; + + gboolean initialized; +@@ -1339,7 +1341,11 @@ source_registry_dispose (GObject *object) + if (priv->settings != NULL) { + g_signal_handlers_disconnect_by_data (priv->settings, object); + g_object_unref (priv->settings); ++ g_settings_schema_unref (priv->schema); ++ g_settings_schema_source_unref (priv->schema_source); + priv->settings = NULL; ++ priv->schema = NULL; ++ priv->schema_source = NULL; + } + + /* Chain up to parent's finalize() method. */ +@@ -1743,7 +1749,9 @@ e_source_registry_init (ESourceRegistry *registry) + + g_mutex_init (®istry->priv->sources_lock); + +- registry->priv->settings = g_settings_new (GSETTINGS_SCHEMA); ++ GSettingsSchemaSource *schema_source = registry->priv->schema_source = g_settings_schema_source_new_from_directory ("@ESD_GSETTINGS_PATH@", g_settings_schema_source_get_default (), TRUE, NULL); ++ registry->priv->schema = g_settings_schema_source_lookup (schema_source, GSETTINGS_SCHEMA, FALSE); ++ registry->priv->settings = g_settings_new_full (registry->priv->schema, NULL, NULL); + + g_signal_connect ( + registry->priv->settings, "changed", diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix new file mode 100644 index 000000000000..135200ee3c4f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix @@ -0,0 +1,82 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, glib, itstool, libxml2, xorg +, accountsservice, libX11, gnome3, systemd, autoreconfHook +, gtk, libcanberra-gtk3, pam, libtool, gobject-introspection, plymouth +, librsvg, coreutils, xwayland, fetchpatch }: + +stdenv.mkDerivation rec { + name = "gdm-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gdm/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1handy65r1n0zby09jr492b3643wszzigdkxp7q2ypgxb3hyv45y"; + }; + + # Only needed to make it build + preConfigure = '' + substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X" + ''; + + configureFlags = [ + "--sysconfdir=/etc" + "--localstatedir=/var" + "--with-plymouth=yes" + "--enable-gdm-xsession" + "--with-initial-vt=7" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" + "--with-udevdir=$(out)/lib/udev" + ]; + + nativeBuildInputs = [ pkgconfig libxml2 itstool autoreconfHook libtool gnome3.dconf ]; + buildInputs = [ + glib accountsservice systemd + gobject-introspection libX11 gtk + libcanberra-gtk3 pam plymouth librsvg + ]; + + enableParallelBuilding = true; + + patches = [ + # Change hardcoded paths to nix store paths. + (substituteAll { + src = ./fix-paths.patch; + inherit coreutils plymouth xwayland; + }) + + # The following patches implement certain environment variables in GDM which are set by + # the gdm configuration module (nixos/modules/services/x11/display-managers/gdm.nix). + + ./gdm-x-session_extra_args.patch + + # Allow specifying a wrapper for running the session command. + ./gdm-x-session_session-wrapper.patch + + # Forwards certain environment variables to the gdm-x-session child process + # to ensure that the above two patches actually work. + ./gdm-session-worker_forward-vars.patch + + # Set up the environment properly when launching sessions + # https://github.com/NixOS/nixpkgs/issues/48255 + ./reset-environment.patch + ]; + + installFlags = [ + "sysconfdir=$(out)/etc" + "dbusconfdir=$(out)/etc/dbus-1/system.d" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gdm"; + attrPath = "gnome3.gdm"; + }; + }; + + meta = with stdenv.lib; { + description = "A program that manages graphical display servers and handles graphical user logins"; + homepage = https://wiki.gnome.org/Projects/GDM; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch new file mode 100644 index 000000000000..6b5bd6152bd6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch @@ -0,0 +1,60 @@ +--- a/daemon/gdm-local-display-factory.c ++++ b/daemon/gdm-local-display-factory.c +@@ -201,7 +201,7 @@ + #ifdef ENABLE_WAYLAND_SUPPORT + gboolean wayland_enabled = FALSE; + if (gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled)) { +- if (wayland_enabled && g_file_test ("/usr/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) ) ++ if (wayland_enabled && g_file_test ("@xwayland@/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) ) + return TRUE; + } + #endif +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -145,7 +145,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_sync ("/bin/plymouth --ping", ++ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth --ping", + NULL, NULL, &status, &error); + if (! res) { + g_debug ("Could not ping plymouth: %s", error->message); +@@ -163,7 +163,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_sync ("/bin/plymouth deactivate", ++ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth deactivate", + NULL, NULL, NULL, &error); + if (! res) { + g_warning ("Could not deactivate plymouth: %s", error->message); +@@ -178,7 +178,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_async ("/bin/plymouth quit --retain-splash", &error); ++ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit --retain-splash", &error); + if (! res) { + g_warning ("Could not quit plymouth: %s", error->message); + g_error_free (error); +@@ -194,7 +194,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_async ("/bin/plymouth quit", &error); ++ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit", &error); + if (! res) { + g_warning ("Could not quit plymouth: %s", error->message); + g_error_free (error); +--- a/data/gdm.service.in ++++ b/data/gdm.service.in +@@ -28,7 +28,7 @@ BusName=org.gnome.DisplayManager + StandardOutput=syslog + StandardError=inherit + EnvironmentFile=-@LANG_CONFIG_FILE@ +-ExecReload=/bin/kill -SIGHUP $MAINPID ++ExecReload=@coreutils@/bin/kill -SIGHUP $MAINPID + KeyringMode=shared + + [Install] diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch new file mode 100644 index 000000000000..401b6aea0c28 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch @@ -0,0 +1,31 @@ +diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c +index 9ef4c5b..94da834 100644 +--- a/daemon/gdm-session-worker.c ++++ b/daemon/gdm-session-worker.c +@@ -1515,6 +1515,16 @@ gdm_session_worker_load_env_d (GdmSessionWorker *worker) + g_object_unref (dir); + } + ++static void ++gdm_session_worker_forward_var (GdmSessionWorker *worker, char const *var) ++{ ++ char const *value = g_getenv(var); ++ if (value != NULL) { ++ g_debug ("forwarding %s= %s", var, value); ++ gdm_session_worker_set_environment_variable(worker, var, value); ++ } ++} ++ + static gboolean + gdm_session_worker_accredit_user (GdmSessionWorker *worker, + GError **error) +@@ -1559,6 +1569,9 @@ gdm_session_worker_accredit_user (GdmSessionWorker *worker, + goto out; + } + ++ gdm_session_worker_forward_var(worker, "GDM_X_SERVER_EXTRA_ARGS"); ++ gdm_session_worker_forward_var(worker, "GDM_X_SESSION_WRAPPER"); ++ + gdm_session_worker_update_environment_from_passwd_info (worker, + uid, + gid, diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch new file mode 100644 index 000000000000..66071aa4af80 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch @@ -0,0 +1,38 @@ +diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c +index d835b34..1f4b7f1 100644 +--- a/daemon/gdm-x-session.c.orig ++++ b/daemon/gdm-x-session.c +@@ -211,6 +211,7 @@ spawn_x_server (State *state, + char *vt_string = NULL; + char *display_number; + gsize display_number_size; ++ gchar **xserver_extra_args = NULL; + + auth_file = prepare_auth_file (); + +@@ -285,6 +286,17 @@ spawn_x_server (State *state, + if (state->debug_enabled) { + g_ptr_array_add (arguments, "-core"); + } ++ ++ if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) { ++ g_debug ("using GDM_X_SERVER_EXTRA_ARGS: %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS")); ++ xserver_extra_args = g_strsplit(g_getenv("GDM_X_SERVER_EXTRA_ARGS"), " ", -1); ++ for (gchar **extra_arg = xserver_extra_args; *extra_arg; extra_arg++) { ++ if (strlen(*extra_arg) < 1) continue; ++ g_debug ("adding: %s", *extra_arg); ++ g_ptr_array_add (arguments, *extra_arg); ++ } ++ } ++ + g_ptr_array_add (arguments, NULL); + + subprocess = g_subprocess_launcher_spawnv (launcher, +@@ -332,6 +344,7 @@ spawn_x_server (State *state, + + is_running = TRUE; + out: ++ g_strfreev(xserver_extra_args); + g_clear_pointer (&auth_file, g_free); + g_clear_object (&data_stream); + g_clear_object (&subprocess); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch new file mode 100644 index 000000000000..58481f0730fa --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch @@ -0,0 +1,40 @@ +diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c +index 88fe96f..b1b140a 100644 +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -664,18 +664,34 @@ spawn_session (State *state, + state->session_command, + NULL); + } else { ++ char const *session_wrapper; ++ char *eff_session_command; + int ret; + char **argv; + +- ret = g_shell_parse_argv (state->session_command, ++ session_wrapper = g_getenv("GDM_X_SESSION_WRAPPER"); ++ if (session_wrapper != NULL) { ++ char *quoted_wrapper = g_shell_quote(session_wrapper); ++ eff_session_command = g_strjoin(" ", quoted_wrapper, state->session_command, NULL); ++ g_free(quoted_wrapper); ++ } else { ++ eff_session_command = state->session_command; ++ } ++ ++ ret = g_shell_parse_argv (eff_session_command, + NULL, + &argv, + &error); + ++ if (session_wrapper != NULL) { ++ g_free(eff_session_command); ++ } ++ + if (!ret) { + g_debug ("could not parse session arguments: %s", error->message); + goto out; + } ++ + subprocess = g_subprocess_launcher_spawnv (launcher, + (const char * const *) argv, + &error); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch new file mode 100644 index 000000000000..61defd9c4bc2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch @@ -0,0 +1,20 @@ +--- a/daemon/gdm-wayland-session.c ++++ b/daemon/gdm-wayland-session.c +@@ -285,6 +285,7 @@ spawn_session (State *state, + "WAYLAND_DISPLAY", + "WAYLAND_SOCKET", + "GNOME_SHELL_SESSION_MODE", ++ "__NIXOS_SET_ENVIRONMENT_DONE", + NULL }; + + g_debug ("Running wayland session"); +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -610,6 +610,7 @@ spawn_session (State *state, + "WAYLAND_DISPLAY", + "WAYLAND_SOCKET", + "GNOME_SHELL_SESSION_MODE", ++ "__NIXOS_SET_ENVIRONMENT_DONE", + NULL }; + + g_debug ("Running X session"); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gjs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gjs/default.nix new file mode 100644 index 000000000000..ac3a25b7dc74 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gjs/default.nix @@ -0,0 +1,51 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, gtk3, atk, gobject-introspection +, spidermonkey_60, pango, readline, glib, libxml2, dbus, gdk_pixbuf +, makeWrapper }: + +stdenv.mkDerivation rec { + name = "gjs-${version}"; + version = "1.54.3"; + + src = fetchurl { + url = "mirror://gnome/sources/gjs/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1cd65d4nq5xxlyjz1b83hm5zklyry6lillzf782nr0z97k60vcvn"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gjs"; attrPath = "gnome3.gjs"; }; + }; + + outputs = [ "out" "installedTests" ]; + + nativeBuildInputs = [ pkgconfig makeWrapper ]; + buildInputs = [ libxml2 gobject-introspection gtk3 glib pango readline dbus ]; + + propagatedBuildInputs = [ spidermonkey_60 ]; + + configureFlags = [ + "--enable-installed-tests" + ]; + + postPatch = '' + for f in installed-tests/*.test.in; do + substituteInPlace "$f" --subst-var-by pkglibexecdir "$installedTests/libexec/gjs" + done + ''; + + postInstall = '' + sed 's|-lreadline|-L${readline.out}/lib -lreadline|g' -i $out/lib/libgjs.la + + moveToOutput "share/installed-tests" "$installedTests" + moveToOutput "libexec/gjs/installed-tests" "$installedTests" + + wrapProgram "$installedTests/libexec/gjs/installed-tests/minijasmine" \ + --prefix GI_TYPELIB_PATH : "${stdenv.lib.makeSearchPath "lib/girepository-1.0" [ gtk3 atk pango.out gdk_pixbuf ]}:$installedTests/libexec/gjs/installed-tests" + ''; + + meta = with stdenv.lib; { + description = "JavaScript bindings for GNOME"; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + license = licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix new file mode 100644 index 000000000000..a938a59f7a01 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gettext }: + +stdenv.mkDerivation rec { + name = "gnome-backgrounds-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-backgrounds/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1179jrl16bp9gqabqhw7nnfp8qzf5y1vf9fi45bni6rfmwm3mrpc"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-backgrounds"; attrPath = "gnome3.gnome-backgrounds"; }; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext ]; + + meta = with stdenv.lib; { + platforms = platforms.unix; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix new file mode 100644 index 000000000000..b065025327ff --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, gnome3, meson, ninja, pkgconfig, gtk3, intltool, glib +, udev, itstool, libxml2, wrapGAppsHook, libnotify, libcanberra-gtk3, gobject-introspection +, gtk-doc, docbook_xsl, docbook_xml_dtd_43, python3 }: + +let + pname = "gnome-bluetooth"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + version = "3.28.2"; + + # TODO: split out "lib" + outputs = [ "out" "dev" "devdoc" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0ch7lll5n8v7m26y6y485gnrik19ml42rsh1drgcxydm6fn62j8z"; + }; + + nativeBuildInputs = [ + meson ninja intltool itstool pkgconfig libxml2 wrapGAppsHook gobject-introspection + gtk-doc docbook_xsl docbook_xml_dtd_43 python3 + ]; + buildInputs = [ + glib gtk3 udev libnotify libcanberra-gtk3 + gnome3.defaultIconTheme gnome3.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 + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en; + description = "Application that let you manage Bluetooth in the GNOME destkop"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix new file mode 100644 index 000000000000..4a37599b136d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix @@ -0,0 +1,46 @@ +{ stdenv, meson, ninja, vala, gettext, itstool, fetchurl, pkgconfig, libxml2 +, gtk3, glib, gtksourceview3, wrapGAppsHook, gobject-introspection, python3 +, gnome3, mpfr, gmp, libsoup, libmpc }: + +stdenv.mkDerivation rec { + name = "gnome-calculator-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-calculator/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0qkzcmj51cjmljxl1nc84h6jgq1a51xj4g6jwh3ymgm19m3sqypc"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig vala gettext itstool wrapGAppsHook python3 + gobject-introspection # for finding vapi files + ]; + + buildInputs = [ + gtk3 glib libxml2 gtksourceview3 mpfr gmp + gnome3.defaultIconTheme + gnome3.gsettings-desktop-schemas libsoup libmpc + ]; + + doCheck = true; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-calculator"; + attrPath = "gnome3.gnome-calculator"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Calculator; + description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix new file mode 100644 index 000000000000..782a77499f9e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, desktop-file-utils, gnome3, glib, gtk3, libexif, libtiff, colord, colord-gtk, libcanberra-gtk3, lcms2, vte, exiv2 }: + +let + pname = "gnome-color-manager"; + version = "3.30.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "105bqqq3yvdn5lx94mkl0d450f0l8lmwfjjcwyls1pycmj0vifwh"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext itstool desktop-file-utils ]; + buildInputs = [ glib gtk3 libexif libtiff colord colord-gtk libcanberra-gtk3 lcms2 vte exiv2 ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A set of graphical utilities for color management to be used in the GNOME desktop"; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix new file mode 100644 index 000000000000..d0ab339a504d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, which, gnome3, autoconf, automake }: + +stdenv.mkDerivation rec { + name = "gnome-common-${version}"; + version = "3.18.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-common/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "22569e370ae755e04527b76328befc4c73b62bfd4a572499fde116b8318af8cf"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-common"; attrPath = "gnome3.gnome-common"; }; + }; + + patches = [(fetchurl { + name = "gnome-common-patch"; + url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935"; + sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl"; + })]; + + propagatedBuildInputs = [ which autoconf automake ]; # autogen.sh which is using gnome-common tends to require which + + meta = with stdenv.lib; { + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix new file mode 100644 index 000000000000..a7347f74ca4b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix @@ -0,0 +1,57 @@ +{ stdenv, gettext, fetchurl, evolution-data-server +, pkgconfig, libxslt, docbook_xsl, docbook_xml_dtd_42, python3, gtk3, glib, cheese +, libchamplain, clutter-gtk, geocode-glib, gnome-desktop, gnome-online-accounts +, wrapGAppsHook, folks, libxml2, gnome3, telepathy-glib +, vala, meson, ninja }: + +let + version = "3.30.2"; +in stdenv.mkDerivation rec { + name = "gnome-contacts-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-contacts/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1b0pkdwz9yqcv82zzdf76rs2w3wa5zli8pka09wnahikx1ykk43h"; + }; + + propagatedUserEnvPkgs = [ evolution-data-server ]; + + nativeBuildInputs = [ + meson ninja pkgconfig vala gettext libxslt docbook_xsl docbook_xml_dtd_42 python3 wrapGAppsHook + ]; + + buildInputs = [ + gtk3 glib evolution-data-server gnome3.gsettings-desktop-schemas + folks gnome-desktop telepathy-glib + libxml2 gnome-online-accounts cheese + gnome3.defaultIconTheme libchamplain clutter-gtk geocode-glib + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + # In file included from src/gnome-contacts@exe/contacts-avatar-selector.c:30:0: + # /nix/store/*-cheese-3.28.0/include/cheese/cheese-widget.h:26:10: fatal error: clutter-gtk/clutter-gtk.h: No such file or directory + # #include <clutter-gtk/clutter-gtk.h> + # ^~~~~~~~~~~~~~~~~~~~~~~~~~~ + NIX_CFLAGS_COMPILE = "-I${stdenv.lib.getDev clutter-gtk}/include/clutter-gtk-1.0"; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-contacts"; + attrPath = "gnome3.gnome-contacts"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Contacts; + description = "GNOME’s integrated address book"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix new file mode 100644 index 000000000000..58afc0ab85d0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix @@ -0,0 +1,78 @@ +{ fetchurl, stdenv, substituteAll, meson, ninja, pkgconfig, gnome3, ibus, gettext, upower, wrapGAppsHook +, libcanberra-gtk3, accountsservice, libpwquality, libpulseaudio +, gdk_pixbuf, librsvg, libnotify, libgudev, libsecret, gnome-color-manager +, libxml2, polkit, libxslt, libgtop, libsoup, colord, colord-gtk +, cracklib, libkrb5, networkmanagerapplet, networkmanager, glibc +, libwacom, samba, shared-mime-info, tzdata, libtool, libgnomekbd +, docbook_xsl, modemmanager, clutter, clutter-gtk, cheese, gnome-session +, fontconfig, sound-theme-freedesktop, grilo, python3 }: + +let + pname = "gnome-control-center"; + version = "3.30.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0rn4r0ng4pd9smpay4rf4dkcl09b2ipr9srryybhd1srmd02ps51"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext wrapGAppsHook libtool libxslt docbook_xsl + shared-mime-info python3 + ]; + + buildInputs = with gnome3; [ + ibus gtk glib glib-networking upower gsettings-desktop-schemas + libxml2 gnome-desktop gnome-settings-daemon polkit libgtop + gnome-online-accounts libsoup colord libpulseaudio fontconfig colord-gtk + accountsservice libkrb5 networkmanagerapplet libwacom samba libnotify + grilo libpwquality cracklib vino libcanberra-gtk3 libgudev libsecret + gdk_pixbuf defaultIconTheme librsvg clutter clutter-gtk cheese + networkmanager modemmanager gnome-bluetooth tracker + ]; + + patches = [ + (substituteAll { + src = ./paths.patch; + gcm = gnome-color-manager; + inherit glibc libgnomekbd tzdata; + }) + ]; + + postPatch = '' + chmod +x build-aux/meson/meson_post_install.py # patchShebangs requires executable file + patchShebangs build-aux/meson/meson_post_install.py + ''; + + mesonFlags = [ + "-Dgnome_session_libexecdir=${gnome-session}/libexec" + ]; + + 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" + ) + for i in $out/share/applications/*; do + substituteInPlace $i --replace "Exec=gnome-control-center" "Exec=$out/bin/gnome-control-center" + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Utilities to configure the GNOME desktop"; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch new file mode 100644 index 000000000000..0c11a7626e40 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch @@ -0,0 +1,78 @@ +--- a/panels/color/cc-color-panel.c ++++ b/panels/color/cc-color-panel.c +@@ -599,7 +599,7 @@ + + /* run with modal set */ + argv = g_ptr_array_new_with_free_func (g_free); +- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-calibrate", NULL)); ++ 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 (prefs->current_device))); + g_ptr_array_add (argv, g_strdup ("--parent-window")); +@@ -1038,7 +1038,7 @@ + + /* open up gcm-viewer as a info pane */ + argv = g_ptr_array_new_with_free_func (g_free); +- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-viewer", NULL)); ++ 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")); +@@ -1288,15 +1288,12 @@ + static void + gcm_prefs_profile_clicked (CcColorPanel *prefs, 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 (prefs->toolbutton_profile_view, TRUE); + else + gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE); +--- a/panels/datetime/tz.h ++++ b/panels/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; +--- a/panels/region/cc-region-panel.c ++++ b/panels/region/cc-region-panel.c +@@ -1265,10 +1265,10 @@ + } + + if (variant && variant[0]) +- commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"", ++ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"", + layout, variant); + else +- commandline = g_strdup_printf ("gkbd-keyboard-display -l %s", ++ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s", + layout); + + g_spawn_command_line_async (commandline, NULL); +--- a/tests/datetime/test-endianess.c ++++ b/tests/datetime/test-endianess.c +@@ -26,7 +26,7 @@ + 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 */ diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch new file mode 100644 index 000000000000..59191bddd9af --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch @@ -0,0 +1,19 @@ +--- a/libgnome-desktop/gnome-desktop-thumbnail-script.c ++++ b/libgnome-desktop/gnome-desktop-thumbnail-script.c +@@ -504,14 +504,10 @@ + g_return_val_if_fail (script->s_infile != NULL, FALSE); + + add_args (array, +- "bwrap", +- "--ro-bind", "/usr", "/usr", +- "--ro-bind", "/lib", "/lib", +- "--ro-bind", "/lib64", "/lib64", ++ "@bubblewrap_bin@", ++ "--ro-bind", "/nix/store", "/nix/store", + "--proc", "/proc", + "--dev", "/dev", +- "--symlink", "usr/bin", "/bin", +- "--symlink", "usr/sbin", "/sbin", + "--chdir", "/", + "--setenv", "GIO_USE_VFS", "local", + "--unshare-all", diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix new file mode 100644 index 000000000000..b98a6a2d676f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, libxslt, which, libX11, gnome3, gtk3, glib +, gettext, libxml2, xkeyboard_config, isocodes, itstool, wayland +, libseccomp, bubblewrap, gobject-introspection, gtk-doc, docbook_xsl }: + +stdenv.mkDerivation rec { + name = "gnome-desktop-${version}"; + version = "3.30.2"; + + outputs = [ "out" "dev" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-desktop/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0k6iccfj9naw42dl2mgljfvk12dmvg06plg86qd81nksrf9ycxal"; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ + pkgconfig which itstool gettext libxslt libxml2 gobject-introspection + gtk-doc docbook_xsl + ]; + buildInputs = [ + libX11 bubblewrap xkeyboard_config isocodes wayland + gtk3 glib libseccomp + ]; + + propagatedBuildInputs = [ gnome3.gsettings-desktop-schemas ]; + + patches = [ + (substituteAll { + src = ./bubblewrap-paths.patch; + bubblewrap_bin = "${bubblewrap}/bin/bwrap"; + }) + ]; + + configureFlags = [ + "--enable-gtk-doc" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-desktop"; + attrPath = "gnome3.gnome-desktop"; + }; + }; + + meta = with stdenv.lib; { + description = "Library with common API for various GNOME modules"; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix new file mode 100644 index 000000000000..1019a809d7f8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, desktop-file-utils, appstream-glib, libxslt +, libxml2, gettext, itstool, wrapGAppsHook, docbook_xsl, docbook_xml_dtd_43 +, gnome3, gtk, glib }: + +stdenv.mkDerivation rec { + name = "gnome-dictionary-${version}"; + version = "3.26.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-dictionary/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "16b8bc248dcf68987826d5e39234b1bb7fd24a2607fcdbf4258fde88f012f300"; + }; + + doCheck = true; + + nativeBuildInputs = [ + meson ninja pkgconfig wrapGAppsHook libxml2 gettext itstool + desktop-file-utils appstream-glib libxslt docbook_xsl docbook_xml_dtd_43 + ]; + buildInputs = [ gtk glib gnome3.gsettings-desktop-schemas gnome3.defaultIconTheme ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-dictionary"; + attrPath = "gnome3.gnome-dictionary"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Dictionary; + description = "Dictionary is the GNOME application to look up definitions"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix new file mode 100644 index 000000000000..5d224623c3ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix @@ -0,0 +1,41 @@ +{ stdenv, gettext, fetchurl, pkgconfig, udisks2, libsecret, libdvdread +, meson, ninja, gtk, glib, wrapGAppsHook, python3, libnotify +, itstool, gnome3, libxml2 +, libcanberra-gtk3, libxslt, docbook_xsl, libpwquality }: + +stdenv.mkDerivation rec { + name = "gnome-disk-utility-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-disk-utility/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1365fabz3q7n3bl775z82m1nzg18birxxyd7l2ssbbkqrx3h7wgi"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-disk-utility"; attrPath = "gnome3.gnome-disk-utility"; }; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxslt docbook_xsl + wrapGAppsHook python3 libxml2 + ]; + buildInputs = [ + gtk glib libsecret libpwquality libnotify libdvdread libcanberra-gtk3 + udisks2 gnome3.defaultIconTheme + gnome3.gnome-settings-daemon gnome3.gsettings-desktop-schemas + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://en.wikipedia.org/wiki/GNOME_Disks; + description = "A udisks graphical front-end"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix new file mode 100644 index 000000000000..06a5b258c80f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix @@ -0,0 +1,32 @@ +{ stdenv, meson, ninja, gettext, fetchurl +, pkgconfig, gtk3, glib, libxml2 +, wrapGAppsHook, gnome3 }: + +stdenv.mkDerivation rec { + name = "gnome-font-viewer-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-font-viewer/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1wwnx2zrlbd2d6np7m9s78alx6j6ranrnh1g2z6zrv9qcj8rpzz5"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-font-viewer"; attrPath = "gnome3.gnome-font-viewer"; }; + }; + + doCheck = true; + + nativeBuildInputs = [ meson ninja pkgconfig gettext wrapGAppsHook libxml2 ]; + buildInputs = [ gtk3 glib gnome3.gnome-desktop gnome3.defaultIconTheme ]; + + # Do not run meson-postinstall.sh + preConfigure = "sed -i '2,$ d' meson-postinstall.sh"; + + meta = with stdenv.lib; { + description = "Program that can preview fonts and create thumbnails for fonts"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix new file mode 100644 index 000000000000..a72efc61e2fe --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, pam, python2, glib, libxslt +, gettext, gcr, libcap_ng, libselinux, p11-kit, openssh, wrapGAppsHook +, docbook_xsl, docbook_xml_dtd_43, gnome3 }: + +stdenv.mkDerivation rec { + name = "gnome-keyring-${version}"; + version = "3.28.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-keyring/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0sk4las4ji8wv9nx8mldzqccmpmkvvr9pdwv9imj26r10xyin5w1"; + }; + + outputs = [ "out" "dev" ]; + + buildInputs = [ + glib libgcrypt pam openssh libcap_ng libselinux + gcr p11-kit + ]; + + nativeBuildInputs = [ + pkgconfig gettext libxslt docbook_xsl docbook_xml_dtd_43 wrapGAppsHook + ]; + + configureFlags = [ + "--with-pkcs11-config=${placeholder ''out''}/etc/pkcs11/" # installation directories + "--with-pkcs11-modules=${placeholder ''out''}/lib/pkcs11/" + ]; + + postPatch = '' + patchShebangs build + ''; + + # Tends to fail non-deterministically. + # - https://github.com/NixOS/nixpkgs/issues/55293 + # - https://github.com/NixOS/nixpkgs/issues/51121 + doCheck = false; + + # In 3.20.1, tests do not support Python 3 + checkInputs = [ dbus python2 ]; + + checkPhase = '' + export HOME=$(mktemp -d) + dbus-run-session \ + --config-file=${dbus.daemon}/share/dbus-1/session.conf \ + make check + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-keyring"; + attrPath = "gnome3.gnome-keyring"; + }; + }; + + meta = with stdenv.lib; { + description = "Collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications"; + homepage = https://wiki.gnome.org/Projects/GnomeKeyring; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix new file mode 100644 index 000000000000..4ceb0335c183 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, pkgconfig, vala, glib, libxslt, gtk, wrapGAppsHook +, webkitgtk, json-glib, rest, libsecret, gtk-doc, gobject-introspection +, gettext, icu, glib-networking +, libsoup, docbook_xsl, docbook_xml_dtd_412, gnome3, gcr, kerberos +}: + +let + pname = "gnome-online-accounts"; + version = "3.30.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0havx26cfy0ln17jzmzbrrx35afknv2s9mdy34j0p7wmbqr8m5ky"; + }; + + outputs = [ "out" "man" "dev" "devdoc" ]; + + configureFlags = [ + "--enable-media-server" + "--enable-kerberos" + "--enable-lastfm" + "--enable-todoist" + "--enable-gtk-doc" + "--enable-documentation" + ]; + + enableParallelBuilding = true; + + nativeBuildInputs = [ + pkgconfig gobject-introspection vala gettext wrapGAppsHook + libxslt docbook_xsl docbook_xml_dtd_412 gtk-doc + ]; + buildInputs = [ + glib gtk webkitgtk json-glib rest libsecret glib-networking icu libsoup + gcr kerberos + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix new file mode 100644 index 000000000000..6deefaa36732 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2 +, libsoup, json-glib, gmp, openssl, dleyna-server, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "gnome-online-miners-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-online-miners/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0pjamwwzn5wqgihyss357dyl2q70r0bngnqmwsqawchx5f9aja9c"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-online-miners"; attrPath = "gnome3.gnome-online-miners"; }; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook ]; + buildInputs = [ glib gnome3.libgdata libxml2 libsoup gmp openssl + gnome3.grilo gnome3.libzapojit gnome3.grilo-plugins + gnome3.gnome-online-accounts gnome3.libmediaart + gnome3.tracker gnome3.gfbgraph json-glib gnome3.rest + dleyna-server ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GnomeOnlineMiners; + description = "A set of crawlers that go through your online content and index them locally in Tracker"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix new file mode 100644 index 000000000000..6fab2d5b0b7f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchFromGitLab, meson, ninja, pkgconfig, python3, wrapGAppsHook +, glib, pipewire, systemd, libvncserver, libsecret, libnotify, gdk_pixbuf, gnome3 }: + +stdenv.mkDerivation rec { + name = "gnome-remote-desktop-${version}"; + version = "0.1.6"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "jadahl"; + repo = "gnome-remote-desktop"; + rev = version; + sha256 = "1d49kxhi1bn8ssh6nybg7d6zajqwc653czbsms2d59dbhj8mn75f"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig python3 wrapGAppsHook ]; + + buildInputs = [ + glib pipewire systemd libvncserver libsecret libnotify + gdk_pixbuf # For libnotify + ]; + + postPatch = '' + substituteInPlace meson.build --replace pipewire-0.1 pipewire-0.2 + + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + mesonFlags = [ + "-Dsystemd_user_unit_dir=${placeholder "out"}/lib/systemd/user" + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Mutter/RemoteDesktop; + description = "GNOME Remote Desktop server"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix new file mode 100644 index 000000000000..fc39ea812237 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix @@ -0,0 +1,43 @@ +{ stdenv, gettext, libxml2, fetchurl, pkgconfig, libcanberra-gtk3 +, gtk3, glib, meson, ninja, python3, wrapGAppsHook, appstream-glib, desktop-file-utils +, gnome3 }: + +let + pname = "gnome-screenshot"; + version = "3.30.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "06dx3svxq6sar4913mrz5lzb7hmc66wck138vmyxj8x8iv1iw0w8"; + }; + + doCheck = true; + + postPatch = '' + chmod +x build-aux/postinstall.py # patchShebangs requires executable file + patchShebangs build-aux/postinstall.py + ''; + + nativeBuildInputs = [ meson ninja pkgconfig gettext appstream-glib libxml2 desktop-file-utils python3 wrapGAppsHook ]; + buildInputs = [ + gtk3 glib libcanberra-gtk3 gnome3.defaultIconTheme + gnome3.gsettings-desktop-schemas + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "${pname}"; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://en.wikipedia.org/wiki/GNOME_Screenshot; + description = "Utility used in the GNOME desktop environment for taking screenshots"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix new file mode 100644 index 000000000000..2f44a4e168df --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix @@ -0,0 +1,67 @@ +{ fetchurl, stdenv, substituteAll, meson, ninja, pkgconfig, gnome3, glib, gtk, gsettings-desktop-schemas +, gnome-desktop, dbus, json-glib, libICE, xmlto, docbook_xsl, docbook_xml_dtd_412, python3 +, libxslt, gettext, makeWrapper, systemd, xorg, epoxy, gnugrep, bash }: + +stdenv.mkDerivation rec { + name = "gnome-session-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-session/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0fbpq103md4g9gi67rxnwvha21629nxx7qazddy6q6494sbqbzpa"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + gsettings = "${glib.bin}/bin/gsettings"; + dbusLaunch = "${dbus.lib}/bin/dbus-launch"; + grep = "${gnugrep}/bin/grep"; + bash = "${bash}/bin/bash"; + }) + ]; + + mesonFlags = [ "-Dsystemd=true" ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext makeWrapper + xmlto libxslt docbook_xsl docbook_xml_dtd_412 python3 + dbus # for DTD + ]; + + buildInputs = [ + glib gtk libICE gnome-desktop json-glib xorg.xtrans gnome3.defaultIconTheme + gnome3.gnome-settings-daemon gsettings-desktop-schemas systemd epoxy + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + # `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 : "${gnome3.gnome-shell}/share"\ + --suffix XDG_CONFIG_DIRS : "${gnome3.gnome-settings-daemon}/etc/xdg" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-session"; + attrPath = "gnome3.gnome-session"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME session manager"; + homepage = https://wiki.gnome.org/Projects/SessionManagement; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch new file mode 100644 index 000000000000..fe4feaf70857 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch @@ -0,0 +1,38 @@ +--- a/gnome-session/gnome-session.in ++++ b/gnome-session/gnome-session.in +@@ -3,11 +3,11 @@ + if [ "x$XDG_SESSION_TYPE" = "xwayland" ] && + [ "x$XDG_SESSION_CLASS" != "xgreeter" ] && + [ -n "$SHELL" ] && +- grep -q "$SHELL" /etc/shells && +- ! (echo "$SHELL" | grep -q "false") && +- ! (echo "$SHELL" | grep -q "nologin"); then ++ @grep@ -q "$SHELL" /etc/shells && ++ ! (echo "$SHELL" | @grep@ -q "false") && ++ ! (echo "$SHELL" | @grep@ -q "nologin"); then + if [ "$1" != '-l' ]; then +- exec bash -c "exec -l '$SHELL' -c '$0 -l $*'" ++ exec @bash@ -c "exec -l '$SHELL' -c '$0 -l $*'" + else + shift + fi +@@ -13,7 +13,7 @@ + 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%\'} + +--- a/gnome-session/main.c ++++ b/gnome-session/main.c +@@ -203,7 +203,7 @@ + } + 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, diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix new file mode 100644 index 000000000000..c76ba218c9ac --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix @@ -0,0 +1,54 @@ +{ fetchurl, substituteAll, stdenv, meson, ninja, pkgconfig, gnome3, perl, gettext, glib, libnotify, lcms2, libXtst +, libxkbfile, libpulseaudio, alsaLib, libcanberra-gtk3, upower, colord, libgweather, polkit +, geoclue2, librsvg, xf86_input_wacom, udev, libgudev, libwacom, libxslt, libxml2, networkmanager +, docbook_xsl, wrapGAppsHook, python3, ibus, xkeyboard_config, tzdata, nss }: + +stdenv.mkDerivation rec { + name = "gnome-settings-daemon-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-settings-daemon/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0c663csa3gnsr6wm0xfll6aani45snkdj7zjwjfzcwfh8w4a3z12"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata; + }) + ]; + + nativeBuildInputs = [ meson ninja pkgconfig perl gettext libxml2 libxslt docbook_xsl wrapGAppsHook python3 ]; + + buildInputs = with gnome3; [ + ibus gtk glib gsettings-desktop-schemas networkmanager + libnotify gnome-desktop lcms2 libXtst libxkbfile libpulseaudio alsaLib + libcanberra-gtk3 upower colord libgweather xkeyboard_config nss + polkit geocode-glib geoclue2 librsvg xf86_input_wacom udev libgudev libwacom + ]; + + mesonFlags = [ + "-Dudev_dir=${placeholder "out"}/lib/udev" + ]; + + postPatch = '' + for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-settings-daemon"; + attrPath = "gnome3.gnome-settings-daemon"; + }; + }; + + meta = with stdenv.lib; { + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch new file mode 100644 index 000000000000..2229302cab7c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch @@ -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; diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix new file mode 100644 index 000000000000..ec6d1af015a5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, meson, ninja, gettext, pkgconfig, spidermonkey_52, glib +, gnome3, gnome-menus, substituteAll }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extensions-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-shell-extensions/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1grxn4f5x754r172wmnf0h0xpy69afmj359zsj1rwgqlzw4i4c5p"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-shell-extensions"; + attrPath = "gnome3.gnome-shell-extensions"; + }; + }; + + patches = [ + (substituteAll { + src = ./fix_gmenu.patch; + gmenu_path = "${gnome-menus}/lib/girepository-1.0"; + }) + ]; + + doCheck = true; + # 52 is required for tests + # https://gitlab.gnome.org/GNOME/gnome-shell-extensions/blob/3.30.1/meson.build#L25 + checkInputs = [ spidermonkey_52 ]; + + nativeBuildInputs = [ meson ninja pkgconfig gettext glib ]; + + mesonFlags = [ "-Dextension_set=all" ]; + + preFixup = '' + # The meson build doesn't compile the schemas. + # Fixup adapted from export-zips.sh in the source. + + extensiondir=$out/share/gnome-shell/extensions + schemadir=$out/share/gsettings-schemas/${name}/glib-2.0/schemas/ + + glib-compile-schemas $schemadir + + for f in $extensiondir/*; do + name=`basename ''${f%%@*}` + uuid=$name@gnome-shell-extensions.gcampax.github.com + schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml + + if [ -f $schema ]; then + mkdir $f/schemas + ln -s $schema $f/schemas; + glib-compile-schemas $f/schemas + fi + done + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GnomeShell/Extensions; + description = "Modify and extend GNOME Shell functionality and behavior"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch new file mode 100644 index 000000000000..c384826de617 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch @@ -0,0 +1,24 @@ +From f72924a59d4a30daefccf84526bd854ebbe65ac8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= <torhedinbronner@gmail.com> +Date: Tue, 3 Apr 2018 14:13:12 +0200 +Subject: [PATCH] Fix gmenu typelib path + +--- + extensions/apps-menu/extension.js | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js +index 5b38213..d706f64 100644 +--- a/extensions/apps-menu/extension.js ++++ b/extensions/apps-menu/extension.js +@@ -1,5 +1,7 @@ + /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ + ++imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@'); ++ + const Atk = imports.gi.Atk; + const DND = imports.ui.dnd; + const GMenu = imports.gi.GMenu; +-- +2.16.2 + diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix new file mode 100644 index 000000000000..76e5bd13522e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix @@ -0,0 +1,98 @@ +{ fetchurl, fetchpatch, substituteAll, stdenv, meson, ninja, pkgconfig, gnome3, json-glib, libcroco, gettext, libsecret +, python3Packages, libsoup, polkit, clutter, networkmanager, docbook_xsl , docbook_xsl_ns, at-spi2-core +, libstartup_notification, telepathy-glib, telepathy-logger, libXtst, unzip, glibcLocales, shared-mime-info +, libgweather, libcanberra-gtk3, librsvg, geoclue2, perl, docbook_xml_dtd_42, desktop-file-utils +, libpulseaudio, libical, gobject-introspection, gstreamer, wrapGAppsHook, libxslt, gcr +, accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet, libgnomekbd +, sassc, systemd, gst_all_1 }: + +# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup + +let + pythonEnv = python3Packages.python.withPackages ( ps: with ps; [ pygobject3 ] ); + +in stdenv.mkDerivation rec { + name = "gnome-shell-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-shell/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0kacd4w9lc5finsvs170i7827qkxwd1ddj0g2giizwffpjdjqqr2"; + }; + + LANG = "en_US.UTF-8"; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext docbook_xsl docbook_xsl_ns docbook_xml_dtd_42 perl wrapGAppsHook glibcLocales + sassc desktop-file-utils libxslt.bin + ]; + buildInputs = with gnome3; [ + systemd caribou + gsettings-desktop-schemas gnome-keyring glib gcr json-glib accountsservice + libcroco libsecret libsoup polkit gdk_pixbuf librsvg + clutter networkmanager libstartup_notification telepathy-glib + libXtst gjs mutter libpulseaudio evolution-data-server + libical gtk gstreamer gdm libcanberra-gtk3 geoclue2 + defaultIconTheme gnome3.gnome-bluetooth + gnome3.gnome-clocks # schemas needed + at-spi2-core upower ibus gnome-desktop telepathy-logger gnome3.gnome-settings-daemon + gst_all_1.gst-plugins-good # recording + gobject-introspection + + # not declared at build time, but typelib is needed at runtime + libgweather networkmanagerapplet + ]; + propagatedUserEnvPkgs = [ + # Needed to support on-screen keyboard used with touch screen devices + # see https://github.com/NixOS/nixpkgs/issues/25968 + gnome3.caribou + ]; + + patches = [ + (fetchpatch { + name = "0001-build-Add-missing-dependency-to-run-js-test.patch"; + url = https://bug787864.bugzilla-attachments.gnome.org/attachment.cgi?id=360016; + sha256 = "1dmahd8ysbzh33rxglba0fbq127aw9h14cl2a2bw9913vjxhxijm"; + }) + (substituteAll { + src = ./fix-paths.patch; + inherit libgnomekbd unzip; + }) + ]; + + postPatch = '' + patchShebangs src/data-to-c.pl + + substituteInPlace src/gnome-shell-extension-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python" + substituteInPlace src/gnome-shell-perf-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python" + ''; + + postInstall = '' + glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + preFixup = '' + gappsWrapperArgs+=( + # Until glib’s xdgmime is patched + # Fixes “Failed to load resource:///org/gnome/shell/theme/noise-texture.png: Unrecognized image file format” + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + mozillaPlugin = "/lib/mozilla/plugins"; + updateScript = gnome3.updateScript { + packageName = "gnome-shell"; + attrPath = "gnome3.gnome-shell"; + }; + }; + + meta = with stdenv.lib; { + description = "Core user interface for the GNOME 3 desktop"; + homepage = https://wiki.gnome.org/Projects/GnomeShell; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; + +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch new file mode 100644 index 000000000000..32a0cc476da0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch @@ -0,0 +1,22 @@ +--- a/js/ui/extensionDownloader.js ++++ b/js/ui/extensionDownloader.js +@@ -86,7 +86,7 @@ + stream.output_stream.write_bytes(contents, null); + stream.close(null); + let [success, pid] = GLib.spawn_async(null, +- ['unzip', '-uod', dir.get_path(), '--', file.get_path()], ++ ['@unzip@/bin/unzip', '-uod', dir.get_path(), '--', file.get_path()], + null, + GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD, + null); +--- a/js/ui/status/keyboard.js ++++ b/js/ui/status/keyboard.js +@@ -1019,7 +1019,7 @@ + if (xkbVariant.length > 0) + description = description + '\t' + xkbVariant; + +- Util.spawn(['gkbd-keyboard-display', '-l', description]); ++ Util.spawn(['@libgnomekbd@/bin/gkbd-keyboard-display', '-l', description]); + }, + + _containerGetPreferredWidth: function(container, for_height, alloc) { diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix new file mode 100644 index 000000000000..3c45842fdd40 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, meson, ninja, gettext, gnome3, wrapGAppsHook, packagekit, ostree +, glib, appstream-glib, libsoup, polkit, isocodes, gspell, libxslt, gobject-introspection, flatpak, fwupd +, json-glib, libsecret, valgrind-light, docbook_xsl, docbook_xml_dtd_42, docbook_xml_dtd_43, gtk-doc, desktop-file-utils }: + +stdenv.mkDerivation rec { + name = "gnome-software-${version}"; + version = "3.30.6"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-software/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "00lh1ifgcs888i0774qdz2pzd5vnzcc5kvx20lcmgk37vvf0qqsl"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit isocodes; + }) + ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext wrapGAppsHook libxslt docbook_xml_dtd_42 docbook_xml_dtd_43 + valgrind-light docbook_xsl gtk-doc desktop-file-utils gobject-introspection + ]; + + buildInputs = [ + gnome3.gtk glib packagekit appstream-glib libsoup + gnome3.gsettings-desktop-schemas gnome3.gnome-desktop + gspell json-glib libsecret ostree + polkit flatpak fwupd + ]; + + mesonFlags = [ + "-Dubuntu_reviews=false" + "-Dgudev=false" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-software"; + attrPath = "gnome3.gnome-software"; + }; + }; + + meta = with stdenv.lib; { + description = "Software store that lets you install and update applications and system extensions"; + homepage = https://wiki.gnome.org/Apps/Software; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch new file mode 100644 index 000000000000..6f443a8a43ed --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/gs-language.c ++++ b/src/gs-language.c +@@ -95,7 +95,7 @@ + g_autoptr(GMarkupParseContext) context = NULL; + + /* find filename */ +- filename = g_build_filename (DATADIR, "xml", "iso-codes", "iso_639.xml", NULL); ++ filename = g_build_filename ("@isocodes@", "share", "xml", "iso-codes", "iso_639.xml", NULL); + if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { + g_free (filename); + filename = g_build_filename ("/usr", "share", "xml", "iso-codes", "iso_639.xml", NULL); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix new file mode 100644 index 000000000000..a1e3ece3db40 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix @@ -0,0 +1,45 @@ +{ stdenv, gettext, fetchurl, pkgconfig, gtkmm3, libxml2, polkit +, bash, gtk3, glib, wrapGAppsHook, meson, ninja, python3 +, itstool, gnome3, librsvg, gdk_pixbuf, libgtop, systemd }: + +stdenv.mkDerivation rec { + name = "gnome-system-monitor-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-system-monitor/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0g0y565bjs6bdszrnxsz1f7hcm1x59i3mfvplysirh7nz3hpz888"; + }; + + doCheck = true; + + nativeBuildInputs = [ + pkgconfig gettext itstool wrapGAppsHook meson ninja python3 + polkit # for ITS file + ]; + buildInputs = [ + bash gtk3 glib libxml2 gtkmm3 libgtop gdk_pixbuf gnome3.defaultIconTheme librsvg + gnome3.gsettings-desktop-schemas systemd + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + sed -i '/gtk-update-icon-cache/s/^/#/' meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-system-monitor"; + attrPath = "gnome3.gnome-system-monitor"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/SystemMonitor; + description = "System Monitor shows you what programs are running and how much processor time, memory, and disk space are being used"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix new file mode 100644 index 000000000000..4765edbcf7e5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, gnome3, dconf, nautilus +, gtk, gsettings-desktop-schemas, vte, intltool, which, libuuid, vala +, desktop-file-utils, itstool, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "gnome-terminal-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-terminal/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0f2y76gs72sw5l5lkkkvxzsvvwm0sg83h7nl8lk5kz1v1rrc47vb"; + }; + + buildInputs = [ + gtk gsettings-desktop-schemas vte libuuid dconf + # For extension + nautilus + ]; + + nativeBuildInputs = [ + pkgconfig intltool itstool which libxml2 + vala desktop-file-utils wrapGAppsHook + ]; + + # Silly ./configure, it looks for dbus file from gnome-shell in the + # installation tree of the package it is configuring. + postPatch = '' + substituteInPlace configure --replace '$(eval echo $(eval echo $(eval echo ''${dbusinterfacedir})))/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome-shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml" + substituteInPlace src/Makefile.in --replace '$(dbusinterfacedir)/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome-shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml" + ''; + + configureFlags = [ "--disable-migration" ]; # TODO: remove this with 3.30 + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-terminal"; + attrPath = "gnome3.gnome-terminal"; + }; + }; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "The GNOME Terminal Emulator"; + homepage = https://wiki.gnome.org/Apps/Terminal; + platforms = platforms.linux; + license = licenses.gpl3Plus; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix new file mode 100644 index 000000000000..b6c40b28ab1a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2 +, gdk_pixbuf }: + +let + pname = "gnome-themes-extra"; + version = "3.28"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "06aqg9asq2vqi9wr29bs4v8z2bf4manhbhfghf4nvw01y2zs0jvw"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ gtk3 librsvg pango atk gtk2 gdk_pixbuf gnome3.defaultIconTheme ]; + + postFixup = '' + gtk-update-icon-cache "$out"/share/icons/HighContrast + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix new file mode 100644 index 000000000000..7062dbafce8a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, itstool, libxml2, intltool }: + +stdenv.mkDerivation rec { + name = "gnome-user-docs-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-user-docs/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1pgsrvd79rqxa183wsmzh422y2zsg7fl5hskgc0s87jsc8b57fkg"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-user-docs"; attrPath = "gnome3.gnome-user-docs"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gnome3.yelp itstool libxml2 intltool ]; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-help/; + description = "User and system administration help for the GNOME desktop"; + maintainers = gnome3.maintainers; + license = licenses.cc-by-30; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix new file mode 100644 index 000000000000..6a5d2fde5018 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix @@ -0,0 +1,52 @@ +{ stdenv, intltool, fetchurl, apacheHttpd, nautilus +, pkgconfig, gtk3, glib, libxml2, systemd +, wrapGAppsHook, itstool, libnotify, libtool, mod_dnssd +, gnome3, librsvg, gdk_pixbuf, file, libcanberra-gtk3 }: + +stdenv.mkDerivation rec { + name = "gnome-user-share-${version}"; + version = "3.28.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-user-share/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "04wjnrcdlmyszj582nsda32sgi44nwgrw2ksy11xp17nb09d7m09"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-user-share"; attrPath = "gnome3.gnome-user-share"; }; + }; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0"; + + preConfigure = '' + sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' \ + -e 's,''${HTTP_MODULES_PATH},${apacheHttpd}/modules,' \ + -i data/dav_user_2.4.conf + ''; + + configureFlags = [ "--with-httpd=${apacheHttpd.out}/bin/httpd" + "--with-modules-path=${apacheHttpd.dev}/modules" + "--with-systemduserunitdir=$(out)/etc/systemd/user" + "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk3 glib intltool itstool libxml2 libtool + wrapGAppsHook file gdk_pixbuf gnome3.defaultIconTheme librsvg + nautilus libnotify libcanberra-gtk3 systemd ]; + + postInstall = '' + mkdir -p $out/share/gsettings-schemas/$name + mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name + glib-compile-schemas "$out/share/gsettings-schemas/$name/glib-2.0/schemas" + ''; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-user-share/3.8; + description = "Service that exports the contents of the Public folder in your home directory on the local network"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/grilo-plugins/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/grilo-plugins/default.nix new file mode 100644 index 000000000000..ab2ead7d3449 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/grilo-plugins/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, sqlite +, gnome3, libxml2, gupnp, gssdp, lua5, liboauth, gupnp-av +, gmime, json-glib, avahi, tracker, dleyna-server, itstool, totem-pl-parser }: + +let + pname = "grilo-plugins"; + version = "0.3.8"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0nync07gah3jkpb5ph5d3gwbygmabnih2m3hfz7lkvjl2l5pgpac"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext itstool ]; + buildInputs = [ + gnome3.grilo libxml2 gupnp gssdp gnome3.libgdata + lua5 liboauth gupnp-av sqlite gnome3.gnome-online-accounts + totem-pl-parser gnome3.rest gmime json-glib + avahi gnome3.libmediaart tracker dleyna-server + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Grilo; + description = "A collection of plugins for the Grilo framework"; + maintainers = gnome3.maintainers; + license = licenses.lgpl21; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/grilo/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/grilo/default.nix new file mode 100644 index 000000000000..a2bee6ac41ee --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/grilo/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, vala, glib, liboauth, gtk3 +, gtk-doc, docbook_xsl, docbook_xml_dtd_43 +, libxml2, gnome3, gobject-introspection, libsoup, totem-pl-parser }: + +let + pname = "grilo"; + version = "0.3.7"; # if you change minor, also change ./setup-hook.sh +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + outputs = [ "out" "dev" "man" "devdoc" ]; + outputBin = "dev"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1dz965l743r4bhj78wij9k1mb6635gnkb1lnk9j7gw9dd5qsyfza"; + }; + + patches = [ + # Fix meson build: https://gitlab.gnome.org/GNOME/grilo/merge_requests/34 + (fetchurl { + url = "https://gitlab.gnome.org/GNOME/grilo/commit/166612aeff09e5fc2fec1f62185c84cbdcf8f889.diff"; + sha256 = "07zamy927iaa7knrwq5yxz7ypl1i02pymkcdrg5l55alhdvb81pw"; + }) + ]; + + setupHook = ./setup-hook.sh; + + mesonFlags = [ + "-Dgtk_doc=true" + ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext gobject-introspection vala + gtk-doc docbook_xsl docbook_xml_dtd_43 + ]; + buildInputs = [ glib liboauth gtk3 libxml2 libsoup totem-pl-parser ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Grilo; + description = "Framework that provides access to various sources of multimedia content, using a pluggable system"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/grilo/setup-hook.sh b/nixpkgs/pkgs/desktops/gnome-3/core/grilo/setup-hook.sh new file mode 100644 index 000000000000..9337c520a207 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/grilo/setup-hook.sh @@ -0,0 +1,7 @@ +make_grilo_find_plugins() { + if [ -d "$1"/lib/grilo-0.3 ]; then + addToSearchPath GRL_PLUGIN_PATH "$1/lib/grilo-0.3" + fi +} + +addEnvHooks "$hostOffset" make_grilo_find_plugins diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix new file mode 100644 index 000000000000..dad0c8850b22 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, gobject-introspection + # just for passthru +, gnome3 }: + +stdenv.mkDerivation rec { + name = "gsettings-desktop-schemas-${version}"; + version = "3.28.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gsettings-desktop-schemas/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0bshwm49cd01ighsxqlbqn10q0ch71ff99gcrx8pr2gyky2ad3pq"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gsettings-desktop-schemas"; }; + }; + + preInstall = '' + mkdir -p $out/share/gsettings-schemas/${name}/glib-2.0/schemas + cat - > $out/share/gsettings-schemas/${name}/glib-2.0/schemas/remove-backgrounds.gschema.override <<- EOF + [org.gnome.desktop.background] + picture-uri=''' + + [org.gnome.desktop.screensaver] + picture-uri=''' + EOF + ''; + + buildInputs = [ glib gobject-introspection ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + + meta = with stdenv.lib; { + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix new file mode 100644 index 000000000000..a968bfd2b569 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix @@ -0,0 +1,59 @@ +{ stdenv, intltool, fetchFromGitLab, fetchpatch, pkgconfig, gtk3, defaultIconTheme +, glib, desktop-file-utils, gtk-doc, autoconf, automake, libtool +, wrapGAppsHook, gnome3, itstool, libxml2, yelp-tools +, docbook_xsl, docbook_xml_dtd_412, gsettings-desktop-schemas +, callPackage, unzip, gobject-introspection }: + +let + unicode-data = callPackage ./unicode-data.nix {}; +in stdenv.mkDerivation rec { + name = "gucharmap-${version}"; + version = "11.0.3"; + + outputs = [ "out" "lib" "dev" "devdoc" ]; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "GNOME"; + repo = "gucharmap"; + rev = version; + sha256 = "1a590nxy8jdf6zxh6jdsyvhxyaz94ixx3aa1pj7gicf1aqp26vnh"; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook unzip intltool itstool + autoconf automake libtool gtk-doc docbook_xsl docbook_xml_dtd_412 + yelp-tools libxml2 desktop-file-utils gobject-introspection + ]; + + buildInputs = [ gtk3 glib gsettings-desktop-schemas defaultIconTheme ]; + + configureFlags = [ + "--with-unicode-data=${unicode-data}" + "--enable-gtk-doc" + ]; + + doCheck = true; + + postPatch = '' + patchShebangs gucharmap/gen-guch-unicode-tables.pl + ''; + + preConfigure = '' + NOCONFIGURE=1 ./autogen.sh + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gucharmap"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME Character Map, based on the Unicode Character Database"; + homepage = https://wiki.gnome.org/Apps/Gucharmap; + license = licenses.gpl3; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix new file mode 100644 index 000000000000..6bf2fd39a2d3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix @@ -0,0 +1,45 @@ +{ fetchurl, stdenv, gnome3 }: +stdenv.mkDerivation rec { + name = "unicode-data-${version}"; + version = "11.0.0"; + srcs = [ + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/Blocks.txt"; + sha256 = "0lnh9iazikpr548bd7nkaq9r3vfljfvz0rg2462prac8qxk7ni8b"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/DerivedAge.txt"; + sha256 = "0rlqqd0b1sqbzvrj29dwdizx8lyvrbfirsnn8za9lb53x5fml4gb"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/NamesList.txt"; + sha256 = "0yr2h0nfqhirfi3bxl33z6cc94qqshlpgi06c25xh9754irqsgv8"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/Scripts.txt"; + sha256 = "1mbnvf97nwa3pvyzx9nd2wa94f8s0npg9740kic2p2ag7jmc1wz9"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/UnicodeData.txt"; + sha256 = "16b0jzvvzarnlxdvs2izd5ia0ipbd87md143dc6lv6xpdqcs75s9"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/Unihan.zip"; + sha256 = "0cy8gxb17ksi5h4ysypk4c09z61am1svjrvg97hm5m5ccjfrs1vj"; + }) + ]; + phases = "installPhase"; + installPhase = with stdenv.lib; '' + mkdir $out + for f in $srcs;do + cp $f $out/$(stripHash $f) + done + ''; + meta = with stdenv.lib; { + homepage = http://www.unicode.org/ucd/; + description = "Unicode Character Database"; + maintainers = gnome3.maintainers; + license = licenses.mit; + platforms = platforms.all; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix new file mode 100644 index 000000000000..bc0f5683a75f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, glib, dbus, libgcrypt, pkgconfig, intltool, gobject-introspection, gnome3 }: + +let + pname = "libgnome-keyring"; + version = "3.12.0"; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783"; + }; + + outputs = [ "out" "dev" ]; + + propagatedBuildInputs = [ glib gobject-introspection dbus libgcrypt ]; + nativeBuildInputs = [ pkgconfig intltool ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = { + description = "Framework for managing passwords and other secrets"; + homepage = https://wiki.gnome.org/Projects/GnomeKeyring; + license = with stdenv.lib.licenses; [ gpl2Plus lgpl2Plus ]; + inherit (glib.meta) platforms maintainers; + + longDescription = '' + gnome-keyring is a program that keeps password and other secrets for + users. The library libgnome-keyring is used by applications to integrate + with the gnome-keyring system. + ''; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.28.nix b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.28.nix new file mode 100644 index 000000000000..e80212713aae --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.28.nix @@ -0,0 +1,55 @@ +{ fetchurl, stdenv, fetchpatch, pkgconfig, gnome3, intltool, gobject-introspection, upower, cairo +, pango, cogl, clutter, libstartup_notification, zenity, libcanberra-gtk3 +, libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput +, pipewire, libgudev, libwacom, xwayland, autoreconfHook }: + +stdenv.mkDerivation rec { + name = "mutter-${version}"; + version = "3.28.3"; + + src = fetchurl { + url = "mirror://gnome/sources/mutter/3.28/${name}.tar.xz"; + sha256 = "0vq3rmq20d6b1mi6sf67wkzqys6hw5j7n7fd4hndcp19d5i26149"; + }; + + configureFlags = [ + "--with-x" + "--disable-static" + "--enable-shape" + "--enable-sm" + "--enable-startup-notification" + "--enable-xsync" + "--enable-verbose-mode" + "--with-libcanberra" + "--with-xwayland-path=${xwayland}/bin/Xwayland" + "--enable-compile-warnings=maximum" + ]; + + propagatedBuildInputs = [ + # required for pkgconfig to detect mutter-clutter + libXtst + ]; + + nativeBuildInputs = [ autoreconfHook pkgconfig intltool libtool makeWrapper ]; + + buildInputs = with gnome3; [ + glib gobject-introspection gtk gsettings-desktop-schemas upower + gnome-desktop cairo pango cogl clutter zenity libstartup_notification + gnome3.geocode-glib libinput libgudev libwacom + libcanberra-gtk3 zenity xkeyboard_config libxkbfile + libxkbcommon pipewire + ]; + + preFixup = '' + wrapProgram "$out/bin/mutter" \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix new file mode 100644 index 000000000000..9a1418cbe0a9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix @@ -0,0 +1,59 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, intltool, gobject-introspection, upower, cairo +, pango, cogl, clutter, libstartup_notification, zenity, libcanberra-gtk3 +, libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput +, pipewire, libgudev, libwacom, xwayland, autoreconfHook }: + +stdenv.mkDerivation rec { + name = "mutter-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/mutter/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0qr3w480p31nbiad49213rj9rk6p9fl82a68pzznpz36p30dq96z"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "mutter"; attrPath = "gnome3.mutter"; }; + }; + + configureFlags = [ + "--with-x" + "--disable-static" + "--enable-remote-desktop" + "--enable-shape" + "--enable-sm" + "--enable-startup-notification" + "--enable-xsync" + "--enable-verbose-mode" + "--with-libcanberra" + "--with-xwayland-path=${xwayland}/bin/Xwayland" + ]; + + propagatedBuildInputs = [ + # required for pkgconfig to detect mutter-clutter + libXtst + ]; + + nativeBuildInputs = [ autoreconfHook pkgconfig intltool libtool makeWrapper ]; + + buildInputs = with gnome3; [ + glib gobject-introspection gtk gsettings-desktop-schemas upower + gnome-desktop cairo pango cogl clutter zenity libstartup_notification + gnome3.geocode-glib libinput libgudev libwacom + libcanberra-gtk3 zenity xkeyboard_config libxkbfile + libxkbcommon pipewire + ]; + + preFixup = '' + wrapProgram "$out/bin/mutter" \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/bubblewrap-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/bubblewrap-paths.patch new file mode 100644 index 000000000000..051b7618612c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/bubblewrap-paths.patch @@ -0,0 +1,19 @@ +--- a/src/gnome-desktop/gnome-desktop-thumbnail-script.c ++++ a/src/gnome-desktop/gnome-desktop-thumbnail-script.c +@@ -514,14 +514,10 @@ add_bwrap (GPtrArray *array, + g_return_val_if_fail (script->s_infile != NULL, FALSE); + + add_args (array, +- "bwrap", +- "--ro-bind", "/usr", "/usr", +- "--ro-bind", "/lib", "/lib", +- "--ro-bind", "/lib64", "/lib64", ++ "@bubblewrap_bin@", ++ "--ro-bind", "@storeDir@", "@storeDir@", + "--proc", "/proc", + "--dev", "/dev", +- "--symlink", "usr/bin", "/bin", +- "--symlink", "usr/sbin", "/sbin", + "--chdir", "/", + "--setenv", "GIO_USE_VFS", "local", + "--unshare-all", diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix new file mode 100644 index 000000000000..b581d8f09837 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix @@ -0,0 +1,70 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, libxml2 +, desktop-file-utils, python3, wrapGAppsHook , gtk, gnome3, gnome-autoar +, glib-networking, shared-mime-info, libnotify, libexif, libseccomp , exempi +, librsvg, tracker, tracker-miners, gexiv2, libselinux, gdk_pixbuf +, substituteAll, bubblewrap +}: + +let + pname = "nautilus"; + version = "3.30.5"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "144r4py9b8w9ycsg6fggjg05kwvymh003qsb3h6apgpch5y3zgnv"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig libxml2 gettext python3 wrapGAppsHook + desktop-file-utils + ]; + + buildInputs = [ + glib-networking shared-mime-info libexif gtk exempi libnotify libselinux + tracker tracker-miners gexiv2 libseccomp bubblewrap + gnome3.adwaita-icon-theme gnome3.gsettings-desktop-schemas + ]; + + propagatedBuildInputs = [ gnome-autoar ]; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk_pixbuf}/share" + --prefix XDG_DATA_DIRS : "${librsvg}/share" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + postPatch = '' + patchShebangs build-aux/meson/postinstall.py + ''; + + patches = [ + ./extension_dir.patch + # 3.30 now generates it's own thummbnails, + # and no longer depends on `gnome-desktop` + (substituteAll { + src = ./bubblewrap-paths.patch; + bubblewrap_bin = "${bubblewrap}/bin/bwrap"; + inherit (builtins) storeDir; + }) + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "The file manager for GNOME"; + homepage = https://wiki.gnome.org/Apps/Files; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch new file mode 100644 index 000000000000..e1313999675d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch @@ -0,0 +1,24 @@ +diff --git a/src/nautilus-module.c b/src/nautilus-module.c +index 6273a76..4adcc8a 100644 +--- a/src/nautilus-module.c ++++ b/src/nautilus-module.c +@@ -242,11 +242,17 @@ void + nautilus_module_setup (void) + { + static gboolean initialized = FALSE; ++ const gchar* extensiondir = NULL; + + if (!initialized) + { + initialized = TRUE; + +- load_module_dir (NAUTILUS_EXTENSIONDIR); ++ extensiondir = g_getenv ("NAUTILUS_EXTENSION_DIR"); ++ if (extensiondir == NULL) { ++ extensiondir = NAUTILUS_EXTENSIONDIR; ++ } ++ ++ load_module_dir (extensiondir); + + eel_debug_call_at_shutdown (free_module_objects); + } diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix new file mode 100644 index 000000000000..5d60500b3636 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchurl, pkgconfig, vala, gettext, libxml2, gobject-introspection, gtk-doc, wrapGAppsHook, glib, gssdp, gupnp, gupnp-av, gupnp-dlna, gst_all_1, libgee, libsoup, gtk3, libmediaart, sqlite, systemd, tracker, shared-mime-info, gnome3 }: + +let + pname = "rygel"; + version = "0.36.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + # TODO: split out lib + outputs = [ "out" "dev" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0i12z6bzfzgcjidhxa2jsvpm4hqpab0s032z13jy2vbifrncfcnk"; + }; + + nativeBuildInputs = [ + pkgconfig vala gettext libxml2 gobject-introspection gtk-doc wrapGAppsHook + ]; + buildInputs = [ + glib gssdp gupnp gupnp-av gupnp-dlna libgee libsoup gtk3 libmediaart sqlite systemd tracker shared-mime-info + ] ++ (with gst_all_1; [ + gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly + ]); + + configureFlags = [ + "--with-systemduserunitdir=$(out)/lib/systemd/user" + "--enable-apidocs" + "--sysconfdir=/etc" + ]; + + installFlags = [ + "sysconfdir=$(out)/etc" + ]; + + doCheck = true; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A home media solution (UPnP AV MediaServer) that allows you to easily share audio, video and pictures to other devices"; + homepage = https://wiki.gnome.org/Projects/Rygel; + license = licenses.lgpl21Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix new file mode 100644 index 000000000000..ef79f972ff0f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, python3, wrapGAppsHook +, cairo, gdk_pixbuf, colord, glib, gtk, gusb, packagekit, libwebp +, libxml2, sane-backends, vala, gnome3, gobject-introspection }: + +stdenv.mkDerivation rec { + name = "simple-scan-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/simple-scan/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0dknvdjlnxrp9nxd3yr8wyjc4kv94nwglss8pr6rfvl4hnlly53i"; + }; + + buildInputs = [ + cairo gdk_pixbuf colord glib gnome3.defaultIconTheme gusb + gtk libwebp packagekit sane-backends vala + ]; + nativeBuildInputs = [ + meson ninja gettext itstool pkgconfig python3 wrapGAppsHook libxml2 + # For setup hook + gobject-introspection + ]; + + postPatch = '' + patchShebangs data/meson_compile_gschema.py + ''; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "simple-scan"; + }; + }; + + meta = with stdenv.lib; { + description = "Simple scanning utility"; + longDescription = '' + A really easy way to scan both documents and photos. You can crop out the + bad parts of a photo and rotate it if it is the wrong way round. You can + print your scans, export them to pdf, or save them in a range of image + formats. Basically a frontend for SANE - which is the same backend as + XSANE uses. This means that all existing scanners will work and the + interface is well tested. + ''; + homepage = https://gitlab.gnome.org/GNOME/simple-scan; + license = licenses.gpl3Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix new file mode 100644 index 000000000000..77c216e73764 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, file, intltool, gobject-introspection, glib +, clutter-gtk, clutter-gst, gnome3, aspell, hspell, gtksourceview, gjs +, webkitgtk, libmusicbrainz5, icu, wrapGAppsHook, gst_all_1 +, gdk_pixbuf, librsvg, gtk3, harfbuzz }: + +stdenv.mkDerivation rec { + name = "sushi-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/sushi/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0zpaiw5r734fky3zq95a6szwn7srbkpixajqg2xvdivhhx4mbnnj"; + }; + + nativeBuildInputs = [ pkgconfig file intltool gobject-introspection wrapGAppsHook ]; + buildInputs = [ + glib gtk3 gnome3.evince icu harfbuzz + clutter-gtk clutter-gst gjs gtksourceview gdk_pixbuf + librsvg libmusicbrainz5 webkitgtk + gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + # cannot find -laspell, -lhspell + aspell hspell + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "sushi"; + attrPath = "gnome3.sushi"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://en.wikipedia.org/wiki/Sushi_(software)"; + description = "A quick previewer for Nautilus"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix new file mode 100644 index 000000000000..3565931e4df1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchurl, meson, ninja, intltool, gst_all_1 +, clutter-gtk, clutter-gst, python3Packages, shared-mime-info +, pkgconfig, gtk3, glib, gobject-introspection, totem-pl-parser +, wrapGAppsHook, itstool, libxml2, vala, gnome3 +, gdk_pixbuf, tracker, nautilus }: + +stdenv.mkDerivation rec { + name = "totem-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/totem/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0rahkybxbmxhlmrrgrzxny1xm7wycx7ib4blxp1i2l1q3i8s84b0"; + }; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0"; + + nativeBuildInputs = [ meson ninja vala pkgconfig intltool python3Packages.python itstool gobject-introspection wrapGAppsHook ]; + buildInputs = [ + gtk3 glib gnome3.grilo clutter-gtk clutter-gst totem-pl-parser gnome3.grilo-plugins + 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-libav gnome3.libpeas shared-mime-info + gdk_pixbuf libxml2 gnome3.defaultIconTheme gnome3.gnome-desktop + gnome3.gsettings-desktop-schemas tracker nautilus + python3Packages.pygobject3 python3Packages.dbus-python # for plug-ins + ]; + + postPatch = '' + chmod +x meson_compile_python.py meson_post_install.py # patchShebangs requires executable file + patchShebangs . + ''; + + mesonFlags = [ + "-Dwith-nautilusdir=${placeholder "out"}/lib/nautilus/extensions-3.0" + # https://bugs.launchpad.net/ubuntu/+source/totem/+bug/1712021 + # https://bugzilla.gnome.org/show_bug.cgi?id=784236 + # https://github.com/mesonbuild/meson/issues/1994 + "-Denable-vala=no" + ]; + + wrapPrefixVariables = [ "PYTHONPATH" ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "totem"; + attrPath = "gnome3.totem"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Videos; + description = "Movie player for the GNOME desktop based on GStreamer"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/tracker-miners/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/tracker-miners/default.nix new file mode 100644 index 000000000000..7127ab71b1fc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/tracker-miners/default.nix @@ -0,0 +1,100 @@ +{ stdenv, fetchurl, substituteAll, intltool, itstool, libxslt +, meson, ninja, pkgconfig, vala, wrapGAppsHook, bzip2, dbus, evolution-data-server +, exempi, flac, giflib, glib, gnome3, gst_all_1, icu, json-glib, libcue, libexif +, libgrss, libgsf, libiptcdata, libjpeg, libpng, libseccomp, libsoup, libtiff, libuuid +, libvorbis, libxml2, poppler, taglib, upower, totem-pl-parser }: + +let + pname = "tracker-miners"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + version = "2.1.5"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1kdq7fk9c80ngg65p31pjdk4za0fq7nfhblqsma9alvkam5kvzgm"; + }; + + nativeBuildInputs = [ + intltool + itstool + libxslt + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + # TODO: add libenca, libosinfo + buildInputs = [ + bzip2 + dbus + evolution-data-server + exempi + flac + giflib + glib + gnome3.gexiv2 + totem-pl-parser + gnome3.tracker + gst_all_1.gst-plugins-base + gst_all_1.gstreamer + icu + json-glib + libcue + libexif + libgrss + libgsf + libiptcdata + libjpeg + libpng + libseccomp + libsoup + libtiff + libuuid + libvorbis + libxml2 + poppler + taglib + upower + ]; + + mesonFlags = [ + # TODO: tests do not like our sandbox + "-Dfunctional_tests=false" + "-Ddbus_services=${placeholder "out"}/share/dbus-1/services" + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit (gnome3) tracker; + }) + # https://bugzilla.gnome.org/show_bug.cgi?id=795576 + (fetchurl { + url = https://bugzilla.gnome.org/attachment.cgi?id=371427; + sha256 = "187flswvzymjfxwfrrhizb1cvs780zm39aa3i2vwa5fbllr7kcpf"; + }) + ]; + + postInstall = '' + glib-compile-schemas "$out/share/glib-2.0/schemas" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Tracker; + description = "Desktop-neutral user information store, search tool and indexer"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch new file mode 100644 index 000000000000..47ad114eb0b5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch @@ -0,0 +1,42 @@ +--- a/meson.build ++++ b/meson.build +@@ -25,15 +25,15 @@ + # + # This check acts as a guard to make sure we are being configured with the + # right prefix, among other things. +- tracker_store = find_program(join_paths(get_option('prefix'), get_option('libexecdir'), 'tracker-store')) ++ tracker_store = find_program(join_paths(tracker_miner.get_pkgconfig_variable('prefix'), 'libexec', 'tracker-store')) + tracker_store_path = tracker_store.path() + + # If we are building against an installed version of tracker core rather than + # having it as a subproject, these 'uninstalled' locations point to the actual + # installed locations. +- tracker_uninstalled_domain_rule = join_paths(get_option('prefix'), get_option('datadir'), 'tracker', 'domain-ontologies', 'default.rule') +- tracker_uninstalled_nepomuk_ontologies_dir = join_paths(get_option('prefix'), get_option('datadir'), 'tracker', 'ontologies', 'nepomuk') +- tracker_uninstalled_stop_words_dir = join_paths(get_option('prefix'), get_option('datadir'), 'tracker', 'stop-words', 'default.rule') ++ tracker_uninstalled_domain_rule = join_paths(tracker_miner.get_pkgconfig_variable('prefix'), 'share', 'tracker', 'domain-ontologies', 'default.rule') ++ tracker_uninstalled_nepomuk_ontologies_dir = join_paths(tracker_miner.get_pkgconfig_variable('prefix'), 'share', 'tracker', 'ontologies', 'nepomuk') ++ tracker_uninstalled_stop_words_dir = join_paths(tracker_miner.get_pkgconfig_variable('prefix'), 'share', 'tracker', 'stop-words', 'default.rule') + else + tracker_subproject = subproject('tracker', + default_options: [ +--- a/src/libtracker-miners-common/tracker-domain-ontology.c ++++ b/src/libtracker-miners-common/tracker-domain-ontology.c +@@ -323,7 +323,7 @@ + goto end; + } + } else { +- path = g_build_filename (SHAREDIR, "tracker", "domain-ontologies", ++ path = g_build_filename ("@tracker@", "share", "tracker", "domain-ontologies", + DEFAULT_RULE, NULL); + + if (!g_file_test (path, G_FILE_TEST_IS_REGULAR)) { +@@ -388,7 +388,7 @@ + if (!priv->ontology_location) { + gchar *ontology_path; + +- ontology_path = g_build_filename (SHAREDIR, "tracker", "ontologies", ++ ontology_path = g_build_filename ("@tracker@", "share", "tracker", "ontologies", + priv->ontology_name, NULL); + + if (!g_file_test (ontology_path, G_FILE_TEST_IS_DIR)) { diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/tracker/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/tracker/default.nix new file mode 100644 index 000000000000..d744fc6c87c7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/tracker/default.nix @@ -0,0 +1,78 @@ +{ stdenv, fetchurl, fetchFromGitLab, intltool, meson, ninja, pkgconfig, gobject-introspection, python2 +, gtk-doc, docbook_xsl, docbook_xml_dtd_412, docbook_xml_dtd_43, glibcLocales +, libxml2, upower, glib, wrapGAppsHook, vala, sqlite, libxslt, libstemmer +, gnome3, icu, libuuid, networkmanager, libsoup, json-glib }: + +let + pname = "tracker"; + version = "2.1.6"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + outputs = [ "out" "dev" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "143zapq50lggj3mpqg2y4rh1hgnkbn9vgvzpqxr7waiawsmx0awq"; + }; + + nativeBuildInputs = [ + meson ninja vala pkgconfig intltool libxslt wrapGAppsHook gobject-introspection + gtk-doc docbook_xsl docbook_xml_dtd_412 docbook_xml_dtd_43 glibcLocales + python2 # for data-generators + ]; + + buildInputs = [ + glib libxml2 sqlite upower icu networkmanager libsoup libuuid json-glib libstemmer + ]; + + LC_ALL = "en_US.UTF-8"; + + mesonFlags = [ + "-Ddbus_services=share/dbus-1/services" + "-Dsystemd_user_services=lib/systemd/user" + # TODO: figure out wrapping unit tests, some of them fail on missing gsettings-desktop-schemas + "-Dfunctional_tests=false" + ]; + + patches = [ + # Always generate tracker-sparql.h in time + (fetchurl { + url = https://gitlab.gnome.org/GNOME/tracker/commit/3cbfaa5b374e615098e60eb4430f108b642ebe76.diff; + sha256 = "0smavzvsglpghggrcl8sjflki13nh7pr0jl2yv6ymbf5hr1c4dws"; + }) + ]; + + postPatch = '' + patchShebangs utils/g-ir-merge/g-ir-merge + patchShebangs utils/data-generators/cc/generate + + # make .desktop Exec absolute + patch -p0 <<END_PATCH + +++ src/tracker-store/tracker-store.desktop.in.in + @@ -4 +4 @@ + -Exec=gdbus call -e -d org.freedesktop.DBus -o /org/freedesktop/DBus -m org.freedesktop.DBus.StartServiceByName org.freedesktop.Tracker1 0 + +Exec=${glib.dev}/bin/gdbus call -e -d org.freedesktop.DBus -o /org/freedesktop/DBus -m org.freedesktop.DBus.StartServiceByName org.freedesktop.Tracker1 0 + END_PATCH + ''; + + postInstall = '' + glib-compile-schemas "$out/share/glib-2.0/schemas" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Tracker; + description = "Desktop-neutral user information store, search tool and indexer"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/vino/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/vino/default.nix new file mode 100644 index 000000000000..6ec2b0a17edb --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/vino/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, lib, wrapGAppsHook +, pkgconfig, gnome3, gtk3, glib, intltool, libXtst, libnotify, libsoup +, telepathySupport ? false, dbus-glib ? null, telepathy-glib ? null +, libsecret, gnutls, libgcrypt, avahi, zlib, libjpeg, libXdamage, libXfixes, libXext +, networkmanager }: + +with lib; + +stdenv.mkDerivation rec { + name = "vino-${version}"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/vino/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "2911c779b6a2c46e5bc8e5a0c94c2a4d5bd4a1ee7e35f2818702cb13d9d23bab"; + }; + + doCheck = true; + + nativeBuildInputs = [ intltool wrapGAppsHook pkgconfig ]; + + buildInputs = [ + gnome3.defaultIconTheme gtk3 glib libXtst libnotify libsoup + libsecret gnutls libgcrypt avahi zlib libjpeg + libXdamage libXfixes libXext networkmanager + ] ++ optionals telepathySupport [ dbus-glib telepathy-glib ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "vino"; + attrPath = "gnome3.vino"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Vino; + description = "GNOME desktop sharing server"; + maintainers = with maintainers; [ lethalman domenkozar ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp-tools/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-tools/default.nix new file mode 100644 index 000000000000..6f487eacf972 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-tools/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, libxml2, libxslt, itstool, gnome3, pkgconfig }: + +stdenv.mkDerivation rec { + name = "yelp-tools-${version}"; + version = "3.28.0"; + + src = fetchurl { + url = "mirror://gnome/sources/yelp-tools/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1b61dmlb1sd50fgq6zgnkcpx2s1py33q0x9cx67fzpsr4gmgxnw2"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "yelp-tools"; attrPath = "gnome3.yelp-tools"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libxml2 libxslt itstool gnome3.yelp-xsl ]; + + doCheck = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp/Tools; + description = "Small programs that help you create, edit, manage, and publish your Mallard or DocBook documentation"; + maintainers = with maintainers; [ domenkozar ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix new file mode 100644 index 000000000000..7e98012998dc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix @@ -0,0 +1,29 @@ +{ stdenv, intltool, fetchurl, pkgconfig +, itstool, libxml2, libxslt, gnome3 }: + +stdenv.mkDerivation rec { + name = "yelp-xsl-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/yelp-xsl/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0ffgp3ymcc11r9sdndliwwngljcy1mfqpfxsdfbm8rlcjg2k3vzw"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "yelp-xsl"; attrPath = "gnome3.yelp-xsl"; }; + }; + + doCheck = true; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool itstool libxml2 libxslt ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp; + description = "Yelp's universal stylesheets for Mallard and DocBook"; + maintainers = gnome3.maintainers; + license = [licenses.gpl2 licenses.lgpl2]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix new file mode 100644 index 000000000000..26bcb3171902 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix @@ -0,0 +1,36 @@ +{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib +, gnome3, sqlite +, itstool, libxml2, libxslt, gst_all_1 +, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "yelp-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/yelp/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "060a902j15k76fyhk8xfl38ipvrrcc0qd7nm2mcck4ifb45b0zv4"; + }; + + nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook ]; + buildInputs = [ + gtk3 glib webkitgtk sqlite + libxml2 libxslt gnome3.yelp-xsl + gnome3.defaultIconTheme + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "yelp"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp; + description = "The help viewer in Gnome"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix new file mode 100644 index 000000000000..e80c437afdae --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, libxslt, gnome3 +, gnome-doc-utils, intltool, libX11, which, itstool, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "zenity-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/zenity/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1wipnp46pd238z9ck5rsckbaw7yla6c936fswq5w94k4c6bgcplr"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "zenity"; attrPath = "gnome3.zenity"; }; + }; + + preBuild = '' + mkdir -p $out/include + ''; + + buildInputs = [ gnome3.gtk libxml2 libxslt libX11 itstool ]; + + nativeBuildInputs = [ pkgconfig intltool gnome-doc-utils which wrapGAppsHook ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/default.nix b/nixpkgs/pkgs/desktops/gnome-3/default.nix new file mode 100644 index 000000000000..34b3faf71a41 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/default.nix @@ -0,0 +1,402 @@ +{ config, pkgs, lib }: + +lib.makeScope pkgs.newScope (self: with self; { + updateScript = callPackage ./update.nix { }; + + /* Remove packages of packagesToRemove from packages, based on their names + + Type: + removePackagesByName :: [package] -> [package] -> [package] + + Example: + removePackagesByName [ nautilus file-roller ] [ file-roller totem ] + => [ nautilus ] + */ + removePackagesByName = packages: packagesToRemove: + let + pkgName = drv: (builtins.parseDrvName drv.name).name; + namesToRemove = map pkgName packagesToRemove; + in + lib.filter (x: !(builtins.elem (pkgName x) namesToRemove)) packages; + + maintainers = with pkgs.lib.maintainers; [ lethalman jtojnar hedning worldofpeace ]; + + corePackages = with gnome3; [ + pkgs.desktop-file-utils + pkgs.shared-mime-info # for update-mime-database + glib # for gsettings + gtk3.out # for gtk-update-icon-cache + glib-networking gvfs dconf gnome-backgrounds gnome-control-center + gnome-menus gnome-settings-daemon gnome-shell + gnome-themes-extra defaultIconTheme gnome-shell-extensions + pkgs.hicolor-icon-theme + ]; + + optionalPackages = with gnome3; [ baobab eog epiphany evince + gucharmap nautilus totem vino yelp gnome-bluetooth + gnome-calculator gnome-contacts gnome-font-viewer gnome-screenshot + gnome-system-monitor simple-scan + gnome-terminal gnome-user-docs evolution file-roller gedit + gnome-clocks gnome-music gnome-tweaks gnome-photos + nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs + gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool + gnome-getting-started-docs gnome-packagekit gnome-software + gnome-power-manager gnome-todo gnome-usage + ]; + + gamesPackages = with gnome3; [ swell-foop lightsoff iagno + tali quadrapassel gnome-sudoku atomix aisleriot five-or-more + four-in-a-row gnome-chess gnome-klotski gnome-mahjongg + gnome-mines gnome-nibbles gnome-robots gnome-tetravex + hitori gnome-taquin + ]; + + inherit (pkgs) atk glib gobject-introspection gspell webkitgtk gtk3 gtkmm3 + libgtop libgudev libhttpseverywhere librsvg libsecret gdk_pixbuf gtksourceview gtksourceviewmm gtksourceview4 + easytag meld orca rhythmbox shotwell gnome-usage + clutter clutter-gst clutter-gtk cogl gtk-vnc libdazzle libgda libgit2-glib libgxps libgdata libgepub libcroco libpeas libgee geocode-glib libgweather librest libzapojit libmediaart gfbgraph gexiv2 folks totem-pl-parser gcr gsound libgnomekbd vte vte_290 vte-ng gnome-menus gdl; + + libsoup = pkgs.libsoup.override { gnomeSupport = true; }; + libchamplain = pkgs.libchamplain.override { libsoup = libsoup; }; + gnome3 = self // { recurseForDerivations = false; }; + gtk = gtk3; + gtkmm = gtkmm3; + vala = pkgs.vala_0_42; + gegl_0_4 = pkgs.gegl_0_4.override { inherit gtk; }; + rest = librest; + +# Simplify the nixos module and gnome packages + defaultIconTheme = adwaita-icon-theme; + +# ISO installer +# installerIso = callPackage ./installer.nix {}; + +#### Core (http://ftp.acc.umu.se/pub/GNOME/core/) + + adwaita-icon-theme = callPackage ./core/adwaita-icon-theme { }; + + baobab = callPackage ./core/baobab { }; + + caribou = callPackage ./core/caribou { }; + + dconf = callPackage ./core/dconf { }; + dconf-editor = callPackage ./core/dconf-editor { }; + + empathy = callPackage ./core/empathy { }; + + epiphany = callPackage ./core/epiphany { }; + + evince = callPackage ./core/evince { }; # ToDo: dbus would prevent compilation, enable tests + + evolution-data-server = callPackage ./core/evolution-data-server { }; + + gdm = callPackage ./core/gdm { }; + + gjs = callPackage ./core/gjs { }; + + glib-networking = pkgs.glib-networking.override { + inherit gsettings-desktop-schemas; + }; + + gnome-backgrounds = callPackage ./core/gnome-backgrounds { }; + + gnome-bluetooth = callPackage ./core/gnome-bluetooth { }; + + gnome-color-manager = callPackage ./core/gnome-color-manager { }; + + gnome-contacts = callPackage ./core/gnome-contacts { }; + + gnome-control-center = callPackage ./core/gnome-control-center { }; + + gnome-calculator = callPackage ./core/gnome-calculator { }; + + gnome-common = callPackage ./core/gnome-common { }; + + gnome-desktop = callPackage ./core/gnome-desktop { }; + + gnome-dictionary = callPackage ./core/gnome-dictionary { }; + + gnome-disk-utility = callPackage ./core/gnome-disk-utility { }; + + gnome-font-viewer = callPackage ./core/gnome-font-viewer { }; + + gnome-keyring = callPackage ./core/gnome-keyring { }; + + libgnome-keyring = callPackage ./core/libgnome-keyring { }; + + gnome-online-accounts = callPackage ./core/gnome-online-accounts { }; + + gnome-online-miners = callPackage ./core/gnome-online-miners { }; + + gnome-remote-desktop = callPackage ./core/gnome-remote-desktop { }; + + gnome-session = callPackage ./core/gnome-session { }; + + gnome-shell = callPackage ./core/gnome-shell { }; + + gnome-shell-extensions = callPackage ./core/gnome-shell-extensions { }; + + gnome-screenshot = callPackage ./core/gnome-screenshot { }; + + gnome-settings-daemon = callPackage ./core/gnome-settings-daemon { }; + + gnome-software = callPackage ./core/gnome-software { }; + + gnome-system-monitor = callPackage ./core/gnome-system-monitor { }; + + gnome-terminal = callPackage ./core/gnome-terminal { }; + + gnome-themes-extra = callPackage ./core/gnome-themes-extra { }; + + gnome-user-docs = callPackage ./core/gnome-user-docs { }; + + gnome-user-share = callPackage ./core/gnome-user-share { }; + + grilo = callPackage ./core/grilo { }; + + grilo-plugins = callPackage ./core/grilo-plugins { }; + + gsettings-desktop-schemas = callPackage ./core/gsettings-desktop-schemas { }; + + gucharmap = callPackage ./core/gucharmap { }; + + gvfs = pkgs.gvfs.override { gnome = gnome3; gnomeSupport = true; }; + + eog = callPackage ./core/eog { }; + + mutter = callPackage ./core/mutter { }; + + # Needed for elementary's gala and greeter until they get around to adapting to all the API breaking changes in libmutter-3 + # A more detailed explaination can be seen here https://decathorpe.com/2018/09/04/call-for-help-pantheon-on-fedora-29.html + # See Also: https://github.com/elementary/gala/issues/303 + mutter328 = callPackage ./core/mutter/3.28.nix { }; + + nautilus = callPackage ./core/nautilus { }; + + networkmanager-openvpn = pkgs.networkmanager-openvpn.override { + withGnome = true; + }; + + networkmanager-vpnc = pkgs.networkmanager-vpnc.override { + withGnome = true; + }; + + networkmanager-openconnect = pkgs.networkmanager-openconnect.override { + withGnome = true; + }; + + networkmanager-fortisslvpn = pkgs.networkmanager-fortisslvpn.override { + withGnome = true; + }; + + networkmanager-l2tp = pkgs.networkmanager-l2tp.override { + withGnome = true; + }; + + networkmanager-iodine = pkgs.networkmanager-iodine.override { + withGnome = true; + }; + + networkmanagerapplet = pkgs.networkmanagerapplet.override { + withGnome = true; + }; + + rygel = callPackage ./core/rygel { }; + + simple-scan = callPackage ./core/simple-scan { }; + + sushi = callPackage ./core/sushi { }; + + totem = callPackage ./core/totem { }; + + tracker = callPackage ./core/tracker { }; + + tracker-miners = callPackage ./core/tracker-miners { }; + + vino = callPackage ./core/vino { }; + + yelp = callPackage ./core/yelp { }; + + yelp-xsl = callPackage ./core/yelp-xsl { }; + + yelp-tools = callPackage ./core/yelp-tools { }; + + zenity = callPackage ./core/zenity { }; + + +#### Apps (http://ftp.acc.umu.se/pub/GNOME/apps/) + + accerciser = callPackage ./apps/accerciser { }; + + cheese = callPackage ./apps/cheese { }; + + evolution = callPackage ./apps/evolution { }; + + file-roller = callPackage ./apps/file-roller { }; + + gedit = callPackage ./apps/gedit { }; + + ghex = callPackage ./apps/ghex { }; + + glade = callPackage ./apps/glade { }; + + gnome-boxes = callPackage ./apps/gnome-boxes { }; + + gnome-calendar = callPackage ./apps/gnome-calendar { }; + + gnome-characters = callPackage ./apps/gnome-characters { }; + + gnome-clocks = callPackage ./apps/gnome-clocks { }; + + gnome-documents = callPackage ./apps/gnome-documents { }; + + gnome-getting-started-docs = callPackage ./apps/gnome-getting-started-docs { }; + + gnome-logs = callPackage ./apps/gnome-logs { }; + + gnome-maps = callPackage ./apps/gnome-maps { }; + + gnome-music = callPackage ./apps/gnome-music { }; + + gnome-nettool = callPackage ./apps/gnome-nettool { }; + + gnome-notes = callPackage ./apps/gnome-notes { }; + + gnome-photos = callPackage ./apps/gnome-photos { + gegl = gegl_0_4; + }; + + gnome-power-manager = callPackage ./apps/gnome-power-manager { }; + + gnome-sound-recorder = callPackage ./apps/gnome-sound-recorder { }; + + gnome-todo = callPackage ./apps/gnome-todo {}; + + gnome-weather = callPackage ./apps/gnome-weather { }; + + nautilus-sendto = callPackage ./apps/nautilus-sendto { }; + + polari = callPackage ./apps/polari { }; + + seahorse = callPackage ./apps/seahorse { }; + + vinagre = callPackage ./apps/vinagre { }; + +#### Dev http://ftp.gnome.org/pub/GNOME/devtools/ + + anjuta = callPackage ./devtools/anjuta { }; + + devhelp = callPackage ./devtools/devhelp { }; + + gnome-devel-docs = callPackage ./devtools/gnome-devel-docs { }; + + nemiver = callPackage ./devtools/nemiver { }; + +#### Games + + aisleriot = callPackage ./games/aisleriot { }; + + atomix = callPackage ./games/atomix { }; + + five-or-more = callPackage ./games/five-or-more { }; + + four-in-a-row = callPackage ./games/four-in-a-row { }; + + gnome-chess = callPackage ./games/gnome-chess { }; + + gnome-klotski = callPackage ./games/gnome-klotski { }; + + gnome-mahjongg = callPackage ./games/gnome-mahjongg { }; + + gnome-mines = callPackage ./games/gnome-mines { }; + + gnome-nibbles = callPackage ./games/gnome-nibbles { }; + + gnome-robots = callPackage ./games/gnome-robots { }; + + gnome-sudoku = callPackage ./games/gnome-sudoku { }; + + gnome-taquin = callPackage ./games/gnome-taquin { }; + + gnome-tetravex = callPackage ./games/gnome-tetravex { }; + + hitori = callPackage ./games/hitori { }; + + iagno = callPackage ./games/iagno { }; + + lightsoff = callPackage ./games/lightsoff { }; + + swell-foop = callPackage ./games/swell-foop { }; + + tali = callPackage ./games/tali { }; + + quadrapassel = callPackage ./games/quadrapassel { }; + +#### Misc -- other packages on http://ftp.gnome.org/pub/GNOME/sources/ + + geary = callPackage ./misc/geary { }; + + gitg = callPackage ./misc/gitg { }; + + libgnome-games-support = callPackage ./misc/libgnome-games-support { }; + + gnome-applets = callPackage ./misc/gnome-applets { }; + + gnome-flashback = callPackage ./misc/gnome-flashback { }; + + gnome-panel = callPackage ./misc/gnome-panel { }; + + gnome-screensaver = callPackage ./misc/gnome-screensaver { }; + + gnome-tweaks = callPackage ./misc/gnome-tweaks { }; + + gpaste = callPackage ./misc/gpaste { }; + + metacity = callPackage ./misc/metacity { }; + + nautilus-python = callPackage ./misc/nautilus-python { }; + + pidgin-im-gnome-shell-extension = callPackage ./misc/pidgin { }; + + gtkhtml = callPackage ./misc/gtkhtml { }; + + pomodoro = callPackage ./misc/pomodoro { }; + + gnome-autoar = callPackage ./misc/gnome-autoar { }; + + gnome-video-effects = callPackage ./misc/gnome-video-effects { }; + + gnome-packagekit = callPackage ./misc/gnome-packagekit { }; +} // lib.optionalAttrs (config.allowAliases or true) { +#### Legacy aliases + + bijiben = gnome-notes; # added 2018-09-26 + evolution_data_server = evolution-data-server; # added 2018-02-25 + geocode_glib = geocode-glib; # added 2018-02-25 + glib_networking = glib-networking; # added 2018-02-25 + gnome_common = gnome-common; # added 2018-02-25 + gnome_control_center = gnome-control-center; # added 2018-02-25 + gnome_desktop = gnome-desktop; # added 2018-02-25 + gnome_keyring = gnome-keyring; # added 2018-02-25 + gnome_online_accounts = gnome-online-accounts; # added 2018-02-25 + gnome_session = gnome-session; # added 2018-02-25 + gnome_settings_daemon = gnome-settings-daemon; # added 2018-02-25 + gnome_shell = gnome-shell; # added 2018-02-25 + gnome_terminal = gnome-terminal; # added 2018-02-25 + gnome-themes-standard = gnome-themes-extra; # added 2018-03-14 + gnome_themes_standard = gnome-themes-standard; # added 2018-02-25 + gnome-tweak-tool = gnome-tweaks; # added 2018-03-21 + gsettings_desktop_schemas = gsettings-desktop-schemas; # added 2018-02-25 + libgames-support = libgnome-games-support; # added 2018-03-14 + libgnome_keyring = libgnome-keyring; # added 2018-02-25 + inherit (pkgs) rarian; # added 2018-04-25 + networkmanager_fortisslvpn = networkmanager-fortisslvpn; # added 2018-02-25 + networkmanager_iodine = networkmanager-iodine; # added 2018-02-25 + networkmanager_l2tp = networkmanager-l2tp; # added 2018-02-25 + networkmanager_openconnect = networkmanager-openconnect; # added 2018-02-25 + networkmanager_openvpn = networkmanager-openvpn; # added 2018-02-25 + networkmanager_vpnc = networkmanager-vpnc; # added 2018-02-25 + yelp_xsl = yelp-xsl; # added 2018-02-25 + yelp_tools = yelp-tools; # added 2018-02-25 + +}) diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix new file mode 100644 index 000000000000..dcf0bd439420 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, flex, bison, libxml2, intltool, + gdl, libgda, gtksourceview, + itstool, python3, ncurses, makeWrapper }: + +stdenv.mkDerivation rec { + name = "anjuta-${version}"; + version = "3.28.0"; + + src = fetchurl { + url = "mirror://gnome/sources/anjuta/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0ya7ajai9rx9g597sr5wawr6l5pb2s34bbjdsbnx0lkrhnjv11xh"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "anjuta"; attrPath = "gnome3.anjuta"; }; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ + pkgconfig intltool itstool python3 makeWrapper + # Required by python3 + ncurses + ]; + buildInputs = [ + flex bison gtk3 libxml2 gnome3.gjs gdl + libgda gtksourceview + gnome3.gsettings-desktop-schemas + ]; + + preFixup = '' + wrapProgram $out/bin/anjuta \ + --prefix XDG_DATA_DIRS : \ + "$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + description = "Software development studio"; + homepage = http://anjuta.org/; + license = licenses.gpl2; + maintainers = with maintainers; []; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix new file mode 100644 index 000000000000..052cd49998d1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gtk3, wrapGAppsHook +, glib, amtk, appstream-glib, gobject-introspection, python3 +, webkitgtk, gettext, itstool, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + name = "devhelp-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/devhelp/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "036sddvhs0blqpc2ixmjdl9vxynvkn5jpgn0jxr1fxcm4rh3q07a"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext itstool wrapGAppsHook appstream-glib gobject-introspection python3 ]; + buildInputs = [ + glib gtk3 webkitgtk amtk + gnome3.defaultIconTheme gsettings-desktop-schemas + ]; + + doCheck = true; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "devhelp"; + attrPath = "gnome3.devhelp"; + }; + }; + + meta = with stdenv.lib; { + description = "API documentation browser for GNOME"; + homepage = https://wiki.gnome.org/Apps/Devhelp; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix new file mode 100644 index 000000000000..534c23da82c9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + name = "gnome-devel-docs-${version}"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-devel-docs/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1sssxagf0aaiyld8731247qq74bnrnq4arr7mpjrg0j6gwdfgxia"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-devel-docs"; attrPath = "gnome3.gnome-devel-docs"; }; + }; + + buildInputs = [ intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = https://github.com/GNOME/gnome-devel-docs; + description = "Developer documentation for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.fdl12; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/bool_slot.patch b/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/bool_slot.patch new file mode 100644 index 000000000000..83423122110c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/bool_slot.patch @@ -0,0 +1,13 @@ +--- a/src/dbgengine/nmv-dbg-common.h 2014-07-09 10:36:05.000000000 +0200 ++++ b/src/dbgengine/nmv-dbg-common.h 2016-08-04 22:40:28.447842746 +0200 +@@ -171,7 +171,9 @@ + + bool has_slot () const + { +- return m_slot; ++ //return m_slot; ++ // https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=822502 ++ return static_cast<bool> (m_slot); + } + + template<class T> diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/default.nix new file mode 100644 index 000000000000..c8440037d3c9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, gnome3, gtk3, libxml2, intltool, itstool, gdb, + boost, sqlite, libgtop, glibmm, gtkmm, vte, gtksourceview, gsettings-desktop-schemas, + gtksourceviewmm, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "nemiver-${version}"; + version = "0.9.6"; + + src = fetchurl { + url = "mirror://gnome/sources/nemiver/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "85ab8cf6c4f83262f441cb0952a6147d075c3c53d0687389a3555e946b694ef2"; + }; + + nativeBuildInputs = [ libxml2 intltool itstool pkgconfig wrapGAppsHook ]; + + buildInputs = [ + gtk3 gdb boost sqlite libgtop + glibmm gtkmm vte gtksourceview gtksourceviewmm + gsettings-desktop-schemas + ]; + + patches = [ + ./bool_slot.patch + ./safe_ptr.patch + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/nemiver/commit/262cf9657f9c2727a816972b348692adcc666008.patch; + sha256 = "03jv6z54b8nzvplplapk4aj206zl1gvnv6iz0mad19g6yvfbw7a7"; + }) + ]; + + configureFlags = [ + "--enable-gsettings" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "nemiver"; + attrPath = "gnome3.nemiver"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Nemiver; + description = "Easy to use standalone C/C++ debugger"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.juliendehos ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/safe_ptr.patch b/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/safe_ptr.patch new file mode 100644 index 000000000000..e3413b224977 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/nemiver/safe_ptr.patch @@ -0,0 +1,10 @@ +--- a/src/confmgr/nmv-gconf-mgr.cc 2014-07-08 10:24:06.000000000 +0200 ++++ b/src/confmgr/nmv-gconf-mgr.cc 2016-08-04 23:50:08.143060464 +0200 +@@ -32,6 +32,7 @@ + NEMIVER_BEGIN_NAMESPACE (nemiver) + + using nemiver::common::GCharSafePtr; ++using nemiver::common::GErrorSafePtr; + + class GConfMgr : public IConfMgr { + GConfMgr (const GConfMgr &); diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix new file mode 100644 index 000000000000..c576112d57b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-appindicator-${version}"; + version = "22"; + + src = fetchFromGitHub { + owner = "Ubuntu"; + repo = "gnome-shell-extension-appindicator"; + rev = "v${version}"; + sha256 = "1gqw54d55hxjj2hh04p0dx2j40bhi4ck9hgwlz8f7j4v7r37z0qw"; + }; + + # This package has a Makefile, but it's used for building a zip for + # publication to extensions.gnome.org. Disable the build phase so + # installing doesn't build an unnecessary release. + dontBuild = true; + + uuid = "appindicatorsupport@rgcjonas.gmail.com"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp *.js $out/share/gnome-shell/extensions/${uuid} + cp -r interfaces-xml $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "AppIndicator/KStatusNotifierItem support for GNOME Shell"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/Ubuntu/gnome-shell-extension-appindicator; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix new file mode 100644 index 000000000000..e1fe15c19d80 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-battery-status-${version}"; + version = "6"; + + src = fetchFromGitHub { + owner = "milliburn"; + repo = "gnome-shell-extension-battery_status"; + rev = "v${version}"; + sha256 = "1w83h863mzffjnmk322xq90qf3y9dzay1w9yw5r0qnbsq1ljl8p4"; + }; + + uuid = "battery_status@milliburn.github.com"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions/ + ''; + + meta = with stdenv.lib; { + description = "Configurable lightweight battery charge indicator and autohider"; + license = licenses.gpl2; + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/milliburn/gnome-shell-extension-battery_status; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix new file mode 100644 index 000000000000..1de85ab36d25 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, glib, gettext, bash }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-caffeine-${version}"; + version = "unstable-2018-09-25"; + + src = fetchFromGitHub { + owner = "eonpatapon"; + repo = "gnome-shell-extension-caffeine"; + rev = "71b6392c53e063563602c3d919c0ec6a4c5c9733"; + sha256 = "170zyxa41hvyi463as650nw3ygr297901inr3xslrhvjq1qacxri"; + }; + + uuid = "caffeine@patapon.info"; + + nativeBuildInputs = [ + glib gettext + ]; + + buildPhase = '' + ${bash}/bin/bash ./update-locale.sh + glib-compile-schemas --strict --targetdir=caffeine@patapon.info/schemas/ caffeine@patapon.info/schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "Fill the cup to inhibit auto suspend and screensaver"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = https://github.com/eonpatapon/gnome-shell-extension-caffeine; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix new file mode 100644 index 000000000000..3064b62f2a4a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix @@ -0,0 +1,43 @@ +{stdenv, fetchurl, cmake, ninja, jq, python3, gnome3, wrapGAppsHook}: + +let + version = "10"; + + inherit (python3.pkgs) python pygobject3 requests; +in stdenv.mkDerivation rec { + name = "chrome-gnome-shell-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/chrome-gnome-shell/${version}/${name}.tar.xz"; + sha256 = "1wp6qvcp758yfj8xlj15sk1d3jsb1p8136y8xxwpi9wfdjpzjs8j"; + }; + + nativeBuildInputs = [ cmake ninja jq wrapGAppsHook ]; + buildInputs = [ gnome3.gnome-shell python pygobject3 requests ]; + + preConfigure = '' + substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc" + ''; + # cmake setup hook changes /etc/opt into /var/empty + dontFixCmake = true; + + cmakeFlags = [ "-DBUILD_EXTENSION=OFF" ]; + wrapPrefixVariables = [ "PYTHONPATH" ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "chrome-gnome-shell"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME Shell integration for Chrome"; + homepage = https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome; + longDescription = '' + To use the integration, install the <link xlink:href="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation">browser extension</link>, and then set <option>services.gnome3.chrome-gnome-shell.enable</option> to <literal>true</literal>. For Firefox based browsers, you will also need to build the wrappers with <option>nixpkgs.config.firefox.enableGnomeExtensions</option> set to <literal>true</literal>. + ''; + license = licenses.gpl3; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix new file mode 100644 index 000000000000..e41227e85139 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-clipboard-indicator-${version}"; + version = "30"; + + src = fetchFromGitHub { + owner = "Tudmotu"; + repo = "gnome-shell-extension-clipboard-indicator"; + rev = "v${version}"; + sha256 = "1fmgmxv2y678bj0kmymkgnnglcpqk8ww053izlq46xg7s27jjdf6"; + }; + + uuid = "clipboard-indicator@tudmotu.com"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r * $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Adds a clipboard indicator to the top panel and saves clipboard history"; + license = licenses.mit; + maintainers = with maintainers; [ jonafato ]; + platforms = platforms.linux; + homepage = https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix new file mode 100644 index 000000000000..62420bf42b26 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + name = "gnome-shell-dash-to-dock-${version}"; + version = "64"; + + src = fetchFromGitHub { + owner = "micheleg"; + repo = "dash-to-dock"; + rev = "extensions.gnome.org-v" + version; + sha256 = "1cfkdi4raim50wif47fly4c0lzyamysv40qd5ppr1h824bamzxcm"; + }; + + nativeBuildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "A dock for the Gnome Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = https://micheleg.github.io/dash-to-dock/; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix new file mode 100644 index 000000000000..de442d912b32 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + name = "gnome-shell-dash-to-panel-${version}"; + version = "16"; + + src = fetchFromGitHub { + owner = "jderose9"; + repo = "dash-to-panel"; + rev = "v${version}"; + sha256 = "1gi2qfinafihax0j0rbs1k5nf6msdv86gzl2vfkc8s6gfkncv9bp"; + }; + + buildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "An icon taskbar for Gnome Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ mounium ]; + homepage = https://github.com/jderose9/dash-to-panel; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix new file mode 100644 index 000000000000..9c2f72cce664 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix @@ -0,0 +1,91 @@ +{ stdenv, fetchFromGitHub, substituteAll, python3, openssl +, meson, ninja, libxml2, pkgconfig, gobject-introspection, wrapGAppsHook +, glib, gtk3, at-spi2-core, upower, openssh, gnome3 }: + +stdenv.mkDerivation rec { + name = "gnome-shell-gsconnect-${version}"; + version = "20"; + + src = fetchFromGitHub { + owner = "andyholmes"; + repo = "gnome-shell-extension-gsconnect"; + rev = "v${version}"; + sha256 = "1x5lrb4hdw482hr5dh4ki0p1651w1s0ijs96vs65vrh15cd60h02"; + }; + + patches = [ + # Make typelibs available in the extension + (substituteAll { + src = ./fix-paths.patch; + gapplication = "${glib.bin}/bin/gapplication"; + mutter_gsettings_path = "${gnome3.mutter}/share/gsettings-schemas/${gnome3.mutter.name}/glib-2.0/schemas"; + }) + ]; + + nativeBuildInputs = [ + meson ninja pkgconfig + gobject-introspection # for locating typelibs + wrapGAppsHook # for wrapping daemons + libxml2 # xmllint + ]; + + buildInputs = [ + (python3.withPackages (pkgs: [ python3.pkgs.pygobject3 ])) # for folks.py + glib # libgobject + gtk3 + at-spi2-core # atspi + gnome3.folks # libfolks + gnome3.nautilus # TODO: this contaminates the package with nautilus and gnome-autoar typelibs but it is only needed for the extension + gnome3.nautilus-python + gnome3.gsound + upower + gnome3.caribou + gnome3.gjs # for running daemon + gnome3.evolution-data-server # folks.py requires org.gnome.Evolution.DefaultSources gsettings; TODO: hardcode the schema path to the library (similarly to https://github.com/NixOS/nixpkgs/issues/47226) + ]; + + mesonFlags = [ + "-Dgnome_shell_libdir=${gnome3.gnome-shell}/lib" + "-Dgsettings_schemadir=${placeholder "out"}/share/gsettings-schemas/${name}/glib-2.0/schemas" + "-Dchrome_nmhdir=${placeholder "out"}/etc/opt/chrome/native-messaging-hosts" + "-Dchromium_nmhdir=${placeholder "out"}/etc/chromium/native-messaging-hosts" + "-Dopenssl_path=${openssl}/bin/openssl" + "-Dsshadd_path=${openssh}/bin/ssh-add" + "-Dsshkeygen_path=${openssh}/bin/ssh-keygen" + "-Dpost_install=true" + ]; + + postPatch = '' + patchShebangs meson/nmh.sh + patchShebangs meson/post-install.sh + + # TODO: do not include every typelib everywhere + # for example, we definitely do not need nautilus + for file in src/extension.js src/prefs.js; do + substituteInPlace "$file" \ + --subst-var-by typelibPath "$GI_TYPELIB_PATH" + done + ''; + + preFixup = '' + # TODO: figure out why folks GIR does not contain shared-library attribute + # https://github.com/NixOS/nixpkgs/issues/47226 + gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ gnome3.folks ]}") + ''; + + postFixup = '' + # Let’s wrap the daemons + for file in $out/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/{{daemon,nativeMessagingHost}.js,components/folks.py}; do + echo "Wrapping program ''${file}" + wrapProgram "''${file}" "''${gappsWrapperArgs[@]}" + done + ''; + + meta = with stdenv.lib; { + description = "KDE Connect implementation for Gnome Shell"; + homepage = https://github.com/andyholmes/gnome-shell-extension-gsconnect/wiki; + license = licenses.gpl2; + maintainers = with maintainers; [ etu ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch new file mode 100644 index 000000000000..b32d0af32721 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch @@ -0,0 +1,44 @@ +--- a/data/org.gnome.Shell.Extensions.GSConnect.desktop ++++ b/data/org.gnome.Shell.Extensions.GSConnect.desktop +@@ -1,7 +1,7 @@ + [Desktop Entry] + Type=Application + Name=GSConnect +-Exec=gapplication launch org.gnome.Shell.Extensions.GSConnect %U ++Exec=@gapplication@ launch org.gnome.Shell.Extensions.GSConnect %U + Terminal=false + NoDisplay=true + Icon=org.gnome.Shell.Extensions.GSConnect +--- a/src/extension.js ++++ b/src/extension.js +@@ -1,5 +1,7 @@ + 'use strict'; + ++'@typelibPath@'.split(':').forEach(path => imports.gi.GIRepository.Repository.prepend_search_path(path)); ++ + const Gio = imports.gi.Gio; + const GLib = imports.gi.GLib; + const Gtk = imports.gi.Gtk; +--- a/src/prefs.js ++++ b/src/prefs.js +@@ -1,5 +1,7 @@ + 'use strict'; + ++'@typelibPath@'.split(':').forEach(path => imports.gi.GIRepository.Repository.prepend_search_path(path)); ++ + const Gio = imports.gi.Gio; + const GLib = imports.gi.GLib; + const Gtk = imports.gi.Gtk; +--- a/src/service/__init__.js ++++ b/src/service/__init__.js +@@ -600,7 +600,9 @@ + /** + * Convenience functions for saving/restoring window geometry + */ +-const _mutter = new Gio.Settings({schema_id: 'org.gnome.mutter'}); ++const _schema_source = Gio.SettingsSchemaSource.new_from_directory('@mutter_gsettings_path@', Gio.SettingsSchemaSource.get_default(), true); ++const _schema = _schema_source.lookup('org.gnome.mutter', false); ++const _mutter = new Gio.Settings({settings_schema: _schema}); + + Gtk.Window.prototype.restore_geometry = function() { + let [width, height] = this.settings.get_value('window-size').deep_unpack(); diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix new file mode 100644 index 000000000000..bc397dc7122a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-icon-hider-${version}"; + version = "21"; + + src = fetchFromGitHub { + owner = "ikalnytskyi"; + repo = "gnome-shell-extension-icon-hider"; + rev = "v${version}"; + sha256 = "0l0jb0ishaq00d4kdfvv5p7pj7b45dz57y3j2ihqr695bzb6b9hr"; + }; + + uuid = "icon-hider@kalnitsky.org"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "Icon Hider is a GNOME Shell extension for managing status area items"; + license = licenses.bsd3; + maintainers = with maintainers; [ jonafato ]; + platforms = platforms.linux; + homepage = https://github.com/ikalnytskyi/gnome-shell-extension-icon-hider; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience.nix new file mode 100644 index 000000000000..24b4c1cf703f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + name = "gnome-shell-impatience-${version}"; + version = "0.4.5"; + + src = fetchFromGitHub { + owner = "timbertson"; + repo = "gnome-shell-impatience"; + rev = "version-${version}"; + sha256 = "0kvdhlz41fjyqdgcfw6mrr9nali6wg2qwji3dvykzfi0aypljzpx"; + }; + + buildInputs = [ + glib + ]; + + buildPhase = '' + make schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r impatience $out/share/gnome-shell/extensions/${uuid} + ''; + + uuid = "impatience@gfxmonk.net"; + + meta = with stdenv.lib; { + description = "Speed up builtin gnome-shell animations"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ aneeshusa timbertson tiramiseb ]; + homepage = http://gfxmonk.net/dist/0install/gnome-shell-impatience.xml; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/mediaplayer/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/mediaplayer/default.nix new file mode 100644 index 000000000000..6038443944f2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/mediaplayer/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchFromGitHub, glib, meson, gettext, ninja, python3 }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extensions-mediaplayer-${version}"; + version = "3.5"; + + src = fetchFromGitHub { + owner = "JasonLG1979"; + repo = "gnome-shell-extensions-mediaplayer"; + rev = version; + sha256 = "0b8smid9vdybgs0601q9chlbgfm1rzrj3vmd3i6p2a5d1n4fyvsc"; + }; + + nativeBuildInputs = [ + meson + ninja + python3 + ]; + buildInputs = [ + glib + gettext + ]; + + postPatch = '' + rm build + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + meta = with stdenv.lib; { + description = "Control MPRIS Version 2 Capable Media Players"; + license = licenses.gpl2Plus; + homepage = https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer/; + maintainers = with maintainers; [ tiramiseb ]; + }; +} + diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix new file mode 100644 index 000000000000..e1dedd2a88be --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, substituteAll, glib, gettext, xorg }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-no-title-bar-${version}"; + version = "9"; + + src = fetchFromGitHub { + owner = "franglais125"; + repo = "no-title-bar"; + rev = "v${version}"; + sha256 = "02zm61fg40r005fn2rvgrbsz2hbcsmp2hkhyilqbmpilw35y0nbq"; + }; + + nativeBuildInputs = [ + glib gettext + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + xprop = "${xorg.xprop}/bin/xprop"; + xwininfo = "${xorg.xwininfo}/bin/xwininfo"; + }) + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "Integrates maximized windows with the top panel"; + homepage = https://github.com/franglais125/no-title-bar; + license = licenses.gpl2; + maintainers = with maintainers; [ jonafato svsdep ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch new file mode 100644 index 000000000000..9a53d63860da --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch @@ -0,0 +1,56 @@ +--- a/decoration.js ++++ b/decoration.js +@@ -181,7 +181,7 @@ + let act = win.get_compositor_private(); + let xwindow = act && act['x-window']; + if (xwindow) { +- let xwininfo = GLib.spawn_command_line_sync('xwininfo -children -id 0x%x'.format(xwindow)); ++ let xwininfo = GLib.spawn_command_line_sync('@xwininfo@ -children -id 0x%x'.format(xwindow)); + if (xwininfo[0]) { + let str = xwininfo[1].toString(); + +@@ -207,7 +207,7 @@ + // Try enumerating all available windows and match the title. Note that this + // may be necessary if the title contains special characters and `x-window` + // is not available. +- let result = GLib.spawn_command_line_sync('xprop -root _NET_CLIENT_LIST'); ++ let result = GLib.spawn_command_line_sync('@xprop@ -root _NET_CLIENT_LIST'); + if (result[0]) { + let str = result[1].toString(); + +@@ -218,7 +218,7 @@ + + // For each window ID, check if the title matches the desired title. + for (var i = 0; i < windowList.length; ++i) { +- let cmd = 'xprop -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE'; ++ let cmd = '@xprop@ -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE'; + let result = GLib.spawn_command_line_sync(cmd); + + if (result[0]) { +@@ -258,7 +258,7 @@ + } + + let id = this._guessWindowXID(win); +- let cmd = 'xprop -id ' + id; ++ let cmd = '@xprop@ -id ' + id; + + let xprops = GLib.spawn_command_line_sync(cmd); + if (!xprops[0]) { +@@ -277,7 +277,7 @@ + m = str.match(/^_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED(\(CARDINAL\))? = ([0-9]+)$/m); + if (m) { + let state = !!parseInt(m[2]); +- cmd = ['xprop', '-id', id, ++ cmd = ['@xprop@', '-id', id, + '-f', '_NO_TITLE_BAR_ORIGINAL_STATE', '32c', + '-set', '_NO_TITLE_BAR_ORIGINAL_STATE', + (state ? '0x1' : '0x0')]; +@@ -358,7 +358,7 @@ + let winXID = this._guessWindowXID(win); + if (winXID == null) + return; +- let cmd = ['xprop', '-id', winXID, ++ let cmd = ['@xprop@', '-id', winXID, + '-f', '_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED', '32c', + '-set', '_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED', + (hide ? '0x1' : '0x0')]; diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/nohotcorner/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/nohotcorner/default.nix new file mode 100644 index 000000000000..07622e07a725 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/nohotcorner/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-nohotcorner-${version}"; + version = "18.0"; + + src = fetchFromGitHub { + owner = "HROMANO"; + repo = "nohotcorner"; + rev = "v${version}"; + sha256 = "0vajiys93gs7fs9v6brgf8fplkmh28j103in3wq04l34cx5sqkks"; + }; + + # Taken from the extension download link at + # https://extensions.gnome.org/extension/118/no-topleft-hot-corner/ + uuid = "nohotcorner@azuri.free.fr"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp extension.js $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Disables the top left hot corner"; + license = licenses.gpl2; + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/HROMANO/nohotcorner; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix new file mode 100644 index 000000000000..42cd6d217de7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-remove-dropdown-arrows-${version}"; + version = "9"; + + src = fetchFromGitHub { + owner = "mpdeimos"; + repo = "gnome-shell-remove-dropdown-arrows"; + rev = "version/${version}"; + sha256 = "1z9icxr75rd3cas28xjlmsbbd3j3sm1qvj6mp95jhfaqj821q665"; + }; + + # This package has a Makefile, but it's used for publishing and linting, not + # for building. Disable the build phase so installing doesn't attempt to + # publish the extension. + dontBuild = true; + + uuid = "remove-dropdown-arrows@mpdeimos.com"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp extension.js $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Remove dropdown arrows from GNOME Shell Menus"; + license = licenses.gpl3; + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/mpdeimos/gnome-shell-remove-dropdown-arrows; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix new file mode 100644 index 000000000000..8bafbd003d51 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix @@ -0,0 +1,45 @@ +{ stdenv, substituteAll, fetchFromGitHub, glib, glib-networking, libgtop }: + +stdenv.mkDerivation rec { + name = "gnome-shell-system-monitor-${version}"; + version = "36"; + + src = fetchFromGitHub { + owner = "paradoxxxzero"; + repo = "gnome-shell-system-monitor-applet"; + rev = "v${version}"; + sha256 = "0x3r189h5264kjxsm18d34gzb5ih8l4pz7i9qks9slcnzaiw4y0z"; + }; + + buildInputs = [ + glib + glib-networking + libgtop + ]; + + patches = [ + (substituteAll { + src = ./paths_and_nonexisting_dirs.patch; + gtop_path = "${libgtop}/lib/girepository-1.0"; + glib_net_path = "${glib-networking}/lib/girepository-1.0"; + }) + ]; + + buildPhase = '' + glib-compile-schemas --targetdir=${uuid}/schemas ${uuid}/schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + uuid = "system-monitor@paradoxxx.zero.gmail.com"; + + meta = with stdenv.lib; { + description = "Display system informations in gnome shell status bar"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ aneeshusa tiramiseb ]; + homepage = https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch new file mode 100644 index 000000000000..82e3d7c541ba --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch @@ -0,0 +1,23 @@ +diff --git a/system-monitor@paradoxxx.zero.gmail.com/extension.js b/system-monitor@paradoxxx.zero.gmail.com/extension.js +index b4b7f15..d139135 100644 +--- a/system-monitor@paradoxxx.zero.gmail.com/extension.js ++++ b/system-monitor@paradoxxx.zero.gmail.com/extension.js +@@ -18,6 +18,9 @@ + + // Author: Florian Mounier aka paradoxxxzero + ++imports.gi.GIRepository.Repository.prepend_search_path('@gtop_path@'); ++imports.gi.GIRepository.Repository.prepend_search_path('@glib_net_path@'); ++ + /* Ugly. This is here so that we don't crash old libnm-glib based shells unnecessarily + * by loading the new libnm.so. Should go away eventually */ + const libnm_glib = imports.gi.GIRepository.Repository.get_default().is_registered("NMClient", "1.0"); +@@ -386,7 +389,7 @@ const smMountsMonitor = new Lang.Class({ + connected: false, + _init: function () { + this._volumeMonitor = Gio.VolumeMonitor.get(); +- let sys_mounts = ['/home', '/tmp', '/boot', '/usr', '/usr/local']; ++ let sys_mounts = ['/home', '/tmp', '/boot']; + this.base_mounts = ['/']; + sys_mounts.forEach(Lang.bind(this, function (sMount) { + if (this.is_sys_mount(sMount + '/')) { diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix new file mode 100644 index 000000000000..fcaa868c06f2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix @@ -0,0 +1,43 @@ +{ stdenv, substituteAll, fetchFromGitHub, taskwarrior }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-taskwhisperer-${version}"; + version = "11"; + + src = fetchFromGitHub { + owner = "cinatic"; + repo = "taskwhisperer"; + rev = "v${version}"; + sha256 = "1g1301rwnfg5jci78bjpmgxrn78ra80m1zp2inhfsm8jssr1i426"; + }; + + buildInputs = [ taskwarrior ]; + + uuid = "taskwhisperer-extension@infinicode.de"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp *.js $out/share/gnome-shell/extensions/${uuid} + cp -r extra $out/share/gnome-shell/extensions/${uuid} + cp -r icons $out/share/gnome-shell/extensions/${uuid} + cp -r locale $out/share/gnome-shell/extensions/${uuid} + cp -r schemas $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + cp settings.ui $out/share/gnome-shell/extensions/${uuid} + cp stylesheet.css $out/share/gnome-shell/extensions/${uuid} + ''; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + task = "${taskwarrior}/bin/task"; + }) + ]; + + meta = with stdenv.lib; { + description = "GNOME Shell TaskWarrior GUI"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/cinatic/taskwhisperer; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch new file mode 100644 index 000000000000..310d6ea1b305 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch @@ -0,0 +1,81 @@ +diff --git a/extra/create.sh b/extra/create.sh +index a69e369..35d5ea1 100755 +--- a/extra/create.sh ++++ b/extra/create.sh +@@ -1 +1 @@ +-bash -c "task add $1" ++bash -c "@task@ add $1" +diff --git a/extra/modify.sh b/extra/modify.sh +index 7964a26..8edd21b 100755 +--- a/extra/modify.sh ++++ b/extra/modify.sh +@@ -1 +1 @@ +-bash -c "task $1 modify $2" ++bash -c "@task@ $1 modify $2" +diff --git a/taskService.js b/taskService.js +index dea40d8..ff35a80 100644 +--- a/taskService.js ++++ b/taskService.js +@@ -186,7 +186,7 @@ const TaskService = new Lang.Class({ + + let project = projectName ? "project:" + projectName : ""; + +- let command = ['task', 'rc.json.array=on', status, project, 'export']; ++ let command = ['@task@', 'rc.json.array=on', status, project, 'export']; + let reader = new SpawnReader.SpawnReader(); + + let buffer = ""; +@@ -227,7 +227,7 @@ const TaskService = new Lang.Class({ + break; + } + +- let shellProc = Gio.Subprocess.new(['task', status, 'projects'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', status, 'projects'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function(obj, result){ + let shellProcExited = true; +@@ -274,7 +274,7 @@ const TaskService = new Lang.Class({ + return; + } + +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'done'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'done'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function(obj, result){ + let shellProcExited = true; +@@ -307,7 +307,7 @@ const TaskService = new Lang.Class({ + return; + } + +- let shellProc = Gio.Subprocess.new(['task', 'modify', taskID.toString(), 'status:pending'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', 'modify', taskID.toString(), 'status:pending'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function(obj, result){ + let shellProcExited = true; +@@ -339,7 +339,7 @@ const TaskService = new Lang.Class({ + { + return; + } +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'start'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'start'], Gio.SubprocessFlags.STDOUT_PIPE); + shellProc.wait_async(null, function(obj, result){ + let shellProcExited = true; + shellProc.wait_finish(result); +@@ -369,7 +369,7 @@ const TaskService = new Lang.Class({ + { + return; + } +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'stop'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'stop'], Gio.SubprocessFlags.STDOUT_PIPE); + shellProc.wait_async(null, function(obj, result){ + let shellProcExited = true; + shellProc.wait_finish(result); +@@ -468,7 +468,7 @@ const TaskService = new Lang.Class({ + + try + { +- shellProc = Gio.Subprocess.new(['task', 'sync'], Gio.SubprocessFlags.STDOUT_PIPE); ++ shellProc = Gio.Subprocess.new(['@task@', 'sync'], Gio.SubprocessFlags.STDOUT_PIPE); + } + catch(err) + { diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix new file mode 100644 index 000000000000..dcc018d18837 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-timepp-${version}"; + version = "2018.03.17"; + + src = fetchFromGitHub { + owner = "zagortenay333"; + repo = "timepp__gnome"; + rev = "440cf85dc68d9e6ba876793f13910ee6239622cf"; + sha256 = "0idsqsii5rvynvj78w2j7xiiz9rrl3384m5mj6bf6rg8vprpfi8v"; + }; + + uuid = "timepp@zagortenay333"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r . $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = " A todo.txt manager, time tracker, timer, stopwatch, pomodoro, and alarms gnome-shell extension."; + homepage = https://github.com/zagortenay333/timepp__gnome; + license = licenses.gpl3; + maintainers = with maintainers; [ svsdep ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix new file mode 100644 index 000000000000..9a151a6ac8f7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + name = "gnome-shell-extension-topicons-plus-${version}"; + version = "22"; + + src = fetchFromGitHub { + owner = "phocean"; + repo = "TopIcons-plus"; + rev = "v${version}"; + sha256 = "196s1gdir52gbc444pzrb5l7gn5xr5vqk5ajqaiqryqlmp3i8vil"; + }; + + buildInputs = [ glib ]; + + nativeBuildInputs = [ gettext ]; + + makeFlags = [ "INSTALL_PATH=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "Brings all icons back to the top panel, so that it's easier to keep track of apps running in the backround"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = https://github.com/phocean/TopIcons-plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/volume-mixer.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/volume-mixer.nix new file mode 100644 index 000000000000..19ced0b5252c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/volume-mixer.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + name = "gnome-shell-volume-mixer-${version}"; + version = "844ed80ad448855d8f6218847183a80474b523c7"; + + src = fetchFromGitHub { + owner = "aleho"; + repo = "gnome-shell-volume-mixer"; + rev = version; + sha256 = "1vcj2spbymhdi1nazvhldvcfgad23r3h7f0ihh4nianbxn7hjs9w"; + }; + + buildInputs = [ + glib + ]; + + buildPhase = '' + glib-compile-schemas --targetdir=${uuid}/schemas ${uuid}/schemas + ''; + + installPhase = '' + cp -r ${uuid} $out + ''; + + uuid = "shell-volume-mixer@derhofbauer.at"; + + meta = with stdenv.lib; { + description = "GNOME Shell Extension allowing separate configuration of PulseAudio devices"; + license = licenses.gpl2; + maintainers = with maintainers; [ aneeshusa ]; + homepage = https://github.com/aleho/gnome-shell-volume-mixer; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-grid.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-grid.nix new file mode 100644 index 000000000000..10aee5cafe6e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-grid.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + name = "gnome-shell-workspace-grid-${version}"; + version = "0f3a430e7d04bb5465a17c1225aab0f574426d6b"; + + src = fetchFromGitHub { + owner = "zakkak"; + repo = "workspace-grid-gnome-shell-extension"; + rev = version; + sha256 = "0503b7lmydrbblfvf9b56pv5hpmykzgyc6v8y99rckg58h2jhs69"; + }; + + buildInputs = [ + glib + ]; + + installPhase = '' + cp -r ${uuid} $out + ''; + + uuid = "workspace-grid@mathematical.coffee.gmail.com"; + + meta = with stdenv.lib; { + description = "Arranges workspaces in a configurable grid"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ aneeshusa ]; + homepage = https://github.com/zakkak/workspace-grid-gnome-shell-extension; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py b/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py new file mode 100644 index 000000000000..b0359f799699 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py @@ -0,0 +1,60 @@ +import argparse +import json +import requests +import sys + +def version_to_list(version): + return list(map(int, version.split('.'))) + +def odd_unstable(version_str, selected): + version = version_to_list(version_str) + if len(version) < 2: + return True + + even = version[1] % 2 == 0 + prerelease = (version[1] >= 90 and version[1] < 100) or (version[1] >= 900 and version[1] < 1000) + stable = even and not prerelease + if selected == 'stable': + return stable + else: + return True + +def no_policy(version, selected): + return True + +version_policies = { + 'odd-unstable': odd_unstable, + 'none': no_policy, +} + +def make_version_policy(version_predicate, selected): + return lambda version: version_predicate(version, selected) + +parser = argparse.ArgumentParser(description='Find latest version for a GNOME package by crawling their release server.') +parser.add_argument('package-name', help='Name of the directory in https://ftp.gnome.org/pub/GNOME/sources/ containing the package.') +parser.add_argument('version-policy', help='Policy determining which versions are considered stable. For most GNOME packages, odd minor versions are unstable but there are exceptions.', choices=version_policies.keys(), nargs='?', default='odd-unstable') +parser.add_argument('requested-release', help='Most of the time, we will want to update to stable version but sometimes it is useful to test.', choices=['stable', 'unstable'], nargs='?', default='stable') + + +if __name__ == '__main__': + args = parser.parse_args() + + package_name = getattr(args, 'package-name') + requested_release = getattr(args, 'requested-release') + version_predicate = version_policies[getattr(args, 'version-policy')] + version_policy = make_version_policy(version_predicate, requested_release) + + # The structure of cache.json: https://gitlab.gnome.org/Infrastructure/sysadmin-bin/blob/master/ftpadmin#L762 + cache = json.loads(requests.get('https://ftp.gnome.org/pub/GNOME/sources/{}/cache.json'.format(package_name)).text) + if type(cache) != list or cache[0] != 4: + print('Unknown format of cache.json file.', file=sys.stderr) + sys.exit(1) + + versions = cache[2][package_name] + versions = sorted(filter(version_policy, versions), key=version_to_list) + + if len(versions) == 0: + print('No versions matched.', file=sys.stderr) + sys.exit(1) + + print(versions[-1]) diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix new file mode 100644 index 000000000000..d77439b30c52 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, intltool, itstool, gtk3 +, wrapGAppsHook, librsvg, libxml2, desktop-file-utils +, guile_2_0, libcanberra-gtk3 }: + +stdenv.mkDerivation rec { + name = "aisleriot-${version}"; + version = "3.22.7"; + + src = fetchurl { + url = "mirror://gnome/sources/aisleriot/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1ysljnrlvzssgbhxcgb28n9k3l0rybxi5lkrm8pg6a4nspaw5mc4"; + }; + + configureFlags = [ + "--with-card-theme-formats=svg" + "--with-platform=gtk-only" # until they remove GConf + ]; + + nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook libxml2 desktop-file-utils ]; + buildInputs = [ gtk3 librsvg guile_2_0 libcanberra-gtk3 ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "aisleriot"; + attrPath = "gnome3.aisleriot"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Aisleriot; + description = "A collection of patience games written in guile scheme"; + maintainers = gnome3.maintainers; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix new file mode 100644 index 000000000000..b8171ef31856 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, wrapGAppsHook, python3 +, gettext, gnome3, glib, gtk3, libgnome-games-support, gdk_pixbuf }: + +let + pname = "atomix"; + version = "3.30.0.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0hvr36m8ixa172zblv29fga1cn9yb84zqbisb21msfkwia2pabw3"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext wrapGAppsHook python3 ]; + buildInputs = [ glib gtk3 gdk_pixbuf libgnome-games-support gnome3.defaultIconTheme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Puzzle game where you move atoms to build a molecule"; + homepage = https://wiki.gnome.org/Apps/Atomix; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix new file mode 100644 index 000000000000..4e302e9f8b11 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libgnome-games-support, gettext, itstool, libxml2, python3 }: + +stdenv.mkDerivation rec { + name = "five-or-more-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/five-or-more/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "00d729p251kh96624i7qg2370r5mxwafs016i6hy01vsr71jzb9x"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext itstool libxml2 python3 wrapGAppsHook ]; + buildInputs = [ + gtk3 librsvg libgnome-games-support gnome3.defaultIconTheme + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "five-or-more"; + attrPath = "gnome3.five-or-more"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Five_or_more; + description = "Remove colored balls from the board by forming lines"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix new file mode 100644 index 000000000000..110e2e5c4393 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, gettext, itstool, libcanberra-gtk3, librsvg, libxml2 }: + +stdenv.mkDerivation rec { + name = "four-in-a-row-${version}"; + version = "3.28.0"; + + src = fetchurl { + url = "mirror://gnome/sources/four-in-a-row/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1iszaay2r92swb0q67lmip6r1w3hw2dwmlgnz9v2h6blgdyncs4k"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook gettext itstool libxml2 ]; + buildInputs = [ gtk3 libcanberra-gtk3 librsvg gnome3.defaultIconTheme ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "four-in-a-row"; + attrPath = "gnome3.four-in-a-row"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Four-in-a-row; + description = "Make lines of the same color to win"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix new file mode 100644 index 000000000000..8e5cf198d9db --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, meson, ninja, vala, pkgconfig, wrapGAppsHook, gobject-introspection +, gettext, itstool, libxml2, python3, gnome3, glib, gtk3, librsvg }: + +stdenv.mkDerivation rec { + name = "gnome-chess-${version}"; + version = "3.30.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-chess/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1gzdm6z54kxx06lh616g33klrp4dby2a68wxvjpsavdll28kgwgl"; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig gettext itstool libxml2 python3 wrapGAppsHook gobject-introspection ]; + buildInputs = [ glib gtk3 librsvg gnome3.defaultIconTheme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-chess"; + attrPath = "gnome3.gnome-chess"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Chess; + description = "Play the classic two-player boardgame of chess"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix new file mode 100644 index 000000000000..0b4d6d770b0d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, vala, gnome3, gtk3, wrapGAppsHook, appstream-glib, desktop-file-utils +, glib, librsvg, libxml2, intltool, itstool, libgee, libgnome-games-support }: + +let + pname = "gnome-klotski"; + version = "3.22.3"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0prc0s28pdflgzyvk1g0yfx982q2grivmz3858nwpqmbkha81r7f"; + }; + + nativeBuildInputs = [ pkgconfig vala wrapGAppsHook intltool itstool libxml2 appstream-glib desktop-file-utils ]; + buildInputs = [ glib gtk3 librsvg libgee libgnome-games-support gnome3.defaultIconTheme ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "${pname}"; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Klotski; + description = "Slide blocks to solve the puzzle"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix new file mode 100644 index 000000000000..29763abba559 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + name = "gnome-mahjongg-${version}"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-mahjongg/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "f5972a14fa4ad04153bd6e68475b85cd79c6b44f6cac1fe1edb64dbad4135218"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-mahjongg"; attrPath = "gnome3.gnome-mahjongg"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk3 wrapGAppsHook librsvg intltool itstool libxml2 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Mahjongg; + description = "Disassemble a pile of tiles by removing matching pairs"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix new file mode 100644 index 000000000000..7896595de187 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, meson, ninja, vala, gobject-introspection, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, gettext, itstool, python3, libxml2, libgnome-games-support, libgee }: + +stdenv.mkDerivation rec { + name = "gnome-mines-${version}"; + version = "3.30.1.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-mines/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "08ddk400sg1g3q26gnm5mgv81vdqyix0yl7pd47p50vkc1w6f33z"; + }; + + # gobject-introspection for finding vapi files + nativeBuildInputs = [ meson ninja vala gobject-introspection pkgconfig gettext itstool python3 libxml2 wrapGAppsHook ]; + buildInputs = [ gtk3 librsvg gnome3.defaultIconTheme libgnome-games-support libgee ]; + + postPatch = '' + chmod +x data/meson_compile_gschema.py # patchShebangs requires executable file + patchShebangs data/meson_compile_gschema.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-mines"; + attrPath = "gnome3.gnome-mines"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Mines; + description = "Clear hidden mines from a minefield"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix new file mode 100644 index 000000000000..e36ca2a639d1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra-gtk3, clutter-gtk, intltool, itstool +, libxml2, libgee, libgnome-games-support }: + +stdenv.mkDerivation rec { + name = "gnome-nibbles-${version}"; + version = "3.24.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-nibbles/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "19g44cnrb191v50bdvy2qkrfhvyfsahd0kx9hz95x9gkjfn2nn35"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook intltool itstool libxml2 ]; + buildInputs = [ + gtk3 librsvg libcanberra-gtk3 clutter-gtk gnome3.defaultIconTheme + libgee libgnome-games-support + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-nibbles"; + attrPath = "gnome3.gnome-nibbles"; + }; + }; + + meta = with stdenv.lib; { + description = "Guide a worm around a maze"; + homepage = https://wiki.gnome.org/Apps/Nibbles; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix new file mode 100644 index 000000000000..19a6b60fb5bd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra-gtk3, intltool, itstool, libxml2, libgnome-games-support +, libgee}: + +stdenv.mkDerivation rec { + name = "gnome-robots-${version}"; + version = "3.22.3"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-robots/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0dzcjd7rdmlzgr6rmljhrbccwif8wj0cr1xcrrj7malj33098wwk"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-robots"; attrPath = "gnome3.gnome-robots"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk3 wrapGAppsHook intltool itstool librsvg libcanberra-gtk3 + libxml2 gnome3.defaultIconTheme libgnome-games-support libgee + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Robots; + description = "Avoid the robots and make them crash into each other"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix new file mode 100644 index 000000000000..eaa9f3a1c8dc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, meson, ninja, vala, pkgconfig, gobject-introspection, gettext, gtk3, gnome3, wrapGAppsHook +, json-glib, qqwing, itstool, libxml2, python3, desktop-file-utils }: + +stdenv.mkDerivation rec { + name = "gnome-sudoku-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-sudoku/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1xy986s51jnrcqwan2hy4bjdg6797yr9s7gxx2z2q4j4gkx3qa1f"; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig gobject-introspection gettext itstool libxml2 python3 desktop-file-utils wrapGAppsHook ]; + buildInputs = [ gtk3 gnome3.libgee json-glib qqwing ]; + + postPatch = '' + chmod +x post_install.py # patchShebangs requires executable file + patchShebangs post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-sudoku"; + attrPath = "gnome3.gnome-sudoku"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Sudoku; + description = "Test your logic skills in this number grid puzzle"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix new file mode 100644 index 000000000000..75f511b17d05 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra-gtk3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + name = "gnome-taquin-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-taquin/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0qijv7wyrjlj56m79la4k7m00712v2m1m994vfx43x3v4isxidgp"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-taquin"; attrPath = "gnome3.gnome-taquin"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk3 wrapGAppsHook librsvg libcanberra-gtk3 + intltool itstool libxml2 gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Taquin; + description = "Move tiles so that they reach their places"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix new file mode 100644 index 000000000000..fe81b429e999 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libxml2, intltool, itstool }: + +stdenv.mkDerivation rec { + name = "gnome-tetravex-${version}"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-tetravex/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0a6d7ff5ffcd6c05454a919d46a2e389d6b5f87bc80e82c52c2f20d9d914e18d"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-tetravex"; attrPath = "gnome3.gnome-tetravex"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk3 wrapGAppsHook intltool itstool libxml2 gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Tetravex; + description = "Complete the puzzle by matching numbered tiles"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix new file mode 100644 index 000000000000..8d4be7f1c6b0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libxml2, intltool, itstool }: + +stdenv.mkDerivation rec { + name = "hitori-${version}"; + version = "3.22.4"; + + src = fetchurl { + url = "mirror://gnome/sources/hitori/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "dcac6909b6007857ee425ac8c65fed179f2c71da138d5e5300cd62c8b9ea15d3"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "hitori"; attrPath = "gnome3.hitori"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk3 wrapGAppsHook intltool itstool libxml2 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Hitori; + description = "GTK+ application to generate and let you play games of Hitori"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix new file mode 100644 index 000000000000..a60ebe9590bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf, librsvg, wrapGAppsHook +, intltool, itstool, libcanberra-gtk3, libxml2, dconf }: + +stdenv.mkDerivation rec { + name = "iagno-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/iagno/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "15skh7186gp0k1lvzpv0l7dsr7mhb57njc3wjbgjwixym67h2d1z"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook itstool libxml2 ]; + buildInputs = [ gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg libcanberra-gtk3 ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "iagno"; + attrPath = "gnome3.iagno"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Iagno; + description = "Computer version of the game Reversi, more popularly called Othello"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix new file mode 100644 index 000000000000..ccd90c071fee --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, vala, pkgconfig, gtk3, gnome3, gdk_pixbuf, librsvg, wrapGAppsHook +, gettext, itstool, clutter, clutter-gtk, libxml2, appstream-glib +, meson, ninja, python3 }: + +stdenv.mkDerivation rec { + name = "lightsoff-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/lightsoff/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1cv5pkw0n8k5wb98ihx0z1z615w1wc09y884wk608wy40bgq46wp"; + }; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + sed -i '/gtk-update-icon-cache/s/^/#/' meson_post_install.py + ''; + + nativeBuildInputs = [ + vala pkgconfig wrapGAppsHook itstool gettext appstream-glib libxml2 + meson ninja python3 + ]; + buildInputs = [ gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg clutter clutter-gtk ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "lightsoff"; + attrPath = "gnome3.lightsoff"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Lightsoff; + description = "Puzzle game, where the objective is to turn off all of the tiles on the board"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix new file mode 100644 index 000000000000..c57ab1a9e14d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf +, librsvg, libcanberra-gtk3 +, intltool, itstool, libxml2, clutter, clutter-gtk, wrapGAppsHook }: + +let + pname = "quadrapassel"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/quadrapassel/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0ed44ef73c8811cbdfc3b44c8fd80eb6e2998d102d59ac324e4748f5d9dddb55"; + }; + + nativeBuildInputs = [ pkgconfig itstool intltool wrapGAppsHook ]; + buildInputs = [ + gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg + libcanberra-gtk3 clutter libxml2 clutter-gtk + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Classic falling-block game, Tetris"; + homepage = https://wiki.gnome.org/Apps/Quadrapassel; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix new file mode 100644 index 000000000000..5e0f01174e41 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, vala, glib, gtk3, gnome3, desktop-file-utils +, clutter, clutter-gtk, gettext, itstool, libxml2, wrapGAppsHook, python3 }: + +let + pname = "swell-foop"; + version = "3.30.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "00h795clcyzch1sgcxflslv2q03vsz2j5xyy4ghbg6a6dgg8a0ax"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig wrapGAppsHook python3 itstool gettext libxml2 desktop-file-utils ]; + buildInputs = [ glib gtk3 gnome3.defaultIconTheme clutter clutter-gtk ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Swell%20Foop; + description = "Puzzle game, previously known as Same GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix new file mode 100644 index 000000000000..e6cdd3c88b72 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf +, librsvg, intltool, itstool, libxml2, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "tali-${version}"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/tali/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "5ba17794d6fb06b794daaffa62a6aaa372b7de8886ce5ec596c37e62bb71728b"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "tali"; attrPath = "gnome3.tali"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg + libxml2 itstool intltool wrapGAppsHook ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Tali; + description = "Sort of poker with dice and less money"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/installer.nix b/nixpkgs/pkgs/desktops/gnome-3/installer.nix new file mode 100644 index 000000000000..4999e1f3343c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/installer.nix @@ -0,0 +1,15 @@ +{ isoBaseName ? "nixos-graphical-gnome", system ? builtins.currentSystem +, extraModules ? [] }: + +let + + module = ../../../../nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix; + + config = (import ../../../../nixos/lib/eval-config.nix { + inherit system; + modules = [ module { isoImage.isoBaseName = isoBaseName; } ] ++ extraModules; + }).config; + +in + config.system.build.isoImage + diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix new file mode 100644 index 000000000000..8f1080ccc2e0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix @@ -0,0 +1,74 @@ +{ stdenv, fetchurl, intltool, pkgconfig, gtk3, vala_0_40, enchant +, wrapGAppsHook, gdk_pixbuf, cmake, ninja, desktop-file-utils +, libnotify, libcanberra-gtk3, libsecret, gmime, isocodes +, gobject-introspection, libpthreadstubs, sqlite, gcr +, gnome3, librsvg, gnome-doc-utils, webkitgtk, fetchpatch }: + +let + pname = "geary"; + version = "0.12.4"; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "01ykhkjfkprvh9kp4rzrl6xs2pqibiw44ckvqsn5cs3xy2rlq8mm"; + }; + + patches = [ + # Fix build with webkitgtk-2.22 + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/geary/commit/5d0f711426d76f878cf9b71f7e8f785199c7cde1.patch; + sha256 = "1yifng5lfsc6wp7irmi8gjdcfig1cr0chf7rdv3asrk567nmwrsi"; + }) + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/geary/commit/0d966950a2cba888873cd3a7f4f42bb7a017dc6d.patch; + sha256 = "1y6v4fnik4w3paj9nl0yqs54998sx1zr9w3940d579p6dsa8f3fg"; + }) + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/geary/commit/e091f24b00ec421e1aadd5e360d1550e658ad5ef.patch; + sha256 = "0d5hc4h9c1hnn2sk18nkpmzdvwm3h746n2zj8n22ax9rj6lxl38l"; + }) + # Fix build with vala 0.40.12 + # See: https://gitlab.gnome.org/GNOME/vala/blob/0.40.12/NEWS#L22 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/geary/commit/088cb2c0aa35ad4b54ea5a0a2edaf0ff96c64b45.patch"; + sha256 = "0cnjmbd3snm8ggmprqa32f7i3w86gs3ylab9p5ffj921dcpvvlb2"; + }) + ]; + + nativeBuildInputs = [ vala_0_40 intltool pkgconfig wrapGAppsHook cmake ninja desktop-file-utils gnome-doc-utils gobject-introspection ]; + buildInputs = [ + gtk3 enchant webkitgtk libnotify libcanberra-gtk3 gnome3.libgee libsecret gmime sqlite + libpthreadstubs gnome3.gsettings-desktop-schemas gcr isocodes + gdk_pixbuf librsvg gnome3.defaultIconTheme + ]; + + cmakeFlags = [ + "-DISOCODES_DIRECTORY=${isocodes}/share/xml/iso-codes" + ]; + + # TODO: This is bad, upstream should fix their code. + PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_GIRDIR = "${webkitgtk.dev}/share/gir-1.0"; + + preFixup = '' + # Add geary to path for geary-attach + gappsWrapperArgs+=(--prefix PATH : "$out/bin") + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Geary; + description = "Mail client for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix new file mode 100644 index 000000000000..a447d2aa5903 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, fetchpatch, vala, intltool, pkgconfig, gtk3, glib +, json-glib, wrapGAppsHook, libpeas, bash, gobject-introspection +, gnome3, gtkspell3, shared-mime-info, libgee, libgit2-glib, libsecret +, meson, ninja, python3 + }: + +let + pname = "gitg"; + version = "3.30.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1fz8q1aiql6k740savdjh0vzbyhcflgf94cfdhvzcrrvm929n2ss"; + }; + + patches = [ + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/gitg/commit/42bceea265f53fe7fd4a41037b936deed975fc6c.patch; + sha256 = "1xq245rsi1bi66lswk33pdiazfaagxf77836ds5q73900rx4r7fw"; + }) + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + sed -i '/gtk-update-icon-cache/s/^/#/' meson_post_install.py + + substituteInPlace tests/libgitg/test-commit.vala --replace "/bin/bash" "${bash}/bin/bash" + ''; + + doCheck = true; + + enableParallelBuilding = true; + + buildInputs = [ + gtk3 glib json-glib libgee libpeas gnome3.libsoup + libgit2-glib gtkspell3 gnome3.gtksourceview gnome3.gsettings-desktop-schemas + libsecret gobject-introspection gnome3.adwaita-icon-theme + ]; + + nativeBuildInputs = [ meson ninja python3 vala wrapGAppsHook intltool pkgconfig ]; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Gitg; + description = "GNOME GUI client to view git repositories"; + maintainers = with maintainers; [ domenkozar ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix new file mode 100644 index 000000000000..de0d70ae42f4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix @@ -0,0 +1,88 @@ +{ stdenv +, fetchurl +, intltool +, itstool +, libxml2 +, libxslt +, pkgconfig +, gnome-panel +, gtk3 +, glib +, libwnck3 +, libgtop +, libnotify +, upower +, dbus-glib +, wirelesstools +, linuxPackages +, adwaita-icon-theme +, libgweather +, gucharmap +, gnome-settings-daemon +, tracker +, polkit +, gnome3 +}: + +let + pname = "gnome-applets"; + version = "3.30.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1cvl32486kqw301wy40l1a1sdhanra7bx4smq0a3lmnl3x01zg43"; + }; + + nativeBuildInputs = [ + intltool + itstool + pkgconfig + libxml2 + libxslt + ]; + + buildInputs = [ + gnome-panel + gtk3 + glib + libxml2 + libwnck3 + libgtop + libnotify + upower + dbus-glib + adwaita-icon-theme + libgweather + gucharmap + gnome-settings-daemon + tracker + polkit + wirelesstools + linuxPackages.cpupower + ]; + + enableParallelBuilding = true; + + doCheck = true; + + configureFlags = [ + "--with-libpanel-applet-dir=$(out)/share/gnome-panel/applets" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Applets for use with the GNOME panel"; + homepage = https://wiki.gnome.org/Projects/GnomeApplets; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix new file mode 100644 index 000000000000..c80c8b977cf5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, gnome3 +, gtk3, glib, gobject-introspection, libarchive +}: + +stdenv.mkDerivation rec { + name = "gnome-autoar-${version}"; + version = "0.2.3"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-autoar/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "02i4zgqqqj56h7bcys6dz7n78m4nj2x4dv1ggjmnrk98n06xpsax"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-autoar"; attrPath = "gnome3.gnome-autoar"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk3 glib ]; + propagatedBuildInputs = [ libarchive gobject-introspection ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.lgpl21; + description = "Library to integrate compressed files management with GNOME"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix new file mode 100644 index 000000000000..716988252d54 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix @@ -0,0 +1,170 @@ +{ stdenv +, autoreconfHook +, fetchurl +, fetchpatch +, gettext +, glib +, gnome-bluetooth +, gnome-desktop +, gnome-panel +, gnome-session +, gnome3 +, gsettings-desktop-schemas +, gtk +, ibus +, intltool +, libcanberra-gtk3 +, libpulseaudio +, libxkbfile +, libxml2 +, pkgconfig +, polkit +, substituteAll +, upower +, wrapGAppsHook +, writeTextFile +, writeShellScriptBin +, xkeyboard_config +}: + +let + pname = "gnome-flashback"; + version = "3.30.0"; + requiredComponents = wmName: "RequiredComponents=${wmName};gnome-flashback-init;gnome-flashback;gnome-panel;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings;"; + gnome-flashback = stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "18rwql2pi78155l9zp1i50xfi5z8xz2l08m9d81x6qqbfr1nyy57"; + }; + + patches =[ + # overrides do not respect gsettingsschemasdir + # https://gitlab.gnome.org/GNOME/gnome-flashback/issues/9 + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/gnome-flashback/commit/a55530f58ccd600414a5420b287868ab7d219705.patch; + sha256 = "1la94lhhb9zlw7bnbpl6hl26zv3kxbsvgx996mhph720wxg426mh"; + }) + ]; + + # make .desktop Execs absolute + postPatch = '' + patch -p0 <<END_PATCH + +++ data/applications/gnome-flashback-init.desktop.in + @@ -4 +4 @@ + -Exec=gnome-flashback --initialize + +Exec=$out/bin/gnome-flashback --initialize + +++ data/applications/gnome-flashback.desktop.in + @@ -4 +4 @@ + -Exec=gnome-flashback + +Exec=$out/bin/gnome-flashback + END_PATCH + ''; + + postInstall = '' + # Check that our expected RequiredComponents match the stock session files, but then don't install them. + # They can be installed using mkSessionForWm. + grep '${requiredComponents "metacity"}' $out/share/gnome-session/sessions/gnome-flashback-metacity.session || (echo "RequiredComponents have changed, please update gnome-flashback/default.nix."; false) + + rm -r $out/share/gnome-session + rm -r $out/share/xsessions + rm -r $out/libexec + ''; + + nativeBuildInputs = [ + autoreconfHook + gettext + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + gnome-bluetooth + gnome-desktop + gsettings-desktop-schemas + gtk + ibus + libcanberra-gtk3 + libpulseaudio + libxkbfile + polkit + upower + xkeyboard_config + ]; + + doCheck = true; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + + mkSessionForWm = { wmName, wmLabel, wmCommand }: + let + wmApplication = writeTextFile { + name = "gnome-flashback-${wmName}-wm"; + destination = "/share/applications/${wmName}.desktop"; + text = '' + [Desktop Entry] + Type=Application + Encoding=UTF-8 + Name=${wmLabel} + Exec=${wmCommand} + NoDisplay=true + X-GNOME-WMName=${wmLabel} + X-GNOME-Autostart-Phase=WindowManager + X-GNOME-Provides=windowmanager + X-GNOME-Autostart-Notify=false + ''; + }; + + gnomeSession = writeTextFile { + name = "gnome-flashback-${wmName}-gnome-session"; + destination = "/share/gnome-session/sessions/gnome-flashback-${wmName}.session"; + text = '' + [GNOME Session] + Name=GNOME Flashback (${wmLabel}) + ${requiredComponents wmName} + ''; + }; + + executable = writeShellScriptBin "gnome-flashback-${wmName}" '' + if [ -z $XDG_CURRENT_DESKTOP ]; then + export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME" + fi + + export XDG_DATA_DIRS=${wmApplication}/share:${gnomeSession}/share:${gnome-flashback}/share:${gnome-panel}/share:$XDG_DATA_DIRS + + exec ${gnome-session}/bin/gnome-session --session=gnome-flashback-${wmName} "$@" + ''; + + in writeTextFile { + name = "gnome-flashback-${wmName}-xsession"; + destination = "/share/xsessions/gnome-flashback-${wmName}.desktop"; + text = '' + [Desktop Entry] + Name=GNOME Flashback (${wmLabel}) + Comment=This session logs you into GNOME Flashback with ${wmLabel} + Exec=${executable}/bin/gnome-flashback-${wmName} + TryExec=${wmCommand} + Type=Application + DesktopNames=GNOME-Flashback;GNOME; + ''; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME 2.x-like session for GNOME 3"; + homepage = https://wiki.gnome.org/Projects/GnomeFlashback; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; + }; + in gnome-flashback diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix new file mode 100644 index 000000000000..8fbe24220b69 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, meson, ninja, gettext, gnome3, packagekit, polkit +, systemd, wrapGAppsHook, desktop-file-utils }: + +stdenv.mkDerivation rec { + name = "gnome-packagekit-${version}"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-packagekit/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1i1hf6833psnq174xm0gjlz5rbrkl8i512y47w7nk8mrrrc31b35"; + }; + + nativeBuildInputs = [ pkgconfig meson ninja gettext wrapGAppsHook desktop-file-utils ]; + buildInputs = [ gnome3.gtk packagekit systemd polkit ]; + + postPatch = '' + patchShebangs meson_post_install.sh + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-packagekit"; + attrPath = "gnome3.gnome-packagekit"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://www.freedesktop.org/software/PackageKit/; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + description = "Tools for installing software on the GNOME desktop using PackageKit"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix new file mode 100644 index 000000000000..f9cc0a8aa4f9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix @@ -0,0 +1,110 @@ +{ stdenv +, fetchurl +, autoreconfHook +, fetchpatch +, dconf +, evolution-data-server +, gdm +, gettext +, glib +, gnome-desktop +, gnome-flashback +, gnome-menus +, gnome3 +, gtk +, itstool +, libgweather +, libsoup +, libwnck3 +, libxml2 +, pkgconfig +, polkit +, systemd +, wrapGAppsHook }: + +let + pname = "gnome-panel"; + version = "3.30.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + outputs = [ "out" "dev" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "12q0l7wy6hzl46i7xpvv82ka3bn14z0jg6fhv5xhnk7j9mkbmgqw"; + }; + + patches = [ + # https://github.com/NixOS/nixpkgs/issues/36468 + # https://gitlab.gnome.org/GNOME/gnome-panel/issues/8 + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/gnome-panel/commit/77be9c3507bd1b5d70d97649b85ec9f47f6c359c.patch; + sha256 = "00b1ihnc6hp2g6x1v1njbc6mhsk44izl2wigviibmka2znfk03nv"; + }) + ]; + + # make .desktop Exec absolute + postPatch = '' + patch -p0 <<END_PATCH + +++ gnome-panel/gnome-panel.desktop.in + @@ -7 +7 @@ + -Exec=gnome-panel + +Exec=$out/bin/gnome-panel + END_PATCH + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${gnome-menus}/share:${gnome-flashback}/share" + --prefix XDG_CONFIG_DIRS : "${gnome-menus}/etc/xdg:${gnome-flashback}/etc/xdg" + ) + ''; + + nativeBuildInputs = [ + autoreconfHook + gettext + itstool + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + dconf + evolution-data-server + gdm + glib + gnome-desktop + gnome-menus + gtk + libgweather + libsoup + libwnck3 + polkit + systemd + ]; + + configureFlags = [ + "--enable-eds" + ]; + + enableParallelBuilding = true; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Component of Gnome Flashback that provides panels and default applets for the desktop"; + homepage = https://wiki.gnome.org/Projects/GnomePanel; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/default.nix new file mode 100644 index 000000000000..be8ab81457ea --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/default.nix @@ -0,0 +1,96 @@ +{ stdenv +, fetchgit +, fetchurl +, autoreconfHook +, dbus-glib +, glib +, gnome-common +, gnome-desktop +, gnome3 +, gtk +, gsettings-desktop-schemas +, pkgconfig +, intltool +, pam +, systemd +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "gnome-screensaver"; + version = "3.6.1"; + + # the original package is deprecated and the Ubuntu version has a number of useful patches + src = fetchgit { + url = "https://git.launchpad.net/ubuntu/+source/gnome-screensaver"; + rev = "4f7b666131dec060a5aac9117f395ac522a627b4"; + sha256 = "15xqgcpm825cy3rm8pj00qlblq66svmh06lcw8qi74a3g0xcir87"; + }; + + # from debian/patches/series + patches = map (patch: "debian/patches/${patch}") [ + "00git_logind_check.patch" + "01_no_autostart.patch" + "03_fix_ltsp-fading.patch" + "05_dbus_service.patch" + "10_legacy_scrsvr_inhibit.patch" + "13_nvidia_gamma_fade_fallback.patch" + "14_no_fade_on_user_switch.patch" + "15_dont_crash_on_no_fade.patch" + "16_dont_crash_in_kvm.patch" + "17_remove_top_panel.patch" + "18_unity_dialog_layout.patch" + "24_use_user_settings.patch" + "25_fix_lock_command.patch" + "27_lightdm_switch_user.patch" + "28_blocking_return.patch" + "29_handle_expired_creds.patch" + # these two patches are ubuntu-specific + # "30_ubuntu-lock-on-suspend_gsetting.patch" + # "31_lock_screen_on_suspend.patch" + "32_input_sources_switcher.patch" + "move-not-nuke.patch" + "allow-replacement" + "libsystemd.patch" + "0001-gs-lock-plug-Disconnect-signal-handler-from-right-ob.patch" + "33_budgie_support.patch" + ] ++ [ ./fix-dbus-service-dir.patch ]; + + nativeBuildInputs = [ + autoreconfHook + intltool + wrapGAppsHook + gnome-common + pkgconfig + ]; + + buildInputs = [ + glib + gtk + gnome-desktop + dbus-glib + pam + systemd + ]; + + configureFlags = [ "--enable-locking" "--with-systemd=yes" ]; + + enableParallelBuilding = true; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Component of Gnome Flashback that provides screen locking"; + homepage = https://wiki.gnome.org/Projects/GnomeScreensaver; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch new file mode 100644 index 000000000000..81e037ee690d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch @@ -0,0 +1,11 @@ +--- a/configure.ac 2019-01-20 20:28:01.309231507 +0100 ++++ b/configure.ac 2019-01-20 20:31:54.927978927 +0100 +@@ -137,7 +137,7 @@ + + # Find out where the session service file goes + # The sad sed hack is recomended by section 27.10 of the automake manual. +-DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 | sed -e 's,/usr/share,${datarootdir},g'` ++DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 --define-variable 'datadir=${datadir}'` + AC_SUBST(DBUS_SESSION_SERVICE_DIR) + + dnl --------------------------------------------------------------------------- \ No newline at end of file diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix new file mode 100644 index 000000000000..77edf27fbdd6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix @@ -0,0 +1,54 @@ +{ stdenv, meson, ninja, gettext, fetchurl +, pkgconfig, gtk3, glib, libsoup +, itstool, libxml2, python3Packages +, gnome3, gdk_pixbuf, libnotify, gobject-introspection, wrapGAppsHook }: + +let + pname = "gnome-tweaks"; + version = "3.30.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0j63siy1i5pl2g6di1r9vjn54m9ahh42wj20j6689pza2lamay1z"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxml2 wrapGAppsHook python3Packages.python + ]; + buildInputs = [ + gtk3 glib gnome3.gsettings-desktop-schemas + gdk_pixbuf gnome3.defaultIconTheme + libnotify gnome3.gnome-shell python3Packages.pygobject3 + libsoup gnome3.gnome-settings-daemon gnome3.nautilus + gnome3.mutter gnome3.gnome-desktop gobject-introspection + gnome3.nautilus + # Makes it possible to select user themes through the `user-theme` extension + gnome3.gnome-shell-extensions + ]; + + postPatch = '' + patchShebangs meson-postinstall.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix PYTHONPATH : "$out/${python3Packages.python.sitePackages}:$PYTHONPATH") + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/action/show/Apps/GnomeTweakTool; + description = "A tool to customize advanced GNOME 3 options"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-video-effects/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-video-effects/default.nix new file mode 100644 index 000000000000..b65e9c1021e7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-video-effects/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3 }: +let + pname = "gnome-video-effects"; + version = "0.4.3"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "06c2f1kihyhawap1s3zg5w7q7fypsybkp7xry4hxkdz4mpsy0zjs"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A collection of GStreamer effects to be used in different GNOME Modules"; + homepage = https://wiki.gnome.org/Projects/GnomeVideoEffects; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix new file mode 100644 index 000000000000..fd71f1f2a23c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, autoreconfHook, pkgconfig, vala, glib, gjs, mutter +, pango, gtk3, gnome3, dbus, clutter, appstream-glib, wrapGAppsHook, systemd, gobject-introspection }: + +stdenv.mkDerivation rec { + version = "3.30.2"; + name = "gpaste-${version}"; + + src = fetchurl { + url = "https://github.com/Keruspe/GPaste/archive/v${version}.tar.gz"; + sha256 = "0vlbvv6rjxq7h9cl3ilndjk7d51ac1x7agj8k6a7bwjx8h1fr62x"; + }; + + patches = [ + ./fix-paths.patch + ]; + + # TODO: switch to substituteAll with placeholder + # https://github.com/NixOS/nix/issues/1846 + postPatch = '' + substituteInPlace src/gnome-shell/extension.js \ + --subst-var-by typelibPath "${placeholder "out"}/lib/girepository-1.0" + substituteInPlace src/gnome-shell/prefs.js \ + --subst-var-by typelibPath "${placeholder "out"}/lib/girepository-1.0" + substituteInPlace src/libgpaste/settings/gpaste-settings.c \ + --subst-var-by gschemasCompiled "${placeholder "out"}/share/gsettings-schemas/${name}/glib-2.0/schemas" + ''; + + nativeBuildInputs = [ + autoreconfHook pkgconfig vala appstream-glib wrapGAppsHook + ]; + buildInputs = [ + glib gjs mutter gtk3 dbus + clutter pango gobject-introspection + ]; + + configureFlags = [ + "--with-controlcenterdir=${placeholder "out"}/share/gnome-control-center/keybindings" + "--with-dbusservicesdir=${placeholder "out"}/share/dbus-1/services" + "--with-systemduserunitdir=${placeholder "out"}/etc/systemd/user" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://github.com/Keruspe/GPaste; + description = "Clipboard management system with GNOME3 integration"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch new file mode 100644 index 000000000000..ca6b9a5b22ed --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch @@ -0,0 +1,55 @@ +--- a/src/gnome-shell/extension.js ++++ b/src/gnome-shell/extension.js +@@ -7,6 +7,8 @@ + + const Config = imports.misc.config; + ++imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@'); ++ + imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION; + imports.gi.versions.GLib = '2.0'; + imports.gi.versions.GPaste = '1.0'; +--- a/src/gnome-shell/prefs.js ++++ b/src/gnome-shell/prefs.js +@@ -7,6 +7,8 @@ + + const Gettext = imports.gettext; + ++imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@'); ++ + const GPaste = imports.gi.GPaste; + + const ExtensionUtils = imports.misc.extensionUtils; +--- a/src/libgpaste/settings/gpaste-settings.c ++++ b/src/libgpaste/settings/gpaste-settings.c +@@ -22,6 +22,8 @@ + + typedef struct + { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; + GSettings *settings; + GSettings *shell_settings; + +@@ -919,6 +921,8 @@ + { + g_signal_handler_disconnect (settings, priv->c_signals[C_CHANGED]); + g_clear_object (&priv->settings); ++ g_settings_schema_unref (priv->schema); ++ g_settings_schema_source_unref (priv->schema_source); + } + + if (shell_settings) +@@ -1000,7 +1004,11 @@ + g_paste_settings_init (GPasteSettings *self) + { + GPasteSettingsPrivate *priv = g_paste_settings_get_instance_private (self); +- GSettings *settings = priv->settings = g_settings_new (G_PASTE_SETTINGS_NAME); ++ ++ // library used by introspection requires schemas but we cannot set XDG_DATA_DIRS for the library ++ GSettingsSchemaSource *schema_source = priv->schema_source = g_settings_schema_source_new_from_directory ("@gschemasCompiled@", NULL, FALSE, NULL); ++ priv->schema = g_settings_schema_source_lookup (schema_source, G_PASTE_SETTINGS_NAME, FALSE); ++ GSettings *settings = priv->settings = g_settings_new_full (priv->schema, NULL, NULL); + + priv->history_name = NULL; + priv->launch_ui = NULL; diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix new file mode 100644 index 000000000000..67f2552b4348 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, intltool +, gnome3, enchant, isocodes }: + +stdenv.mkDerivation rec { + name = "gtkhtml-${version}"; + version = "4.10.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gtkhtml/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "ca3b6424fb2c7ac5d9cb8fdafb69318fa2e825c9cf6ed17d1e38d9b29e5606c3"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gtkhtml"; attrPath = "gnome3.gtkhtml"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk3 intltool gnome3.adwaita-icon-theme + gnome3.gsettings-desktop-schemas ]; + + propagatedBuildInputs = [ enchant isocodes ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix new file mode 100644 index 000000000000..3776a9adbf2c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, glib, gtk3, libgee, intltool, gnome3 +, libintl }: + +let + pname = "libgnome-games-support"; + version = "1.4.3"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0g6a1vvhrbs0pfnzjfg3lgqvppwkydn6j3dn713zhrjhma9pljkh"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ libintl ]; + propagatedBuildInputs = [ + # Required by libgnome-games-support-1.pc + glib gtk3 libgee + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Small library intended for internal use by GNOME Games, but it may be used by others"; + homepage = https://wiki.gnome.org/Apps/Games; + license = licenses.lgpl3; + maintainers = gnome3.maintainers; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix new file mode 100644 index 000000000000..86e12b585364 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix @@ -0,0 +1,70 @@ +{ stdenv +, fetchurl +, gettext +, glib +, gnome3 +, gsettings-desktop-schemas +, gtk +, libcanberra-gtk3 +, libgtop +, libstartup_notification +, libxml2 +, pkgconfig +, substituteAll +, wrapGAppsHook +, zenity }: + +let + pname = "metacity"; + version = "3.30.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "12kr472gblx7jxh9rvnamy09bkg29ms2pgc0c3373piqmavi24qg"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit zenity; + }) + ]; + + nativeBuildInputs = [ + gettext + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + gsettings-desktop-schemas + gtk + libcanberra-gtk3 + libgtop + libstartup_notification + zenity + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + doCheck = true; + + meta = with stdenv.lib; { + description = "Window manager used in Gnome Flashback"; + homepage = https://wiki.gnome.org/Projects/Metacity; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch new file mode 100644 index 000000000000..ff3a244e67d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/core/util.c ++++ b/src/core/util.c +@@ -424,7 +424,7 @@ + g_slist_length (columns)*2 + + g_slist_length (entries))); + +- argvl[i++] = "zenity"; ++ argvl[i++] = "@zenity@/bin/zenity"; + argvl[i++] = type; + argvl[i++] = "--display"; + argvl[i++] = display; diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix new file mode 100644 index 000000000000..4aec5ba4d848 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix @@ -0,0 +1,62 @@ +{ stdenv +, fetchurl +, pkgconfig +, which +, gtk-doc +, docbook_xsl +, docbook_xml_dtd_412 +, python3 +, ncurses +, nautilus +, gtk3 +, gnome3 +}: + +stdenv.mkDerivation rec { + pname = "nautilus-python"; + version = "1.2.2"; + + outputs = [ "out" "dev" "doc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "04pib6fan6cq8x0fhf5gll2f5d2dh5pxrhj79qhi5l1yc7ys7kch"; + }; + + nativeBuildInputs = [ + pkgconfig + which + gtk-doc + docbook_xsl + docbook_xml_dtd_412 + ]; + + buildInputs = [ + python3 + ncurses # required by python3 + python3.pkgs.pygobject3 + nautilus + gtk3 # required by libnautilus-extension + ]; + + makeFlags = [ + "PYTHON_LIB_LOC=${python3}/lib" + ]; + + PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Python bindings for the Nautilus Extension API"; + homepage = https://wiki.gnome.org/Projects/NautilusPython; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/pidgin/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/pidgin/default.nix new file mode 100644 index 000000000000..c11fdfa6099e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/pidgin/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + version = "1.0.1"; + basename = "pidgin-im-gnome-shell-extension"; + name = "${basename}-${version}"; + + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "${basename}"; + rev = "v${version}"; + sha256 = "1567s2sfqig4jw0nrn134f5vkx0yq31q044grv3xk4vpl1f3z2lr"; + }; + + buildInputs = [ glib ]; + + configurePhase = ""; + buildPhase = ""; + installPhase = '' + share_dir="$prefix/share" + extensions_dir="$share_dir/gnome-shell/extensions/pidgin@muffinmad" + mkdir -p "$extensions_dir" + mv *.js metadata.json dbus.xml gnome-shell-extension-pidgin.pot "$extensions_dir" + + schemas_dir="$share_dir/gsettings-schemas/${name}/glib-2.0/schemas" + mkdir -p "$schemas_dir" + mv schemas/* "$schemas_dir" # fix Emacs syntax highlighting: */ + glib-compile-schemas "$schemas_dir" + + locale_dir="$share_dir/locale" + mkdir -p "$locale_dir" + mv locale/* $locale_dir # fix Emacs syntax highlighting: */ + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/muffinmad/pidgin-im-gnome-shell-extension; + description = "Make Pidgin IM conversations appear in the Gnome Shell message tray"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix new file mode 100644 index 000000000000..0a9b9bcfe9be --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, fetchpatch, autoconf-archive, appstream-glib, intltool, pkgconfig, libtool, wrapGAppsHook, + dbus-glib, libcanberra, gst_all_1, vala, gnome3, gtk3, libxml2, autoreconfHook, + glib, gobject-introspection, libpeas +}: + +stdenv.mkDerivation rec { + version = "0.13.4"; + name = "gnome-shell-pomodoro-${version}"; + + src = fetchFromGitHub { + owner = "codito"; + repo = "gnome-pomodoro"; + rev = "${version}"; + sha256 = "0fiql99nhj168wbfhvzrhfcm4c4569gikd2zaf10vzszdqjahrl1"; + }; + + patches = [ + # build with Vala ≥ 0.42 + (fetchpatch { + url = https://github.com/codito/gnome-pomodoro/commit/36778823ca5bd94b2aa948e5d8718f84d99d9af0.patch; + sha256 = "0a9x0p5wny3an9xawam9nhpffw5m4kgwj5jvv0g6c2lwlfzrx2rh"; + }) + ]; + + nativeBuildInputs = [ + autoreconfHook vala autoconf-archive libtool intltool appstream-glib + wrapGAppsHook pkgconfig libxml2 + ]; + + buildInputs = [ + glib gobject-introspection libpeas + dbus-glib libcanberra gst_all_1.gstreamer + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + gnome3.gsettings-desktop-schemas + gnome3.gnome-shell gtk3 gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = http://gnomepomodoro.org/; + description = "A time management utility for GNOME based on the pomodoro technique"; + 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; [ jgeerds ]; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/update.nix b/nixpkgs/pkgs/desktops/gnome-3/update.nix new file mode 100644 index 000000000000..2ee72d46993d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/update.nix @@ -0,0 +1,16 @@ +{ stdenv, lib, writeScript, python3, common-updater-scripts, coreutils, gnugrep, gnused }: +{ packageName, attrPath ? packageName, versionPolicy ? "odd-unstable" }: + +let + python = python3.withPackages (p: [ p.requests ]); + updateScript = writeScript "gnome-update-script" '' + #!${stdenv.shell} + set -o errexit + package_name="$1" + attr_path="$2" + version_policy="$3" + PATH=${lib.makeBinPath [ common-updater-scripts coreutils gnugrep gnused python ]} + latest_tag=$(python "${./find-latest-version.py}" "$package_name" "$version_policy" "stable") + update-source-version "$attr_path" "$latest_tag" + ''; +in [ updateScript packageName attrPath versionPolicy ] diff --git a/nixpkgs/pkgs/desktops/gnustep/back/default.nix b/nixpkgs/pkgs/desktops/gnustep/back/default.nix new file mode 100644 index 000000000000..54ea8dcf4875 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/back/default.nix @@ -0,0 +1,24 @@ +{ gsmakeDerivation +, cairo +, fetchurl +, base, gui +, xlibsWrapper +, freetype +, pkgconfig +, libXmu +}: +let + version = "0.27.0"; +in +gsmakeDerivation { + name = "gnustep-back-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-${version}.tar.gz"; + sha256 = "0j400892ysxygh50i3918nn87vkxh15h892jwvphmkd34j8wdn9f"; + }; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ cairo base gui freetype xlibsWrapper libXmu ]; + meta = { + description = "A generic backend for GNUstep"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/back/fixup-tools.patch b/nixpkgs/pkgs/desktops/gnustep/back/fixup-tools.patch new file mode 100644 index 000000000000..a47de5478e36 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/back/fixup-tools.patch @@ -0,0 +1,14 @@ +diff -c gnustep-back-0.24.0/Tools/GNUmakefile.preamble gnustep-back-0.24.0.patched/Tools/GNUmakefile.preamble +--- gnustep-back-0.24.0/Tools/GNUmakefile.preamble 2013-07-04 22:44:28.000000000 +0600 ++++ gnustep-back-0.24.0.patched/Tools/GNUmakefile.preamble 2014-12-01 16:40:37.000000000 +0600 +@@ -52,6 +52,9 @@ + # Additional libraries when linking applications + #ADDITIONAL_GUI_LIBS += + ++# Additional libraries when linking tools ++gpbs_TOOL_LIBS += -lgnustep-gui -lgnustep-base $(SYSTEM_LIBS) ++ + # + # Flags dealing with installing and uninstalling + # + diff --git a/nixpkgs/pkgs/desktops/gnustep/base/default.nix b/nixpkgs/pkgs/desktops/gnustep/base/default.nix new file mode 100644 index 000000000000..e96dbf0b6fc5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/base/default.nix @@ -0,0 +1,38 @@ +{ aspell, audiofile +, gsmakeDerivation +, cups +, fetchurl +, gmp, gnutls +, libffi, libbfd +, libjpeg, libtiff, libpng, giflib, libungif +, libxml2, libxslt, libiconv +, libobjc, libgcrypt +, icu +, pkgconfig, portaudio +}: +let + version = "1.26.0"; +in +gsmakeDerivation { + name = "gnustep-base-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-${version}.tar.gz"; + sha256 = "0ws16rwqx0qvqpyjsxbdylfpkgjr19nqc9i3b30wywqcqrkc12zn"; + }; + nativeBuildInputs = [ pkgconfig ]; + propagatedBuildInputs = [ + aspell audiofile + cups + gmp gnutls + libffi libbfd + libjpeg libtiff libpng giflib libungif + libxml2 libxslt libiconv + libobjc libgcrypt + icu + portaudio + ]; + patches = [ ./fixup-paths.patch ]; + meta = { + description = "An implementation of AppKit and Foundation libraries of OPENSTEP and Cocoa"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/base/fixup-base-makefile-installdir.patch b/nixpkgs/pkgs/desktops/gnustep/base/fixup-base-makefile-installdir.patch new file mode 100644 index 000000000000..482c72a51904 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/base/fixup-base-makefile-installdir.patch @@ -0,0 +1,29 @@ +--- gnustep-base-1.24.7/Makefile.postamble 2011-07-15 19:53:45.000000000 +0600 ++++ gnustep-base-1.24.7.patched/Makefile.postamble 2014-11-29 22:25:07.000000000 +0600 +@@ -38,13 +38,13 @@ + # Things to do after compiling + # after-all:: + +-$(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional: +- $(ECHO_CREATING)$(MKDIRS) $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional$(END_ECHO) ++$(DESTDIR_GNUSTEP_MAKEFILES)/Additional: ++ $(ECHO_CREATING)$(MKDIRS) $(DESTDIR_GNUSTEP_MAKEFILES)/Additional$(END_ECHO) + + # Things to do before installing +-before-install:: $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++before-install:: $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + $(ECHO_NOTHING)$(INSTALL_DATA) base.make \ +- $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) ++ $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) + + # Things to do after installing + # after-install:: +@@ -54,7 +54,7 @@ + + # Things to do after uninstalling + after-uninstall:: +- $(ECHO_NOTHING)rm -f $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) ++ $(ECHO_NOTHING)rm -f $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) + + # Things to do before cleaning + # before-clean:: diff --git a/nixpkgs/pkgs/desktops/gnustep/base/fixup-paths.patch b/nixpkgs/pkgs/desktops/gnustep/base/fixup-paths.patch new file mode 100644 index 000000000000..fa28412dbf62 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/base/fixup-paths.patch @@ -0,0 +1,373 @@ +diff -r -u gnustep-base-1.24.7/Makefile.postamble gnustep-base-1.24.7.patched/Makefile.postamble +--- gnustep-base-1.24.7/Makefile.postamble 2011-07-15 19:53:45.000000000 +0600 ++++ gnustep-base-1.24.7.patched/Makefile.postamble 2014-11-29 22:25:07.000000000 +0600 +@@ -38,13 +38,13 @@ + # Things to do after compiling + # after-all:: + +-$(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional: +- $(ECHO_CREATING)$(MKDIRS) $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional$(END_ECHO) ++$(DESTDIR_GNUSTEP_MAKEFILES)/Additional: ++ $(ECHO_CREATING)$(MKDIRS) $(DESTDIR_GNUSTEP_MAKEFILES)/Additional$(END_ECHO) + + # Things to do before installing +-before-install:: $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++before-install:: $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + $(ECHO_NOTHING)$(INSTALL_DATA) base.make \ +- $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) ++ $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) + + # Things to do after installing + # after-install:: +@@ -54,7 +54,7 @@ + + # Things to do after uninstalling + after-uninstall:: +- $(ECHO_NOTHING)rm -f $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) ++ $(ECHO_NOTHING)rm -f $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/base.make$(END_ECHO) + + # Things to do before cleaning + # before-clean:: +diff -r -u gnustep-base-1.24.7/Source/NSPathUtilities.m gnustep-base-1.24.7.patched/Source/NSPathUtilities.m +--- gnustep-base-1.24.7/Source/NSPathUtilities.m 2014-01-14 13:21:10.000000000 +0600 ++++ gnustep-base-1.24.7.patched/Source/NSPathUtilities.m 2015-01-25 13:59:37.000000000 +0600 +@@ -153,16 +153,27 @@ + static NSString *gnustepLocalUsersDir = nil; + + static NSString *gnustepSystemApps = nil; ++static NSArray *gnustepSystemAppsNix = nil; + static NSString *gnustepSystemAdminApps = nil; ++static NSArray *gnustepSystemAdminAppsNix = nil; + static NSString *gnustepSystemWebApps = nil; ++static NSArray *gnustepSystemWebAppsNix = nil; + static NSString *gnustepSystemTools = nil; ++static NSArray *gnustepSystemToolsNix = nil; + static NSString *gnustepSystemAdminTools = nil; ++static NSArray *gnustepSystemAdminToolsNix = nil; + static NSString *gnustepSystemLibrary = nil; ++static NSArray *gnustepSystemLibraryNix = nil; + static NSString *gnustepSystemLibraries = nil; ++static NSArray *gnustepSystemLibrariesNix = nil; + static NSString *gnustepSystemHeaders = nil; ++static NSArray *gnustepSystemHeadersNix = nil; + static NSString *gnustepSystemDocumentation = nil; ++static NSArray *gnustepSystemDocumentationNix = nil; + static NSString *gnustepSystemDocumentationInfo = nil; ++static NSArray *gnustepSystemDocumentationInfoNix = nil; + static NSString *gnustepSystemDocumentationMan = nil; ++static NSArray *gnustepSystemDocumentationManNix = nil; + + static NSString *gnustepNetworkApps = nil; + static NSString *gnustepNetworkAdminApps = nil; +@@ -258,6 +269,18 @@ + }\ + }) + ++/* Like ASSIGN_PATH, but permits multiple components in a path ++ */ ++#define ASSIGN_PATH_NIX(var, dictionary, key) ({\ ++ id val = getPathConfigNix(dictionary, key);\ ++ if (val != nil)\ ++ {\ ++ RELEASE(var);\ ++ var = RETAIN(val);\ ++ [dictionary removeObjectForKey: key];\ ++ }\ ++}) ++ + /* Like ASSIGN_PATH(), but permits the result to be a relative path as that + * is what we normally use (the path is within the user's home directory). + */ +@@ -368,7 +391,7 @@ + /* Get a full path string */ + static inline NSString * + getPath(NSString *path) +-{ ++{ + if ([path hasPrefix: @"./"] == YES) + { + path = [gnustepConfigPath stringByAppendingPathComponent: +@@ -383,6 +406,33 @@ + return path; + } + ++static inline NSArray * ++getPathConfigNix(NSDictionary *dict, NSString *key) ++{ ++ NSArray *res = nil; ++ NSMutableArray *paths = nil; ++ NSString *path; ++#if defined(__MINGW_) ++ NSString *sep = @";"; ++#else ++ NSString *sep = @":"; ++#endif ++ ++ path = [dict objectForKey: key]; ++ if (path != nil) ++ { ++ if ([path rangeOfString:sep].location != NSNotFound) ++ { ++ res = [path componentsSeparatedByString:sep]; ++ } ++ else ++ { ++ res = [[NSArray alloc] initWithObjects:path, nil]; ++ } ++ } ++ return res; ++} ++ + /* Get a full path string from a dictionary */ + static inline NSString * + getPathConfig(NSDictionary *dict, NSString *key) +@@ -468,6 +518,29 @@ + ASSIGN_PATH(gnustepSystemDocumentationInfo, c, + @"GNUSTEP_SYSTEM_DOC_INFO"); + ++ ASSIGN_PATH_NIX(gnustepSystemAppsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_APPS"); ++ ASSIGN_PATH_NIX(gnustepSystemAdminAppsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_ADMIN_APPS"); ++ ASSIGN_PATH_NIX(gnustepSystemWebAppsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_WEB_APPS"); ++ ASSIGN_PATH_NIX(gnustepSystemToolsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_TOOLS"); ++ ASSIGN_PATH_NIX(gnustepSystemAdminToolsNix, c, ++ @"NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS"); ++ ASSIGN_PATH_NIX(gnustepSystemLibraryNix, c, ++ @"NIX_GNUSTEP_SYSTEM_LIBRARY"); ++ ASSIGN_PATH_NIX(gnustepSystemLibrariesNix, c, ++ @"NIX_GNUSTEP_SYSTEM_LIBRARIES"); ++ ASSIGN_PATH_NIX(gnustepSystemHeadersNix, c, ++ @"NIX_GNUSTEP_SYSTEM_HEADERS"); ++ ASSIGN_PATH_NIX(gnustepSystemDocumentationNix, c, ++ @"NIX_GNUSTEP_SYSTEM_DOC"); ++ ASSIGN_PATH_NIX(gnustepSystemDocumentationManNix, c, ++ @"NIX_GNUSTEP_SYSTEM_DOC_MAN"); ++ ASSIGN_PATH_NIX(gnustepSystemDocumentationInfoNix, c, ++ @"NIX_GNUSTEP_SYSTEM_DOC_INFO"); ++ + ASSIGN_PATH(gnustepNetworkApps, c, + @"GNUSTEP_NETWORK_APPS"); + ASSIGN_PATH(gnustepNetworkAdminApps, c, +@@ -1235,6 +1308,18 @@ + DESTROY(gnustepSystemDocumentationMan); + DESTROY(gnustepSystemDocumentationInfo); + ++ DESTROY(gnustepSystemAppsNix); ++ DESTROY(gnustepSystemAdminAppsNix); ++ DESTROY(gnustepSystemWebAppsNix); ++ DESTROY(gnustepSystemToolsNix); ++ DESTROY(gnustepSystemAdminToolsNix); ++ DESTROY(gnustepSystemLibraryNix); ++ DESTROY(gnustepSystemLibrariesNix); ++ DESTROY(gnustepSystemHeadersNix); ++ DESTROY(gnustepSystemDocumentationNix); ++ DESTROY(gnustepSystemDocumentationManNix); ++ DESTROY(gnustepSystemDocumentationInfoNix); ++ + DESTROY(gnustepNetworkApps); + DESTROY(gnustepNetworkAdminApps); + DESTROY(gnustepNetworkWebApps); +@@ -2183,6 +2268,27 @@ + if ([add_dir length] > 0 && [paths containsObject: add_dir] == NO) \ + [paths addObject: add_dir]; \ + } ++#define ADD_PATH_NIX(mask, base_dirs, add_dir) \ ++if ((domainMask & mask) && (base_dirs != nil)) \ ++{ \ ++ NSEnumerator *e = [base_dirs objectEnumerator]; \ ++ NSString *dir = nil; \ ++ while (dir = [e nextObject]) { \ ++ path = [dir stringByAppendingPathComponent: add_dir]; \ ++ if ([path length] > 0 && [paths containsObject: path] == NO) \ ++ [paths addObject: path]; \ ++ } \ ++} ++#define ADD_PLATFORM_PATH_NIX(mask, add_dirs) \ ++if ((domainMask & mask) && (add_dirs != nil)) \ ++{ \ ++ NSEnumerator *e = [add_dirs objectEnumerator]; \ ++ NSString *dir = nil; \ ++ while (dir = [e nextObject]) { \ ++ if ([dir length] > 0 && [paths containsObject: dir] == NO) \ ++ [paths addObject:dir]; \ ++ } \ ++} + + switch (directoryKey) + { +@@ -2191,11 +2297,13 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps); + + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserAdminApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalAdminApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkAdminApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminApps); + } + break; +@@ -2205,6 +2313,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps); + } + break; +@@ -2214,6 +2323,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps); + + /* I imagine if ever wanted a separate Demo directory, the +@@ -2231,6 +2341,7 @@ + + case NSCoreServicesDirectory: + { ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"CoreServices"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"CoreServices"); + } + break; +@@ -2248,6 +2359,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemApps); + } + break; +@@ -2257,6 +2369,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserAdminApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalAdminApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkAdminApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminApps); + } + break; +@@ -2266,6 +2379,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserLibrary); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalLibrary); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkLibrary); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibrary); + } + break; +@@ -2281,6 +2395,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserLibrary); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalLibrary); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkLibrary); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibrary); + } + break; +@@ -2418,6 +2533,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserDocumentation); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalDocumentation); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkDocumentation); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemDocumentationNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemDocumentation); + } + break; +@@ -2449,6 +2565,7 @@ + ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Caches"); + ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Caches"); + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Caches"); ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Caches"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Caches"); + } + break; +@@ -2460,6 +2577,8 @@ + @"ApplicationSupport"); + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, + @"ApplicationSupport"); ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, ++ @"ApplicationSupport"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, + @"ApplicationSupport"); + } +@@ -2471,6 +2590,7 @@ + ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Frameworks"); + ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Frameworks"); + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Frameworks"); ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Frameworks"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Frameworks"); + } + break; +@@ -2480,6 +2600,7 @@ + ADD_PATH(NSUserDomainMask, gnustepUserLibrary, @"Fonts"); + ADD_PATH(NSLocalDomainMask, gnustepLocalLibrary, @"Fonts"); + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibrary, @"Fonts"); ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibraryNix, @"Fonts"); + ADD_PATH(NSSystemDomainMask, gnustepSystemLibrary, @"Fonts"); + } + break; +@@ -2518,6 +2639,12 @@ + if (part) + ADD_PATH(NSNetworkDomainMask, gnustepNetworkLibraries, part); + ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix); ++ if (full) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix, full); ++ if (part) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemLibrariesNix, part); ++ + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemLibraries); + if (full) + ADD_PATH(NSSystemDomainMask, gnustepSystemLibraries, full); +@@ -2560,6 +2687,12 @@ + if (part) + ADD_PATH(NSNetworkDomainMask, gnustepNetworkTools, part); + ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix); ++ if (full) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix, full); ++ if (part) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemToolsNix, part); ++ + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemTools); + if (full) + ADD_PATH(NSSystemDomainMask, gnustepSystemTools, full); +@@ -2602,6 +2735,18 @@ + if (part) + ADD_PATH(NSNetworkDomainMask, gnustepNetworkAdminTools, part); + ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix); ++ if (full) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, full); ++ if (part) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, part); ++ ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix); ++ if (full) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, full); ++ if (part) ++ ADD_PATH_NIX(NSSystemDomainMask, gnustepSystemAdminToolsNix, part); ++ + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemAdminTools); + if (full) + ADD_PATH(NSSystemDomainMask, gnustepSystemAdminTools, full); +@@ -2615,6 +2760,7 @@ + ADD_PLATFORM_PATH(NSUserDomainMask, gnustepUserWebApps); + ADD_PLATFORM_PATH(NSLocalDomainMask, gnustepLocalWebApps); + ADD_PLATFORM_PATH(NSNetworkDomainMask, gnustepNetworkWebApps); ++ ADD_PLATFORM_PATH_NIX(NSSystemDomainMask, gnustepSystemWebAppsNix); + ADD_PLATFORM_PATH(NSSystemDomainMask, gnustepSystemWebApps); + } + break; +@@ -2622,6 +2768,8 @@ + + #undef ADD_PATH + #undef ADD_PLATFORM_PATH ++#undef ADD_PATH_NIX ++#undef ADD_PLATFORM_PATH_NIX + + count = [paths count]; + for (i = 0; i < count; i++) diff --git a/nixpkgs/pkgs/desktops/gnustep/default.nix b/nixpkgs/pkgs/desktops/gnustep/default.nix new file mode 100644 index 000000000000..ac324bc89a85 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/default.nix @@ -0,0 +1,21 @@ +{ pkgs, newScope }: + +let + callPackage = newScope self; + + self = rec { + stdenv = pkgs.clangStdenv; + + gsmakeDerivation = callPackage ./make/gsmakeDerivation.nix {}; + gorm = callPackage ./gorm {}; + projectcenter = callPackage ./projectcenter {}; + system_preferences = callPackage ./systempreferences {}; + libobjc = callPackage ./libobjc2 {}; + make = callPackage ./make {}; + back = callPackage ./back {}; + base = callPackage ./base { giflib = pkgs.giflib_4_1; }; + gui = callPackage ./gui {}; + gworkspace = callPackage ./gworkspace {}; + }; + +in self diff --git a/nixpkgs/pkgs/desktops/gnustep/gorm/default.nix b/nixpkgs/pkgs/desktops/gnustep/gorm/default.nix new file mode 100644 index 000000000000..9f1b0ef47fe5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gorm/default.nix @@ -0,0 +1,17 @@ +{ fetchurl, base, back, gsmakeDerivation, gui }: +let + version = "1.2.23"; +in +gsmakeDerivation { + name = "gorm-${version}"; + + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/gorm-${version}.tar.gz"; + sha256 = "18pf9vvzvdk8bg4lhjb96y1kdkmb9ahmvrqv2581vn45pjxmmlnb"; + }; + buildInputs = [ base back gui ]; + + meta = { + description = "Graphical Object Relationship Modeller is an easy-to-use interface designer for GNUstep"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/gorm/fix-gs-makefiles.patch b/nixpkgs/pkgs/desktops/gnustep/gorm/fix-gs-makefiles.patch new file mode 100644 index 000000000000..c4b3d1e1d815 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gorm/fix-gs-makefiles.patch @@ -0,0 +1,27 @@ +diff -ru gorm-1.2.20/GNUmakefile gorm-1.2.20.patched/GNUmakefile +--- gorm-1.2.20/GNUmakefile 2010-05-30 12:55:26.000000000 +0600 ++++ gorm-1.2.20.patched/GNUmakefile 2014-12-10 22:21:18.000000000 +0600 +@@ -24,6 +24,23 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + # + ++ifeq ($(GNUSTEP_MAKEFILES),) ++ GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) ++ ifeq ($(GNUSTEP_MAKEFILES),) ++ $(warning ) ++ $(warning Unable to obtain GNUSTEP_MAKEFILES setting from gnustep-config!) ++ $(warning Perhaps gnustep-make is not properly installed,) ++ $(warning so gnustep-config is not in your PATH.) ++ $(warning ) ++ $(warning Your PATH is currently $(PATH)) ++ $(warning ) ++ endif ++endif ++ ++ifeq ($(GNUSTEP_MAKEFILES),) ++ $(error You need to set GNUSTEP_MAKEFILES before compiling!) ++endif ++ + PACKAGE_NAME = gorm + export PACKAGE_NAME + include $(GNUSTEP_MAKEFILES)/common.make diff --git a/nixpkgs/pkgs/desktops/gnustep/gui/default.nix b/nixpkgs/pkgs/desktops/gnustep/gui/default.nix new file mode 100644 index 000000000000..72d109b69796 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gui/default.nix @@ -0,0 +1,16 @@ +{ gsmakeDerivation, fetchurl, base }: +let + version = "0.27.0"; +in +gsmakeDerivation { + name = "gnustep-gui-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-${version}.tar.gz"; + sha256 = "1m6k3fa2ndxv0kl2fazi76mwa27gn5jyp24q0rk96f2djhsy94br"; + }; + buildInputs = [ base ]; + patches = [ ./fixup-all.patch ]; + meta = { + description = "A GUI class library of GNUstep"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/gui/fixup-all.patch b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-all.patch new file mode 100644 index 000000000000..4b412db409ae --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-all.patch @@ -0,0 +1,56 @@ +diff -r -u gnustep-gui-0.24.0/GNUmakefile.postamble gnustep-gui-0.24.0.patched/GNUmakefile.postamble +--- gnustep-gui-0.24.0/GNUmakefile.postamble 2010-05-17 22:38:59.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/GNUmakefile.postamble 2014-12-01 13:44:05.000000000 +0600 +@@ -40,20 +40,20 @@ + # The following rule is important mainly for packaging, because in that case + # you install into a fake system tree, and the directory is not there. + # +-$(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional: +- $(MKDIRS) $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++$(DESTDIR_GNUSTEP_MAKEFILES)/Additional: ++ $(MKDIRS) $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + + # Things to do before installing +-before-install:: $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++before-install:: $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + $(INSTALL_DATA) gui.make \ +- $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/gui.make ++ $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/gui.make + + # Things to do after installing + # after-install:: + + # Things to do before uninstalling + before-uninstall:: +- rm -f $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/gui.make ++ rm -f $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/gui.make + + # Things to do after uninstalling + # after-uninstall:: +diff -r -u gnustep-gui-0.24.0/TextConverters/RTF/GNUmakefile.preamble gnustep-gui-0.24.0.patched/TextConverters/RTF/GNUmakefile.preamble +--- gnustep-gui-0.24.0/TextConverters/RTF/GNUmakefile.preamble 2008-06-10 10:01:49.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/TextConverters/RTF/GNUmakefile.preamble 2014-12-01 13:02:11.000000000 +0600 +@@ -49,7 +49,7 @@ + ADDITIONAL_INCLUDE_DIRS +=-I../../Headers/Additions -I../../Headers + + # Additional LDFLAGS to pass to the linker +-#ADDITIONAL_LDFLAGS += ++ADDITIONAL_LDFLAGS += -lgnustep-gui + + # Additional library directories the linker should search + ADDITIONAL_LIB_DIRS += -L../../Source/$(GNUSTEP_OBJ_DIR) +diff -r -u gnustep-gui-0.24.0/Tools/GNUmakefile.preamble gnustep-gui-0.24.0.patched/Tools/GNUmakefile.preamble +--- gnustep-gui-0.24.0/Tools/GNUmakefile.preamble 2006-02-22 12:43:48.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/Tools/GNUmakefile.preamble 2014-12-01 12:52:41.000000000 +0600 +@@ -32,9 +32,11 @@ + ADDITIONAL_LIB_DIRS += -L../Source/$(GNUSTEP_OBJ_DIR) -L../Model/$(GNUSTEP_OBJ_DIR) + + # Additional libraries when linking tools ++make_services_TOOL_LIBS += -lgnustep-base + gpbs_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + set_show_service_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + gopen_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) ++gclose_TOOL_LIBS += -lgnustep-base + gcloseall_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + GSspell_TOOL_LIBS += $(ADDITIONAL_DEPENDS) + diff --git a/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-makefile-installdir.patch b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-makefile-installdir.patch new file mode 100644 index 000000000000..30c6f56c032c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-makefile-installdir.patch @@ -0,0 +1,28 @@ +--- gnustep-gui-0.24.0/GNUmakefile.postamble 2010-05-17 22:38:59.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/GNUmakefile.postamble 2014-12-01 13:44:05.000000000 +0600 +@@ -40,20 +40,20 @@ + # The following rule is important mainly for packaging, because in that case + # you install into a fake system tree, and the directory is not there. + # +-$(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional: +- $(MKDIRS) $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++$(DESTDIR_GNUSTEP_MAKEFILES)/Additional: ++ $(MKDIRS) $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + + # Things to do before installing +-before-install:: $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional ++before-install:: $(DESTDIR_GNUSTEP_MAKEFILES)/Additional + $(INSTALL_DATA) gui.make \ +- $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/gui.make ++ $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/gui.make + + # Things to do after installing + # after-install:: + + # Things to do before uninstalling + before-uninstall:: +- rm -f $(DESTDIR)$(GNUSTEP_MAKEFILES)/Additional/gui.make ++ rm -f $(DESTDIR_GNUSTEP_MAKEFILES)/Additional/gui.make + + # Things to do after uninstalling + # after-uninstall:: diff --git a/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-textconverters-preamble.patch b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-textconverters-preamble.patch new file mode 100644 index 000000000000..23ec2db0fbd3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-textconverters-preamble.patch @@ -0,0 +1,11 @@ +--- gnustep-gui-0.24.0/TextConverters/RTF/GNUmakefile.preamble 2008-06-10 10:01:49.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/TextConverters/RTF/GNUmakefile.preamble 2014-12-01 13:02:11.000000000 +0600 +@@ -49,7 +49,7 @@ + ADDITIONAL_INCLUDE_DIRS +=-I../../Headers/Additions -I../../Headers + + # Additional LDFLAGS to pass to the linker +-#ADDITIONAL_LDFLAGS += ++ADDITIONAL_LDFLAGS += -lgnustep-gui + + # Additional library directories the linker should search + ADDITIONAL_LIB_DIRS += -L../../Source/$(GNUSTEP_OBJ_DIR) diff --git a/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-tools-preamble.patch b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-tools-preamble.patch new file mode 100644 index 000000000000..e57ddec75ad2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gui/fixup-gui-tools-preamble.patch @@ -0,0 +1,14 @@ +--- gnustep-gui-0.24.0/Tools/GNUmakefile.preamble 2006-02-22 12:43:48.000000000 +0600 ++++ gnustep-gui-0.24.0.patched/Tools/GNUmakefile.preamble 2014-12-01 12:52:41.000000000 +0600 +@@ -32,9 +32,11 @@ + ADDITIONAL_LIB_DIRS += -L../Source/$(GNUSTEP_OBJ_DIR) -L../Model/$(GNUSTEP_OBJ_DIR) + + # Additional libraries when linking tools ++make_services_TOOL_LIBS += -lgnustep-base + gpbs_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + set_show_service_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + gopen_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) ++gclose_TOOL_LIBS += -lgnustep-base + gcloseall_TOOL_LIBS += -lgnustep-gui $(SYSTEM_LIBS) + GSspell_TOOL_LIBS += $(ADDITIONAL_DEPENDS) + diff --git a/nixpkgs/pkgs/desktops/gnustep/gworkspace/default.nix b/nixpkgs/pkgs/desktops/gnustep/gworkspace/default.nix new file mode 100644 index 000000000000..d5018a4350f8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/gworkspace/default.nix @@ -0,0 +1,22 @@ +{ back, base, gui, gsmakeDerivation +, fetchurl +, system_preferences +}: +let + version = "0.9.4"; +in +gsmakeDerivation { + name = "gworkspace-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/gworkspace-${version}.tar.gz"; + sha256 = "0cjn83m7qmbwdpldlyhs239nwswgip3yaz01ahls130dq5qq7hgk"; + }; + # additional dependencies: + # - PDFKit framework from http://gap.nongnu.org/ + # - TODO: to --enable-gwmetadata, need libDBKit as well as sqlite! + buildInputs = [ back base gui system_preferences ]; + configureFlags = [ "--with-inotify" ]; + meta = { + description = "A workspace manager for GNUstep"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix b/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix new file mode 100644 index 000000000000..3aba235b3a79 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/libobjc2/default.nix @@ -0,0 +1,29 @@ +{ stdenv, lib, fetchFromGitHub, cmake }: + +let + version = "1.8.1"; +in + +stdenv.mkDerivation rec { + name = "libobjc2-${version}"; + + src = fetchFromGitHub { + owner = "gnustep"; + repo = "libobjc2"; + rev = "v${version}"; + sha256 = "12v9pjg97h56mb114cqd22q1pdwhmxrgdw5hal74ddlrhiq1nzvi"; + }; + + buildInputs = [ cmake ]; + + cmakeFlags = [ "-DCMAKE_INSTALL_LIBDIR=lib" ]; + + meta = with lib; { + description = "Objective-C runtime for use with GNUstep"; + homepage = http://gnustep.org/; + license = licenses.mit; + maintainers = with maintainers; [ ashalkhakov matthewbauer ]; + platforms = platforms.unix; + badPlatforms = [ "aarch64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/make/GNUstep.conf b/nixpkgs/pkgs/desktops/gnustep/make/GNUstep.conf new file mode 100644 index 000000000000..f4e0e3b81629 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/GNUstep.conf @@ -0,0 +1,126 @@ +# These GNUSTEP_*_ROOT variables are obsolete, and will be removed. +#GNUSTEP_SYSTEM_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/System +#GNUSTEP_LOCAL_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/Local +#GNUSTEP_NETWORK_ROOT=/nix/store/ky64z3j9l18wjcssb9pxnc792ihh3bvw-gnustep-make-2.6.6/Network + +# The name of the user config file. This file can override +# some settings in this file. Usually used by users that want +# to install things into their GNUstep user domain and/or have +# many such domains. +GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf + +# The name of the user directory, if any. This is obsolete, +# and will be removed. +GNUSTEP_USER_DIR=GNUstep + +# The name of the user directory where defaults (eg, preferences) are +# stored. If it does not start with a '/', it will be considered +# relative to the user home directory. +GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults + + +# This is where the gnustep-make Makefiles are installed. +# Traditionally, this is /usr/GNUstep/System/Library/Makefiles +GNUSTEP_MAKEFILES=@gnustepMakefiles@ + +# This is where the user home directories are. Only used to provide +# NSUserDirectory in gnustep-base. Never used anywhere else. +GNUSTEP_SYSTEM_USERS_DIR=/home +GNUSTEP_NETWORK_USERS_DIR=/home +GNUSTEP_LOCAL_USERS_DIR=/home + + +# This is where System GUI Applications get installed. +# Traditionally it is /usr/GNUstep/System/Applications. +GNUSTEP_SYSTEM_APPS=@systemApps@ + +# This is where System GUI Applications that only the +# Administrator can use get installed. +# Traditionally it is /usr/GNUstep/System/Applications/Admin. +GNUSTEP_SYSTEM_ADMIN_APPS=@systemAdminApps@ + +# This is where System Web Applications (GSWeb, SOPE) get +# installed. +# Traditionally it is /usr/GNUstep/System/Library/WebApplications. +GNUSTEP_SYSTEM_WEB_APPS=@systemWebApps@ + +# This is where System Command-Line Tools get installed. +# Traditionally it is /usr/GNUstep/System/Tools. +GNUSTEP_SYSTEM_TOOLS=@systemTools@ + +# This is where System Command-Line Tools that only the +# Administrator can use get installed. Important: this +# should not be in the PATH of normal users. +# Traditionally it is /usr/GNUstep/System/Tools/Admin. +GNUSTEP_SYSTEM_ADMIN_TOOLS=@systemAdminTools@ + +# This is where System resources get installed. This directory will +# contain a lot of executable code since *step traditionally likes to +# bundle executables and resources together. +# Traditionally it is /usr/GNUstep/System/Library. +GNUSTEP_SYSTEM_LIBRARY=@systemLibrary@ + +# This is where System headers get installed. They are the +# library .h headers. +# Traditionally it is /usr/GNUstep/System/Library/Headers. +GNUSTEP_SYSTEM_HEADERS=@systemHeaders@ + +# This is where System libraries get installed. By libraries we mean +# the shared/static object files that you can link into programs. +# Traditionally it is /usr/GNUstep/System/Library/Libraries. +GNUSTEP_SYSTEM_LIBRARIES=@systemLibraries@ + +# This is where System documentation get installed. This is known +# not to contain any executable, so we keep it separate. +# Traditionally it is /usr/GNUstep/System/Library/Documentation. +GNUSTEP_SYSTEM_DOC=@systemDoc@ + +# This is where System man pages get installed. +# Traditionally it is /usr/GNUstep/System/Library/Documentation/man. +GNUSTEP_SYSTEM_DOC_MAN=@systemDocMan@ + +# This is where System info pages get installed. +# Traditionally it is /usr/GNUstep/System/Library/Documentation/info. +GNUSTEP_SYSTEM_DOC_INFO=@systemDocInfo@ + + +GNUSTEP_NETWORK_APPS=@systemApps@ +GNUSTEP_NETWORK_ADMIN_APPS=@systemAdminApps@ +GNUSTEP_NETWORK_WEB_APPS=@systemWebApps@ +GNUSTEP_NETWORK_TOOLS=@systemTools@ +GNUSTEP_NETWORK_ADMIN_TOOLS=@systemAdminTools@ +GNUSTEP_NETWORK_LIBRARY=@systemLibrary@ +GNUSTEP_NETWORK_HEADERS=@systemHeaders@ +GNUSTEP_NETWORK_LIBRARIES=@systemLibraries@ +GNUSTEP_NETWORK_DOC=@systemDoc@ +GNUSTEP_NETWORK_DOC_MAN=@systemDocMan@ +GNUSTEP_NETWORK_DOC_INFO=@systemDocInfo@ + +GNUSTEP_LOCAL_APPS=@systemApps@ +GNUSTEP_LOCAL_ADMIN_APPS=@systemAdminApps@ +GNUSTEP_LOCAL_WEB_APPS=@systemWebApps@ +GNUSTEP_LOCAL_TOOLS=@systemTools@ +GNUSTEP_LOCAL_ADMIN_TOOLS=@systemAdminTools@ +GNUSTEP_LOCAL_LIBRARY=@systemLibrary@ +GNUSTEP_LOCAL_HEADERS=@systemHeaders@ +GNUSTEP_LOCAL_LIBRARIES=@systemLibraries@ +GNUSTEP_LOCAL_DOC=@systemDoc@ +GNUSTEP_LOCAL_DOC_MAN=@systemDocMan@ +GNUSTEP_LOCAL_DOC_INFO=@systemDocInfo@ + +# Important: settings in the User should normally be relative paths, +# and will be interpreted as relative to the user's directory. This +# allows each user to have their own domain to install things. You +# can set them to be absolute, mostly if you want to disable them +# by setting them equal to the ones in the Network domain. +GNUSTEP_USER_DIR_APPS=GNUstep/Applications +GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin +GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications +GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools +GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin +GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library +GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers +GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries +GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation +GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man +GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info diff --git a/nixpkgs/pkgs/desktops/gnustep/make/builder.sh b/nixpkgs/pkgs/desktops/gnustep/make/builder.sh new file mode 100644 index 000000000000..1655a75eeba3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/builder.sh @@ -0,0 +1,122 @@ +source $stdenv/setup + +preConfigure() { + . $GNUSTEP_MAKEFILES/GNUstep.sh +} + +wrapGSMake() { + local program="$1" + local config="$2" + local wrapped="$(dirname $program)/.$(basename $program)-wrapped" + + mv "$program" "$wrapped" + + cat > "$program"<<EOF +#! $SHELL -e + +export GNUSTEP_CONFIG_FILE="$config" + +exec "$wrapped" "\$@" "\${extraFlagsArray[@]}" +EOF + chmod +x "$program" +} + +postInstall() { + local conf="$out/share/.GNUstep.conf" + + mkdir -p "$out/share" + touch $conf + + # add the current package to the paths + local tmp="$out/lib/GNUstep/Applications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp" + fi + tmp="$out/lib/GNUstep/Applications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp" + fi + tmp="$out/lib/GNUstep/WebApplications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_WEB_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp" + fi + tmp="$out/bin" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp" + fi + tmp="$out/sbin" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp" + fi + tmp="$out/lib/GNUstep" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARY" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp" + fi + tmp="$out/include" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_HEADERS" in *"${tmp}"*) false;; *) true;; esac; then + if [ -z "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then + export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp" + else + export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp" + fi + fi + tmp="$out/lib" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARIES" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp" + fi + tmp="$out/share/GNUstep/Documentation" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp" + fi + tmp="$out/share/man" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_MAN" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp" + fi + tmp="$out/share/info" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_INFO" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp" + fi + + # write the config file + echo GNUSTEP_MAKEFILES=$GNUSTEP_MAKEFILES >> $conf + if [ -n "$NIX_GNUSTEP_SYSTEM_APPS" ]; then + echo NIX_GNUSTEP_SYSTEM_APPS="$NIX_GNUSTEP_SYSTEM_APPS" + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" ]; then + echo NIX_GNUSTEP_SYSTEM_ADMIN_APPS="$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_WEB_APPS" ]; then + echo NIX_GNUSTEP_SYSTEM_WEB_APPS="$NIX_GNUSTEP_SYSTEM_WEB_APPS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_TOOLS" ]; then + echo NIX_GNUSTEP_SYSTEM_TOOLS="$NIX_GNUSTEP_SYSTEM_TOOLS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" ]; then + echo NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS="$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARY" ]; then + echo NIX_GNUSTEP_SYSTEM_LIBRARY="$NIX_GNUSTEP_SYSTEM_LIBRARY" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then + echo NIX_GNUSTEP_SYSTEM_HEADERS="$NIX_GNUSTEP_SYSTEM_HEADERS" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARIES" ]; then + echo NIX_GNUSTEP_SYSTEM_LIBRARIES="$NIX_GNUSTEP_SYSTEM_LIBRARIES" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_DOC" ]; then + echo NIX_GNUSTEP_SYSTEM_DOC="$NIX_GNUSTEP_SYSTEM_DOC" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_MAN" ]; then + echo NIX_GNUSTEP_SYSTEM_DOC_MAN="$NIX_GNUSTEP_SYSTEM_DOC_MAN" >> $conf + fi + if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_INFO" ]; then + echo NIX_GNUSTEP_SYSTEM_DOC_INFO="$NIX_GNUSTEP_SYSTEM_DOC_INFO" >> $conf + fi + + for i in $out/bin/*; do + echo "wrapping $(basename $i)" + wrapGSMake "$i" "$out/share/.GNUstep.conf" + done +} + +genericBuild diff --git a/nixpkgs/pkgs/desktops/gnustep/make/default.nix b/nixpkgs/pkgs/desktops/gnustep/make/default.nix new file mode 100644 index 000000000000..6ef87cece4e4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, clang, which, libobjc }: + +let + version = "2.7.0"; +in + +stdenv.mkDerivation rec { + name = "gnustep-make-${version}"; + + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-${version}.tar.gz"; + sha256 = "1khiygfkz0zhh9b5nybn40g0xnnjxchk24n49hff1bwanszir84h"; + }; + + configureFlags = [ + "--with-layout=fhs-system" + "--disable-install-p" + ]; + + preConfigure = '' + configureFlags="$configureFlags --with-config-file=$out/etc/GNUstep/GNUstep.conf" + ''; + + makeFlags = [ + "GNUSTEP_INSTALLATION_DOMAIN=SYSTEM" + ]; + + buildInputs = [ clang which libobjc ]; + patches = [ ./fixup-paths.patch ]; + setupHook = ./setup-hook.sh; + meta = { + description = "A build manager for GNUstep"; + homepage = http://gnustep.org/; + license = stdenv.lib.licenses.lgpl2Plus; + maintainers = with stdenv.lib.maintainers; [ ashalkhakov matthewbauer ]; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/make/fixup-paths.patch b/nixpkgs/pkgs/desktops/gnustep/make/fixup-paths.patch new file mode 100644 index 000000000000..b5eb093ad964 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/fixup-paths.patch @@ -0,0 +1,197 @@ +diff -r -u gnustep-make-2.6.6/common.make gnustep-make-2.6.6.patched/common.make +--- gnustep-make-2.6.6/common.make 2013-03-04 17:21:55.000000000 +0600 ++++ gnustep-make-2.6.6.patched/common.make 2015-01-18 14:36:25.000000000 +0600 +@@ -135,7 +135,9 @@ + endif + # Then include makefiles with flags/config options installed by the + # libraries themselves +--include $(GNUSTEP_MAKEFILES)/Additional/*.make ++ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),) ++include $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL) ++endif + + # + # Determine target specific settings +diff -r -u gnustep-make-2.6.6/GNUmakefile.in gnustep-make-2.6.6.patched/GNUmakefile.in +--- gnustep-make-2.6.6/GNUmakefile.in 2013-09-20 12:13:15.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUmakefile.in 2014-12-07 20:35:27.000000000 +0600 +@@ -173,7 +173,6 @@ + "$(makedir)/$(GNUSTEP_TARGET_CPU)" \ + "$(makedir)/$(GNUSTEP_TARGET_DIR)" \ + "$(makedir)/$(GNUSTEP_TARGET_LDIR)" \ +- "$(makedir)/Additional" \ + "$(makedir)/Auxiliary" \ + "$(makedir)/Master" \ + "$(makedir)/Instance" \ +@@ -314,7 +313,6 @@ + -rmdir "$(makedir)/Instance" + -rmdir "$(makedir)/Master" + -rmdir "$(makedir)/Auxiliary" +- -rmdir "$(makedir)/Additional" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_LDIR)" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_DIR)" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_CPU)" +diff -r -u gnustep-make-2.6.6/gnustep-config.in gnustep-make-2.6.6.patched/gnustep-config.in +--- gnustep-make-2.6.6/gnustep-config.in 2013-07-02 16:06:24.000000000 +0600 ++++ gnustep-make-2.6.6.patched/gnustep-config.in 2014-12-09 21:29:49.000000000 +0600 +@@ -66,6 +66,7 @@ + echo " --variable=OBJCXX" + echo " --variable=GNUMAKE" + echo " --variable=GNUSTEP_MAKEFILES" ++ echo " --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL" + echo " --variable=GNUSTEP_USER_DEFAULTS_DIR" + echo " --variable=GNUSTEP_HOST" + echo " --variable=GNUSTEP_HOST_CPU" +@@ -153,6 +154,8 @@ + + export GNUSTEP_MAKEFILES + ++export NIX_GNUSTEP_MAKEFILES_ADDITIONAL ++ + # + # If all they want to know if GNUSTEP_MAKEFILES or anything that + # we can compute only using GNUSTEP_MAKEFILES, we can print it out +@@ -168,6 +171,8 @@ + exit 0;; + --variable=GNUSTEP_MAKEFILES) echo "$GNUSTEP_MAKEFILES" + exit 0;; ++ --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL) echo "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL" ++ exit 0;; + --variable=GNUMAKE) echo "@GNUMAKE@" + exit 0;; + --debug-flags) @GNUMAKE@ -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-objc-flags quiet=yes debug=yes 2>/dev/null +Only in gnustep-make-2.6.6.patched: gnustep-config.in~ +diff -r -u gnustep-make-2.6.6/GNUstep.csh.in gnustep-make-2.6.6.patched/GNUstep.csh.in +--- gnustep-make-2.6.6/GNUstep.csh.in 2011-05-03 13:40:10.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep.csh.in 2014-12-09 20:14:05.000000000 +0600 +@@ -130,6 +130,10 @@ + setenv GNUSTEP_MAKEFILES "@GNUSTEP_MAKEFILES@" + endif + ++if ( ! ${?NIX_GNUSTEP_MAKEFILES_ADDITIONAL} ) then ++ setenv NIX_GNUSTEP_MAKEFILES_ADDITIONAL "@NIX_GNUSTEP_MAKEFILES_ADDITIONAL@" ++endif ++ + if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then + unsetenv GNUSTEP_USER_DIR + unsetenv GNUSTEP_USER_ROOT +Only in gnustep-make-2.6.6.patched: GNUstep.csh.in~ +diff -r -u gnustep-make-2.6.6/GNUstep.sh.in gnustep-make-2.6.6.patched/GNUstep.sh.in +--- gnustep-make-2.6.6/GNUstep.sh.in 2012-02-21 20:21:38.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep.sh.in 2015-01-18 14:48:09.000000000 +0600 +@@ -173,7 +173,6 @@ + fi + export GNUSTEP_MAKEFILES + +- + if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then + # Make sure this is never set in gnustep-make v2 strict mode; it + # might have been set in the config file. +@@ -300,7 +299,7 @@ + # for each duplicate. When there are many duplicates it's faster to + # use print_unique_pathlist.sh first to remove them and skip the + # echos+greps later. +-GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths` ++GNUSTEP_TOOLS_PATHLIST=$NIX_GNUSTEP_SYSTEM_TOOLS + + # Now, we check the paths in GNUSTEP_*_ADMIN_TOOLS. These paths + # should only be used by Administrators -- normal users don't have +@@ -313,7 +312,7 @@ + + # So we examine GNUSTEP_*_ADMIN_TOOLS; if we find any path in that + # list that exists and that we can write to, we add it to our PATH. +-for dir in "$GNUSTEP_SYSTEM_ADMIN_TOOLS" "$GNUSTEP_NETWORK_ADMIN_TOOLS" "$GNUSTEP_LOCAL_ADMIN_TOOLS" "$GNUSTEP_USER_ADMIN_TOOLS"; do ++for dir in $(echo "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" | tr ":" "\n"); do + if [ -d "$dir" -a -w "$dir" ]; then + # Only add the new dir if it's not already in GNUSTEP_TOOLS_PATHLIST + if (echo ":${GNUSTEP_TOOLS_PATHLIST}:" \ +@@ -356,7 +355,7 @@ + export PATH + + # Determine the library paths +-GNUSTEP_LIBRARIES_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths` ++GNUSTEP_LIBRARIES_PATHLIST=$NIX_GNUSTEP_SYSTEM_LIBRARIES + + old_IFS="$IFS" + IFS=: +@@ -486,7 +485,7 @@ + # + # Setup Java CLASSPATH and Guile GUILE_LOAD_PATH + # +-GNUSTEP_LIBRARY_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY" "$GNUSTEP_LOCAL_LIBRARY" "$GNUSTEP_NETWORK_LIBRARY" "$GNUSTEP_SYSTEM_LIBRARY" $fixup_paths` ++GNUSTEP_LIBRARY_PATHLIST=$NIX_GNUSTEP_SYSTEM_LIBRARY + + old_IFS="$IFS" + IFS=: +@@ -526,7 +525,7 @@ + # xxx/Library/Documentation/info, are found by the info browsing + # programs. To get this effect, we add those paths to INFOPATH. + # +-GNUSTEP_INFO_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_DOC_INFO" "$GNUSTEP_LOCAL_DOC_INFO" "$GNUSTEP_NETWORK_DOC_INFO" "$GNUSTEP_SYSTEM_DOC_INFO" $fixup_paths` ++GNUSTEP_INFO_PATHLIST=$NIX_GNUSTEP_SYSTEM_DOC_INFO + old_IFS="$IFS" + IFS=: + for dir in $GNUSTEP_INFO_PATHLIST; do +@@ -559,6 +558,7 @@ + + unset GNUSTEP_KEEP_CONFIG_FILE GNUSTEP_KEEP_USER_CONFIG_FILE + ++ + export GNUSTEP_CONFIG_FILE GNUSTEP_USER_CONFIG_FILE + + export GNUSTEP_USER_DEFAULTS_DIR +diff -r -u gnustep-make-2.6.6/GNUstep-strict-v2.conf.in gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in +--- gnustep-make-2.6.6/GNUstep-strict-v2.conf.in 2008-01-15 20:35:36.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in 2014-12-07 22:04:56.000000000 +0600 +@@ -47,7 +47,6 @@ + # Traditionally, this is /usr/GNUstep/System/Library/Makefiles + GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ + +- + # This is where the user home directories are. Only used to provide + # NSUserDirectory in gnustep-base. Never used anywhere else. + GNUSTEP_SYSTEM_USERS_DIR=@GNUSTEP_SYSTEM_USERS_DIR@ +diff -r -u gnustep-make-2.6.6/library-combo.make gnustep-make-2.6.6.patched/library-combo.make +--- gnustep-make-2.6.6/library-combo.make 2012-02-21 19:53:02.000000000 +0600 ++++ gnustep-make-2.6.6.patched/library-combo.make 2014-12-09 20:15:05.000000000 +0600 +@@ -142,7 +142,7 @@ + # + # Third-party foundations not using make package + # Our own foundation will install a base.make file into +-# $GNUSTEP_MAKEFILES/Additional/ to set the needed flags ++# $NIX_GNUSTEP_MAKEFILES_ADDITIONAL to set the needed flags + # + ifeq ($(FOUNDATION_LIB), nx) + # -framework Foundation is used both to find headers, and to link +@@ -166,7 +166,7 @@ + + # + # FIXME - Ask Helge to move this inside his libFoundation, and have +-# it installed as a $(GNUSTEP_MAKEFILES)/Additional/libFoundation.make ++# it installed as a $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/libFoundation.make + # + ifeq ($(FOUNDATION_LIB),fd) + -include $(GNUSTEP_MAKEFILES)/libFoundation.make +@@ -193,7 +193,7 @@ + GUI_LIBS = + # + # Third-party GUI libraries - our own sets its flags into +-# $(GNUSTEP_MAKEFILES)/Additional/gui.make ++# $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/gui.make + # + ifeq ($(GUI_LIB), nx) + GUI_DEFINE = -DNeXT_GUI_LIBRARY=1 +diff -r -u gnustep-make-2.6.6/rules.make gnustep-make-2.6.6.patched/rules.make +--- gnustep-make-2.6.6/rules.make 2013-07-04 16:05:44.000000000 +0600 ++++ gnustep-make-2.6.6.patched/rules.make 2014-12-09 21:31:04.000000000 +0600 +@@ -667,7 +667,9 @@ + exit 1$(END_ECHO) + endif + +-$(GNUSTEP_MAKEFILES)/Additional/*.make: ; ++ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),) ++$(NIX_GNUSTEP_MAKEFILES_ADDITIONAL): ; ++endif + + $(GNUSTEP_MAKEFILES)/Master/*.make: ; + diff --git a/nixpkgs/pkgs/desktops/gnustep/make/gs-makefiles-additional.patch b/nixpkgs/pkgs/desktops/gnustep/make/gs-makefiles-additional.patch new file mode 100644 index 000000000000..98e22f37ee7d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/gs-makefiles-additional.patch @@ -0,0 +1,145 @@ +diff -ru gnustep-make-2.6.6/common.make gnustep-make-2.6.6.patched/common.make +--- gnustep-make-2.6.6/common.make 2013-03-04 17:21:55.000000000 +0600 ++++ gnustep-make-2.6.6.patched/common.make 2014-12-09 21:29:10.000000000 +0600 +@@ -135,7 +135,9 @@ + endif + # Then include makefiles with flags/config options installed by the + # libraries themselves +--include $(GNUSTEP_MAKEFILES)/Additional/*.make ++ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),) ++-include $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL) ++endif + + # + # Determine target specific settings +diff -ru gnustep-make-2.6.6/GNUmakefile.in gnustep-make-2.6.6.patched/GNUmakefile.in +--- gnustep-make-2.6.6/GNUmakefile.in 2013-09-20 12:13:15.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUmakefile.in 2014-12-07 20:35:27.000000000 +0600 +@@ -173,7 +173,6 @@ + "$(makedir)/$(GNUSTEP_TARGET_CPU)" \ + "$(makedir)/$(GNUSTEP_TARGET_DIR)" \ + "$(makedir)/$(GNUSTEP_TARGET_LDIR)" \ +- "$(makedir)/Additional" \ + "$(makedir)/Auxiliary" \ + "$(makedir)/Master" \ + "$(makedir)/Instance" \ +@@ -314,7 +313,6 @@ + -rmdir "$(makedir)/Instance" + -rmdir "$(makedir)/Master" + -rmdir "$(makedir)/Auxiliary" +- -rmdir "$(makedir)/Additional" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_LDIR)" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_DIR)" + -rmdir "$(makedir)/$(GNUSTEP_TARGET_CPU)" +diff -ru gnustep-make-2.6.6/gnustep-config.in gnustep-make-2.6.6.patched/gnustep-config.in +--- gnustep-make-2.6.6/gnustep-config.in 2013-07-02 16:06:24.000000000 +0600 ++++ gnustep-make-2.6.6.patched/gnustep-config.in 2014-12-09 21:29:49.000000000 +0600 +@@ -66,6 +66,7 @@ + echo " --variable=OBJCXX" + echo " --variable=GNUMAKE" + echo " --variable=GNUSTEP_MAKEFILES" ++ echo " --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL" + echo " --variable=GNUSTEP_USER_DEFAULTS_DIR" + echo " --variable=GNUSTEP_HOST" + echo " --variable=GNUSTEP_HOST_CPU" +@@ -153,6 +154,8 @@ + + export GNUSTEP_MAKEFILES + ++export NIX_GNUSTEP_MAKEFILES_ADDITIONAL ++ + # + # If all they want to know if GNUSTEP_MAKEFILES or anything that + # we can compute only using GNUSTEP_MAKEFILES, we can print it out +@@ -168,6 +171,8 @@ + exit 0;; + --variable=GNUSTEP_MAKEFILES) echo "$GNUSTEP_MAKEFILES" + exit 0;; ++ --variable=NIX_GNUSTEP_MAKEFILES_ADDITIONAL) echo "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL" ++ exit 0;; + --variable=GNUMAKE) echo "@GNUMAKE@" + exit 0;; + --debug-flags) @GNUMAKE@ -s -f "$GNUSTEP_MAKEFILES/empty.make" print-gnustep-make-objc-flags quiet=yes debug=yes 2>/dev/null +diff -ru gnustep-make-2.6.6/GNUstep.csh.in gnustep-make-2.6.6.patched/GNUstep.csh.in +--- gnustep-make-2.6.6/GNUstep.csh.in 2011-05-03 13:40:10.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep.csh.in 2014-12-09 20:14:05.000000000 +0600 +@@ -130,6 +130,10 @@ + setenv GNUSTEP_MAKEFILES "@GNUSTEP_MAKEFILES@" + endif + ++if ( ! ${?NIX_GNUSTEP_MAKEFILES_ADDITIONAL} ) then ++ setenv NIX_GNUSTEP_MAKEFILES_ADDITIONAL "@NIX_GNUSTEP_MAKEFILES_ADDITIONAL@" ++endif ++ + if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then + unsetenv GNUSTEP_USER_DIR + unsetenv GNUSTEP_USER_ROOT +diff -ru gnustep-make-2.6.6/GNUstep.sh.in gnustep-make-2.6.6.patched/GNUstep.sh.in +--- gnustep-make-2.6.6/GNUstep.sh.in 2012-02-21 20:21:38.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep.sh.in 2014-12-09 20:14:19.000000000 +0600 +@@ -173,6 +173,10 @@ + fi + export GNUSTEP_MAKEFILES + ++if [ -z "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL" ]; then ++ NIX_GNUSTEP_MAKEFILES_ADDITIONAL=@NIX_GNUSTEP_MAKEFILES_ADDITIONAL@ ++fi ++export NIX_GNUSTEP_MAKEFILES_ADDITIONAL + + if [ "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then + # Make sure this is never set in gnustep-make v2 strict mode; it +diff -ru gnustep-make-2.6.6/GNUstep-strict-v2.conf.in gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in +--- gnustep-make-2.6.6/GNUstep-strict-v2.conf.in 2008-01-15 20:35:36.000000000 +0600 ++++ gnustep-make-2.6.6.patched/GNUstep-strict-v2.conf.in 2014-12-07 22:04:56.000000000 +0600 +@@ -47,7 +47,6 @@ + # Traditionally, this is /usr/GNUstep/System/Library/Makefiles + GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@ + +- + # This is where the user home directories are. Only used to provide + # NSUserDirectory in gnustep-base. Never used anywhere else. + GNUSTEP_SYSTEM_USERS_DIR=@GNUSTEP_SYSTEM_USERS_DIR@ +diff -ru gnustep-make-2.6.6/library-combo.make gnustep-make-2.6.6.patched/library-combo.make +--- gnustep-make-2.6.6/library-combo.make 2012-02-21 19:53:02.000000000 +0600 ++++ gnustep-make-2.6.6.patched/library-combo.make 2014-12-09 20:15:05.000000000 +0600 +@@ -142,7 +142,7 @@ + # + # Third-party foundations not using make package + # Our own foundation will install a base.make file into +-# $GNUSTEP_MAKEFILES/Additional/ to set the needed flags ++# $NIX_GNUSTEP_MAKEFILES_ADDITIONAL to set the needed flags + # + ifeq ($(FOUNDATION_LIB), nx) + # -framework Foundation is used both to find headers, and to link +@@ -166,7 +166,7 @@ + + # + # FIXME - Ask Helge to move this inside his libFoundation, and have +-# it installed as a $(GNUSTEP_MAKEFILES)/Additional/libFoundation.make ++# it installed as a $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/libFoundation.make + # + ifeq ($(FOUNDATION_LIB),fd) + -include $(GNUSTEP_MAKEFILES)/libFoundation.make +@@ -193,7 +193,7 @@ + GUI_LIBS = + # + # Third-party GUI libraries - our own sets its flags into +-# $(GNUSTEP_MAKEFILES)/Additional/gui.make ++# $(NIX_GNUSTEP_MAKEFILES_ADDITIONAL)/gui.make + # + ifeq ($(GUI_LIB), nx) + GUI_DEFINE = -DNeXT_GUI_LIBRARY=1 +diff -ru gnustep-make-2.6.6/rules.make gnustep-make-2.6.6.patched/rules.make +--- gnustep-make-2.6.6/rules.make 2013-07-04 16:05:44.000000000 +0600 ++++ gnustep-make-2.6.6.patched/rules.make 2014-12-09 21:31:04.000000000 +0600 +@@ -667,7 +667,9 @@ + exit 1$(END_ECHO) + endif + +-$(GNUSTEP_MAKEFILES)/Additional/*.make: ; ++ifneq ($(NIX_GNUSTEP_MAKEFILES_ADDITIONAL),) ++$(NIX_GNUSTEP_MAKEFILES_ADDITIONAL): ; ++endif + + $(GNUSTEP_MAKEFILES)/Master/*.make: ; + diff --git a/nixpkgs/pkgs/desktops/gnustep/make/gsmakeDerivation.nix b/nixpkgs/pkgs/desktops/gnustep/make/gsmakeDerivation.nix new file mode 100644 index 000000000000..7bb287c3fa59 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/gsmakeDerivation.nix @@ -0,0 +1,19 @@ +{ stdenv, make, makeWrapper, which }: +{ buildInputs ? [], ...} @ args: +stdenv.mkDerivation (args // { + buildInputs = [ makeWrapper make which ] ++ buildInputs; + + builder = ./builder.sh; + setupHook = ./setup-hook.sh; + + GNUSTEP_MAKEFILES = "${make}/share/GNUstep/Makefiles"; + + meta = { + homepage = http://gnustep.org/; + + license = stdenv.lib.licenses.lgpl2Plus; + + maintainers = with stdenv.lib.maintainers; [ ashalkhakov matthewbauer ]; + platforms = stdenv.lib.platforms.linux; + } // (if builtins.hasAttr "meta" args then args.meta else {}); +}) diff --git a/nixpkgs/pkgs/desktops/gnustep/make/setup-hook.sh b/nixpkgs/pkgs/desktops/gnustep/make/setup-hook.sh new file mode 100644 index 000000000000..531389011164 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/setup-hook.sh @@ -0,0 +1,77 @@ +# this path is used by some packages to install additional makefiles +export DESTDIR_GNUSTEP_MAKEFILES=$out/share/GNUstep/Makefiles + +installFlagsArray=( \ + "GNUSTEP_INSTALLATION_DOMAIN=SYSTEM" \ + "GNUSTEP_SYSTEM_APPS=$out/lib/GNUstep/Applications" \ + "GNUSTEP_SYSTEM_ADMIN_APPS=$out/lib/GNUstep/Applications" \ + "GNUSTEP_SYSTEM_WEB_APPS=$out/lib/GNUstep/WebApplications" \ + "GNUSTEP_SYSTEM_TOOLS=$out/bin" \ + "GNUSTEP_SYSTEM_ADMIN_TOOLS=$out/sbin" \ + "GNUSTEP_SYSTEM_LIBRARY=$out/lib/GNUstep" \ + "GNUSTEP_SYSTEM_HEADERS=$out/include" \ + "GNUSTEP_SYSTEM_LIBRARIES=$out/lib" \ + "GNUSTEP_SYSTEM_DOC=$out/share/GNUstep/Documentation" \ + "GNUSTEP_SYSTEM_DOC_MAN=$out/share/man" \ + "GNUSTEP_SYSTEM_DOC_INFO=$out/share/info" \ +) + +addEnvVars() { + local filename + + for filename in $1/share/GNUstep/Makefiles/Additional/*.make ; do + if case "$NIX_GNUSTEP_MAKEFILES_ADDITIONAL" in *"{$filename}"*) false;; *) true;; esac; then + export NIX_GNUSTEP_MAKEFILES_ADDITIONAL+=" $filename" + fi + done + + local tmp="$1/lib/GNUstep/Applications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp" + fi + tmp="$1/lib/GNUstep/Applications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp" + fi + tmp="$1/lib/GNUstep/WebApplications" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_WEB_APPS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp" + fi + tmp="$1/bin" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp" + fi + tmp="$1/sbin" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp" + fi + tmp="$1/lib/GNUstep" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARY" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp" + fi + tmp="$1/include" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_HEADERS" in *"${tmp}"*) false;; *) true;; esac; then + if [ -z "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then + export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp" + else + export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp" + fi + fi + tmp="$1/lib" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARIES" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp" + fi + tmp="$1/share/GNUstep/Documentation" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp" + fi + tmp="$1/share/man" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_MAN" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp" + fi + tmp="$1/share/info" + if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_INFO" in *"${tmp}"*) false;; *) true;; esac; then + addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp" + fi +} +addEnvHooks "$targetOffset" addEnvVars diff --git a/nixpkgs/pkgs/desktops/gnustep/make/wrapper.sh b/nixpkgs/pkgs/desktops/gnustep/make/wrapper.sh new file mode 100644 index 000000000000..1bc2e130d88d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/make/wrapper.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +. $GNUSTEP_MAKEFILES/GNUstep.sh +$1 diff --git a/nixpkgs/pkgs/desktops/gnustep/projectcenter/default.nix b/nixpkgs/pkgs/desktops/gnustep/projectcenter/default.nix new file mode 100644 index 000000000000..abfdac1e7afb --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/projectcenter/default.nix @@ -0,0 +1,23 @@ +{ fetchurl +, base, back, gsmakeDerivation, gui, gorm +, gnumake, gdb +}: +let + version = "0.6.2"; +in +gsmakeDerivation { + name = "projectcenter-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/dev-apps/ProjectCenter-${version}.tar.gz"; + sha256 = "0wwlbpqf541apw192jb633d634zkpjhcrrkd1j80y9hihphll465"; + }; + + # NOTE: need a patch for ProjectCenter to help it locate some necessary tools: + # 1. Framework/PCProjectLauncher.m, locate gdb (say among NIX_GNUSTEP_SYSTEM_TOOLS) + # 2. Framework/PCProjectBuilder.m, locate gmake (similar) + propagatedBuildInputs = [ base back gui gnumake gdb gorm ]; + + meta = { + description = "GNUstep's integrated development environment"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnustep/projectcenter/fixup-preamble.patch b/nixpkgs/pkgs/desktops/gnustep/projectcenter/fixup-preamble.patch new file mode 100644 index 000000000000..3fe19a6a58b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/projectcenter/fixup-preamble.patch @@ -0,0 +1,14 @@ +diff -c ProjectCenter-0.6.2/GNUmakefile.preamble ProjectCenter-0.6.2.patched/GNUmakefile.preamble +--- ProjectCenter-0.6.2/GNUmakefile.preamble 2010-08-08 03:56:04.000000000 +0600 ++++ artyom/ProjectCenter-0.6.2.patched/GNUmakefile.preamble 2014-12-01 20:08:31.000000000 +0600 +@@ -39,7 +39,7 @@ + ADDITIONAL_INCLUDE_DIRS += -I./ -I./Headers + + # Additional LDFLAGS to pass to the linker +-ADDITIONAL_LDFLAGS += ++ADDITIONAL_LDFLAGS += -lgnustep-base -lgnustep-gui + + # Additional library directories the linker should search + ADDITIONAL_LIB_DIRS += -L./Framework/ProjectCenter.framework/$(GNUSTEP_TARGET_LDIR) + +Diff finished. Mon Dec 1 20:08:50 2014 diff --git a/nixpkgs/pkgs/desktops/gnustep/systempreferences/default.nix b/nixpkgs/pkgs/desktops/gnustep/systempreferences/default.nix new file mode 100644 index 000000000000..096520f08f36 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnustep/systempreferences/default.nix @@ -0,0 +1,17 @@ +{ back, base, gui, gsmakeDerivation, fetchurl }: +let + version = "1.2.0"; +in +gsmakeDerivation { + name = "system_preferences-${version}"; + src = fetchurl { + url = "ftp://ftp.gnustep.org/pub/gnustep/usr-apps/SystemPreferences-${version}.tar.gz"; + sha256 = "1fg7c3ihfgvl6n21rd17fs9ivx3l8ps874m80vz86n1callgs339"; + }; +# GNUSTEP_MAKEFILES = "${gnustep_make}/share/GNUstep/Makefiles"; + buildInputs = [ back base gui ]; +# propagatedBuildInputs = [ gnustep_back gnustep_base gnustep_gui ]; + meta = { + description = "The settings manager for the GNUstep environment and its applications"; + }; +} diff --git a/nixpkgs/pkgs/desktops/lumina/LuminaOS-NixOS.cpp.patch b/nixpkgs/pkgs/desktops/lumina/LuminaOS-NixOS.cpp.patch new file mode 100644 index 000000000000..6ddd9c76591b --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/LuminaOS-NixOS.cpp.patch @@ -0,0 +1,26 @@ +diff --git a/src-qt5/core/libLumina/LuminaOS-NixOS.cpp b/src-qt5/core/libLumina/LuminaOS-NixOS.cpp +index b92d1b0..441b1bf 100644 +--- a/src-qt5/core/libLumina/LuminaOS-NixOS.cpp ++++ b/src-qt5/core/libLumina/LuminaOS-NixOS.cpp +@@ -13,17 +13,17 @@ + //can't read xbrightness settings - assume invalid until set + static int screenbrightness = -1; + +-QString LOS::OSName(){ return "Gentoo Linux"; } ++QString LOS::OSName(){ return "NixOS"; } + + //OS-specific prefix(s) + // NOTE: PREFIX, L_ETCDIR, L_SHAREDIR are defined in the OS-detect.pri project file and passed in + QString LOS::LuminaShare(){ return (L_SHAREDIR+"/lumina-desktop/"); } //Install dir for Lumina share files +-QString LOS::AppPrefix(){ return "/usr/"; } //Prefix for applications +-QString LOS::SysPrefix(){ return "/"; } //Prefix for system ++QString LOS::AppPrefix(){ return PREFIX+"/usr"; } //Prefix for applications ++QString LOS::SysPrefix(){ return PREFIX; } //Prefix for system + + //OS-specific application shortcuts (*.desktop files) + QString LOS::ControlPanelShortcut(){ return ""; } //system control panel +-QString LOS::AppStoreShortcut(){ return LOS::AppPrefix() + "/share/applications/porthole.desktop"; } //graphical app/pkg manager ++QString LOS::AppStoreShortcut(){ return ""; } //graphical app/pkg manager + //OS-specific RSS feeds (Format: QStringList[ <name>::::<url> ]; ) + QStringList LOS::RSSFeeds(){ return QStringList(); } + diff --git a/nixpkgs/pkgs/desktops/lumina/avoid-absolute-path-on-sessdir.patch b/nixpkgs/pkgs/desktops/lumina/avoid-absolute-path-on-sessdir.patch new file mode 100644 index 000000000000..f5ef6cba41f6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/avoid-absolute-path-on-sessdir.patch @@ -0,0 +1,11 @@ +diff -Naur lumina-1.0.0-Release-p1-OLD/src-qt5/OS-detect.pri lumina-1.0.0-Release-p1-PATCH/src-qt5/OS-detect.pri +--- lumina-1.0.0-Release-p1-OLD/src-qt5/OS-detect.pri 2016-08-09 12:04:30.000000000 -0300 ++++ lumina-1.0.0-Release-p1-PATCH/src-qt5/OS-detect.pri 2016-08-13 17:32:18.272137900 -0300 +@@ -55,7 +55,6 @@ + #Use the defaults for everything else + + }else : linux-*{ +- L_SESSDIR=/usr/share/xsessions + OS=Linux + LIBS += -L/usr/local/lib -L/usr/lib -L/lib + diff --git a/nixpkgs/pkgs/desktops/lumina/default.nix b/nixpkgs/pkgs/desktops/lumina/default.nix new file mode 100644 index 000000000000..00ebfd8a7253 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lumina/default.nix @@ -0,0 +1,84 @@ +{ stdenv, fetchFromGitHub, fluxbox, xscreensaver, desktop-file-utils, + numlockx, xorg, qtbase, qtsvg, qtmultimedia, qtx11extras, qmake, + qttools, poppler, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + name = "lumina-${version}"; + version = "1.4.0-p1"; + + src = fetchFromGitHub { + owner = "trueos"; + repo = "lumina"; + rev = "v${version}"; + sha256 = "0jin0a2s6pjbpw7w1bz67dgqp0xlpw1a7nh8zv0qwdf954zczanp"; + }; + + nativeBuildInputs = [ + qmake + qttools + wrapGAppsHook + ]; + + buildInputs = [ + xorg.libxcb + xorg.libXdamage + xorg.xcbutilwm + xorg.xcbutilimage + qtbase + qtsvg + qtmultimedia + qtx11extras + poppler + fluxbox + xscreensaver + desktop-file-utils + numlockx + ]; + + patches = [ + ./avoid-absolute-path-on-sessdir.patch + ./LuminaOS-NixOS.cpp.patch + ]; + + prePatch = '' + # Copy Gentoo setup as NixOS setup and then patch it + # TODO: write a complete NixOS setup? + cp -a src-qt5/core/libLumina/LuminaOS-Gentoo.cpp src-qt5/core/libLumina/LuminaOS-NixOS.cpp + ''; + + postPatch = '' + # Fix location of poppler-qt5.h + substituteInPlace src-qt5/desktop-utils/lumina-pdf/mainUI.h \ + --replace '#include <poppler-qt5.h>' '#include <poppler/qt5/poppler-qt5.h>' + + # Fix plugin dir + substituteInPlace src-qt5/core/lumina-theme-engine/lthemeengine.pri \ + --replace "\$\$[QT_INSTALL_PLUGINS]" "$out/$qtPluginPrefix" + + # Fix location of fluxbox styles + substituteInPlace src-qt5/core-utils/lumina-config/pages/page_fluxbox_settings.cpp \ + --replace 'LOS::AppPrefix()+"share/fluxbox' "\"${fluxbox}/share/fluxbox" + ''; + + qmakeFlags = [ + "LINUX_DISTRO=NixOS" + "CONFIG+=WITH_I18N" + "LRELEASE=${stdenv.lib.getDev qttools}/bin/lrelease" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A lightweight, portable desktop environment"; + longDescription = '' + The Lumina Desktop Environment is a lightweight system interface + that is designed for use on any Unix-like operating system. It + is based on QT5. + ''; + homepage = https://lumina-desktop.org; + license = licenses.bsd3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxappearance/default.nix b/nixpkgs/pkgs/desktops/lxde/core/lxappearance/default.nix new file mode 100644 index 000000000000..c06a99eb36c2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxappearance/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, intltool, pkgconfig, libX11, gtk2, withGtk3 ? false, gtk3 }: + +stdenv.mkDerivation rec { + name = "lxappearance-0.6.3"; + + src = fetchurl{ + url = "mirror://sourceforge/project/lxde/LXAppearance/${name}.tar.xz"; + sha256 = "0f4bjaamfxxdr9civvy55pa6vv9dx1hjs522gjbbgx7yp1cdh8kj"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ libX11 (if withGtk3 then gtk3 else gtk2) ]; + + patches = [ ./lxappearance-0.6.3-xdg.system.data.dirs.patch ]; + + configureFlags = stdenv.lib.optional withGtk3 "--enable-gtk3"; + + meta = { + description = "A lightweight program for configuring the theme and fonts of gtk applications"; + homepage = https://lxde.org/; + maintainers = [ stdenv.lib.maintainers.hinton ]; + platforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.gpl2; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxappearance/lxappearance-0.6.3-xdg.system.data.dirs.patch b/nixpkgs/pkgs/desktops/lxde/core/lxappearance/lxappearance-0.6.3-xdg.system.data.dirs.patch new file mode 100644 index 000000000000..a63882aa2a7a --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxappearance/lxappearance-0.6.3-xdg.system.data.dirs.patch @@ -0,0 +1,27 @@ +--- lxappearance-0.6.3/src/widget-theme.c.orig 2016-02-20 20:48:38.000000000 -0200 ++++ lxappearance-0.6.3/src/widget-theme.c 2017-06-09 17:37:53.369555085 -0300 +@@ -66,6 +66,7 @@ + static void load_themes() + { + char* dir; ++ const gchar * const * dirs; + GSList* themes = NULL, *l; + GtkTreeIter sel_it = {0}; + GtkTreeSelection* tree_sel; +@@ -85,6 +86,16 @@ + themes = load_themes_in_dir(dir, themes); + g_free(dir); + ++ /* load from sharedata theme dirs */ ++ dirs = g_get_system_data_dirs(); ++ while (*dirs != NULL) ++ { ++ dir = g_build_filename(*dirs, "themes", NULL); ++ themes = load_themes_in_dir(dir, themes); ++ g_free(dir); ++ dirs++; ++ } ++ + themes = g_slist_sort(themes, (GCompareFunc)strcmp); + for(l = themes; l; l=l->next) + { diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxmenu-data.nix b/nixpkgs/pkgs/desktops/lxde/core/lxmenu-data.nix new file mode 100644 index 000000000000..6e8644b19b0c --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxmenu-data.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, intltool }: + +stdenv.mkDerivation rec { + name = "lxmenu-data-${version}"; + version = "0.1.5"; + + src = fetchurl { + url = "mirror://sourceforge/lxde/${name}.tar.xz"; + sha256 = "9fe3218d2ef50b91190162f4f923d6524c364849f87bcda8b4ed8eb59b80bab8"; + }; + + buildInputs = [ intltool ]; + + meta = { + homepage = https://lxde.org/; + license = stdenv.lib.licenses.gpl2; + description = "Freedesktop.org desktop menus for LXDE"; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxpanel/default.nix b/nixpkgs/pkgs/desktops/lxde/core/lxpanel/default.nix new file mode 100644 index 000000000000..af9570a2c733 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxpanel/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, gettext, m4, intltool, libxmlxx, keybinder +, gtk2, libX11, libfm, libwnck, libXmu, libXpm, cairo, gdk_pixbuf +, menu-cache, lxmenu-data, wirelesstools +, supportAlsa ? false, alsaLib +}: + +stdenv.mkDerivation rec { + name = "lxpanel-0.9.3"; + + src = fetchurl { + url = "mirror://sourceforge/lxde/${name}.tar.xz"; + sha256 = "1ccgv7jgl3y865cpb6w7baaz7468fxncm83bqxlwyni5bwhglb1l"; + }; + + nativeBuildInputs = [ pkgconfig gettext m4 intltool libxmlxx ]; + buildInputs = [ + keybinder gtk2 libX11 libfm libwnck libXmu libXpm cairo gdk_pixbuf + menu-cache lxmenu-data m4 wirelesstools + ] ++ stdenv.lib.optional supportAlsa alsaLib; + + meta = { + description = "Lightweight X11 desktop panel for LXDE"; + homepage = https://lxde.org/; + license = stdenv.lib.licenses.gpl2; + maintainers = [ stdenv.lib.maintainers.ryneeverett ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxrandr/default.nix b/nixpkgs/pkgs/desktops/lxde/core/lxrandr/default.nix new file mode 100644 index 000000000000..49a71987e754 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxrandr/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk2, libX11, xrandr, withGtk3 ? false, gtk3 }: + +stdenv.mkDerivation rec { + name = "lxrandr-0.3.1"; + + src = fetchurl { + url = "mirror://sourceforge/lxde/${name}.tar.xz"; + sha256 = "6d98338485a90d9e47f6d08184df77ca0d9715517f8a45a914e861750589184e"; + }; + + configureFlags = stdenv.lib.optional withGtk3 "--enable-gtk3"; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ libX11 (if withGtk3 then gtk3 else gtk2) xrandr ]; + + meta = with stdenv.lib; { + description = "LXRandR is the standard screen manager of LXDE."; + homepage = https://lxde.org/; + license = stdenv.lib.licenses.gpl2; + maintainers = with maintainers; [ rawkode ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxde/core/lxtask/default.nix b/nixpkgs/pkgs/desktops/lxde/core/lxtask/default.nix new file mode 100644 index 000000000000..ad4b89165fa1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxde/core/lxtask/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, libintl }: + +stdenv.mkDerivation rec { + name = "lxtask-${version}"; + version = "0.1.8"; + + src = fetchurl { + url = "mirror://sourceforge/lxde/${name}.tar.xz"; + sha256 = "0h7g1fdngv939z1d05nzs86dplww5a3bpm0isxd7p1bjby047d6z"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ gtk3 libintl ]; + + configureFlags = [ "--enable-gtk3" ]; + + meta = { + description = "Lightweight and desktop independent task manager"; + longDescription = '' + LXTask is a lightweight task manager derived from xfce4 task manager + with all xfce4 dependencies removed, some bugs fixed, and some + improvement of UI. Although being part of LXDE, the Lightweight X11 + Desktop Environment, it's totally desktop independent and only + requires pure gtk+. + ''; + homepage = https://wiki.lxde.org/en/LXTask; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix b/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix new file mode 100644 index 000000000000..479491b35d80 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/compton-conf/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, lxqt, + libconfig }: + +stdenv.mkDerivation rec { + pname = "compton-conf"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1vxbh0vr7wknr7rbmdbmy5md1fdkw3zwlgpbv16cwdplbv9m97xi"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt.lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + libconfig + ]; + + preConfigure = '' + substituteInPlace autostart/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" \ + ''; + + meta = with stdenv.lib; { + description = "GUI configuration tool for compton X composite manager"; + homepage = https://github.com/lxqt/compton-conf; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/default.nix b/nixpkgs/pkgs/desktops/lxqt/default.nix new file mode 100644 index 000000000000..db21a72cb9b1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/default.nix @@ -0,0 +1,109 @@ +{ pkgs, makeScope, libsForQt5 }: + +let + packages = self: with self; { + + # For compiling information, see: + # - https://github.com/lxqt/lxqt/wiki/Building-from-source + + ### BASE + libqtxdg = callPackage ./libqtxdg { }; + lxqt-build-tools = callPackage ./lxqt-build-tools { }; + libsysstat = callPackage ./libsysstat { }; + liblxqt = callPackage ./liblxqt { }; + + ### CORE 1 + libfm-qt = callPackage ./libfm-qt { }; + lxqt-about = callPackage ./lxqt-about { }; + lxqt-admin = callPackage ./lxqt-admin { }; + lxqt-config = callPackage ./lxqt-config { }; + lxqt-globalkeys = callPackage ./lxqt-globalkeys { }; + lxqt-notificationd = callPackage ./lxqt-notificationd { }; + lxqt-openssh-askpass = callPackage ./lxqt-openssh-askpass { }; + lxqt-policykit = callPackage ./lxqt-policykit { }; + lxqt-powermanagement = callPackage ./lxqt-powermanagement { }; + lxqt-qtplugin = callPackage ./lxqt-qtplugin { }; + lxqt-session = callPackage ./lxqt-session { }; + lxqt-sudo = callPackage ./lxqt-sudo { }; + lxqt-themes = callPackage ./lxqt-themes { }; + pavucontrol-qt = libsForQt5.callPackage ./pavucontrol-qt { }; + qtermwidget = callPackage ./qtermwidget { }; + + ### CORE 2 + lxqt-panel = callPackage ./lxqt-panel { }; + lxqt-runner = callPackage ./lxqt-runner { }; + pcmanfm-qt = callPackage ./pcmanfm-qt { }; + + ### OPTIONAL + qterminal = callPackage ./qterminal { }; + compton-conf = pkgs.qt5.callPackage ./compton-conf { }; + obconf-qt = callPackage ./obconf-qt { }; + lximage-qt = callPackage ./lximage-qt { }; + qps = callPackage ./qps { }; + screengrab = callPackage ./screengrab { }; + qlipper = callPackage ./qlipper { }; + + preRequisitePackages = [ + pkgs.gvfs # virtual file systems support for PCManFM-QT + pkgs.libsForQt5.kwindowsystem # provides some QT5 plugins needed by lxqt-panel + pkgs.libsForQt5.libkscreen # provides plugins for screen management software + pkgs.libfm + pkgs.libfm-extra + pkgs.lxmenu-data + pkgs.menu-cache + pkgs.openbox # default window manager + pkgs.qt5.qtsvg # provides QT5 plugins for svg icons + ]; + + corePackages = [ + ### BASE + libqtxdg + libsysstat + liblxqt + + ### CORE 1 + libfm-qt + lxqt-about + lxqt-admin + lxqt-config + lxqt-globalkeys + lxqt-notificationd + lxqt-openssh-askpass + lxqt-policykit + lxqt-powermanagement + lxqt-qtplugin + lxqt-session + lxqt-sudo + lxqt-themes + pavucontrol-qt + + ### CORE 2 + lxqt-panel + lxqt-runner + pcmanfm-qt + ]; + + optionalPackages = [ + ### LXQt project + qterminal + compton-conf + obconf-qt + lximage-qt + + ### QtDesktop project + qps + screengrab + + ### Qlipper + qlipper + + ### Default icon theme + pkgs.oxygen-icons5 + + ### Screen saver + pkgs.xscreensaver + ]; + + }; + +in makeScope libsForQt5.newScope packages diff --git a/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix new file mode 100644 index 000000000000..70675e1408cf --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/libfm-qt/default.nix @@ -0,0 +1,43 @@ +{ + stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, + pcre, libexif, xorg, libfm, menu-cache, + qtx11extras, qttools +}: + +stdenv.mkDerivation rec { + pname = "libfm-qt"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1siqqn4waglymfi7c7lrmlxkylddw8qz0qfwqxr1hnmx3dsj9c36"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + pcre + libexif + xorg.libpthreadstubs + xorg.libxcb + xorg.libXdmcp + qtx11extras + qttools + libfm + menu-cache + ]; + + meta = with stdenv.lib; { + description = "Core library of PCManFM-Qt (Qt binding for libfm)"; + homepage = https://github.com/lxqt/libfm-qt; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix b/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix new file mode 100644 index 000000000000..1b19275ece92 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/liblxqt/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, + qttools, qtsvg, libqtxdg, polkit-qt, kwindowsystem, xorg }: + +stdenv.mkDerivation rec { + pname = "liblxqt"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1cpl6sd2fifpflahm8fvrrscrv03sinfm03m7yc1k59y6nsbwi36"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtx11extras + qttools + qtsvg + polkit-qt + kwindowsystem + libqtxdg + xorg.libXScrnSaver + ]; + + cmakeFlags = [ + "-DLXQT_ETC_XDG_DIR=/run/current-system/sw/etc/xdg" + ]; + + postPatch = '' + sed -i 's|set(LXQT_SHARE_DIR .*)|set(LXQT_SHARE_DIR "/run/current-system/sw/share/lxqt")|' CMakeLists.txt + sed -i "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" CMakeLists.txt + substituteInPlace CMakeLists.txt \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + ''; + + meta = with stdenv.lib; { + description = "Core utility library for all LXQt components"; + homepage = https://github.com/lxqt/liblxqt; + license = licenses.lgpl21Plus; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix b/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix new file mode 100644 index 000000000000..852c4bddec83 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/libqtxdg/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub, cmake, qtbase, qtsvg }: + +stdenv.mkDerivation rec { + pname = "libqtxdg"; + version = "3.3.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0qgqqgy15h0d1fwk4mnbv2hirz8njjjlng64bv33rc6wwrsaa50b"; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ qtbase qtsvg ]; + + preConfigure = '' + cmakeFlagsArray+=( + "-DQTXDGX_ICONENGINEPLUGIN_INSTALL_PATH=$out/$qtPluginPrefix" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + "-DCMAKE_INSTALL_LIBDIR=lib" + ) + ''; + + meta = with stdenv.lib; { + description = "Qt implementation of freedesktop.org xdg specs"; + homepage = https://github.com/lxqt/libqtxdg; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix b/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix new file mode 100644 index 000000000000..74fa1b03fa6b --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/libsysstat/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub, cmake, qtbase, lxqt-build-tools }: + +stdenv.mkDerivation rec { + pname = "libsysstat"; + version = "0.4.2"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "10h9n7km7yx8bnmzxi4nn1yqq03hizjkrx4745j0mczy7niiffsz"; + }; + + nativeBuildInputs = [ cmake lxqt-build-tools ]; + + buildInputs = [ qtbase ]; + + meta = with stdenv.lib; { + description = "Library used to query system info and statistics"; + homepage = https://github.com/lxqt/libsysstat; + license = licenses.lgpl21Plus; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix new file mode 100644 index 000000000000..a0a83ad3469a --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lximage-qt/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, + qtx11extras, qtsvg, xorg, lxqt-build-tools, libfm-qt, libexif }: + +stdenv.mkDerivation rec { + pname = "lximage-qt"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0zx9903ym5a9zk4m9khr22fj5sy57mg2v8wnk177wjm11lhic5v8"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + libfm-qt + xorg.libpthreadstubs + xorg.libXdmcp + libexif + ]; + + meta = with stdenv.lib; { + description = "The image viewer and screenshot tool for lxqt"; + homepage = https://github.com/lxqt/lximage-qt; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix new file mode 100644 index 000000000000..013be8eea4f9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-about/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg }: + +stdenv.mkDerivation rec { + pname = "lxqt-about"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "14b13v1r5ncz4ycg25ac9ppafiifc37qws8kcw078if72rp9n121"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtx11extras + qttools + qtsvg + kwindowsystem + liblxqt + libqtxdg + ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + ''; + + meta = with stdenv.lib; { + description = "Dialogue window providing information about LXQt and the system it's running on"; + homepage = https://github.com/lxqt/lxqt-about; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix new file mode 100644 index 000000000000..528f9a390f92 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-admin/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtx11extras, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, polkit-qt }: + +stdenv.mkDerivation rec { + pname = "lxqt-admin"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0sdb514hgha5yvmbzi6nm1yx1rmbkh5fam09ybidjwpdwl2l4pxx"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtx11extras + qttools + qtsvg + kwindowsystem + liblxqt + libqtxdg + polkit-qt + ]; + + postPatch = '' + sed "s|\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}|''${out}/share/polkit-1/actions|" \ + -i lxqt-admin-user/CMakeLists.txt + + for f in lxqt-admin-{user,time}/CMakeLists.txt; do + substituteInPlace $f \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + done + ''; + + meta = with stdenv.lib; { + description = "LXQt system administration tool"; + homepage = https://github.com/lxqt/lxqt-admin; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix new file mode 100644 index 000000000000..f55fa579ff45 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-build-tools/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, glib }: + +stdenv.mkDerivation rec { + pname = "lxqt-build-tools"; + version = "0.6.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0i7m9s4g5rsw28vclc9nh0zcapx85cqfwxkx7rrw7wa12svy7pm2"; + }; + + nativeBuildInputs = [ cmake pkgconfig ]; + + buildInputs = [ qtbase glib pcre ]; + + preConfigure = ''cmakeFlags+=" -DLXQT_ETC_XDG_DIR=$out/etc/xdg"''; + + meta = with stdenv.lib; { + description = "Various packaging tools and scripts for LXQt applications"; + homepage = https://github.com/lxqt/lxqt-build-tools; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix new file mode 100644 index 000000000000..d2c583b53fa9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-config/default.nix @@ -0,0 +1,69 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, + qtx11extras, qttools, qtsvg, kwindowsystem, libkscreen, liblxqt, + libqtxdg, xorg }: + +stdenv.mkDerivation rec { + pname = "lxqt-config"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1pp2pw43zh8kwi2cxk909wn6bw7kba95b6bv96l2gmzhdqpfw2a7"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qtx11extras + qttools + qtsvg + kwindowsystem + libkscreen + liblxqt + libqtxdg + xorg.libpthreadstubs + xorg.libXdmcp + xorg.libXScrnSaver + xorg.libxcb + xorg.libXcursor + xorg.xf86inputlibinput + xorg.xf86inputlibinput.dev + ]; + + postPatch = '' + substituteInPlace src/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + + for f in \ + lxqt-config-file-associations/CMakeLists.txt \ + lxqt-config-brightness/CMakeLists.txt \ + lxqt-config-appearance/CMakeLists.txt \ + lxqt-config-locale/CMakeLists.txt \ + lxqt-config-monitor/CMakeLists.txt \ + lxqt-config-input/CMakeLists.txt \ + liblxqt-config-cursor/CMakeLists.txt \ + src/CMakeLists.txt + do + substituteInPlace $f \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + done + + sed -i "/\''${XORG_LIBINPUT_INCLUDE_DIRS}/a ${xorg.xf86inputlibinput.dev}/include/xorg" lxqt-config-input/CMakeLists.txt + ''; + + meta = with stdenv.lib; { + description = "Tools to configure LXQt and the underlying operating system"; + homepage = https://github.com/lxqt/lxqt-config; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; + +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix new file mode 100644 index 000000000000..5382be304ae3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-globalkeys/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg }: + +stdenv.mkDerivation rec { + pname = "lxqt-globalkeys"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "14bfkh54mn3jyq8g9ipy3xmc3n9lmlqpvm26kpqig7567hbncv7n"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + liblxqt + libqtxdg + ]; + + postPatch = '' + for dir in autostart xdg; do + substituteInPlace $dir/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + done + + substituteInPlace config/CMakeLists.txt \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + ''; + + meta = with stdenv.lib; { + description = "Daemon used to register global keyboard shortcuts"; + homepage = https://github.com/lxqt/lxqt-globalkeys; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix new file mode 100644 index 000000000000..53826f62bccf --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-notificationd/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, qtx11extras }: + +stdenv.mkDerivation rec { + pname = "lxqt-notificationd"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1nawcxy2qnrngcxvwjwmmh4fn7mhnfgy1g77rn90243jvy29wv5f"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + postPatch = '' + substituteInPlace autostart/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + + for f in {config,src}/CMakeLists.txt; do + substituteInPlace $f \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + done + ''; + + buildInputs = [ + qtbase + qttools + qtsvg + kwindowsystem + liblxqt + libqtxdg + qtx11extras + ]; + + meta = with stdenv.lib; { + description = "The LXQt notification daemon"; + homepage = https://github.com/lxqt/lxqt-notificationd; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix new file mode 100644 index 000000000000..f880aed63f8a --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg }: + +stdenv.mkDerivation rec { + pname = "lxqt-openssh-askpass"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "19xcc6i7jg35780r4dfg4vwfp9x4pz5sqzagxnpzspz61jaj5ibv"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + liblxqt + libqtxdg + ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + ''; + + meta = with stdenv.lib; { + description = "GUI to query passwords on behalf of SSH agents"; + homepage = https://github.com/lxqt/lxqt-openssh-askpass; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix new file mode 100644 index 000000000000..f691357f25f6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-panel/default.nix @@ -0,0 +1,73 @@ +{ + stdenv, fetchFromGitHub, + cmake, pkgconfig, lxqt-build-tools, + qtbase, qttools, qtx11extras, qtsvg, libdbusmenu, kwindowsystem, solid, + kguiaddons, liblxqt, libqtxdg, lxqt-globalkeys, libsysstat, + xorg, libstatgrab, lm_sensors, libpulseaudio, alsaLib, menu-cache, + lxmenu-data, pcre, libXdamage +}: + +stdenv.mkDerivation rec { + pname = "lxqt-panel"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0jr7ylf6d35m0ckn884arjk4armknnw8iyph00gcphn5bqycbn8l"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + libdbusmenu + kwindowsystem + solid + kguiaddons + liblxqt + libqtxdg + lxqt-globalkeys + libsysstat + xorg.libpthreadstubs + xorg.libXdmcp + libstatgrab + lm_sensors + libpulseaudio + alsaLib + menu-cache + lxmenu-data + pcre + libXdamage + ]; + + postPatch = '' + for dir in autostart menu; do + substituteInPlace $dir/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + done + substituteInPlace panel/CMakeLists.txt \ + --replace "DESTINATION \''${LXQT_ETC_XDG_DIR}" "DESTINATION etc/xdg" + + for f in cmake/BuildPlugin.cmake panel/CMakeLists.txt; do + substituteInPlace $f \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + done + ''; + + meta = with stdenv.lib; { + description = "The LXQt desktop panel"; + homepage = https://github.com/lxqt/lxqt-panel; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix new file mode 100644 index 000000000000..862e0c08cedf --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-policykit/default.nix @@ -0,0 +1,51 @@ +{ + stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, + qtbase, qttools, qtx11extras, qtsvg, polkit-qt, kwindowsystem, liblxqt, + libqtxdg, pcre +}: + +stdenv.mkDerivation rec { + pname = "lxqt-policykit"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "05k39819nsdyg2pp1vk6g2hdpxqp78h6bhb0hp5rclf9ap5fpvvc"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + polkit-qt + kwindowsystem + liblxqt + libqtxdg + pcre + ]; + + postPatch = '' + substituteInPlace autostart/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + + substituteInPlace CMakeLists.txt \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + ''; + + meta = with stdenv.lib; { + description = "The LXQt PolicyKit agent"; + homepage = https://github.com/lxqt/lxqt-policykit; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix new file mode 100644 index 000000000000..9ebff5d4de58 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, solid, kidletime, liblxqt, libqtxdg }: + +stdenv.mkDerivation rec { + pname = "lxqt-powermanagement"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "08xdnb54lji09izzzfip8fw0gp17qkx66jm6i04zby4whx4mqniv"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + solid + kidletime + liblxqt + libqtxdg + ]; + + postPatch = '' + substituteInPlace autostart/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + + for f in {config,src}/CMakeLists.txt; do + substituteInPlace $f \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + done + ''; + + meta = with stdenv.lib; { + description = "Power management module for LXQt"; + homepage = https://github.com/lxqt/lxqt-powermanagement; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix new file mode 100644 index 000000000000..82f393cf8d52 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-qtplugin/default.nix @@ -0,0 +1,45 @@ +{ + stdenv, fetchFromGitHub, + cmake, lxqt-build-tools, + qtbase, qtx11extras, qttools, qtsvg, libdbusmenu, libqtxdg, libfm-qt +}: + +stdenv.mkDerivation rec { + pname = "lxqt-qtplugin"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "16n50lxnya03zcviw65sy5dyg9dsrn64k91mrqfvraf6d90md4al"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qtx11extras + qttools + qtsvg + libdbusmenu + libqtxdg + libfm-qt + ]; + + postPatch = '' + substituteInPlace src/CMakeLists.txt \ + --replace "DESTINATION \"\''${QT_PLUGINS_DIR}" "DESTINATION \"$qtPluginPrefix" + ''; + + meta = with stdenv.lib; { + description = "LXQt Qt platform integration plugin"; + homepage = https://github.com/lxqt/lxqt-qtplugin; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix new file mode 100644 index 000000000000..dc2d8c58cafe --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-runner/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, kwindowsystem, liblxqt, libqtxdg, lxqt-globalkeys, qtx11extras, +menu-cache, muparser, pcre }: + +stdenv.mkDerivation rec { + pname = "lxqt-runner"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1qyacig9ksnjrhws8cpk6arlaxn7kl0z39l3c62ql3m89mibsm88"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtsvg + qtx11extras + kwindowsystem + liblxqt + libqtxdg + lxqt-globalkeys + menu-cache + muparser + pcre + ]; + + postPatch = '' + substituteInPlace autostart/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + + substituteInPlace CMakeLists.txt \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + ''; + + meta = with stdenv.lib; { + description = "Tool used to launch programs quickly by typing their names"; + homepage = https://github.com/lxqt/lxqt-runner; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix new file mode 100644 index 000000000000..5b4d7b606c75 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-session/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt-build-tools, qtbase, qttools, qtsvg, qtx11extras, kwindowsystem, liblxqt, libqtxdg, xorg, xdg-user-dirs }: + +stdenv.mkDerivation rec { + pname = "lxqt-session"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0nla1ki23p1bwzw5hbmh9l8yg3b0f55kflgnvyfakmvpivjbz3k6"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtsvg + qtx11extras + kwindowsystem + liblxqt + libqtxdg + xorg.libpthreadstubs + xorg.libXdmcp + xdg-user-dirs + ]; + + postPatch = '' + for dir in autostart config; do + substituteInPlace $dir/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + done + + for f in lxqt-{config-session,leave,session}/CMakeLists.txt; do + substituteInPlace $f \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + done + ''; + + meta = with stdenv.lib; { + description = "An alternative session manager ported from the original razor-session"; + homepage = https://github.com/lxqt/lxqt-session; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix new file mode 100644 index 000000000000..7e3ca84109fd --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-sudo/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, liblxqt, libqtxdg, sudo }: + +stdenv.mkDerivation rec { + pname = "lxqt-sudo"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0l8fq06kfsrmvg2fr8lqdsxr6fwxmxsa9zwaa3fs9inzaylm0jkh"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + liblxqt + libqtxdg + sudo + ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace "\''${LXQT_TRANSLATIONS_DIR}" "''${out}/share/lxqt/translations" + ''; + + meta = with stdenv.lib; { + description = "GUI frontend for sudo/su"; + homepage = https://github.com/lxqt/lxqt-sudo; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix b/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix new file mode 100644 index 000000000000..02591b9eb86e --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/lxqt-themes/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools }: + +stdenv.mkDerivation rec { + pname = "lxqt-themes"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "09dkcgnf3lmfly8v90p6wjlj5rin83pbailvvpx2jr8a48a8zb9f"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_GRAPHICS_DIR}" "DESTINATION \"share/lxqt/graphics" + substituteInPlace themes/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_SHARE_DIR}" "DESTINATION \"share/lxqt" + ''; + + meta = with stdenv.lib; { + description = "Themes, graphics and icons for LXQt"; + homepage = https://github.com/lxqt/lxqt-themes; + license = licenses.lgpl21; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix new file mode 100644 index 000000000000..a0d0a973ad7e --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/obconf-qt/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, pcre, qtbase, qttools, + qtx11extras, xorg, lxqt-build-tools, openbox, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + pname = "obconf-qt"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "00v5w8qr3vs0k91flij9lz7y1cpp2g8ivgnmmm43ymjfiz5j6l27"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt-build-tools + ]; + + buildInputs = [ + pcre + qtbase + qttools + qtx11extras + xorg.libpthreadstubs + xorg.libXdmcp + xorg.libSM + openbox + hicolor-icon-theme + ]; + + meta = with stdenv.lib; { + description = "The Qt port of obconf, the Openbox configuration tool"; + homepage = https://github.com/lxqt/obconf-qt; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix new file mode 100644 index 000000000000..dcc3ead31bfd --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/pavucontrol-qt/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt, libpulseaudio, + pcre, qtbase, qttools, qtx11extras }: + +stdenv.mkDerivation rec { + pname = "pavucontrol-qt"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1vyjm6phgbxglk65c889bd73b0p2ffb5bsc89dmb07qzllyrjb4h"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt.lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + libpulseaudio + pcre + ]; + + meta = with stdenv.lib; { + description = "A Pulseaudio mixer in Qt (port of pavucontrol)"; + homepage = https://github.com/lxqt/pavucontrol-qt; + license = licenses.gpl2; + platforms = with platforms; linux; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix b/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix new file mode 100644 index 000000000000..aa7479b02f83 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/pcmanfm-qt/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, lxqt, qtbase, qttools, + qtx11extras, libfm-qt, menu-cache, lxmenu-data }: + +stdenv.mkDerivation rec { + pname = "pcmanfm-qt"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0hf4qyn12mpr6rrla9mf6ka5gb4y36amk7d14ayr7yka1r16p8lz"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + lxqt.lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + libfm-qt + libfm-qt + menu-cache + lxmenu-data + ]; + + postPatch = '' + for dir in autostart config; do + substituteInPlace $dir/CMakeLists.txt \ + --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" + done + ''; + + meta = with stdenv.lib; { + description = "File manager and desktop icon manager (Qt port of PCManFM and libfm)"; + homepage = https://github.com/lxqt/pcmanfm-qt; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix b/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix new file mode 100644 index 000000000000..f5bdcf064fd8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/qlipper/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, cmake, qtbase, qttools }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "qlipper"; + version = "5.1.1"; + + src = fetchFromGitHub { + owner = "pvanek"; + repo = pname; + rev = version; + sha256 = "0vlm4ab9isi7i2bimnyrk6083j2dfdrs14qj59vjcjri7mcwmf76"; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ qtbase qttools ]; + + meta = with stdenv.lib; { + description = "Cross-platform clipboard history applet"; + homepage = https://github.com/pvanek/qlipper; + license = licenses.gpl2Plus; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/qps/default.nix b/nixpkgs/pkgs/desktops/lxqt/qps/default.nix new file mode 100644 index 000000000000..d46b7e14e33b --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/qps/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, cmake, qtbase, qtx11extras, qttools, + lxqt-build-tools }: + +stdenv.mkDerivation rec { + pname = "qps"; + version = "1.10.19"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1vyi1vw4z5j2sp9yhhv91wl2sbg4fh0djqslg1ssc7fww2ka6dx3"; + }; + + nativeBuildInputs = [ cmake lxqt-build-tools ]; + + buildInputs = [ qtbase qtx11extras qttools ]; + + meta = with stdenv.lib; { + description = "The Qt process manager"; + homepage = https://github.com/lxqt/qps; + license = licenses.gpl2; + maintainers = with maintainers; [ romildo ]; + platforms = with platforms; unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix b/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix new file mode 100644 index 000000000000..f9a2e5ff0a14 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/qterminal/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, cmake, lxqt-build-tools, qtermwidget, + qtbase, qttools, qtx11extras }: + +stdenv.mkDerivation rec { + pname = "qterminal"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "071qz248j9gcqzchnrz8xamm07g4r2xyrmnb0a2vjkjd63pk2r8f"; + }; + + nativeBuildInputs = [ + cmake + lxqt-build-tools + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtermwidget + ]; + + meta = with stdenv.lib; { + description = "A lightweight Qt-based terminal emulator"; + homepage = https://github.com/lxqt/qterminal; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix b/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix new file mode 100644 index 000000000000..9e0798ecb52a --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/qtermwidget/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub, cmake, qtbase, qttools, lxqt-build-tools }: + +stdenv.mkDerivation rec { + pname = "qtermwidget"; + version = "0.14.0"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "0wv8fssbc2w7kkpq9ngsa8wyjraggdhsbz36gyxyv8fy5m78jq0n"; + }; + + nativeBuildInputs = [ cmake lxqt-build-tools ]; + + buildInputs = [ qtbase qttools]; + + meta = with stdenv.lib; { + description = "A terminal emulator widget for Qt 5"; + homepage = https://github.com/lxqt/qtermwidget; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix b/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix new file mode 100644 index 000000000000..cc7f113b7d19 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/screengrab/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, qtbase, qttools, qtx11extras, qtsvg, kwindowsystem, libqtxdg, xorg, autoPatchelfHook }: + +stdenv.mkDerivation rec { + pname = "screengrab"; + version = "1.100"; + + src = fetchFromGitHub { + owner = "lxqt"; + repo = pname; + rev = version; + sha256 = "1iqrmf581x9ab6zzjxm2509gg6fkn7hwril4v0aki7n7dgxw1c4g"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + autoPatchelfHook # fix libuploader.so and libextedit.so not found + ]; + + buildInputs = [ + qtbase + qttools + qtx11extras + qtsvg + kwindowsystem + libqtxdg + xorg.libpthreadstubs + xorg.libXdmcp + ]; + + meta = with stdenv.lib; { + description = "Crossplatform tool for fast making screenshots"; + homepage = https://github.com/lxqt/screengrab; + license = licenses.gpl2; + platforms = with platforms; unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/lxqt/update.sh b/nixpkgs/pkgs/desktops/lxqt/update.sh new file mode 100755 index 000000000000..f3dfc4d59758 --- /dev/null +++ b/nixpkgs/pkgs/desktops/lxqt/update.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p libarchive curl common-updater-scripts + +set -eu -o pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" +root=../../.. +export NIXPKGS_ALLOW_UNFREE=1 + +lxqt_version=0.14.0 +lxqtrepo=https://downloads.lxqt.org/${lxqt_version}.html + +version() { + (cd "$root" && nix-instantiate --eval --strict -A "$1.version" 2>/dev/null | tr -d '"') +} + +update_lxqt() { + local pname + local pversion + curl -sS ${lxqtrepo} | sed -rne 's|.*<a href=.*>(.+) (.+)</a><br>|\1 \2|p' | + while read pname pversion; do + local pversionold=$(version lxqt.$pname) + if [[ "$pversion" = "$pversionold" ]]; then + echo "nothing to do, $pname $pversion is current" + else + echo "$pname: $pversionold -> $pversion" + (cd "$root" + local pfile=$(EDITOR=echo nix edit -f. lxqt.$pname 2>/dev/null) + update-source-version lxqt.$pname "$pversion" + git add $pfile + git commit -m "lxqt.$pname: $pversionold -> $pversion" + ) + fi + echo + done + echo DONE +} + +update_lxqt diff --git a/nixpkgs/pkgs/desktops/mate/atril/default.nix b/nixpkgs/pkgs/desktops/mate/atril/default.nix new file mode 100644 index 000000000000..57f721f49a28 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/atril/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libxml2, libsecret, poppler, itstool, hicolor-icon-theme, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "atril-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "https://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "00vrqyfk370fdhlfv3m6n0l6hnx30hrsrcg1xja03957cgvcvnvr"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + glib + itstool + libsecret + libxml2 + poppler + mate.caja + mate.mate-desktop + hicolor-icon-theme + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + makeFlags = [ "cajaextensiondir=$$out/lib/caja/extensions-2.0" ]; + + meta = { + description = "A simple multi-page document viewer for the MATE desktop"; + homepage = http://mate-desktop.org; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix b/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix new file mode 100644 index 000000000000..f84fe2fef2eb --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja-dropbox/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, mate, pythonPackages }: + +stdenv.mkDerivation rec { + name = "caja-dropbox-${version}"; + version = "1.20.0"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0xjqcfi5n6hsfyw77blplkn30as0slkfzngxid1n6z7jz5yjq7vj"; + }; + + nativeBuildInputs = [ + pkgconfig + ]; + + buildInputs = [ + gtk3 + mate.caja + pythonPackages.python + pythonPackages.pygtk + pythonPackages.docutils + ]; + + configureFlags = [ "--with-caja-extension-dir=$$out/lib/caja/extensions-2.0" ]; + + meta = with stdenv.lib; { + description = "Dropbox extension for Caja file manager"; + homepage = https://github.com/mate-desktop/caja-dropbox; + license = with licenses; [ gpl3 cc-by-nd-30 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix b/nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix new file mode 100644 index 000000000000..64ef0cb57f27 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja-extensions/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, dbus-glib, gupnp, mate, imagemagick, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "caja-extensions-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "14w1xd33ggn6wdzqvcmj8rqc68w4k094lai6mqrgmv1zljifydqz"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + dbus-glib + gupnp + mate.caja + mate.mate-desktop + imagemagick + ]; + + postPatch = '' + for f in image-converter/caja-image-{resizer,rotator}.c; do + substituteInPlace $f --replace "/usr/bin/convert" "${imagemagick}/bin/convert" + done + ''; + + configureFlags = [ "--with-cajadir=$$out/lib/caja/extensions-2.0" ]; + + meta = with stdenv.lib; { + description = "Set of extensions for Caja file manager"; + homepage = http://mate-desktop.org; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch b/nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch new file mode 100644 index 000000000000..7490a368efd9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja/caja-extension-dirs.patch @@ -0,0 +1,30 @@ +diff --git a/libcaja-private/caja-module.c b/libcaja-private/caja-module.c +index 023c22e..414913b 100644 +--- a/libcaja-private/caja-module.c ++++ b/libcaja-private/caja-module.c +@@ -258,11 +258,25 @@ caja_module_setup (void) + { + static gboolean initialized = FALSE; + GList *res; ++ gchar *caja_extension_dirs; ++ gchar **dir_vector; + + if (!initialized) + { + initialized = TRUE; + ++ caja_extension_dirs = (gchar *) g_getenv ("CAJA_EXTENSION_DIRS"); ++ ++ if (caja_extension_dirs) ++ { ++ dir_vector = g_strsplit (caja_extension_dirs, G_SEARCHPATH_SEPARATOR_S, 0); ++ ++ for (gchar **dir = dir_vector; *dir != NULL; ++ dir) ++ load_module_dir (*dir); ++ ++ g_strfreev(dir_vector); ++ } ++ + load_module_dir (CAJA_EXTENSIONDIR); + + eel_debug_call_at_shutdown (free_module_objects); diff --git a/nixpkgs/pkgs/desktops/mate/caja/default.nix b/nixpkgs/pkgs/desktops/mate/caja/default.nix new file mode 100644 index 000000000000..130d44d6a1a1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/caja/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, libnotify, libxml2, libexif, exempi, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "caja-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "1wlrhcvhqving3pphbz50xnbp7z57mlkf7m36lfh8mim62kfmmd0"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libnotify + libxml2 + libexif + exempi + mate.mate-desktop + hicolor-icon-theme + ]; + + patches = [ + ./caja-extension-dirs.patch + ]; + + configureFlags = [ "--disable-update-mimedb" ]; + + meta = { + description = "File manager for the MATE desktop"; + homepage = http://mate-desktop.org; + license = with stdenv.lib.licenses; [ gpl2 lgpl2 ]; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/default.nix b/nixpkgs/pkgs/desktops/mate/default.nix new file mode 100644 index 000000000000..7441a8f73ae7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/default.nix @@ -0,0 +1,96 @@ +{ pkgs, newScope }: + +let + callPackage = newScope self; + + self = rec { + + getRelease = version: + pkgs.stdenv.lib.concatStringsSep "." (pkgs.stdenv.lib.take 2 (pkgs.stdenv.lib.splitString "." version)); + + atril = callPackage ./atril { }; + caja = callPackage ./caja { }; + caja-dropbox = callPackage ./caja-dropbox { }; + caja-extensions = callPackage ./caja-extensions { }; + engrampa = callPackage ./engrampa { }; + eom = callPackage ./eom { }; + libmatekbd = callPackage ./libmatekbd { }; + libmatemixer = callPackage ./libmatemixer { }; + libmateweather = callPackage ./libmateweather { }; + marco = callPackage ./marco { }; + mate-applets = callPackage ./mate-applets { }; + mate-backgrounds = callPackage ./mate-backgrounds { }; + mate-calc = callPackage ./mate-calc { }; + mate-common = callPackage ./mate-common { }; + mate-control-center = callPackage ./mate-control-center { }; + mate-desktop = callPackage ./mate-desktop { }; + mate-icon-theme = callPackage ./mate-icon-theme { }; + mate-icon-theme-faenza = callPackage ./mate-icon-theme-faenza { }; + mate-indicator-applet = callPackage ./mate-indicator-applet { }; + mate-media = callPackage ./mate-media { }; + mate-menus = callPackage ./mate-menus { }; + mate-netbook = callPackage ./mate-netbook { }; + mate-notification-daemon = callPackage ./mate-notification-daemon { }; + mate-panel = callPackage ./mate-panel { }; + mate-polkit = callPackage ./mate-polkit { }; + mate-power-manager = callPackage ./mate-power-manager { }; + mate-sensors-applet = callPackage ./mate-sensors-applet { }; + mate-session-manager = callPackage ./mate-session-manager { }; + mate-settings-daemon = callPackage ./mate-settings-daemon { }; + mate-screensaver = callPackage ./mate-screensaver { }; + mate-system-monitor = callPackage ./mate-system-monitor { }; + mate-terminal = callPackage ./mate-terminal { }; + mate-themes = callPackage ./mate-themes { }; + mate-user-guide = callPackage ./mate-user-guide { }; + mate-user-share = callPackage ./mate-user-share { }; + mate-utils = callPackage ./mate-utils { }; + mozo = callPackage ./mozo { }; + pluma = callPackage ./pluma { }; + python-caja = callPackage ./python-caja { }; + + basePackages = [ + caja + libmatekbd + libmatemixer + libmateweather + marco + mate-common + mate-control-center + mate-desktop + mate-icon-theme + mate-menus + mate-notification-daemon + mate-panel + mate-polkit + mate-session-manager + mate-settings-daemon + mate-themes + ]; + + extraPackages = [ + atril + caja-extensions + engrampa + eom + mate-applets + mate-backgrounds + mate-calc + mate-icon-theme-faenza + mate-indicator-applet + mate-media + mate-netbook + mate-power-manager + mate-screensaver + mate-sensors-applet + mate-system-monitor + mate-terminal + mate-user-guide + # mate-user-share + mate-utils + mozo + pluma + ]; + + }; + +in self diff --git a/nixpkgs/pkgs/desktops/mate/engrampa/default.nix b/nixpkgs/pkgs/desktops/mate/engrampa/default.nix new file mode 100644 index 000000000000..1989ac8e12cc --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/engrampa/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, gnome3, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "engrampa-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0fj957dfagw6p7mq5545h9j2w3hv18yqnkpypnr719r4g13d3f2v"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + buildInputs = [ + libxml2 + gnome3.gtk + mate.caja + hicolor-icon-theme + mate.mate-desktop + ]; + + configureFlags = [ "--with-cajadir=$$out/lib/caja/extensions-2.0" ]; + + meta = { + description = "Archive Manager for MATE"; + homepage = http://mate-desktop.org; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/eom/default.nix b/nixpkgs/pkgs/desktops/mate/eom/default.nix new file mode 100644 index 000000000000..3b830f73c76a --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/eom/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, dbus-glib, exempi, lcms2, libexif, libjpeg, librsvg, libxml2, shared-mime-info, gnome3, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "eom-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0440sfbidizn860w5avgwld08qc2fslrm0nx2659651cf3r7rw05"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + buildInputs = [ + dbus-glib + exempi + lcms2 + libexif + libjpeg + librsvg + libxml2 + shared-mime-info + gnome3.gtk + gnome3.libpeas + mate.mate-desktop + hicolor-icon-theme + ]; + + meta = { + description = "An image viewing and cataloging program for the MATE desktop"; + homepage = http://mate-desktop.org; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix b/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix new file mode 100644 index 000000000000..15b81a628863 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/libmatekbd/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, mate, libxklavier }: + +stdenv.mkDerivation rec { + name = "libmatekbd-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "1l1zbphs4snswf4bkrwkk6gsmb44bdhymcfgaaspzbrcmw3y7hr1"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ gtk3 libxklavier ]; + + meta = with stdenv.lib; { + description = "Keyboard management library for MATE"; + homepage = https://github.com/mate-desktop/libmatekbd; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix b/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix new file mode 100644 index 000000000000..8bf0d9bec18c --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/libmatemixer/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, mate +, alsaSupport ? stdenv.isLinux, alsaLib +, pulseaudioSupport ? stdenv.config.pulseaudio or true, libpulseaudio +, ossSupport ? false + }: + +stdenv.mkDerivation rec { + name = "libmatemixer-${version}"; + version = "1.20.1"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "00p67mi0flsbgn15qpwq60rzf917s5islbmhirbvz6npcvv0d493"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ glib ] + ++ stdenv.lib.optional alsaSupport alsaLib + ++ stdenv.lib.optional pulseaudioSupport libpulseaudio; + + configureFlags = stdenv.lib.optional ossSupport "--enable-oss"; + + meta = with stdenv.lib; { + description = "Mixer library for MATE"; + homepage = https://github.com/mate-desktop/libmatemixer; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix b/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix new file mode 100644 index 000000000000..9805b8d91b5a --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/libmateweather/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, libsoup, tzdata, mate }: + +stdenv.mkDerivation rec { + name = "libmateweather-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "1ksp1xn13m94sjnnrx2dyv7hlbgjbnbahwdyaq35r2419b366hxv"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ gtk3 libsoup tzdata ]; + + configureFlags = [ + "--with-zoneinfo-dir=${tzdata}/share/zoneinfo" + "--enable-locations-compression" + ]; + + preFixup = "rm -f $out/share/icons/mate/icon-theme.cache"; + + meta = with stdenv.lib; { + description = "Library to access weather information from online services for MATE"; + homepage = https://github.com/mate-desktop/libmateweather; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/marco/default.nix b/nixpkgs/pkgs/desktops/mate/marco/default.nix new file mode 100644 index 000000000000..975c80b1d0cf --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/marco/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, libcanberra-gtk3, libgtop, gnome2, gnome3, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "marco-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "192nlr4ylisxisk0ljabm8v0a5sapdncj4gbw39q2fpr938ifs32"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + buildInputs = [ + libxml2 + libcanberra-gtk3 + libgtop + gnome2.startup_notification + gnome3.gtk + gnome3.zenity + ]; + + meta = with stdenv.lib; { + description = "MATE default window manager"; + homepage = https://github.com/mate-desktop/marco; + license = [ licenses.gpl2 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix b/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix new file mode 100644 index 000000000000..f9f0689fa65f --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-applets/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, gnome3, libwnck3, libgtop, libxml2, libnotify, polkit, upower, wirelesstools, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-applets-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0y5501wliipxf43p2q9917r3ird7azlrbcwnj2q2q2zy00hvvk5f"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + buildInputs = [ + gnome3.gtk + gnome3.gtksourceview + gnome3.gucharmap + libwnck3 + libgtop + libxml2 + libnotify + polkit + upower + wirelesstools + mate.libmateweather + mate.mate-panel + hicolor-icon-theme + ]; + + configureFlags = [ "--enable-suid=no" ]; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0"; + + meta = with stdenv.lib; { + description = "Applets for use with the MATE panel"; + homepage = http://mate-desktop.org; + license = with licenses; [ gpl2Plus lgpl2Plus ]; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix b/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix new file mode 100644 index 000000000000..79a322ccb0a5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-backgrounds/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, intltool, mate }: + +stdenv.mkDerivation rec { + name = "mate-backgrounds-${version}"; + version = "1.20.0"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0pcnjcw00y8hf2bwfrb5sbk2511cbg4fr8vgvgqswcwjp9y15cjp"; + }; + + nativeBuildInputs = [ intltool ]; + + meta = with stdenv.lib; { + description = "Background images and data for MATE"; + homepage = http://mate-desktop.org; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix b/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix new file mode 100644 index 000000000000..d45563db8a1c --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-calc/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, gtk3, libxml2, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-calc-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0nv0q2c93rv36dhid7vf0w0rb6zdwyqaibfsmc7flj00qgsn3r5a"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libxml2 + ]; + + meta = with stdenv.lib; { + description = "Calculator for the MATE desktop"; + homepage = http://mate-desktop.org; + license = [ licenses.gpl2Plus ]; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-common/default.nix b/nixpkgs/pkgs/desktops/mate/mate-common/default.nix new file mode 100644 index 000000000000..63adb1849dac --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-common/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, mate }: + +stdenv.mkDerivation rec { + name = "mate-common-${version}"; + version = "1.20.0"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0h8s2qhc6f5flslx05cd3xxg243c67vv03spjiag14p8kqqrqvb1"; + }; + + meta = { + description = "Common files for development of MATE packages"; + homepage = http://mate-desktop.org; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix b/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix new file mode 100644 index 000000000000..8697a150881b --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-control-center/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, dbus-glib, + libxklavier, libcanberra-gtk3, librsvg, libappindicator-gtk3, + desktop-file-utils, gnome3, mate, hicolor-icon-theme, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + name = "mate-control-center-${version}"; + version = "1.20.4"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "1rjxndikj0w516nlvyzcss31l9qjwkzvns7ygasnjbl02bgml9a4"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + desktop-file-utils + wrapGAppsHook + ]; + + buildInputs = [ + libxml2 + dbus-glib + libxklavier + libcanberra-gtk3 + librsvg + libappindicator-gtk3 + gnome3.gtk + gnome3.dconf + hicolor-icon-theme + mate.mate-desktop + mate.libmatekbd + mate.mate-menus + mate.marco + mate.mate-settings-daemon + ]; + + configureFlags = [ "--disable-update-mimedb" ]; + + meta = with stdenv.lib; { + description = "Utilities to configure the MATE desktop"; + homepage = https://github.com/mate-desktop/mate-control-center; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix b/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix new file mode 100644 index 000000000000..e6a43e6b457d --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-desktop/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-desktop-${version}"; + version = "1.20.4"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "073hn68f57ahif0znbx850x6ncsq50m7jg0sy1mllxjjqf3b1fxr"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + gnome3.dconf + gnome3.gtk + ]; + + meta = with stdenv.lib; { + description = "Library with common API for various MATE modules"; + homepage = http://mate-desktop.org; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix b/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix new file mode 100644 index 000000000000..03f8c62c448d --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-icon-theme-faenza/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, autoreconfHook, gtk3, mate, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + name = "mate-icon-theme-faenza-${version}"; + version = "1.20.0"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "000vr9cnbl2qlysf2gyg1lsjirqdzmwrnh6d3hyrsfc0r2vh4wna"; + }; + + nativeBuildInputs = [ autoreconfHook gtk3 ]; + + buildInputs = [ mate.mate-icon-theme hicolor-icon-theme ]; + + postInstall = '' + for theme in "$out"/share/icons/*; do + gtk-update-icon-cache "$theme" + done + ''; + + meta = { + description = "Faenza icon theme from MATE"; + homepage = http://mate-desktop.org; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix b/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix new file mode 100644 index 000000000000..9d813e715ffd --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-icon-theme/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, intltool, iconnamingutils, librsvg, hicolor-icon-theme, gtk3, mate }: + +stdenv.mkDerivation rec { + name = "mate-icon-theme-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "10l58mjc2a69pm7srxvlav2b8b7nbzyvwjrlrk79a3gr6dd1mbk4"; + }; + + nativeBuildInputs = [ pkgconfig intltool iconnamingutils ]; + + buildInputs = [ librsvg hicolor-icon-theme ]; + + postInstall = '' + for theme in "$out"/share/icons/*; do + "${gtk3.out}/bin/gtk-update-icon-cache" "$theme" + done + ''; + + meta = { + description = "Icon themes from MATE"; + homepage = http://mate-desktop.org; + license = stdenv.lib.licenses.lgpl3; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix b/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix new file mode 100644 index 000000000000..c099d070221e --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-indicator-applet/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, libindicator-gtk3, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-indicator-applet-${version}"; + version = "1.20.1"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0gxis834w8h33xmrx335jjad2xaqpkamirl0x4j7wsk4zs25jkyd"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libindicator-gtk3 + mate.mate-panel + hicolor-icon-theme + ]; + + meta = with stdenv.lib; { + homepage = https://github.com/mate-desktop/mate-indicator-applet; + description = "MATE panel indicator applet"; + longDescription = '' + A small applet to display information from various applications + consistently in the panel. + + The indicator applet exposes Ayatana Indicators in the MATE Panel. + Ayatana Indicators are an initiative by Canonical to provide crisp and + clean system and application status indication. They take the form of + an icon and associated menu, displayed (usually) in the desktop panel. + Existing indicators include the Message Menu, Battery Menu and Sound + menu. + ''; + license = with licenses; [ gpl3Plus lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-media/default.nix b/nixpkgs/pkgs/desktops/mate/mate-media/default.nix new file mode 100644 index 000000000000..643f67cd1e95 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-media/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libtool, libxml2, libcanberra-gtk3, gnome3, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-media-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "06fka82smrphzj4dz9dw1566kmdscxvxl0rchj9qxg7aidy0rmnv"; + }; + + buildInputs = [ + libxml2 + libcanberra-gtk3 + gnome3.gtk + mate.libmatemixer + mate.mate-desktop + ]; + + nativeBuildInputs = [ + pkgconfig + intltool + libtool + wrapGAppsHook + ]; + + meta = with stdenv.lib; { + description = "Media tools for MATE"; + homepage = http://mate-desktop.org; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo maintainers.chpatrick ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix b/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix new file mode 100644 index 000000000000..9a0db6107e1a --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-menus/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, gobject-introspection, python, mate }: + +stdenv.mkDerivation rec { + name = "mate-menus-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "18y4nka38dqqxycxpf7ig4vmrk4i05xqqjk4fxr1ghkj60xxyxz2"; + }; + + nativeBuildInputs = [ pkgconfig intltool gobject-introspection ]; + + buildInputs = [ glib python ]; + + makeFlags = [ + "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/" + "INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0" + ]; + + meta = with stdenv.lib; { + description = "Menu system for MATE"; + homepage = https://github.com/mate-desktop/mate-menus; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix b/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix new file mode 100644 index 000000000000..35a7f1dae610 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-netbook/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, libwnck3, libfakekey, libXtst, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-netbook-${version}"; + version = "1.20.1"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "1ils0lav6j779kgz2py6zdalcfifpnp01clspbnkhb3v1ha1ncsq"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libwnck3 + libfakekey + libXtst + mate.mate-panel + ]; + + meta = with stdenv.lib; { + description = "MATE utilities for netbooks"; + longDescription = '' + MATE utilities for netbooks are an applet and a daemon to maximize + windows and move their titles on the panel. + + Installing these utilities is recommended for netbooks and similar + devices with low resolution displays. + ''; + homepage = http://mate-desktop.org; + license = with licenses; [ gpl3 lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix b/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix new file mode 100644 index 000000000000..e9f8b4b75b1f --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-notification-daemon/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, intltool, dbus-glib, libcanberra-gtk3, + libnotify, libwnck3, gnome3, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-notification-daemon-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0a60f67yjvlffrnviqgc64jz5l280f30h8br7wz2x415if5dmjyn"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + dbus-glib + libcanberra-gtk3 + libnotify + libwnck3 + gnome3.gtk + ]; + + meta = with stdenv.lib; { + description = "Notification daemon for MATE"; + homepage = https://github.com/mate-desktop/mate-notification-daemon; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix b/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix new file mode 100644 index 000000000000..a7d34fc85a64 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-panel/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, glib, dbus-glib, libwnck3, librsvg, libxml2, gnome3, mate, hicolor-icon-theme, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-panel-${version}"; + version = "1.20.4"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "02pdrwgl3plgv6l6nc45nsnmjppkxs4ybggwibd6mm777i9nb44d"; + }; + + nativeBuildInputs = [ + gobject-introspection + intltool + itstool + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + dbus-glib + libwnck3 + librsvg + libxml2 + gnome3.gtk + gnome3.dconf + mate.libmateweather + mate.mate-desktop + mate.mate-menus + hicolor-icon-theme + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + makeFlags = [ + "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/" + "INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0" + ]; + + meta = with stdenv.lib; { + description = "The MATE panel"; + homepage = https://github.com/mate-desktop/mate-panel; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix b/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix new file mode 100644 index 000000000000..5f1dfaa5ba4e --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-polkit/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, gobject-introspection, libappindicator-gtk3, libindicator-gtk3, polkit, mate }: + +stdenv.mkDerivation rec { + name = "mate-polkit-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0zajisavrxiynmp4qg7zamvkpnhy9nra01czwn21h6hm2yakbayr"; + }; + + nativeBuildInputs = [ + gobject-introspection + intltool + pkgconfig + ]; + + buildInputs = [ + gtk3 + libappindicator-gtk3 + libindicator-gtk3 + polkit + ]; + + meta = with stdenv.lib; { + description = "Integrates polkit authentication for MATE desktop"; + homepage = http://mate-desktop.org; + license = [ licenses.gpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix b/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix new file mode 100644 index 000000000000..a9c162e59122 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-power-manager/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, itstool, libxml2, mate, libnotify, libcanberra-gtk3, dbus-glib, upower, gnome3, libtool, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-power-manager-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "17x47j5dkxxsq63bv2jwf3xgnddyy2dya4y14ryivq8q3jh5yhr5"; + }; + + buildInputs = [ + glib + itstool + libxml2 + libcanberra-gtk3 + gnome3.gtk + gnome3.libgnome-keyring + libnotify + dbus-glib + upower + mate.mate-panel + ]; + + nativeBuildInputs = [ + pkgconfig + intltool + libtool + wrapGAppsHook + ]; + + configureFlags = [ "--enable-applets" ]; + + meta = with stdenv.lib; { + description = "The MATE Power Manager"; + homepage = http://mate-desktop.org; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = [ maintainers.romildo maintainers.chpatrick ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix b/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix new file mode 100644 index 000000000000..089296a0b842 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-screensaver/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, dbus-glib, libXScrnSaver, libnotify, pam, systemd, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-screensaver-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0kmaj4psg7261h02dzarga6k5cb7n709d60xbfrhywnf5fb9787i"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + dbus-glib + libXScrnSaver + libnotify + pam + systemd + mate.mate-desktop + mate.mate-menus + ]; + + configureFlags = [ "--without-console-kit" ]; + + makeFlags = "DBUS_SESSION_SERVICE_DIR=$(out)/etc"; + + meta = with stdenv.lib; { + description = "Screen saver and locker for the MATE desktop"; + homepage = http://mate-desktop.org; + license = with licenses; [ gpl2Plus lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix b/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix new file mode 100644 index 000000000000..86cbd3a86d25 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-sensors-applet/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, gtk3, libxml2, libxslt, libatasmart, libnotify, dbus-glib, lm_sensors, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-sensors-applet-${version}"; + version = "1.20.3"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0s98qy3jkri9zh5xqffprqd00cqspaq9av0mcrcakjkl8wyfh2g6"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + # maybe add nvidia-settings later on + buildInputs = [ + gtk3 + libxml2 + libxslt + libatasmart + libnotify + dbus-glib + lm_sensors + mate.mate-panel + hicolor-icon-theme + ]; + + meta = with stdenv.lib; { + homepage = https://github.com/mate-desktop/mate-sensors-applet; + description = "MATE panel applet for hardware sensors"; + license = with licenses; [ gpl2Plus ]; + platforms = platforms.linux; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix b/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix new file mode 100644 index 000000000000..31f447861fc8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-session-manager/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, intltool, xtrans, dbus-glib, systemd, + libSM, libXtst, gtk3, hicolor-icon-theme, mate, + wrapGAppsHook +}: + +stdenv.mkDerivation rec { + name = "mate-session-manager-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "05qq07b568qf6zyy459wajhfpbx1wfrinw3hsbky7abdjfn529dy"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + xtrans + wrapGAppsHook + ]; + + buildInputs = [ + dbus-glib + systemd + libSM + libXtst + gtk3 + mate.mate-desktop + hicolor-icon-theme + ]; + + meta = with stdenv.lib; { + description = "MATE Desktop session manager"; + homepage = https://github.com/mate-desktop/mate-session-manager; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix new file mode 100644 index 000000000000..2be518bcc5e1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-settings-daemon/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, intltool, dbus-glib, libxklavier, libcanberra-gtk3, libnotify, nss, polkit, gnome3, mate, wrapGAppsHook +, pulseaudioSupport ? stdenv.config.pulseaudio or true, libpulseaudio +}: + +stdenv.mkDerivation rec { + name = "mate-settings-daemon-${version}"; + version = "1.20.4"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "10xlg2gb7fypnn5cnr14kbpjy5jdfz98ji615scz61zf5lljksxh"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + buildInputs = [ + dbus-glib + libxklavier + libcanberra-gtk3 + libnotify + nss + polkit + gnome3.gtk + gnome3.dconf + mate.mate-desktop + mate.libmatekbd + mate.libmatemixer + ] ++ stdenv.lib.optional pulseaudioSupport libpulseaudio; + + configureFlags = stdenv.lib.optional pulseaudioSupport "--enable-pulse"; + + meta = with stdenv.lib; { + description = "MATE settings daemon"; + homepage = https://github.com/mate-desktop/mate-settings-daemon; + license = with licenses; [ gpl2 lgpl21 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix b/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix new file mode 100644 index 000000000000..5757f5eb9b40 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-system-monitor/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, gtkmm3, libxml2, libgtop, libwnck3, librsvg, systemd, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-system-monitor-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0f6sh23axzmcmyv0d837gbc0dixf1afh8951zrzp1y53rdgpa9qn"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + buildInputs = [ + gtkmm3 + libxml2 + libgtop + libwnck3 + librsvg + systemd + ]; + + configureFlags = [ "--enable-systemd" ]; + + meta = with stdenv.lib; { + description = "System monitor for the MATE desktop"; + homepage = http://mate-desktop.org; + license = [ licenses.gpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix b/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix new file mode 100644 index 000000000000..9b0018e8e2fc --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-terminal/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, itstool, libxml2, mate, gnome3, gtk3, vte, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-terminal-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0fqyi0az4ax1gyk5gymd7ssq2crdcd7slmqljc1b1pa283ql7p3q"; + }; + + buildInputs = [ + glib + itstool + libxml2 + + mate.mate-desktop + + vte + gtk3 + gnome3.dconf + ]; + + nativeBuildInputs = [ + pkgconfig + intltool + wrapGAppsHook + ]; + + meta = with stdenv.lib; { + description = "The MATE Terminal Emulator"; + homepage = http://mate-desktop.org; + license = licenses.gpl3; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix b/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix new file mode 100644 index 000000000000..58feb32cfa8c --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-themes/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, intltool, mate, gtk2, gtk3, + gtk_engines, gtk-engine-murrine, gdk_pixbuf, librsvg }: + +stdenv.mkDerivation rec { + name = "mate-themes-${version}"; + version = "3.22.18"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/themes/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0538bw8qismp16ymxbjk0ww7yjw1ch5v3f3d4vib3770xvgmmcfm"; + }; + + nativeBuildInputs = [ pkgconfig intltool gtk3 ]; + + buildInputs = [ mate.mate-icon-theme gtk2 gtk_engines gdk_pixbuf librsvg ]; + + propagatedUserEnvPkgs = [ gtk-engine-murrine ]; + + postInstall = '' + gtk-update-icon-cache "$out"/share/icons/ContrastHigh + ''; + + meta = { + description = "A set of themes from MATE"; + homepage = http://mate-desktop.org; + license = stdenv.lib.licenses.lgpl21; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix b/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix new file mode 100644 index 000000000000..5264c772a537 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-user-guide/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, intltool, itstool, libxml2, yelp, mate }: + +stdenv.mkDerivation rec { + name = "mate-user-guide-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0cbi625xd7nsifvxbixsb29kj2zj14sn0sl61wkcvasz7whg7w6r"; + }; + + nativeBuildInputs = [ itstool intltool libxml2 ]; + + buildInputs = [ yelp ]; + + meta = with stdenv.lib; { + description = "MATE User Guide"; + homepage = http://mate-desktop.org; + license = with licenses; [ gpl2Plus fdl12 ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix b/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix new file mode 100644 index 000000000000..9baa3f24e038 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-user-share/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, gtk3, dbus-glib, libnotify, libxml2, libcanberra-gtk3, mod_dnssd, apacheHttpd, hicolor-icon-theme, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-user-share-${version}"; + version = "1.20.1"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0v5xilk978zl5443vlxf25z8z1g5sw9xl5sq76gvrmdlz2parfrn"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + dbus-glib + libnotify + libcanberra-gtk3 + libxml2 + mate.caja + hicolor-icon-theme + # Should mod_dnssd and apacheHttpd be runtime dependencies? + # In gnome-user-share they are not. + #mod_dnssd + #apacheHttpd + ]; + + preConfigure = '' + sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' \ + -e 's,''${HTTP_MODULES_PATH},${apacheHttpd}/modules,' \ + -i data/dav_user_2.4.conf + ''; + + configureFlags = [ + "--with-httpd=${apacheHttpd.out}/bin/httpd" + "--with-modules-path=${apacheHttpd.dev}/modules" + "--with-cajadir=$(out)/lib/caja/extensions-2.0" + ]; + + meta = with stdenv.lib; { + description = "User level public file sharing for the MATE desktop"; + homepage = https://github.com/mate-desktop/mate-user-share; + license = with licenses; [ gpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix b/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix new file mode 100644 index 000000000000..17ec165f7559 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mate-utils/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, gtk3, libxml2, libgtop, libcanberra-gtk3, mate, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "mate-utils-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0w7hw192jzhad8jab8mjms4x6k2xijvb3rhlbxb6z5n5880xgfqf"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libgtop + libcanberra-gtk3 + libxml2 + mate.mate-panel + hicolor-icon-theme + ]; + + meta = with stdenv.lib; { + description = "Utilities for the MATE desktop"; + homepage = http://mate-desktop.org; + license = with licenses; [ gpl2Plus lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/mozo/default.nix b/nixpkgs/pkgs/desktops/mate/mozo/default.nix new file mode 100644 index 000000000000..f2419f7f5e80 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/mozo/default.nix @@ -0,0 +1,28 @@ +{ stdenv, python, fetchurl, pkgconfig, intltool, mate, gtk3, glib, wrapGAppsHook, gobject-introspection }: + +python.pkgs.buildPythonApplication rec { + pname = "mozo"; + version = "1.20.2"; + + format = "other"; + doCheck = false; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${pname}-${version}.tar.xz"; + sha256 = "1q4hqhigimxav2a8xxyd53lq8q80szsphcv37y2jhm6g6wvdmvhd"; + }; + + nativeBuildInputs = [ pkgconfig intltool gobject-introspection wrapGAppsHook ]; + + propagatedBuildInputs = [ mate.mate-menus python.pkgs.pygobject3 ]; + + buildInputs = [ gtk3 glib ]; + + meta = with stdenv.lib; { + description = "MATE Desktop menu editor"; + homepage = https://github.com/mate-desktop/mozo; + license = with licenses; [ lgpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/pluma/default.nix b/nixpkgs/pkgs/desktops/mate/pluma/default.nix new file mode 100644 index 000000000000..abb1b8c28a1b --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/pluma/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, isocodes, enchant, libxml2, python, gnome3, mate, wrapGAppsHook }: + +stdenv.mkDerivation rec { + name = "pluma-${version}"; + version = "1.20.4"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "0qdbm5y6q8lbabd81mg3rnls5bdvbmfii82f6syqw1cw6381mzgz"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + itstool + isocodes + wrapGAppsHook + ]; + + buildInputs = [ + enchant + libxml2 + python + gnome3.gtksourceview + gnome3.libpeas + gnome3.defaultIconTheme + mate.mate-desktop + ]; + + meta = { + description = "Powerful text editor for the MATE desktop"; + homepage = http://mate-desktop.org; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/python-caja/default.nix b/nixpkgs/pkgs/desktops/mate/python-caja/default.nix new file mode 100644 index 000000000000..0470086f865f --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/python-caja/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, mate, pythonPackages }: + +stdenv.mkDerivation rec { + name = "python-caja-${version}"; + version = "1.20.2"; + + src = fetchurl { + url = "http://pub.mate-desktop.org/releases/${mate.getRelease version}/${name}.tar.xz"; + sha256 = "16r8mz1b44qgs19d14zadwzshzrdc5sdwgjp9f9av3fa6g09yd7b"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + pythonPackages.wrapPython + ]; + + buildInputs = [ + gtk3 + mate.caja + pythonPackages.python + pythonPackages.pygobject3 + ]; + + configureFlags = [ "--with-cajadir=$$out/lib/caja/extensions-2.0" ]; + + meta = with stdenv.lib; { + description = "Python binding for Caja components"; + homepage = https://github.com/mate-desktop/python-caja; + license = [ licenses.gpl2Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/mate/update.sh b/nixpkgs/pkgs/desktops/mate/update.sh new file mode 100755 index 000000000000..736bcbd34fc6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/mate/update.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p libarchive curl common-updater-scripts + +set -eu -o pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" +root=../../.. +export NIXPKGS_ALLOW_UNFREE=1 + +mate_version=1.20 +theme_version=3.22 +materepo=https://pub.mate-desktop.org/releases/${mate_version} +themerepo=https://pub.mate-desktop.org/releases/themes/${theme_version} + +version() { + (cd "$root" && nix-instantiate --eval --strict -A "$1.version" | tr -d '"') +} + +update_package() { + local p=$1 + echo $p + + local repo + if [ "$p" = "mate-themes" ]; then + repo=$themerepo + else + repo=$materepo + fi + + local p_version_old=$(version mate.$p) + local p_versions=$(curl -sS ${repo}/ | sed -rne "s/.*\"$p-([0-9]+\\.[0-9]+\\.[0-9]+)\\.tar\\.xz.*/\\1/p") + local p_version=$(echo $p_versions | sed -e 's/ /\n/g' | sort -t. -k 1,1n -k 2,2n -k 3,3n | tail -n1) + + if [[ "$p_version" = "$p_version_old" ]]; then + echo "nothing to do, $p $p_version is current" + echo + return + fi + + # Download package and save hash and file path. + local url="$repo/$p-${p_version}.tar.xz" + mapfile -t prefetch < <(nix-prefetch-url --print-path "$url") + local hash=${prefetch[0]} + local path=${prefetch[1]} + echo "$p: $p_version_old -> $p_version" + (cd "$root" && update-source-version mate.$p "$p_version" "$hash") + echo +} + +for d in $(ls -A --indicator-style=none); do + if [ -d $d ]; then + update_package $d + fi +done diff --git a/nixpkgs/pkgs/desktops/maxx/default.nix b/nixpkgs/pkgs/desktops/maxx/default.nix new file mode 100644 index 000000000000..6f515068418e --- /dev/null +++ b/nixpkgs/pkgs/desktops/maxx/default.nix @@ -0,0 +1,94 @@ +{ stdenv, fetchurl, makeWrapper, autoPatchelfHook +, libredirect, gcc-unwrapped, bash, gtk-engine-murrine, gtk_engines, librsvg + +, libX11, libXext, libXi, libXau, libXrender, libXft, libXmu, libSM, libXcomposite, libXfixes, libXpm +, libXinerama, libXdamage, libICE, libXtst, libXaw, fontconfig, pango, cairo, glib, libxml2, atk, gtk2 +, gdk_pixbuf, libGL, ncurses + +, xclock, xsettingsd }: + +let + version = "Indy-1.1.0"; + + runtime_deps = [ + xclock xsettingsd + ]; +in stdenv.mkDerivation { + name = "MaXX-${version}"; + + srcs = [ + (fetchurl { + url = "http://maxxdesktop.arcadedaydream.com/Indy-Releases/Installers/MaXX-${version}-NO-ARCH.tar.gz"; + sha256 = "1d23j08wwrrn5cp7csv70pcz9jppcn0xb1894wkp0caaliy7g31y"; + }) + (fetchurl { + url = "http://maxxdesktop.arcadedaydream.com/Indy-Releases/Installers/MaXX-${version}-x86_64.tar.gz"; + sha256 = "156p2lra184wyvibrihisd7cr1ivqaygsf0zfm26a12gx23b7708"; + }) + ]; + + nativeBuildInputs = [ makeWrapper autoPatchelfHook ]; + buildInputs = [ + stdenv.cc.cc libX11 libXext libXi libXau libXrender libXft libXmu libSM libXcomposite libXfixes libXpm + libXinerama libXdamage libICE libXtst libXaw fontconfig pango cairo glib libxml2 atk gtk2 + gdk_pixbuf libGL ncurses + ]; + + buildPhase = '' + while IFS= read -r -d ''$'\0' i; do + substituteInPlace "$i" --replace /opt/MaXX $out/opt/MaXX + done < <(find "." -type f -exec grep -Iq /opt/MaXX {} \; -and -print0) + + substituteInPlace bin/adminterm \ + --replace /bin/bash ${bash}/bin/bash + + substituteInPlace share/misc/HOME/initMaXX-Desktop-Home.sh \ + --replace "cp " "cp --no-preserve=mode " + ''; + + installPhase = '' + maxx=$out/opt/MaXX + mkdir -p "$maxx" $out/share $maxx/sbin + + mv -- ./* "$maxx" + ln -s $maxx/share/icons $out/share + + wrapProgram $maxx/etc/skel/Xsession.dt \ + --prefix GTK_PATH : "${gtk-engine-murrine}/lib/gtk-2.0:${gtk_engines}/lib/gtk-2.0" \ + --prefix GDK_PIXBUF_MODULE_FILE : "$(echo ${librsvg.out}/lib/gdk-pixbuf-2.0/*/loaders.cache)" \ + --prefix PATH : ${stdenv.lib.makeBinPath runtime_deps} + + while IFS= read -r -d ''$'\0' i; do + if isExecutable "$i"; then + wrapProgram "$i" \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS /opt/MaXX=$maxx \ + --prefix PATH : $maxx/sbin + fi + done < <(find "$maxx" -type f -print0) + + cp ${gcc-unwrapped}/bin/cpp ${gcc-unwrapped}/libexec/gcc/*/*/cc1 $maxx/sbin + for i in $maxx/sbin/cpp $maxx/sbin/cc1 + do + wrapProgram "$i" \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS /opt/MaXX=$maxx + done + ''; + + meta = with stdenv.lib; { + description = "A replica of IRIX Interactive Desktop"; + homepage = http://www.maxxinteractive.com; + license = { + fullName = "The MaXX Interactive Desktop for Linux License Agreement"; + url = http://www.maxxinteractive.com/site/?page_id=97; + free = false; # redistribution is only allowed to *some* hardware, etc. + }; + maintainers = [ maintainers.gnidorah ]; + platforms = ["x86_64-linux"]; + longDescription = '' + A clone of IRIX Interactive Desktop made in agreement with SGI. + Provides simple and fast retro desktop environment. + ''; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix new file mode 100644 index 000000000000..c8ade1c9c35e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix @@ -0,0 +1,58 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig +, meson, ninja, vala, desktop-file-utils, libxml2 +, gtk3, python3, granite, libgee, gobject-introspection +, elementary-icon-theme, appstream, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "calculator"; + version = "1.5.1"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0vc27kjmfkly2jkqjiyzlybxyjqhwal3xrxca5b4abfgb379yswa"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/elementary/calculator; + description = "Calculator app designed for elementary OS"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix new file mode 100644 index 000000000000..28983db7f916 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix @@ -0,0 +1,66 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson +, ninja, vala, desktop-file-utils, gtk3, granite, libgee +, geoclue2, libchamplain, clutter, folks, geocode-glib, python3 +, libnotify, libical, evolution-data-server, appstream-glib +, elementary-icon-theme, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "calendar"; + version = "4.2.3"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "100wy8lkp4nrxj57ywyx44ckm3k7n8h5l6av92hr5pyx8fxn9m48"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream-glib + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter + elementary-icon-theme + evolution-data-server + folks + geoclue2 + geocode-glib + granite + gtk3 + libchamplain + libgee + libical + libnotify + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Desktop calendar app designed for elementary OS"; + homepage = https://github.com/elementary/calendar; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix new file mode 100644 index 000000000000..2e90a96411a3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-camera/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala +, desktop-file-utils, python3, gettext, libxml2, gtk3, granite, libgee, gst_all_1 +, libcanberra, clutter-gtk, clutter-gst, elementary-icon-theme, appstream, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "camera"; + version = "1.0.3"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "05rjymflhwbkw8yc57rgi9n7lrhf4dpvfvlifdnazyqn9iiaxc46"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + gettext + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter-gst + clutter-gtk + elementary-icon-theme + granite + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gstreamer + gtk3 + libcanberra + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Camera app designed for elementary OS"; + homepage = https://github.com/elementary/camera; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix new file mode 100644 index 000000000000..0b16c56be3de --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-code/default.nix @@ -0,0 +1,80 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, substituteAll +, python3, glibcLocales, desktop-file-utils, gtk3, granite, libgee, elementary-icon-theme +, appstream, libpeas, editorconfig-core-c, gtksourceview3, gtkspell3, libsoup +, vte, webkitgtk, zeitgeist, ctags, libgit2-glib, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "code"; + version = "3.0.2"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0zmm4a7galrs9phiplf6cygwq3rplghv7r8g47mi4nlndgxqyssg"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + glibcLocales + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + ctags + elementary-icon-theme + editorconfig-core-c + granite + gtk3 + gtksourceview3 + gtkspell3 + libgee + libgit2-glib + libpeas + libsoup + vte + webkitgtk + zeitgeist + ]; + + # See: https://github.com/elementary/code/pull/626 + LIBRARY_PATH = stdenv.lib.makeLibraryPath [ editorconfig-core-c ]; + + # install script fails with UnicodeDecodeError because of printing a fancy elipsis character + LC_ALL = "en_US.UTF-8"; + + # ctags needed in path by outline plugin + preFixup = '' + gappsWrapperArgs+=( + --prefix PATH : "${stdenv.lib.makeBinPath [ ctags ]}" + ) + ''; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Code editor designed for elementary OS"; + homepage = https://github.com/elementary/code; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix new file mode 100644 index 000000000000..3494474c49c5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/default.nix @@ -0,0 +1,76 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, gettext, vala +, python3, desktop-file-utils, libcanberra, gtk3, libgee, granite, libnotify +, libunity, pango, plank, bamf, sqlite, libdbusmenu-gtk3, zeitgeist, glib-networking +, elementary-icon-theme, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "files"; + version = "4.1.5"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0z0pisg7py2k6i31v18z5fgpj8x64m1s5clfq4vbbjrcjwx6dcx5"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + glib-networking + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + elementary-icon-theme + granite + gtk3 + libcanberra + libdbusmenu-gtk3 + libgee + libnotify + libunity + pango + plank + sqlite + zeitgeist + ]; + + patches = [ ./hardcode-gsettings.patch ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + + substituteInPlace filechooser-module/FileChooserDialog.vala --subst-var-by ELEMENTARY_FILES_GSETTINGS_PATH $out/share/gsettings-schemas/${name}/glib-2.0/schemas + ''; + + # xdg.mime will create this + postInstall = '' + rm $out/share/applications/mimeinfo.cache + ''; + + meta = with stdenv.lib; { + description = "File browser designed for elementary OS"; + homepage = https://github.com/elementary/files; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/hardcode-gsettings.patch new file mode 100644 index 000000000000..3191f4e3cb2b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-files/hardcode-gsettings.patch @@ -0,0 +1,22 @@ +diff --git a/filechooser-module/FileChooserDialog.vala b/filechooser-module/FileChooserDialog.vala +index cb7c3c49..8b1899d1 100644 +--- a/filechooser-module/FileChooserDialog.vala ++++ b/filechooser-module/FileChooserDialog.vala +@@ -57,10 +57,15 @@ public class CustomFileChooserDialog : Object { + chooser_dialog.deletable = false; + chooser_dialog.local_only = false; + +- var settings = new Settings ("io.elementary.files.preferences"); ++ SettingsSchemaSource sss = new SettingsSchemaSource.from_directory ("@ELEMENTARY_FILES_GSETTINGS_PATH@", SettingsSchemaSource.get_default (), true); ++ SettingsSchema preferences_schema = sss.lookup ("io.elementary.files.preferences", false); ++ SettingsSchema chooser_schema = sss.lookup ("io.elementary.files.file-chooser", false); ++ ++ var settings = new Settings.full (preferences_schema, null, null); ++ + is_single_click = settings.get_boolean ("single-click"); + +- var chooser_settings = new Settings ("io.elementary.files.file-chooser"); ++ var chooser_settings = new Settings.full (chooser_schema, null, null); + + assign_container_box (); + remove_gtk_widgets (); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix new file mode 100644 index 000000000000..8bca7b3b6b50 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-music/default.nix @@ -0,0 +1,78 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson +, ninja, vala, desktop-file-utils, libxml2, gtk3, granite +, python3, libgee, clutter-gtk, json-glib, libgda, libgpod +, libnotify, libpeas, libsoup, zeitgeist, gst_all_1, taglib +, libdbusmenu, libsignon-glib, libaccounts-glib +, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "music"; + version = "5.0.2"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "06mpikzdm01r9j7g15b7fgi4lcnp8cc0wmj17dfli5nmncxghx89"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + clutter-gtk + elementary-icon-theme + granite + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + json-glib + libaccounts-glib + libdbusmenu + libgda + libgee + libgpod + libsignon-glib + libnotify + libpeas + libsoup + taglib + zeitgeist + ]; + + mesonFlags = [ + "-Dplugins=lastfm,audioplayer,cdrom,ipod" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Music player and library designed for elementary OS"; + homepage = https://github.com/elementary/music; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix new file mode 100644 index 000000000000..21d5b9f1db4c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-photos/default.nix @@ -0,0 +1,81 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala, desktop-file-utils +, gtk3, glib, libaccounts-glib, libexif, libgee, geocode-glib, gexiv2,libgphoto2 +, granite, gst_all_1, libgudev, json-glib, libraw, librest, libsoup, sqlite, python3 +, scour, webkitgtk, libwebp, appstream, libunity, wrapGAppsHook, gobject-introspection, elementary-icon-theme }: + +stdenv.mkDerivation rec { + pname = "photos"; + version = "2.6.2"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "166a1jb85n67z6ffm5i0xzap407rv0r511lzh0gidkap1qy6pnmi"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + elementary-icon-theme + geocode-glib + gexiv2 + granite + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + json-glib + libaccounts-glib + libexif + libgee + libgphoto2 + libgudev + libraw + libsoup + libunity + libwebp + librest + scour + sqlite + webkitgtk + ]; + + mesonFlags = [ + "-Dplugins=false" + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Photo viewer and organizer designed for elementary OS"; + homepage = https://github.com/elementary/photos; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix new file mode 100644 index 000000000000..192b6ff358ff --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix @@ -0,0 +1,67 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, callPackage +, ninja, vala, python3, desktop-file-utils, gtk3, granite, libgee +, libcanberra, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +let + + redacted-script = callPackage ./redacted-script.nix {}; + +in + +stdenv.mkDerivation rec { + pname = "screenshot-tool"; # This will be renamed to "screenshot" soon. See -> https://github.com/elementary/screenshot/pull/93 + version = "1.6.1"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "screenshot"; + rev = version; + sha256 = "1vvj550md7vw7n057h8cy887a0nmsbwry67dxrxyz6bsvpk8sb6g"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = "screenshot"; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libcanberra + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + postInstall = '' + mkdir -p $out/share/fonts/truetype + cp -rva ${redacted-script}/share/fonts/truetype/redacted-elementary $out/share/fonts/truetype + ''; + + meta = with stdenv.lib; { + description = "Screenshot tool designed for elementary OS"; + homepage = https://github.com/elementary/screenshot; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/redacted-script.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/redacted-script.nix new file mode 100644 index 000000000000..db1d9d240c40 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/redacted-script.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub, pantheon }: + +stdenv.mkDerivation rec { + name = "elementary-redacted-script-${version}"; + version = "5.1.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = "fonts"; + rev = version; + sha256 = "16x2w7w29k4jx2nwc5932h9rqvb216vxsziazisv2rpll74kn8b2"; + }; + + dontConfigure = true; + + installPhase = '' + mkdir -p $out/share/fonts/truetype/redacted-elementary + cp -a redacted/*.ttf $out/share/fonts/truetype/redacted-elementary + ''; + + meta = with stdenv.lib; { + description = "Redacted Script Font for elementary"; + homepage = https://github.com/elementary/fonts; + license = licenses.ofl; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix new file mode 100644 index 000000000000..01fe35e4a8ee --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix @@ -0,0 +1,66 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, python3 +, vala, desktop-file-utils, gtk3, libxml2, granite, libnotify, vte, libgee +, elementary-icon-theme, appstream, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "terminal"; + version = "5.3.3"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1rhqfq5dn913g551ribycid4k8add2lanxkkqpv6zzdgvah26ni8"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + desktop-file-utils + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + libnotify + vte + ]; + + # See https://github.com/elementary/terminal/commit/914d4b0e2d0a137f12276d748ae07072b95eff80 + mesonFlags = [ "-Dubuntu-bionic-patched-vte=false" ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Terminal emulator designed for elementary OS"; + longDescription = '' + A super lightweight, beautiful, and simple terminal. Comes with sane defaults, browser-class tabs, sudo paste protection, + smart copy/paste, and little to no configuration. + ''; + homepage = https://github.com/elementary/terminal; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix new file mode 100644 index 000000000000..b123d4cbf5bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/elementary-videos/default.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, python3 +, desktop-file-utils, gtk3, granite, libgee, clutter-gst, clutter-gtk, gst_all_1 +, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "videos"; + version = "2.6.3"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1ncm8kh6dcy83p8pmpilnk03b4dx3b1jm8w13izq2dkglfgdwvqx"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = with gst_all_1; [ + clutter-gst + clutter-gtk + elementary-icon-theme + granite + gst-libav + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk3 + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Video player and library app designed for elementary OS"; + homepage = https://github.com/elementary/videos; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix new file mode 100644 index 000000000000..2ee925209838 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig +, vala, libgee, granite, gtk3, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-a11y"; + version = "2.1.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1wh46lrsliii5bbvfc4xnzgnii2v7sqxnbn43ylmyqppfv9mk1wd"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Universal Access Plug"; + homepage = https://github.com/elementary/switchboard-plug-a11y; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix new file mode 100644 index 000000000000..bdba8328fe93 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja, pkgconfig +, vala, libgee, granite, gtk3, switchboard, pciutils, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-about"; + version = "2.5.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "11diwz2aj45yqkxdija8ny0sgm0wl2905gl3799cdl12ss9ffndp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + patches = [ + (substituteAll { + src = ./lspci-path.patch; + inherit pciutils; + }) + ./remove-update-button.patch + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard About Plug"; + homepage = https://github.com/elementary/witchboard-plug-about; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/lspci-path.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/lspci-path.patch new file mode 100644 index 000000000000..352d84c42624 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/lspci-path.patch @@ -0,0 +1,13 @@ +diff --git a/src/Views/HardwareView.vala b/src/Views/HardwareView.vala +index a3e449c..a95fe93 100644 +--- a/src/Views/HardwareView.vala ++++ b/src/Views/HardwareView.vala +@@ -179,7 +179,7 @@ public class About.HardwareView : Gtk.Grid { + + // Graphics + try { +- Process.spawn_command_line_sync ("lspci", out graphics); ++ Process.spawn_command_line_sync ("@pciutils@/bin/lspci", out graphics); + + if ("VGA" in graphics) { //VGA-keyword indicates graphics-line + string[] lines = graphics.split("\n"); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/remove-update-button.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/remove-update-button.patch new file mode 100644 index 000000000000..41433f9a76b0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/about/remove-update-button.patch @@ -0,0 +1,55 @@ +diff --git a/src/Plug.vala b/src/Plug.vala +index 76fca34..3e79c1f 100644 +--- a/src/Plug.vala ++++ b/src/Plug.vala +@@ -65,7 +65,6 @@ public class About.Plug : Switchboard.Plug { + search_results.set ("%s → %s".printf (display_name, _("Restore Default Settings")), ""); + search_results.set ("%s → %s".printf (display_name, _("Suggest Translation")), ""); + search_results.set ("%s → %s".printf (display_name, _("Report Problems")), ""); +- search_results.set ("%s → %s".printf (display_name, _("Updates")), ""); + return search_results; + } + +@@ -161,7 +160,7 @@ public class About.Plug : Switchboard.Plug { + var kernel_version_label = new Gtk.Label (kernel_version); + kernel_version_label.set_selectable (true); + +- var gtk_version_label = new Gtk.Label (_("GTK+ %s").printf (gtk_version)); ++ var gtk_version_label = new Gtk.Label (_("GTK+ %s").printf (gtk_version)); + gtk_version_label.set_selectable (true); + + var website_label = new Gtk.LinkButton.with_label (website_url, _("Website")); +@@ -202,16 +201,6 @@ public class About.Plug : Switchboard.Plug { + issue_dialog.run (); + }); + +- // Update button +- var update_button = new Gtk.Button.with_label (_("Check for Updates")); +- update_button.clicked.connect (() => { +- try { +- Process.spawn_command_line_async ("io.elementary.appcenter --show-updates"); +- } catch (Error e) { +- warning (e.message); +- } +- }); +- + // Restore settings button + var settings_restore_button = new Gtk.Button.with_label (_("Restore Default Settings")); + settings_restore_button.clicked.connect (settings_restore_clicked); +@@ -224,7 +213,6 @@ public class About.Plug : Switchboard.Plug { + button_grid.add (settings_restore_button); + button_grid.add (translate_button); + button_grid.add (bug_button); +- button_grid.add (update_button); + button_grid.set_child_non_homogeneous (help_button, true); + + var software_grid = new Gtk.Grid (); +@@ -238,7 +226,7 @@ public class About.Plug : Switchboard.Plug { + software_grid.attach (based_off, 0, 2, 2, 1); + } + +- software_grid.attach (kernel_version_label, 0, 3, 2, 1); ++ software_grid.attach (kernel_version_label, 0, 3, 2, 1); + software_grid.attach (gtk_version_label, 0, 4, 2, 1); + software_grid.attach (website_label, 0, 5, 2, 1); + diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix new file mode 100644 index 000000000000..0cdb732ca731 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig +, vala, libgee, granite, gtk3, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-applications"; + version = "2.1.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1c4agff456625kycacpsww7c9jsnsg1rqps96r7cvn9zq371b5ir"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Applications Plug"; + homepage = https://github.com/elementary/switchboard-plug-applications; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix new file mode 100644 index 000000000000..697c3ac592bb --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala, libgee +, granite, gtk3, bluez, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-bluetooth"; + version = "2.2.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "13jm2idjsgqkvdz1dxgl2wwx7bsqahppf6cnpl0pmz167wahg5zp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + bluez + granite + gtk3 + libgee + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Bluetooth Plug"; + homepage = https://github.com/elementary/switchboard-plug-bluetooth; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/clock-format.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/clock-format.patch new file mode 100644 index 000000000000..0fe0ac8b10c8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/clock-format.patch @@ -0,0 +1,12 @@ +diff --git a/src/DateTime1.vala b/src/DateTime1.vala +index 5a80fbd..2e1f948 100644 +--- a/src/DateTime1.vala ++++ b/src/DateTime1.vala +@@ -38,6 +38,6 @@ public class DateTime.Settings : Granite.Services.Settings { + public string clock_format { get; set; } + + public Settings () { +- base ("io.elementary.desktop.wingpanel.datetime"); ++ base ("io.elementary.granite"); + } + } diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix new file mode 100644 index 000000000000..95a350372b95 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix @@ -0,0 +1,55 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, substituteAll, pkgconfig +, vala, libgee, granite, gtk3, libxml2, switchboard, tzdata, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-datetime"; + version = "2.1.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1iz8skf5dw76a07ljc8v8lw2x2nrmq8j6sggm227cmxy60gadsdv"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + patches = [ + (substituteAll { + src = ./timezone.patch; + tzdata = "${tzdata}/share/zoneinfo/zone.tab"; + }) + # Use "clock-format" GSettings key that's been moved to granite + ./clock-format.patch + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Date & Time Plug"; + homepage = https://github.com/elementary/switchboard-plug-datetime; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/timezone.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/timezone.patch new file mode 100644 index 000000000000..35f73d365990 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/timezone.patch @@ -0,0 +1,13 @@ +diff --git a/src/Parser.vala b/src/Parser.vala +index faccb64..432a362 100644 +--- a/src/Parser.vala ++++ b/src/Parser.vala +@@ -28,7 +28,7 @@ public class DateTime.Parser : GLib.Object { + return parser; + } + private Parser () { +- var file = File.new_for_path ("/usr/share/zoneinfo/zone.tab"); ++ var file = File.new_for_path ("@tzdata@"); + if (!file.query_exists ()) { + critical ("/usr/share/zoneinfo/zone.tab doesn't exist !"); + return; diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix new file mode 100644 index 000000000000..192f8a69ae97 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig +, vala, libgee, granite, gtk3, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-display"; + version = "2.1.6"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0pw21bnc79shiynmg7h9bs1x1v011lh07ypn22j73yhmxp6wiypd"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Displays Plug"; + homepage = https://github.com/elementary/switchboard-plug-display; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix new file mode 100644 index 000000000000..f38f15e3c6d2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja, pkgconfig, vala, libgee +, granite, gtk3, libxml2, libgnomekbd, libxklavier, xorg, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-keyboard"; + version = "2.3.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1997hnhlcp2jmf3z70na42vl1b7i5vxhp7k5ga5sl68dv0g4126y"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + libgnomekbd + libxklavier + switchboard + ]; + + patches = [ + (substituteAll { + src = ./xkb.patch; + config = "${xorg.xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"; + }) + ]; + + LIBRARY_PATH = stdenv.lib.makeLibraryPath [ libgnomekbd ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Keyboard Plug"; + homepage = https://github.com/elementary/switchboard-plug-keyboard; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/xkb.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/xkb.patch new file mode 100644 index 000000000000..33237d9c9392 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/xkb.patch @@ -0,0 +1,22 @@ +diff --git a/src/Layout/Handler.vala b/src/Layout/Handler.vala +index 297314b..b36509a 100644 +--- a/src/Layout/Handler.vala ++++ b/src/Layout/Handler.vala +@@ -29,7 +29,7 @@ public class Pantheon.Keyboard.LayoutPage.LayoutHandler : GLib.Object { + } + + private void parse_layouts () { +- Xml.Doc* doc = Xml.Parser.parse_file ("/usr/share/X11/xkb/rules/evdev.xml"); ++ Xml.Doc* doc = Xml.Parser.parse_file ("@config@"); + if (doc == null) { + critical ("'evdev.xml' not found or permissions missing\n"); + return; +@@ -76,7 +76,7 @@ public class Pantheon.Keyboard.LayoutPage.LayoutHandler : GLib.Object { + public HashTable<string, string> get_variants_for_language (string language) { + var returned_table = new HashTable<string, string> (str_hash, str_equal); + returned_table.set ("", _("Default")); +- Xml.Doc* doc = Xml.Parser.parse_file ("/usr/share/X11/xkb/rules/evdev.xml"); ++ Xml.Doc* doc = Xml.Parser.parse_file ("@config@"); + if (doc == null) { + critical ("'evdev.xml' not found or permissions incorrect\n"); + return returned_table; diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix new file mode 100644 index 000000000000..6c4bdeb7fb71 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, pantheon, fetchpatch, meson, ninja +, pkgconfig, vala, libgee, granite, gtk3, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-mouse-touchpad"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1zh5472ab01bckrc1py5bqqsal9i9pbgx6i8ap2d4yzhc8sirjrf"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Mouse & Touchpad Plug"; + homepage = https://github.com/elementary/switchboard-plug-mouse-touchpad; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix new file mode 100644 index 000000000000..3943cad48fd3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix @@ -0,0 +1,55 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, substituteAll, vala +, libgee, granite, gtk3, networkmanager, networkmanagerapplet, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-network"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "12lvcc15jngzsa40fjhxa6kccs58h5qq4lqrc7lcx5przmfaik8k"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + networkmanager + networkmanagerapplet + switchboard + ]; + + patches = [ + (substituteAll { + src = ./nma.patch; + networkmanagerapplet = "${networkmanagerapplet}"; + }) + ]; + + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Networking Plug"; + homepage = https://github.com/elementary/switchboard-plug-network; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/nma.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/nma.patch new file mode 100644 index 000000000000..a5fff9d6a32b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/network/nma.patch @@ -0,0 +1,43 @@ +diff --git a/src/Widgets/SettingsButton.vala b/src/Widgets/SettingsButton.vala +index 19fd514..bc800d9 100644 +--- a/src/Widgets/SettingsButton.vala ++++ b/src/Widgets/SettingsButton.vala +@@ -23,7 +23,7 @@ + label = _("Edit Connections…"); + clicked.connect (() => { + try { +- var appinfo = AppInfo.create_from_commandline ("nm-connection-editor", null, AppInfoCreateFlags.NONE); ++ var appinfo = AppInfo.create_from_commandline ("@networkmanagerapplet@/bin/nm-connection-editor", null, AppInfoCreateFlags.NONE); + appinfo.launch (null, null); + } catch (Error e) { + warning ("%s", e.message); +@@ -61,13 +61,13 @@ + label = title; + clicked.connect (() => { + edit_connection_uuid (connection.get_uuid ()); +- }); ++ }); + } + + private void edit_connection_uuid (string uuid) { + try { + var appinfo = AppInfo.create_from_commandline ( +- "nm-connection-editor --edit=%s".printf (uuid), null, AppInfoCreateFlags.NONE ++ "@networkmanagerapplet@/bin/nm-connection-editor --edit=%s".printf (uuid), null, AppInfoCreateFlags.NONE + ); + + appinfo.launch (null, null); +diff --git a/src/Widgets/VPN/VPNPage.vala b/src/Widgets/VPN/VPNPage.vala +index 23c3ae9..c71984c 100644 +--- a/src/Widgets/VPN/VPNPage.vala ++++ b/src/Widgets/VPN/VPNPage.vala +@@ -86,8 +86,7 @@ namespace Network { + add_button.tooltip_text = _("Add VPN Connection…"); + add_button.clicked.connect (() => { + add_button.sensitive = false; +- var command = new Granite.Services.SimpleCommand ("/usr/bin", +- "nm-connection-editor --create --type=vpn"); ++ var command = new Granite.Services.SimpleCommand ("@networkmanagerapplet@", "bin/nm-connection-editor --create --type=vpn"); + command.done.connect ((exit) => { + if (exit != 0) { + var dialog = new Gtk.MessageDialog (null, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, "%s", _("Failed to run Connection Editor.")); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix new file mode 100644 index 000000000000..6bb5d285a34f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig +, vala, libgee, granite, gtk3, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-notifications"; + version = "2.1.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0p0aj3bbjrh6x8wajqqb5yqm2iqfnj7kp16zf4hdr4siw0sx5p8n"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Notifications Plug"; + homepage = https://github.com/elementary/switchboard-plug-notifications; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix new file mode 100644 index 000000000000..0417d33df7d7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala +, libgee, granite, gtk3, libaccounts-glib, libsignon-glib, json-glib +, librest, webkitgtk, libsoup, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-onlineaccounts"; + version = "2.0.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "03h8ii8zz59fpp4fwlvyx3m3550096fn7a6w612b1rbj3dqhlmh9"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + json-glib + libaccounts-glib + libgee + libsignon-glib + libsoup + librest + switchboard + webkitgtk + ]; + + PKG_CONFIG_LIBACCOUNTS_GLIB_PROVIDERFILESDIR = "${placeholder "out"}/share/accounts/providers"; + PKG_CONFIG_LIBACCOUNTS_GLIB_SERVICEFILESDIR = "${placeholder "out"}/share/accounts/services"; + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "${placeholder "out"}/lib/switchboard"; + + + meta = with stdenv.lib; { + description = "Switchboard Online Accounts Plug"; + homepage = https://github.com/elementary/switchboard-plug-onlineaccounts; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/backgrounds.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/backgrounds.patch new file mode 100644 index 000000000000..a1b019179d1b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/backgrounds.patch @@ -0,0 +1,26 @@ +diff --git a/set-wallpaper-contract/set-wallpaper.vala b/set-wallpaper-contract/set-wallpaper.vala +index 3e02089..7ce7041 100644 +--- a/set-wallpaper-contract/set-wallpaper.vala ++++ b/set-wallpaper-contract/set-wallpaper.vala +@@ -38,7 +38,7 @@ namespace SetWallpaperContractor { + </transition> + """; + +- const string SYSTEM_BACKGROUNDS_PATH = "/usr/share/backgrounds"; ++ const string SYSTEM_BACKGROUNDS_PATH = "/run/current-system/sw/share/backgrounds"; + + private int delay_value = 60; + +diff --git a/src/Views/Wallpaper.vala b/src/Views/Wallpaper.vala +index 4be14fa..aa8832f 100644 +--- a/src/Views/Wallpaper.vala ++++ b/src/Views/Wallpaper.vala +@@ -38,7 +38,7 @@ public class Wallpaper : Gtk.Grid { + FileAttribute.THUMBNAIL_IS_VALID + }; + +- const string SYSTEM_BACKGROUNDS_PATH = "/usr/share/backgrounds"; ++ const string SYSTEM_BACKGROUNDS_PATH = "/run/current-system/sw/share/backgrounds"; + + public Switchboard.Plug plug { get; construct set; } + private GLib.Settings settings; diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix new file mode 100644 index 000000000000..e47dc4c4060c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala +, libgee, granite, gexiv2, elementary-settings-daemon, gtk3, gnome-desktop +, gala, wingpanel, plank, switchboard, gettext, gobject-introspection, bamf }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-pantheon-shell"; + version = "2.8.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0yy821hl26jfd9hyigqi7nmaf30iww0lhg9qzcwlfzsvvfwnxagi"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + bamf + gexiv2 + gnome-desktop + elementary-settings-daemon + granite + gtk3 + libgee + plank + switchboard + ]; + + patches = [ + ./backgrounds.patch # Having https://github.com/elementary/switchboard-plug-pantheon-shell/issues/166 would make this patch uneeded + ./hardcode-gsettings.patch + ]; + + postPatch = '' + substituteInPlace src/Views/Appearance.vala --subst-var-by GALA_GSETTINGS_PATH ${gala}/share/gsettings-schemas/${gala.name}/glib-2.0/schemas + substituteInPlace src/Views/Appearance.vala --subst-var-by WINGPANEL_GSETTINGS_PATH ${wingpanel}/share/gsettings-schemas/${wingpanel.name}/glib-2.0/schemas + ''; + + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Desktop Plug"; + homepage = https://github.com/elementary/switchboard-plug-pantheon-shell; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/hardcode-gsettings.patch new file mode 100644 index 000000000000..d023e1b55ce6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/hardcode-gsettings.patch @@ -0,0 +1,23 @@ +diff --git a/src/Views/Appearance.vala b/src/Views/Appearance.vala +index 721d458..17e1c58 100644 +--- a/src/Views/Appearance.vala ++++ b/src/Views/Appearance.vala +@@ -66,10 +66,16 @@ public class Appearance : Gtk.Grid { + attach (text_size_label, 0, 2); + attach (text_size_modebutton, 1, 2); + +- var animations_settings = new Settings (ANIMATIONS_SCHEMA); ++ SettingsSchemaSource gala_schema_source = new SettingsSchemaSource.from_directory ("@GALA_GSETTINGS_PATH@", SettingsSchemaSource.get_default (), true); ++ SettingsSchema animations_schema = gala_schema_source.lookup (ANIMATIONS_SCHEMA, false); ++ ++ var animations_settings = new Settings.full (animations_schema, null, null); + animations_settings.bind (ANIMATIONS_KEY, animations_switch, "active", SettingsBindFlags.DEFAULT); + +- var panel_settings = new Settings (PANEL_SCHEMA); ++ SettingsSchemaSource panel_schema_source = new SettingsSchemaSource.from_directory ("@WINGPANEL_GSETTINGS_PATH@", SettingsSchemaSource.get_default (), true); ++ SettingsSchema panel_schema = panel_schema_source.lookup (PANEL_SCHEMA, false); ++ ++ var panel_settings = new Settings.full (panel_schema, null, null); + panel_settings.bind (TRANSLUCENCY_KEY, translucency_switch, "active", SettingsBindFlags.DEFAULT); + + var interface_settings = new Settings (INTERFACE_SCHEMA); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix new file mode 100644 index 000000000000..ab1fd98795a1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchFromGitHub, pantheon, substituteAll, meson, ninja +, pkgconfig, vala, libgee, elementary-dpms-helper, elementary-settings-daemon +, makeWrapper, granite, gtk3, dbus, polkit, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-power"; + version = "2.3.5"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1wcxz4jxyv8kms9gxpwvrb356h10qvcwmdjzjzl2bvj5yl1rfcs9"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + dbus + granite + gtk3 + libgee + polkit + switchboard + ]; + + patches = [ + (substituteAll { + src = ./dpms-helper-exec.patch; + elementary_dpms_helper = "${elementary-dpms-helper}"; + }) + ./hardcode-gsettings.patch + ]; + + postPatch = '' + substituteInPlace src/MainView.vala --subst-var-by DPMS_HELPER_GSETTINGS_PATH ${elementary-dpms-helper}/share/gsettings-schemas/${elementary-dpms-helper.name}/glib-2.0/schemas + substituteInPlace src/MainView.vala --subst-var-by GSD_GSETTINGS_PATH ${elementary-settings-daemon}/share/gsettings-schemas/${elementary-settings-daemon.name}/glib-2.0/schemas + ''; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + PKG_CONFIG_DBUS_1_SYSTEM_BUS_SERVICES_DIR = "share/dbus-1/system-services"; + PKG_CONFIG_DBUS_1_SYSCONFDIR = "etc"; + PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR = "share/polkit-1/actions"; + + meta = with stdenv.lib; { + description = "Switchboard Power Plug"; + homepage = https://github.com/elementary/switchboard-plug-power; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch new file mode 100644 index 000000000000..335d3f296262 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch @@ -0,0 +1,13 @@ +diff --git a/src/MainView.vala b/src/MainView.vala +index 1654e68..175f220 100644 +--- a/src/MainView.vala ++++ b/src/MainView.vala +@@ -317,7 +317,7 @@ public class Power.MainView : Gtk.Grid { + + private static void run_dpms_helper () { + try { +- string[] argv = { "io.elementary.dpms-helper" }; ++ string[] argv = { "@elementary_dpms_helper@/bin/io.elementary.dpms-helper" }; + Process.spawn_async (null, argv, Environ.get (), + SpawnFlags.SEARCH_PATH | SpawnFlags.STDERR_TO_DEV_NULL | SpawnFlags.STDOUT_TO_DEV_NULL, + null, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/hardcode-gsettings.patch new file mode 100644 index 000000000000..caacdad6eda9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/power/hardcode-gsettings.patch @@ -0,0 +1,20 @@ +diff --git a/src/MainView.vala b/src/MainView.vala +index 1654e68..ad8fed9 100644 +--- a/src/MainView.vala ++++ b/src/MainView.vala +@@ -46,8 +46,13 @@ public class Power.MainView : Gtk.Grid { + + var label_size = new Gtk.SizeGroup (Gtk.SizeGroupMode.HORIZONTAL); + +- settings = new GLib.Settings ("org.gnome.settings-daemon.plugins.power"); +- elementary_dpms_settings = new GLib.Settings ("io.elementary.dpms"); ++ SettingsSchemaSource gsd_sss = new SettingsSchemaSource.from_directory ("@GSD_GSETTINGS_PATH@", null, true); ++ SettingsSchema gsd_schema = gsd_sss.lookup ("org.gnome.settings-daemon.plugins.power", false); ++ settings = new GLib.Settings.full (gsd_schema, null, null); ++ ++ SettingsSchemaSource dpms_sss = new SettingsSchemaSource.from_directory ("@DPMS_HELPER_GSETTINGS_PATH@", null, true); ++ SettingsSchema elementary_dpms_schema = dpms_sss.lookup ("io.elementary.dpms", false); ++ elementary_dpms_settings = new GLib.Settings.full (elementary_dpms_schema, null, null); + + battery = new Battery (); + power_supply = new PowerSupply (); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix new file mode 100644 index 000000000000..bb9e576a4c49 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig +, vala, libgee, granite, gtk3, cups, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-printers"; + version = "2.1.6"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "05pkf3whh51gd9d0h2h4clgf7r3mvzl4ybas7834vhy19dzcbzmc"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + cups + granite + gtk3 + libgee + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Printers Plug"; + homepage = https://github.com/elementary/switchboard-plug-printers; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix new file mode 100644 index 000000000000..4060e0717891 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix @@ -0,0 +1,62 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, python3, ninja +, pkgconfig, vala, libgee, granite, gtk3, polkit, zeitgeist +, switchboard, lightlocker, pantheon-agent-geoclue2, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-security-privacy"; + version = "2.2.0"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0f1idh36hlgmdva5jn0xnj2b6gbic0asnj3b7j283gyziibm3pxa"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + polkit + switchboard + zeitgeist + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + patches = [ + ./hardcode-gsettings.patch + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + + substituteInPlace src/Views/LockPanel.vala --subst-var-by LIGHTLOCKER_GSETTINGS_PATH ${lightlocker}/share/gsettings-schemas/${lightlocker.name}/glib-2.0/schemas + substituteInPlace src/Views/FirewallPanel.vala --subst-var-by SWITCHBOARD_SEC_PRIV_GSETTINGS_PATH $out/share/gsettings-schemas/${pname}-${version}/glib-2.0/schemas + ''; + + meta = with stdenv.lib; { + description = "Switchboard Security & Privacy Plug"; + homepage = https://github.com/elementary/switchboard-plug-security-privacy; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/hardcode-gsettings.patch new file mode 100644 index 000000000000..ffaf1ecf5db1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/hardcode-gsettings.patch @@ -0,0 +1,36 @@ +diff --git a/src/Views/FirewallPanel.vala b/src/Views/FirewallPanel.vala +index 994c4d1..5702de2 100644 +--- a/src/Views/FirewallPanel.vala ++++ b/src/Views/FirewallPanel.vala +@@ -49,10 +49,13 @@ public class SecurityPrivacy.FirewallPanel : Granite.SimpleSettingsPage { + } + + construct { +- settings = new Settings ("io.elementary.switchboard.security-privacy"); ++ SettingsSchemaSource sss = new SettingsSchemaSource.from_directory ("@SWITCHBOARD_SEC_PRIV_GSETTINGS_PATH@", SettingsSchemaSource.get_default (), true); ++ SettingsSchema security_privacy_schema = sss.lookup ("io.elementary.switchboard.security-privacy", false); ++ settings = new Settings.full (security_privacy_schema, null, null); ++ + disabled_rules = new Gee.HashMap<string, UFWHelpers.Rule> (); + load_disabled_rules (); +- ++ + status_switch.notify["active"].connect (() => { + if (loading == false) { + view.sensitive = status_switch.active; +diff --git a/src/Views/LockPanel.vala b/src/Views/LockPanel.vala +index 081cf10..42f6118 100644 +--- a/src/Views/LockPanel.vala ++++ b/src/Views/LockPanel.vala +@@ -30,7 +30,10 @@ public class SecurityPrivacy.LockPanel : Granite.SimpleSettingsPage { + } + + construct { +- locker = new Settings ("apps.light-locker"); ++ SettingsSchemaSource sss = new SettingsSchemaSource.from_directory ("@LIGHTLOCKER_GSETTINGS_PATH@", SettingsSchemaSource.get_default (), true); ++ SettingsSchema locker_schema = sss.lookup ("apps.light-locker", false); ++ ++ locker = new Settings.full (locker_schema, null, null); + + var lock_suspend_label = new Gtk.Label (_("Lock on sleep:")); + var lock_suspend_switch = new Gtk.Switch (); diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix new file mode 100644 index 000000000000..a2c047ffcb41 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig +, vala, libgee, granite, gtk3, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-sharing"; + version = "2.1.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1yi6aga9i18wwn22zwmfbhsk16f92fka837is5r8xghqb7a50hyh"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libgee + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Sharing Plug"; + homepage = https://github.com/elementary/switchboard-plug-sharing; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix new file mode 100644 index 000000000000..e4d0db46923b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig +, vala, libgee, granite, gtk3, pulseaudio, libcanberra, libcanberra-gtk3 +, switchboard, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard-plug-sound"; + version = "2.1.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0dvxmjziifffa2rm7h43ca5grhlcpih3rgik50mz808mqfxr4l1q"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ + granite + gtk3 + libcanberra + libcanberra-gtk3 + libgee + pulseaudio + switchboard + ]; + + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + meta = with stdenv.lib; { + description = "Switchboard Sound Plug"; + homepage = https://github.com/elementary/switchboard-plug-sound; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix new file mode 100644 index 000000000000..310230c7aacc --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja +, vala, gtk3, libgee, granite, gettext, clutter-gtk, libunity +, elementary-icon-theme, wrapGAppsHook, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "switchboard"; + version = "2.3.6"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0lsrn636b0f9a58jbid6mlhgrf8ajnh7phwmhgxz55sz7k7qa58g"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter-gtk + elementary-icon-theme + granite + gtk3 + libgee + libunity + ]; + + patches = [ ./plugs-path-env.patch ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Extensible System Settings app for Pantheon"; + homepage = https://github.com/elementary/switchboard; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch new file mode 100644 index 000000000000..f5d8567bffed --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch @@ -0,0 +1,25 @@ +diff --git a/lib/PlugsManager.vala b/lib/PlugsManager.vala +index 75d0eaf..c227908 100644 +--- a/lib/PlugsManager.vala ++++ b/lib/PlugsManager.vala +@@ -34,10 +34,18 @@ public class Switchboard.PlugsManager : GLib.Object { + private Gee.LinkedList<Switchboard.Plug> plugs; + + public signal void plug_added (Switchboard.Plug plug); +- ++ + private PlugsManager () { + plugs = new Gee.LinkedList<Switchboard.Plug> (); +- var base_folder = File.new_for_path (Build.PLUGS_DIR); ++ ++ var plugs_path = Environment.get_variable("SWITCHBOARD_PLUGS_PATH"); ++ if (plugs_path != null) { ++ debug ("SWITCHBOARD_PLUGS_PATH set to %s", plugs_path); ++ } else { ++ critical ("SWITCHBOARD_PLUGS_PATH not set"); ++ } ++ ++ var base_folder = File.new_for_path (plugs_path); + find_plugins (base_folder); + } + diff --git a/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix new file mode 100644 index 000000000000..cae8e74f4ba7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/apps/switchboard/wrapper.nix @@ -0,0 +1,19 @@ +{ stdenv, makeWrapper, symlinkJoin, switchboard, switchboardPlugs, plugs }: + +let + selectedPlugs = if plugs == null then switchboardPlugs else plugs; +in +symlinkJoin { + name = "${switchboard.name}-with-plugs"; + + paths = [ switchboard ] ++ selectedPlugs; + + buildInputs = [ makeWrapper ]; + + postBuild = '' + wrapProgram $out/bin/io.elementary.switchboard \ + --set SWITCHBOARD_PLUGS_PATH "$out/lib/switchboard" + ''; + + inherit (switchboard) meta; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix new file mode 100644 index 000000000000..2f7e79f9f9b3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja }: + +stdenv.mkDerivation rec { + pname = "stylesheet"; + version = "5.2.1"; + + name = "elementary-gtk-theme-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "03l8m87f7z25svxk0hhcqnn4qnnqvasr5qwzq3s87lx25gwjml29"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-gtk-theme"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + ]; + + meta = with stdenv.lib; { + description = "GTK theme designed to be smooth, attractive, fast, and usable"; + homepage = https://github.com/elementary/stylesheet; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix new file mode 100644 index 000000000000..23fb8445838a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix @@ -0,0 +1,55 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, python3,ninja, hicolor-icon-theme, gtk3 }: + +stdenv.mkDerivation rec { + pname = "icons"; + version = "5.0.3"; + + name = "elementary-icon-theme-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0wpv7yirf44bfqfmyshzfw9605j1idm7c9jqg68k3nmymmd6iqzf"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-icon-theme"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + python3 + ]; + + buildInputs = [ gtk3 ]; + + propagatedBuildInputs = [ hicolor-icon-theme ]; + + mesonFlags = [ + "-Dvolume_icons=false" # Tries to install some icons to / + "-Dpalettes=false" # Don't install gimp and inkscape palette files + ]; + + postPatch = '' + chmod +x meson/symlink.py + patchShebangs meson/symlink.py + ''; + + postFixup = "gtk-update-icon-cache $out/share/icons/elementary"; + + meta = with stdenv.lib; { + description = "Named, vector icons for elementary OS"; + longDescription = '' + An original set of vector icons designed specifically for elementary OS and its desktop environment: Pantheon. + ''; + homepage = https://github.com/elementary/icons; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix new file mode 100644 index 000000000000..430acfd9ac1a --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig }: + +stdenv.mkDerivation rec { + pname = "sound-theme"; + version = "1.0"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1dc583lq61c361arjl3s44d2k72c46bqvcqv1c3s69f2ndsnxjdz"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + ]; + + meta = with stdenv.lib; { + description = "A set of system sounds for elementary"; + homepage = https://github.com/elementary/sound-theme; + license = licenses.unlicense; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix new file mode 100644 index 000000000000..898d5f7b454f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, pantheon }: + +stdenv.mkDerivation rec { + pname = "wallpapers"; + version = "5.3"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1i0zf9gzhwm8hgq5cp1xnxipqjvgzd9wfiicz612hgp6ivc0z0ag"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/share/backgrounds/elementary + cp -av *.jpg $out/share/backgrounds/elementary + ''; + + meta = with stdenv.lib; { + description = "Collection of wallpapers for elementary"; + homepage = https://github.com/elementary/wallpapers; + license = licenses.publicDomain; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} + diff --git a/nixpkgs/pkgs/desktops/pantheon/default.nix b/nixpkgs/pkgs/desktops/pantheon/default.nix new file mode 100644 index 000000000000..a7b8a01eeb0b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/default.nix @@ -0,0 +1,222 @@ +{ pkgs, lib, gnome3 }: + + +lib.makeScope pkgs.newScope (self: with self; { + + apps = [ + elementary-calculator elementary-calendar + elementary-camera elementary-code elementary-files + elementary-music elementary-photos elementary-screenshot-tool + elementary-terminal elementary-videos switchboard-with-plugs + ]; + + artwork = [ + elementary-gtk-theme + elementary-icon-theme + elementary-sound-theme + elementary-wallpapers + ]; + + desktop = [ + elementary-session-settings + elementary-shortcut-overlay + gala + wingpanel-with-indicators + ]; + + services = [ + cerbere + elementary-capnet-assist + elementary-settings-daemon + elementary-dpms-helper + pantheon-agent-geoclue2 + pantheon-agent-polkit + ]; + + switchboardPlugs = [ + switchboard-plug-a11y switchboard-plug-about + switchboard-plug-applications switchboard-plug-bluetooth + switchboard-plug-datetime switchboard-plug-display + switchboard-plug-keyboard switchboard-plug-mouse-touchpad + switchboard-plug-network switchboard-plug-notifications + switchboard-plug-onlineaccounts switchboard-plug-pantheon-shell + switchboard-plug-power switchboard-plug-printers + switchboard-plug-security-privacy switchboard-plug-sharing + switchboard-plug-sound + ]; + + wingpanelIndicators = [ + wingpanel-applications-menu wingpanel-indicator-bluetooth + wingpanel-indicator-datetime wingpanel-indicator-keyboard + wingpanel-indicator-network wingpanel-indicator-nightlight + wingpanel-indicator-notifications wingpanel-indicator-power + wingpanel-indicator-session wingpanel-indicator-sound + ]; + + updateScript = callPackage ./update.nix { }; + + maintainers = with pkgs.stdenv.lib.maintainers; [ worldofpeace ]; + + mutter = pkgs.gnome3.mutter328; + vala = pkgs.vala_0_40; + + elementary-gsettings-schemas = callPackage ./desktop/elementary-gsettings-schemas { }; + + #### APPS + + elementary-calculator = callPackage ./apps/elementary-calculator { }; + + elementary-calendar = callPackage ./apps/elementary-calendar { }; + + elementary-camera = callPackage ./apps/elementary-camera { }; + + elementary-code = callPackage ./apps/elementary-code { }; + + elementary-files = callPackage ./apps/elementary-files { }; + + elementary-music = callPackage ./apps/elementary-music { }; + + elementary-photos = callPackage ./apps/elementary-photos { }; + + elementary-screenshot-tool = callPackage ./apps/elementary-screenshot-tool { }; + + elementary-terminal = callPackage ./apps/elementary-terminal { }; + + elementary-videos = callPackage ./apps/elementary-videos { }; + + #### DESKTOP + + elementary-default-settings = callPackage ./desktop/elementary-default-settings { }; + + elementary-greeter = callPackage ./desktop/elementary-greeter { + inherit (gnome3) gnome-desktop; + }; + + elementary-print-shim = callPackage ./desktop/elementary-print-shim { }; + + elementary-session-settings = callPackage ./desktop/elementary-session-settings { + inherit (gnome3) gnome-session gnome-keyring; + }; + + elementary-shortcut-overlay = callPackage ./desktop/elementary-shortcut-overlay { }; + + extra-elementary-contracts = callPackage ./desktop/extra-elementary-contracts { + inherit (gnome3) file-roller gnome-bluetooth; + }; + + gala = callPackage ./desktop/gala { + inherit (gnome3) gnome-desktop; + }; + + wingpanel = callPackage ./desktop/wingpanel { }; + + wingpanel-with-indicators = callPackage ./desktop/wingpanel/wrapper.nix { + indicators = null; + }; + + #### LIBRARIES + + granite = callPackage ./granite { }; + + #### SERVICES + + cerbere = callPackage ./services/cerbere { }; + + contractor = callPackage ./services/contractor { }; + + elementary-capnet-assist = callPackage ./services/elementary-capnet-assist { }; + + elementary-dpms-helper = callPackage ./services/elementary-dpms-helper { }; + + # We're using ubuntu and elementary's patchset due to reasons + # explained here -> https://github.com/elementary/greeter/issues/92#issuecomment-376215614 + # Take note of "I am holding off on "fixing" this bug for as long as possible." + elementary-settings-daemon = callPackage ./services/elementary-settings-daemon { + inherit (gnome3) libgweather; + }; + + pantheon-agent-geoclue2 = callPackage ./services/pantheon-agent-geoclue2 { }; + + pantheon-agent-polkit = callPackage ./services/pantheon-agent-polkit { }; + + #### WINGPANEL INDICATORS + + wingpanel-applications-menu = callPackage ./desktop/wingpanel-indicators/applications-menu { }; + + wingpanel-indicator-bluetooth = callPackage ./desktop/wingpanel-indicators/bluetooth { }; + + wingpanel-indicator-datetime = callPackage ./desktop/wingpanel-indicators/datetime { }; + + wingpanel-indicator-keyboard = callPackage ./desktop/wingpanel-indicators/keyboard { }; + + wingpanel-indicator-network = callPackage ./desktop/wingpanel-indicators/network { + inherit (gnome3) networkmanagerapplet; + }; + + wingpanel-indicator-nightlight = callPackage ./desktop/wingpanel-indicators/nightlight { }; + + wingpanel-indicator-notifications = callPackage ./desktop/wingpanel-indicators/notifications { }; + + wingpanel-indicator-power = callPackage ./desktop/wingpanel-indicators/power { }; + + wingpanel-indicator-session = callPackage ./desktop/wingpanel-indicators/session { }; + + wingpanel-indicator-sound = callPackage ./desktop/wingpanel-indicators/sound { }; + + #### SWITCHBOARD + + switchboard = callPackage ./apps/switchboard { }; + + switchboard-with-plugs = callPackage ./apps/switchboard/wrapper.nix { + plugs = null; + }; + + switchboard-plug-a11y = callPackage ./apps/switchboard-plugs/a11y { }; + + switchboard-plug-about = callPackage ./apps/switchboard-plugs/about { }; + + switchboard-plug-applications = callPackage ./apps/switchboard-plugs/applications { }; + + switchboard-plug-bluetooth = callPackage ./apps/switchboard-plugs/bluetooth { }; + + switchboard-plug-datetime = callPackage ./apps/switchboard-plugs/datetime { }; + + switchboard-plug-display = callPackage ./apps/switchboard-plugs/display { }; + + switchboard-plug-keyboard = callPackage ./apps/switchboard-plugs/keyboard { }; + + switchboard-plug-mouse-touchpad = callPackage ./apps/switchboard-plugs/mouse-touchpad { }; + + switchboard-plug-network = callPackage ./apps/switchboard-plugs/network { + inherit (gnome3) networkmanagerapplet; + }; + + switchboard-plug-notifications = callPackage ./apps/switchboard-plugs/notifications { }; + + switchboard-plug-onlineaccounts = callPackage ./apps/switchboard-plugs/onlineaccounts { }; + + switchboard-plug-pantheon-shell = callPackage ./apps/switchboard-plugs/pantheon-shell { + inherit (gnome3) gnome-desktop; + }; + + switchboard-plug-power = callPackage ./apps/switchboard-plugs/power { }; + + switchboard-plug-printers = callPackage ./apps/switchboard-plugs/printers { }; + + switchboard-plug-security-privacy = callPackage ./apps/switchboard-plugs/security-privacy { }; + + switchboard-plug-sharing = callPackage ./apps/switchboard-plugs/sharing { }; + + switchboard-plug-sound = callPackage ./apps/switchboard-plugs/sound { }; + + ### ARTWORK + + elementary-gtk-theme = callPackage ./artwork/elementary-gtk-theme { }; + + elementary-icon-theme = callPackage ./artwork/elementary-icon-theme { }; + + elementary-sound-theme = callPackage ./artwork/elementary-sound-theme { }; + + elementary-wallpapers = callPackage ./artwork/elementary-wallpapers { }; + +}) diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch new file mode 100644 index 000000000000..438ed79d1bb0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch @@ -0,0 +1,25 @@ +diff --git a/debian/elementary-default-settings.gsettings-override b/debian/elementary-default-settings.gsettings-override +index 6452c30..899972d 100644 +--- a/debian/elementary-default-settings.gsettings-override ++++ b/debian/elementary-default-settings.gsettings-override +@@ -1,5 +1,5 @@ + [net.launchpad.plank.dock.settings] +-dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.pantheon.mail.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem','io.elementary.appcenter.dockitem'] ++dock-items=['gala-multitaskingview.dockitem','org.gnome.Epiphany.dockitem','org.gnome.Geary.dockitem','io.elementary.calendar.dockitem','io.elementary.music.dockitem','io.elementary.videos.dockitem','io.elementary.photos.dockitem','io.elementary.switchboard.dockitem'] + hide-delay=250 + hide-mode='window-dodge' + show-dock-item=false +@@ -8,13 +8,6 @@ theme='Gtk+' + [org.freedesktop.ibus.general.hotkey] + triggers=['<Control>space'] + +-[org.gnome.desktop.background] +-draw-background=true +-picture-options='zoom' +-picture-uri='file:///usr/share/backgrounds/elementaryos-default' +-primary-color='#000000' +-show-desktop-icons=false +- + [org.gnome.desktop.datetime] + automatic-timezone=true + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix new file mode 100644 index 000000000000..f133324a81ec --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchFromGitHub, fetchpatch, pantheon }: + +stdenv.mkDerivation rec { + pname = "default-settings"; + version = "5.0"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0gyv835qbr90001gda2pzngzzbbk5jf9grgfl25pqkm29s45rqq0"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + patches = [ + # See: https://github.com/elementary/default-settings/pull/86 (didn't make 5.0 release) + (fetchpatch { + url = "https://github.com/elementary/default-settings/commit/05d0b2a4e98c28203521d599b40745b46be549fa.patch"; + sha256 = "1wk1qva3yzc28gljnkx9hb3pwhqnfrsb08wd76lsl3xnylg0wn2l"; + }) + # See: https://github.com/elementary/default-settings/pull/94 (didn't make 5.0 release) + (fetchpatch { + url = "https://github.com/elementary/default-settings/commit/a2ca00130c16e805179fb5abd7b624a873dff2da.patch"; + sha256 = "1jp1c5d8jfm0404zsylfk7h9vj81s409wgbzbsd2kxmz65icq16x"; + }) + ./correct-override.patch + ]; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/etc/gtk-3.0 + cp -av settings.ini $out/etc/gtk-3.0 + + mkdir -p $out/share/glib-2.0/schemas + cp -av debian/elementary-default-settings.gsettings-override $out/share/glib-2.0/schemas/20-io.elementary.desktop.gschema.override + + mkdir $out/etc/wingpanel.d + cp -avr ${./io.elementary.greeter.whitelist} $out/etc/wingpanel.d/io.elementary.greeter.whitelist + + mkdir -p $out/share/elementary/config/plank/dock1 + cp -avr ${./launchers} $out/share/elementary/config/plank/dock1/launchers + ''; + + meta = with stdenv.lib; { + description = "Default settings and configuration files for elementary"; + homepage = https://github.com/elementary/default-settings; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist new file mode 100644 index 000000000000..0cff31f4f777 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist @@ -0,0 +1,6 @@ +liba11y.so +libbluetooth.so +libkeyboard.so +libnetwork.so +libpower.so +libsession.so diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem new file mode 100644 index 000000000000..b25bb8c85904 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/gala-multitaskingview.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem new file mode 100644 index 000000000000..3bd7d531840d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.calendar.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem new file mode 100644 index 000000000000..494edde183ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.music.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem new file mode 100644 index 000000000000..89536754964d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.photos.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem new file mode 100644 index 000000000000..312c35d9bf00 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.switchboard.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem new file mode 100644 index 000000000000..3b0f721a5644 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/io.elementary.videos.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem new file mode 100644 index 000000000000..b0218bac52d7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/org.gnome.Epiphany.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem new file mode 100644 index 000000000000..8b04efe417ea --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///run/current-system/sw/share/applications/org.gnome.Geary.desktop diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch new file mode 100644 index 000000000000..626e56ce5960 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch @@ -0,0 +1,25 @@ +From 2384bee55a46eac44eb9d329be4c2a097e053ae1 Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@users.noreply.github.com> +Date: Tue, 17 Jul 2018 07:04:18 -0400 +Subject: [PATCH 1/1] 'sysconfdir' will be etc not /etc for install + +--- + data/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/meson.build b/data/meson.build +index 7621b03..7c08eaf 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -20,7 +20,7 @@ i18n.merge_file ( + + install_data( + meson.project_name() + '.conf', +- install_dir: join_paths(get_option('sysconfdir'), 'lightdm') ++ install_dir: join_paths(get_option('prefix'), 'etc', 'lightdm') + ) + + install_data( +-- +2.17.1 + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix new file mode 100644 index 000000000000..303aae6882b8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix @@ -0,0 +1,103 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, substituteAll, makeWrapper, meson +, ninja, vala, desktop-file-utils, gtk3, granite, libgee, elementary-settings-daemon +, gnome-desktop, mutter, gobject-introspection, elementary-icon-theme, wingpanel-with-indicators +, elementary-gtk-theme, nixos-artwork, elementary-default-settings, lightdm, numlockx +, clutter-gtk, libGL, dbus, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "greeter"; + version = "3.3.1"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1vkq4z0hrmvzv4sh2qkxjajdxcycd1zj97a3pc8n4yb858pqfyzc"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + clutter-gtk + elementary-icon-theme + elementary-gtk-theme + elementary-settings-daemon + gnome-desktop + granite + gtk3 + libgee + libGL + lightdm + mutter + wingpanel-with-indicators + ]; + + patches = [ + (substituteAll { + src = ./gsd.patch; + elementary-settings-daemon = "${elementary-settings-daemon}/libexec"; + }) + (substituteAll { + src = ./numlockx.patch; + inherit numlockx; + }) + ./01-sysconfdir-install.patch + ]; + + mesonFlags = [ + # A hook does this but after wrapGAppsHook so the files never get wrapped. + "--sbindir=${placeholder "out"}/bin" + # baked into the program for discovery of the greeter configuration + "--sysconfdir=/etc" + ]; + + preFixup = '' + gappsWrapperArgs+=( + # GTK+ reads default settings (such as icons and themes) from elementary's settings.ini here + --prefix XDG_CONFIG_DIRS : "${elementary-default-settings}/etc" + + # dbus-launch needed in path + --prefix PATH : "${dbus}/bin" + + # for `wingpanel -g` + --prefix PATH : "${wingpanel-with-indicators}/bin" + + # TODO: they should be using meson for this + # See: https://github.com/elementary/greeter/blob/19c0730fded4e9ddec5a491f0e78f83c7c04eb59/src/PantheonGreeter.vala#L451 + --prefix PATH : "$out/bin" + ) + ''; + + postFixup = '' + substituteInPlace $out/share/xgreeters/io.elementary.greeter.desktop \ + --replace "Exec=io.elementary.greeter" "Exec=$out/bin/io.elementary.greeter" + + substituteInPlace $out/etc/lightdm/io.elementary.greeter.conf \ + --replace "#default-wallpaper=/usr/share/backgrounds/elementaryos-default" "default-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png" + ''; + + meta = with stdenv.lib; { + description = "LightDM Greeter for Pantheon"; + homepage = https://github.com/elementary/greeter; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch new file mode 100644 index 000000000000..1770d54aee0d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch @@ -0,0 +1,13 @@ +diff --git a/src/meson.build b/src/meson.build +index 2450c1a..a908d11 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -1,7 +1,7 @@ + conf_data = configuration_data() + conf_data.set('CONF_DIR', join_paths(get_option('sysconfdir'), 'lightdm')) + conf_data.set('GETTEXT_PACKAGE', meson.project_name()) +-conf_data.set('GSD_DIR', '/usr/lib/gnome-settings-daemon/') ++conf_data.set('GSD_DIR', '@elementary-settings-daemon@') + conf_data.set('VERSION', meson.project_version()) + config_header = configure_file ( + input: 'config.vala.in', diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch new file mode 100644 index 000000000000..2c7766b4284c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch @@ -0,0 +1,13 @@ +diff --git a/src/PantheonGreeter.vala b/src/PantheonGreeter.vala +index 11aa4c0..ae7bf7e 100644 +--- a/src/PantheonGreeter.vala ++++ b/src/PantheonGreeter.vala +@@ -163,7 +163,7 @@ public class PantheonGreeter : Gtk.Window { + warning (e.message); + } + if (activate_numlock) { +- Granite.Services.System.execute_command ("/usr/bin/numlockx on"); ++ Granite.Services.System.execute_command ("@numlockx@/bin/numlockx on"); + } + + var screensaver_timeout = 60; diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix new file mode 100644 index 000000000000..bd5688f941b2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix @@ -0,0 +1,44 @@ +{ stdenv, runCommand, gnome3, elementary-default-settings, nixos-artwork, glib, gala, epiphany, elementary-settings-daemon, gtk3, plank +, extraGSettingsOverrides ? "" +, extraGSettingsOverridePackages ? [] +}: + +let + + gsettingsOverridePackages = [ + gala + epiphany + elementary-settings-daemon + gnome3.mutter + gtk3 + plank + ] ++ extraGSettingsOverridePackages; + +in + +with stdenv.lib; + +# TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this +runCommand "elementary-gsettings-desktop-schemas" {} + '' + mkdir -p $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas + cp -rf ${gnome3.gsettings-desktop-schemas}/share/gsettings-schemas/gsettings-desktop-schemas*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas + + ${concatMapStrings (pkg: "cp -rf ${pkg}/share/gsettings-schemas/*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas\n") gsettingsOverridePackages} + + chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides + cp ${elementary-default-settings}/share/glib-2.0/schemas/20-io.elementary.desktop.gschema.override \ + $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas + + cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF + [org.gnome.desktop.background] + draw-background=true + picture-options='zoom' + picture-uri='${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png' + primary-color='#000000' + + ${extraGSettingsOverrides} + EOF + + ${glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/ + '' diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix new file mode 100644 index 000000000000..d8634b48570d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, ninja, pkgconfig, vala, gtk3 }: + +stdenv.mkDerivation rec { + pname = "print"; + version = "0.1.3"; + + name = "elementary-print-shim-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1w3cfap7j42x14mqpfqdm46hk5xc0v5kv8r6wxcnknr3sfxi8qlp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}-shim"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + ]; + + buildInputs = [ gtk3 ]; + + meta = with stdenv.lib; { + description = "Simple shim for printing support via Contractor"; + homepage = https://github.com/elementary/print; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop new file mode 100644 index 000000000000..517a9457ae10 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Name=Instantiate Default elementary dockitems +Exec=@script@ +StartupNotify=false +NoDisplay=true +OnlyShowIn=Pantheon; +X-GNOME-Autostart-Phase=EarlyInitialization diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix new file mode 100644 index 000000000000..fddd4143616e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix @@ -0,0 +1,107 @@ +{ stdenv, fetchFromGitHub, substituteAll, writeScript, pantheon, gnome-keyring, gnome-session, wingpanel, orca, at-spi2-core, elementary-default-settings, writeTextFile, writeShellScriptBin, elementary-settings-daemon }: + +let + + # + # ─── ENSURES PLANK GETS ELEMENTARY'S DEFAULT DOCKITEMS ──────────────────────────── + # + + # + # Upstream relies on /etc/skel to initiate a new users home directory with planks dockitems. + # + # That is not possible within nixos, but we can achieve this easily with a simple script that copies + # them. We then use a xdg autostart and initalize it during the "EarlyInitialization" phase of a gnome session + # which is most appropriate for installing files into $HOME. + # + + dockitems-script = writeScript "dockitems-script" '' + #!${stdenv.shell} + + elementary_default_settings="${elementary-default-settings}" + dock_items="$elementary_default_settings/share/elementary/config/plank/dock1/launchers"/* + + if [ ! -d "$HOME/.config/plank/dock1" ]; then + echo "Instantiating default Plank Dockitems..." + + mkdir -p $HOME/.config/plank/dock1/launchers + cp -r --no-preserve=mode,ownership $dock_items $HOME/.config/plank/dock1/launchers/ + else + echo "Plank Dockitems already instantiated" + fi + ''; + + dockitemAutostart = substituteAll { + src = ./default-elementary-dockitems.desktop; + script = "${dockitems-script}"; + }; + + executable = writeShellScriptBin "pantheon" '' + export XDG_CONFIG_DIRS=${elementary-settings-daemon}/etc/xdg:$XDG_CONFIG_DIRS + export XDG_DATA_DIRS=${placeholder "out"}/share:$XDG_DATA_DIRS + exec ${gnome-session}/bin/gnome-session --session=pantheon "$@" + ''; + +in + +stdenv.mkDerivation rec { + pname = "session-settings"; + version = "5.0.3"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1vrjm7bklkfv0dyafm312v4hxzy6lb7p1ny4ijkn48kr719gc71k"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/share + cp -avr applications $out/share/ + + mkdir -p $out/etc/xdg/autostart + cp -av ${gnome-keyring}/etc/xdg/autostart/* $out/etc/xdg/autostart + cp -av ${orca}/etc/xdg/autostart/* $out/etc/xdg/autostart + cp -av ${at-spi2-core}/etc/xdg/autostart/* $out/etc/xdg/autostart + + cp "${dockitemAutostart}" $out/etc/xdg/autostart/default-elementary-dockitems.desktop + + mkdir -p $out/share/gnome-session/sessions + cp -av gnome-session/pantheon.session $out/share/gnome-session/sessions + + mkdir -p $out/share/xsessions + cp -av xsessions/pantheon.desktop $out/share/xsessions + ''; + + postFixup = '' + substituteInPlace $out/share/xsessions/pantheon.desktop \ + --replace "gnome-session --session=pantheon" "${executable}/bin/pantheon" \ + --replace "wingpanel" "${wingpanel}/bin/wingpanel" + + for f in $out/etc/xdg/autostart/*; do mv "$f" "''${f%.desktop}-pantheon.desktop"; done + + for autostart in $(grep -rl "OnlyShowIn=GNOME;" $out/etc/xdg/autostart) + do + echo "Patching OnlyShowIn to Pantheon in: $autostart" + sed -i "s,OnlyShowIn=GNOME;,OnlyShowIn=Pantheon;," $autostart + done + ''; + + meta = with stdenv.lib; { + description = "Session settings for elementary"; + homepage = https://github.com/elementary/session-settings; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix new file mode 100644 index 000000000000..6ceebf1980c6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, libxml2, desktop-file-utils +, gtk3, glib, granite, libgee, elementary-icon-theme, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "shortcut-overlay"; + version = "1.0.1"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1ph4rx2l5fn0zh4fjfjlgbgskmzc0lvzqgcv7v4kr5m4rij1p4y4"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + libxml2 + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + glib + granite + gtk3 + libgee + ]; + + meta = with stdenv.lib; { + description = "A native OS-wide shortcut overlay to be launched by Gala"; + homepage = https://github.com/elementary/shortcut-overlay; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix new file mode 100644 index 000000000000..4e19a65b58d4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix @@ -0,0 +1,39 @@ +{ stdenv, substituteAll, fetchFromGitHub, file-roller, gnome-bluetooth }: + +stdenv.mkDerivation rec { + pname = "extra-elementary-contracts"; + version = "2018-08-21"; + + name = "${pname}-${version}"; + + src = fetchFromGitHub { + owner = "worldofpeace"; + repo = pname; + rev = "a05dfb00695854163805b666185e3e9f31b6eb83"; + sha256 = "0fkaf2w4xg0n9faj74rgzy7gvd3yz112l058b157a3pr39vpci7g"; + }; + + patches = [ + (substituteAll { + src = ./exec-path.patch; + file_roller = "${file-roller}"; + gnome_bluetooth = "${gnome-bluetooth}"; + }) + ]; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/share/contractor + + cp *.contract $out/share/contractor/ + ''; + + meta = with stdenv.lib; { + description = "Extra contractor files for elementary"; + homepage = https://github.com/worldofpeace/extra-elementary-contracts; + license = licenses.gpl2; + maintainers = with maintainers; [ worldofpeace ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch new file mode 100644 index 000000000000..3b97e306119d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch @@ -0,0 +1,34 @@ +diff --git a/file-roller-compress.contract b/file-roller-compress.contract +index 8de5396..de7e939 100644 +--- a/file-roller-compress.contract ++++ b/file-roller-compress.contract +@@ -3,6 +3,6 @@ Name=Compress + Icon=add-files-to-archive + Description=Create a compressed archive with the selected objects + MimeType=!archive;inode/blockdevice;inode/chardevice;inode/fifo;inode/socket; +-Exec=file-roller --add %U ++Exec=@file_roller@/bin/file-roller --add %U + Gettext-Domain=file-roller + +diff --git a/file-roller-extract-here.contract b/file-roller-extract-here.contract +index 184a6f2..345f4e7 100644 +--- a/file-roller-extract-here.contract ++++ b/file-roller-extract-here.contract +@@ -3,5 +3,5 @@ Name=Extract Here + Icon=extract-archive + Description=Extract the contents of the archives in the archive folder and quit the program + MimeType=application/x-7z-compressed;application/x-7z-compressed-tar;application/x-ace;application/x-alz;application/x-ar;application/x-arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-bzip1;application/x-bzip1-compressed-tar;application/x-cabinet;application/x-cbr;application/x-cbz;application/x-cd-image;application/x-compress;application/x-compressed-tar;application/x-cpio;application/x-deb;application/x-ear;application/x-ms-dos-executable;application/x-gtar;application/x-gzip;application/x-gzpostscript;application/x-java-archive;application/x-lha;application/x-lhz;application/x-lrzip;application/x-lrzip-compressed-tar;application/x-lzip;application/x-lzip-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-ms-wim;application/x-rar;application/x-rar-compressed;application/x-rpm;application/x-rzip;application/x-tar;application/x-tarz;application/x-stuffit;application/x-war;application/x-xz;application/x-xz-compressed-tar;application/x-zip;application/x-zip-compressed;application/x-zoo;application/zip; +-Exec=file-roller --extract-here %U ++Exec=@file_roller@/bin/file-roller --extract-here %U + Gettext-Domain=file-roller +diff --git a/gnome-bluetooth.contract b/gnome-bluetooth.contract +index 745dbbe..8cc0102 100644 +--- a/gnome-bluetooth.contract ++++ b/gnome-bluetooth.contract +@@ -3,5 +3,5 @@ Name=Send files via Bluetooth + Icon=bluetooth + Description=Send files to device... + MimeType=!inode; +-Exec=bluetooth-sendto %F ++Exec=@gnome_bluetooth@/bin/bluetooth-sendto %F + Gettext-Domain=gnome-bluetooth2 diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix new file mode 100644 index 000000000000..97acc2c791bf --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/default.nix @@ -0,0 +1,66 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja, vala +, desktop-file-utils, gettext, libxml2, gtk3, granite, libgee, bamf, libcanberra +, libcanberra-gtk3, gnome-desktop, mutter, clutter, plank, gobject-introspection +, elementary-icon-theme, elementary-settings-daemon, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "gala"; + version = "unstable-2018-12-16"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = "7f1e392e03000df0bd47e7832bb3adab81f39ae5"; + sha256 = "1syqq0xfyg5nbnnmy0wp5d66k1bvq9qn27lvr37abxxqig9acpc8"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + versionPolicy = "master"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + clutter + elementary-icon-theme + gnome-desktop + elementary-settings-daemon + granite + gtk3 + libcanberra + libcanberra-gtk3 + libgee + mutter + plank + ]; + + patches = [ ./plugins-dir.patch ]; + + postPatch = '' + chmod +x build-aux/meson/post_install.py + patchShebangs build-aux/meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "A window & compositing manager based on mutter and designed by elementary for use with Pantheon"; + homepage = https://github.com/elementary/gala; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch new file mode 100644 index 000000000000..e83308ea5526 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch @@ -0,0 +1,22 @@ +diff --git a/meson.build b/meson.build +index 6b20a60..205699b 100644 +--- a/meson.build ++++ b/meson.build +@@ -38,7 +38,7 @@ conf.set_quoted('PACKAGE_VERSION', gala_version) + conf.set_quoted('DATADIR', data_dir) + conf.set_quoted('PKGDATADIR', pkgdata_dir) + conf.set_quoted('PKGLIBDIR', pkglib_dir) +-conf.set_quoted('PLUGINSDIR', plugins_dir) ++conf.set_quoted('PLUGINSDIR', '/run/current-system/sw/lib/gala/plugins') + conf.set_quoted('RELEASE_NAME', 'Window Manager.') + conf.set_quoted('VERSION', gala_version) + conf.set_quoted('VERSION_INFO', (is_release ? 'Release' : 'Development')) +@@ -83,7 +83,7 @@ add_project_arguments([ + '-DDATADIR="@0@"'.format(data_dir), + '-DPKGDATADIR="@0@"'.format(pkgdata_dir), + '-DPKGLIBDIR="@0@"'.format(pkglib_dir), +- '-DPLUGINDIR="@0@"'.format(plugins_dir), ++ '-DPLUGINDIR="@0@"'.format('/run/current-system/sw/lib/gala/plugins'), + '-DSCHEMA="org.pantheon.desktop.gala"', + '-DRESOURCEPATH="/org/pantheon/desktop/gala"', + diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch new file mode 100644 index 000000000000..264a4a5b26da --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch @@ -0,0 +1,24 @@ +diff --git a/lib/synapse-plugins/calculator-plugin.vala b/lib/synapse-plugins/calculator-plugin.vala +index 1b5fa06..076c0c7 100644 +--- a/lib/synapse-plugins/calculator-plugin.vala ++++ b/lib/synapse-plugins/calculator-plugin.vala +@@ -51,9 +51,7 @@ namespace Synapse { + _("Calculator"), + _("Calculate basic expressions."), + "accessories-calculator", +- register_plugin, +- Environment.find_program_in_path ("bc") != null, +- _("bc is not installed")); ++ register_plugin); + } + + static construct { +@@ -90,7 +88,7 @@ namespace Synapse { + if (matched) { + Pid pid; + int read_fd, write_fd; +- string[] argv = {"bc", "-l"}; ++ string[] argv = {"@exec@", "-l"}; + string? solution = null; + + try { diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix new file mode 100644 index 000000000000..e4f7df107ba8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix @@ -0,0 +1,72 @@ +{ stdenv, fetchFromGitHub, pantheon, substituteAll, cmake, ninja +, pkgconfig, vala, granite, libgee, gettext, gtk3, appstream, gnome-menus +, json-glib, plank, bamf, switchboard, libunity, libsoup, wingpanel, libwnck3 +, zeitgeist, gobject-introspection, elementary-icon-theme, bc, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "applications-menu"; + version = "2.4.2"; + + name = "wingpanel-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0y7kh50ixvm4m56v18c70s05hhpfp683c4qi3sxy50p2368d772x"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "wingpanel-${pname}"; + }; + }; + + nativeBuildInputs = [ + appstream + cmake + ninja + gettext + gobject-introspection + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + elementary-icon-theme + gnome-menus + granite + gtk3 + json-glib + libgee + libsoup + libunity + libwnck3 + plank + switchboard + wingpanel + zeitgeist + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + PKG_CONFIG_SWITCHBOARD_2_0_PLUGSDIR = "lib/switchboard"; + + patches = [ + (substituteAll { + src = ./bc.patch; + exec = "${bc}/bin/bc"; + }) + ./xdg.patch + ]; + + meta = with stdenv.lib; { + description = "Lightweight and stylish app launcher for Pantheon"; + homepage = https://github.com/elementary/applications-menu; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/xdg.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/xdg.patch new file mode 100644 index 000000000000..f17e2581e07e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/xdg.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 928976a..7f0ea58 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -90,7 +90,7 @@ link_directories (${DEPS_LIBRARY_DIRS}) + + # Installation + install (TARGETS ${APPNAME} RUNTIME DESTINATION bin) +-install (FILES ${applications_menu} DESTINATION /etc/xdg/menus) ++install (FILES ${applications_menu} DESTINATION etc/xdg/menus) + file (GLOB resources "${CMAKE_CURRENT_SOURCE_DIR}/data/*") + + # Settings schema diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix new file mode 100644 index 000000000000..16f3ae2e28e0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3 +, ninja, vala, gtk3, granite, libnotify, wingpanel, libgee, libxml2 +, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-bluetooth"; + version = "2.1.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1gx0xglp6b3znxl4d2vpzhfkxz5z8q04hh7z2mrihj1in155bn44"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + libnotify + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Bluetooth Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-bluetooth; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch new file mode 100644 index 000000000000..2370fbcd3cb2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/calendar-exec.patch @@ -0,0 +1,13 @@ +diff --git a/src/Widgets/calendar/Calendar.vala b/src/Widgets/calendar/Calendar.vala +index 76443ca..d86bd44 100644 +--- a/src/Widgets/calendar/Calendar.vala ++++ b/src/Widgets/calendar/Calendar.vala +@@ -19,7 +19,7 @@ + + namespace DateTime.Widgets { + public class Calendar : Gtk.Box { +- private const string CALENDAR_EXEC = "/usr/bin/io.elementary.calendar"; ++ private const string CALENDAR_EXEC = "@elementary-calendar@"; + + ControlHeader heading; + CalendarView cal; diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix new file mode 100644 index 000000000000..ee5cd5118186 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix @@ -0,0 +1,71 @@ +{ stdenv, fetchFromGitHub, fetchpatch, pantheon, pkgconfig, meson, python3 +, ninja, substituteAll, vala, gtk3, granite, wingpanel, evolution-data-server +, libical, libgee, libxml2, libsoup, gobject-introspection +, elementary-calendar, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-datetime"; + version = "2.1.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1y7a4xjwl3bpls56ys6g3s6mh5b3qbjm2vw7b6n2i4x7a63c4cbh"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + evolution-data-server + granite + gtk3 + libgee + libical + libsoup + wingpanel + ]; + + patches = [ + (substituteAll { + src = ./calendar-exec.patch; + elementary-calendar = "${elementary-calendar}/bin/io.elementary.calendar"; + }) + # Use "clock-format" GSettings key that's been moved to granite + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/wingpanel-indicator-datetime/raw/c8d515b76aa812c141212d5515621a6febd781a3/f/00-move-clock-format-settings-to-granite.patch"; + sha256 = "1sq3aw9ckkm057rnrclnw9lyrxbpl37fyzfnbixi2q3ypr70n880"; + }) + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Date & Time Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-datetime; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix new file mode 100644 index 000000000000..e2faccedbb70 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja +, substituteAll, vala, gtk3, granite, libxml2, wingpanel, libgee +, xorg, libgnomekbd, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-keyboard"; + version = "2.1.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0x0bdd9svw4sffx8pa0pqlh6mrj3fqp4mgrb4n7ys26k2w20ngnb"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + libxml2 + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + wingpanel + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + libgnomekbd_path = "${libgnomekbd}/bin/"; + config = "${xorg.xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"; + }) + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + meta = with stdenv.lib; { + description = "Keyboard Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-keyboard; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch new file mode 100644 index 000000000000..58e6853e606e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/fix-paths.patch @@ -0,0 +1,26 @@ +diff --git a/src/Indicator.vala b/src/Indicator.vala +index cd7ca49..0bef9c7 100644 +--- a/src/Indicator.vala ++++ b/src/Indicator.vala +@@ -94,7 +94,7 @@ public class Keyboard.Indicator : Wingpanel.Indicator { + private void show_keyboard_map () { + close (); + +- string command = "gkbd-keyboard-display \"--layout=" + layouts.get_current_with_variant () + "\""; ++ string command = "@libgnomekbd_path@gkbd-keyboard-display \"--layout=" + layouts.get_current_with_variant () + "\""; + + try { + AppInfo.create_from_commandline (command, null, AppInfoCreateFlags.NONE).launch (null, null); +diff --git a/src/LayoutsManager.vala b/src/LayoutsManager.vala +index 1bac80e..67df847 100644 +--- a/src/LayoutsManager.vala ++++ b/src/LayoutsManager.vala +@@ -97,7 +97,7 @@ public class Keyboard.Widgets.LayoutManager : Gtk.ScrolledWindow { + + public string? get_name_for_xkb_layout (string language, string? variant) { + debug ("get_name_for_xkb_layout (%s, %s)", language, variant); +- Xml.Doc* doc = Xml.Parser.parse_file ("/usr/share/X11/xkb/rules/evdev.xml"); ++ Xml.Doc* doc = Xml.Parser.parse_file ("@config@"); + if (doc == null) { + critical ("'evdev.xml' not found or permissions incorrect\n"); + return null; diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix new file mode 100644 index 000000000000..245e12d45919 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala +, gtk3, granite, networkmanager, networkmanagerapplet, wingpanel +, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-network"; + version = "2.2.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0fch27imk5x4nfx49cwcylkxd7m289rl9niy1vx5kjplhbhyhdq2"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + networkmanager + networkmanagerapplet + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + meta = with stdenv.lib; { + description = "Network Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-network; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix new file mode 100644 index 000000000000..53754c31d874 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala +, gtk3, granite, wingpanel, libgee, libxml2, gobject-introspection +, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-nightlight"; + version = "2.0.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "17pa048asbkhzz5945hjp96dnghdl72nqp1zq0b999nawnfrb339"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + meta = with stdenv.lib; { + description = "Night Light Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-nightlight; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix new file mode 100644 index 000000000000..aff7d9891adf --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, vala, gtk3, granite +, wingpanel, libgee, libwnck3, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-notifications"; + version = "2.1.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1960s3xcsx6yjlnk0csf1m66s1z1sj5rym9b2fy7pm2nan47z3ld"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libgee + libwnck3 + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + meta = with stdenv.lib; { + description = "Notifications Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-notifications; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix new file mode 100644 index 000000000000..d7627c511001 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3 +, ninja, vala, gtk3, granite, bamf, libgtop, udev, wingpanel +, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-power"; + version = "2.1.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "02gp9m9zkmhcl43nz02kjkcim4zm25zab3il8dhwkihh731g1c6j"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + bamf + elementary-icon-theme + granite + gtk3 + libgee + libgtop + udev + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Power Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-power; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix new file mode 100644 index 000000000000..b910f6a71809 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson +, ninja, vala, gtk3, granite, wingpanel, accountsservice +, libgee, gobject-introspection, elementary-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-session"; + version = "2.2.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "15ghhiabk74m7fm5pzr2qmdwpc330jczvvkwbf5pf7qczfyipjln"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + accountsservice + elementary-icon-theme + granite + gtk3 + libgee + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + meta = with stdenv.lib; { + description = "Session Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-session; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix new file mode 100644 index 000000000000..003e431bcf7e --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson +, python3, ninja, vala, gtk3, granite, wingpanel, libnotify +, pulseaudio, libcanberra-gtk3, libgee, libxml2, wrapGAppsHook +, gobject-introspection, elementary-icon-theme }: + +stdenv.mkDerivation rec { + pname = "wingpanel-indicator-sound"; + version = "2.1.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0hxbr5dp8d1czq8ffw339r41c7srqb72vr48hxph8g091d3mcgcl"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + libxml2 + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + elementary-icon-theme + granite + gtk3 + libcanberra-gtk3 + libgee + libnotify + pulseaudio + wingpanel + ]; + + PKG_CONFIG_WINGPANEL_2_0_INDICATORSDIR = "lib/wingpanel"; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "Sound Indicator for Wingpanel"; + homepage = https://github.com/elementary/wingpanel-indicator-sound; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix new file mode 100644 index 000000000000..a5ca227bbc20 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/default.nix @@ -0,0 +1,61 @@ +{ stdenv, fetchFromGitHub, pantheon, wrapGAppsHook, pkgconfig, meson, ninja +, vala, gala, gtk3, libgee, granite, gettext, glib-networking, mutter, json-glib +, python3, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "wingpanel"; + version = "2.2.2"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1knkqh9q6yp7qf27zi6ki20fq4w0ia2hklvv84ivfmfa0irz0j6r"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gettext + glib-networking + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + gala + granite + gtk3 + json-glib + libgee + mutter + ]; + + patches = [ ./indicators.patch ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "The extensible top panel for Pantheon"; + longDescription = '' + Wingpanel is an empty container that accepts indicators as extensions, + including the applications menu. + ''; + homepage = https://github.com/elementary/wingpanel; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch new file mode 100644 index 000000000000..68a5fd532a8d --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/indicators.patch @@ -0,0 +1,21 @@ +diff --git a/lib/IndicatorManager.vala b/lib/IndicatorManager.vala +index a99a1ec..0ae7799 100644 +--- a/lib/IndicatorManager.vala ++++ b/lib/IndicatorManager.vala +@@ -115,7 +115,15 @@ public class Wingpanel.IndicatorManager : GLib.Object { + } + + /* load indicators */ +- var base_folder = File.new_for_path (Build.INDICATORS_DIR); ++ ++ var indicators_path = Environment.get_variable("WINGPANEL_INDICATORS_PATH"); ++ if (indicators_path != null) { ++ debug ("WINGPANEL_INDICATORS_PATH set to %s", indicators_path); ++ } else { ++ critical ("WINGPANEL_INDICATORS_PATH not set"); ++ } ++ ++ var base_folder = File.new_for_path (indicators_path); + + try { + monitor = base_folder.monitor_directory (FileMonitorFlags.NONE, null); diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix new file mode 100644 index 000000000000..cfae604d3a53 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/desktop/wingpanel/wrapper.nix @@ -0,0 +1,23 @@ +{ lib, makeWrapper, symlinkJoin, wingpanel, wingpanelIndicators, switchboard-with-plugs, indicators ? null }: + +let + selectedIndicators = if indicators == null then wingpanelIndicators else indicators; +in +symlinkJoin { + name = "${wingpanel.name}-with-indicators"; + + paths = [ wingpanel ] ++ selectedIndicators; + + buildInputs = [ makeWrapper ]; + + # We have to set SWITCHBOARD_PLUGS_PATH because wingpanel-applications-menu + # has a plugin to search switchboard settings + postBuild = '' + wrapProgram $out/bin/wingpanel \ + --set WINGPANEL_INDICATORS_PATH "$out/lib/wingpanel" \ + --set SWITCHBOARD_PLUGS_PATH "${switchboard-with-plugs}/lib/switchboard" \ + --suffix XDG_DATA_DIRS : ${lib.concatMapStringsSep ":" (indicator: ''${indicator}/share/gsettings-schemas/${indicator.name}'') selectedIndicators} + ''; + + inherit (wingpanel) meta; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/granite/default.nix b/nixpkgs/pkgs/desktops/pantheon/granite/default.nix new file mode 100644 index 000000000000..66ba331ddcdc --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/granite/default.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchFromGitHub, fetchpatch, python3, meson, ninja, vala, pkgconfig, gobject-introspection, libgee, pantheon, gtk3, glib, gettext, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "granite"; + version = "5.2.3"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "10ddq1s2w4jvpzq813cylmqhh8pggzaz890fy3kzg07275i98gah"; + }; + + patches = [ + # Resolve the circular dependency between granite and the datetime wingpanel indicator + # See: https://github.com/elementary/granite/pull/242 + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/granite/raw/0550b44ed6400c9b1ff7e70871913747df2ff323/f/00-datetime-clock-format-gsettings.patch"; + sha256 = "0i9yvdmn77x5fjdwd1raw6ym8js8yxa7w6ydc7syx7hcyls00dmq"; + }) + ]; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + hicolor-icon-theme + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "An extension to GTK+ used by elementary OS"; + longDescription = '' + Granite is a companion library for GTK+ and GLib. Among other things, it provides complex widgets and convenience functions + designed for use in apps built for elementary OS. + ''; + homepage = https://github.com/elementary/granite; + license = licenses.lgpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/cerbere/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/cerbere/default.nix new file mode 100644 index 000000000000..59983469c114 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/cerbere/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja, glib, libgee, vala, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "cerbere"; + version = "0.2.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0f9jr6q5z6nir5b77f96wm9rx6r6s9i0sr1yrymg3n7jyjgrvdwp"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + glib + libgee + ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "A simple service to ensure uptime of essential processes"; + homepage = https://github.com/elementary/cerbere; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; + +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix new file mode 100644 index 000000000000..a979b1341954 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/contractor/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, pantheon, meson, python3, ninja, pkgconfig, vala, glib, libgee, dbus, glib-networking, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "contractor"; + version = "0.3.4"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1jzqv7pglhhyrkj1pfk1l624zn1822wyl5dp6gvwn4sk3iqxwwhl"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + dbus + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + ]; + + buildInputs = [ + glib + glib-networking + libgee + ]; + + PKG_CONFIG_DBUS_1_SESSION_BUS_SERVICES_DIR = "share/dbus-1/services"; + + meta = with stdenv.lib; { + description = "A desktop-wide extension service used by elementary OS"; + homepage = https://github.com/elementarycontractor; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix new file mode 100644 index 000000000000..e77948ccf295 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix @@ -0,0 +1,58 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, python3, ninja, vala +, desktop-file-utils, gtk3, granite, libgee, gcr, webkitgtk, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "capnet-assist"; + version = "2.2.3"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "15cnwimkmmsb4rwvgm8bizcsn1krsj6k3qc88izn79is75y6wwji"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + gcr + granite + gtk3 + libgee + webkitgtk + ]; + + # Not useful here or in elementary - See: https://github.com/elementary/capnet-assist/issues/3 + patches = [ ./remove-capnet-test.patch ]; + + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + + meta = with stdenv.lib; { + description = "A small WebKit app that assists a user with login when a captive portal is detected"; + homepage = https://github.com/elementary/capnet-assist; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch new file mode 100644 index 000000000000..a59c74f22b3b --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-capnet-assist/remove-capnet-test.patch @@ -0,0 +1,13 @@ +diff --git a/meson.build b/meson.build +index 46c594b..ba0ea10 100644 +--- a/meson.build ++++ b/meson.build +@@ -33,8 +33,3 @@ meson.add_install_script('meson/post_install.py') + + subdir('data') + subdir('po') +- +-install_data( +- '90captive_portal_test', +- install_dir: join_paths(get_option('sysconfdir'), 'NetworkManager', 'dispatcher.d') +-) diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix new file mode 100644 index 000000000000..4dab02d50834 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchFromGitHub, pantheon, makeWrapper, lib, meson, ninja, desktop-file-utils, glib, coreutils, elementary-settings-daemon, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "dpms-helper"; + version = "1.0"; + + name = "elementary-${pname}-${version}"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0svfp0qyb6nx4mjl3jx4aqmb4x24m25jpi75mdis3yfr3c1xz9nh"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + attrPath = "elementary-${pname}"; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + makeWrapper + meson + ninja + wrapGAppsHook + ]; + + buildInputs = [ + elementary-settings-daemon + glib + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : "${stdenv.lib.makeBinPath [ glib.dev coreutils ]}") + ''; + + postFixup = '' + substituteInPlace $out/etc/xdg/autostart/io.elementary.dpms-helper.desktop \ + --replace "Exec=io.elementary.dpms-helper" "Exec=$out/bin/io.elementary.dpms-helper" + ''; + + # See: https://github.com/elementary/dpms-helper/pull/10 + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + meta = with stdenv.lib; { + description = "Sets DPMS settings found in org.pantheon.dpms"; + homepage = https://github.com/elementary/dpms-helper; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix new file mode 100644 index 000000000000..99ca20afe988 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/default.nix @@ -0,0 +1,117 @@ +{ fetchurl, fetchgit, substituteAll, stdenv, meson, ninja, pkgconfig, gnome3, perl, gettext, glib, libnotify, lcms2, libXtst +, libxkbfile, libpulseaudio, alsaLib, libcanberra-gtk3, upower, colord, libgweather, polkit +, geoclue2, librsvg, xf86_input_wacom, udev, libgudev, libwacom, libxslt, libxml2, networkmanager +, docbook_xsl, wrapGAppsHook, python3, ibus, xkeyboard_config, tzdata, nss, pantheon, accountsservice }: + +stdenv.mkDerivation rec { + pname = "elementary-settings-daemon"; + version = "3.30.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-settings-daemon/${stdenv.lib.versions.majorMinor version}/gnome-settings-daemon-${version}.tar.xz"; + sha256 = "0c663csa3gnsr6wm0xfll6aani45snkdj7zjwjfzcwfh8w4a3z12"; + }; + + # Source for ubuntu's patchset + src2 = fetchgit { + url = "https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-settings-daemon"; + rev = "refs/tags/ubuntu/${version}-1ubuntu1"; + sha256 = "02awkhw6jqm7yh812mw0nsdmsljfi8ksz8mvd2qpns5pcv002g2c"; + }; + + # We've omitted the 53_sync_input_sources_to_accountsservice patch because it breaks the build. + # See: https://gist.github.com/worldofpeace/2f152a20b7c47895bb93239fce1c9f52 + # + # Also omit ubuntu_calculator_snap.patch as that's obviously not useful here. + patches = let patchPath = "${src2}/debian/patches"; in [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata; + }) + "${patchPath}/45_suppress-printer-may-not-be-connected-notification.patch" + "${patchPath}/64_restore_terminal_keyboard_shortcut_schema.patch" + "${patchPath}/correct_logout_action.patch" + "${patchPath}/ubuntu-lid-close-suspend.patch" + "${patchPath}/revert-wacom-migration.patch" + "${patchPath}/revert-gsettings-removals.patch" + "${patchPath}/revert-mediakeys-dbus-interface-drop.patch" + "${patchPath}/ubuntu_ibus_configs.patch" + (fetchurl { + url = "https://github.com/elementary/os-patches/raw/6975d1c254cb6ab913b8e2396877203aea8eaa65/debian/patches/elementary-dpms.patch"; + sha256 = "0kh508ppiv4nvkg30gmw85cljlfq1bvkzhvf1iaxw0snb0mwgsxi"; + }) + ]; + + postPatch = '' + for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + postFixup = '' + for f in $out/etc/xdg/autostart/*; do mv "$f" "''${f%.desktop}-pantheon.desktop"; done + + for autostart in $(grep -rl "OnlyShowIn=GNOME;" $out/etc/xdg/autostart) + do + echo "Patching OnlyShowIn to Pantheon in: $autostart" + sed -i "s,OnlyShowIn=GNOME;,OnlyShowIn=Pantheon;," $autostart + done + + # This breaks lightlocker https://github.com/elementary/session-settings/commit/b0e7a2867608c3a3916f9e4e21a68264a20e44f8 + rm $out/etc/xdg/autostart/org.gnome.SettingsDaemon.ScreensaverProxy-pantheon.desktop + ''; + + nativeBuildInputs = [ + docbook_xsl + gettext + libxml2 + libxslt + meson + ninja + perl + pkgconfig + python3 + wrapGAppsHook + ]; + + buildInputs = with gnome3; [ + accountsservice + alsaLib + colord + geoclue2 + geocode-glib + glib + gnome-desktop + gsettings-desktop-schemas + gtk + ibus + lcms2 + libXtst + libcanberra-gtk3 + libgudev + libgweather + libnotify + libpulseaudio + librsvg + libwacom + libxkbfile + networkmanager + nss + polkit + udev + upower + xf86_input_wacom + xkeyboard_config + ]; + + mesonFlags = [ + "-Dudev_dir=${placeholder "out"}/lib/udev" + ]; + + meta = with stdenv.lib; { + license = licenses.gpl2Plus; + maintainers = pantheon.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch new file mode 100644 index 000000000000..2229302cab7c --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/elementary-settings-daemon/fix-paths.patch @@ -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; diff --git a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix new file mode 100644 index 000000000000..2487c4ba3af4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, fetchpatch, pantheon, pkgconfig, meson, ninja, vala, glib +, gtk3, libgee, desktop-file-utils, geoclue2, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "pantheon-agent-geoclue2"; + version = "1.0.1"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "0fww65dnbg9zn0gy1q2db39kjra50ykzw05pmn9iwxkijyxi8hm5"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + desktop-file-utils + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + geoclue2 + gtk3 + libgee + ]; + + # This should be provided by a post_install.py script - See -> https://github.com/elementary/pantheon-agent-geoclue2/pull/21 + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + meta = with stdenv.lib; { + description = "Pantheon Geoclue2 Agent"; + homepage = https://github.com/elementary/pantheon-agent-geoclue2; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix new file mode 100644 index 000000000000..4fdaa4a8bf9f --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja +, vala, gtk3, libgee, polkit, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "pantheon-agent-polkit"; + version = "0.1.6"; + + src = fetchFromGitHub { + owner = "elementary"; + repo = pname; + rev = version; + sha256 = "1g9l2jzpvv0dbvxh93w98a7ijsfqv3s3382li4s256179gihhd67"; + }; + + passthru = { + updateScript = pantheon.updateScript { + repoName = pname; + }; + }; + + nativeBuildInputs = [ + gobject-introspection + meson + ninja + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + libgee + polkit + ]; + + meta = with stdenv.lib; { + description = "Polkit Agent for the Pantheon Desktop"; + homepage = https://github.com/elementary/pantheon-agent-polkit; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = pantheon.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/pantheon/update.nix b/nixpkgs/pkgs/desktops/pantheon/update.nix new file mode 100644 index 000000000000..48fd2f2bf858 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/update.nix @@ -0,0 +1,18 @@ +{ stdenv, writeScript, runCommand, nix, bash, git, jq, nix-prefetch-scripts, coreutils, common-updater-scripts, gnugrep, gnused, curl }: +{ repoName, attrPath ? repoName, versionPolicy ? "release" }: +let + script = ./update.sh; + + updateScript = runCommand "update.sh" { + inherit bash git jq nix coreutils gnugrep gnused curl; + # These weren't being substituted + nix_prefetch_scripts = nix-prefetch-scripts; + common_updater_scripts = common-updater-scripts; + } '' + substituteAll ${script} $out + chmod +x $out + ''; + + versionFlag = { "release" = "-r"; "master" = "-m"; }.${versionPolicy}; + +in [ updateScript versionFlag repoName attrPath ] diff --git a/nixpkgs/pkgs/desktops/pantheon/update.sh b/nixpkgs/pkgs/desktops/pantheon/update.sh new file mode 100755 index 000000000000..9bbbe2600344 --- /dev/null +++ b/nixpkgs/pkgs/desktops/pantheon/update.sh @@ -0,0 +1,223 @@ +#!@bash@/bin/bash +PATH=@bash@/bin:@nix_prefetch_scripts@/bin:@common_updater_scripts@/bin:@git@/bin:@jq@/bin:@nix@/bin:@gnugrep@/bin:@gnused@/bin:@curl@/bin:$PATH +#!/usr/bin/env bash + +set -eu -o pipefail + +# +# ─── HOW TO USE ───────────────────────────────────────────────────────────────── +# + +function usage ( ) { + cat <<EOF +Usage: update.sh <repo_name> <attr> +EOF +} + +# +# ─── POINTS YOU IN THE RIGHT DIRECTION ────────────────────────────────────────── +# + + function usage_tip ( ) { + echo 'run `update.sh -h` for usage instructions' >&2 + exit 1 + } + +# +# ─── OPTIONS: RELEASE | MASTER ──────────────────────────────────────────────────── +# + + while getopts ":hrm" opt; do + case $opt in + r) + release=1 + master=0 + ;; + m) + master=1 + release=0 + ;; + h) + usage + exit + ;; + ?) + echo "Invalid option: -$OPTARG" >&2 + usage_tip + ;; + esac + done + + shift $((OPTIND-1)) + +# +# ─── FAIL WITH MESSAGE AND NON-ZERO EXIT STATUS ───────────────────────────────── +# + + function fail ( ) { + echo "$1" >&2 + exit 1 + } + +# +# ─── UPDATES PACKAGE TO LATEST TAGGED RELEASE ─────────────────────────────── +# + + function update_to_latest_release ( ) { + repo_name="$1" + attr="$2" + + version=$(get_latest_tag "$repo_name") + fetch=$(fetch "$repo_name" "refs/tags/${version}") + sha256=$(get_hash "${fetch}") + + update-source-version "pantheon.$attr" "$version" "$sha256" + + nix_file=$(get_file_path $attr) + + if [ ! -f "$nix_file" ]; then + fail "Couldn't evaluate 'pantheon.$attr.meta.position' to locate the .nix file!" + fi + + correct_rev "$attr" "$nix_file" "version" + } + +# +# ─── UPDATES PACKAGE TO MASTER ────────────────────────────────────────────────── +# + + function update_to_master ( ) { + repo_name="$1" + attr="$2" + + fetch=$(fetch "$repo_name" "refs/heads/master") + + version=$(get_version "$fetch") + sha256=$(get_hash "$fetch") + proper_version=$(get_master_date "$fetch") + + update-source-version "pantheon.$attr" "$proper_version" "$sha256" + + nix_file=$(get_file_path $attr) + + if [ ! -f "$nix_file" ]; then + fail "Couldn't evaluate 'pantheon.$attr.meta.position' to locate the .nix file!" + fi + + correct_rev "$attr" "$nix_file" '"'$version'"' + } + +# +# ─── GETS THE LATEST TAGGED RELEASE NAME FROM GITHUB ───────────────────── +# + + function get_latest_tag ( ) { + repo_name="$1" + + # Using github release api because sorting this repo just doesn't work because of old git sillyness + # Also too lazy to care to adapt `git ls-remote` command to work with it + if [ $repo_name == "switchboard-plug-pantheon-shell" ]; then + curl --silent --show-error --fail -X GET "https://api.github.com/repos/elementary/$repo_name/releases/latest" | jq -r '.tag_name' + else + git ls-remote --tags --sort="v:refname" "https://github.com/elementary/$repo_name" | tail -n1 | sed 's/.*\///; s/\^{}//' + fi + } + +# +# ─── FETCHES REPO AND RETURNS RELEVANT INFORMATION ────────────────── +# + + function fetch ( ) { + repo_name="$1" + version="$2" + + base_url="https://github.com/elementary" + full_url="$base_url/$repo_name" + + nix-prefetch-git --quiet --no-deepClone --url "$full_url" --rev "$version" + } + +# +# ─── PARSES GIT REVISION FROM FETCH ───────────────────────────────────────────── +# + + function get_version ( ) { + fetch_info="$1" + + echo "$fetch_info" | jq -r '.rev' + } + +# +# ─── PARSES HASH FROM FETCH ───────────────────────────────────────────────────── +# + + function get_hash ( ) { + fetch_info="$1" + + echo "$fetch_info" | jq -r '.sha256' + } + +# +# ─── PARSES DATE FROM FETCH AND NORMALIZES IT TO NIXPKGS STANDARD ─────────────── +# + + function get_master_date ( ) { + fetch_info="$1" + + full_date=$(echo "$fetch_info" | jq -r '.date') + short_date=$(date -d "$full_date" +"%Y-%m-%d") + + echo "unstable-$short_date" + } + +# +# ─── RETURN NIX EXPRESSION PATH ───────────────────────────────────────────────── +# + + function get_file_path () { + attr="$1" + + nix-instantiate --eval --strict -A "pantheon.$attr.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/' + } + +# +# ─── CORRECTS REV VERSION ─────────────────────────────────────────────────────────── +# + + function correct_rev ( ) { + attr="$1" + nix_file="$2" + rev="$3" + + check_pattern1='^\s*rev\s*=\s*"[0-9a-f]{5,40}"' + check_pattern2='^\s*rev\s*=\s*version' + + replace_pattern1='/\brev\b\s*=/ s|\"[0-9a-f]{5,40}\"|'$rev'|' + replace_pattern2='/\brev\b\s*=/ s|version|'$rev'|' + + if [ $(grep -c -P "$check_pattern1" "$nix_file") = 1 ]; then + pattern="$replace_pattern1" + elif [ $(grep -c -P "$check_pattern2" "$nix_file") = 1 ]; then + pattern="$replace_pattern2" + else + fail "Couldn't figure out where out where to patch in the correct version in pantheon.$attr!" + fi + + sed -i.bak "$nix_file" -re "$pattern" + rm -f "$nix_file.bak" + } + + +# +# ─── WHETHER TO UPDATE TO RELEASE OR MASTER ────────────────────────────────── +# + + if [ $release = 1 ]; then + update_to_latest_release $1 $2 + elif [ $master = 1 ]; then + update_to_master $1 $2 + else + exit 1 + fi + +# ──────────────────────────────────────────────────────────────────────────────── diff --git a/nixpkgs/pkgs/desktops/plasma-5/bluedevil.nix b/nixpkgs/pkgs/desktops/plasma-5/bluedevil.nix new file mode 100644 index 000000000000..b5ff3f5dd05d --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/bluedevil.nix @@ -0,0 +1,14 @@ +{ + mkDerivation, extra-cmake-modules, shared-mime-info, + bluez-qt, kcoreaddons, kdbusaddons, kded, ki18n, kiconthemes, kio, + knotifications, kwidgetsaddons, kwindowsystem, plasma-framework, qtdeclarative +}: + +mkDerivation { + name = "bluedevil"; + nativeBuildInputs = [ extra-cmake-modules shared-mime-info ]; + buildInputs = [ + bluez-qt ki18n kio kwindowsystem plasma-framework qtdeclarative kcoreaddons + kdbusaddons kded kiconthemes knotifications kwidgetsaddons + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-grub.nix b/nixpkgs/pkgs/desktops/plasma-5/breeze-grub.nix new file mode 100644 index 000000000000..eed396b54375 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-grub.nix @@ -0,0 +1,15 @@ +{ + mkDerivation +}: + +mkDerivation { + name = "breeze-grub"; + installPhase = '' + runHook preInstall + + mkdir -p "$out/grub/themes" + mv breeze "$out/grub/themes" + + runHook postInstall + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-gtk.nix b/nixpkgs/pkgs/desktops/plasma-5/breeze-gtk.nix new file mode 100644 index 000000000000..cc51c4b0471c --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-gtk.nix @@ -0,0 +1,14 @@ +{ mkDerivation, lib, extra-cmake-modules, gtk2, qtbase, }: + +let inherit (lib) getLib; in + +mkDerivation { + name = "breeze-gtk"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ qtbase ]; + postPatch = '' + sed -i cmake/FindGTKEngine.cmake \ + -e "s|\''${KDE_INSTALL_FULL_LIBDIR}|${getLib gtk2}/lib|" + ''; + cmakeFlags = [ "-DWITH_GTK3_VERSION=3.22" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/default.nix b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/default.nix new file mode 100644 index 000000000000..48b038325fec --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/default.nix @@ -0,0 +1,44 @@ +{ + mkDerivation, + lib, + copyPathsToStore, + extra-cmake-modules, + plymouth, + nixos-icons, + imagemagick, + netpbm, + perl, + # these will typically need to be set via an override + # in a NixOS context + nixosBranding ? false, + nixosName ? "NixOS", + nixosVersion ? "", + topColor ? "black", + bottomColor ? "black" +}: + +let + logoName = "nixos"; +in +mkDerivation { + name = "breeze-plymouth"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ plymouth ] ++ lib.optionals nixosBranding [ imagemagick netpbm perl ]; + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + cmakeFlags = lib.optionals nixosBranding [ + "-DDISTRO_NAME=${nixosName}" + "-DDISTRO_VERSION=${nixosVersion}" + "-DDISTRO_LOGO=${logoName}" + "-DBACKGROUND_TOP_COLOR=${topColor}" + "-DBACKGROUND_BOTTOM_COLOR=${bottomColor}" + ]; + postPatch = '' + substituteInPlace cmake/FindPlymouth.cmake --subst-var out + '' + lib.optionalString nixosBranding '' + cp ${nixos-icons}/share/icons/hicolor/128x128/apps/nix-snowflake.png breeze/images/${logoName}.logo.png + + # conversion for 16bit taken from the breeze-plymouth readme + convert ${nixos-icons}/share/icons/hicolor/128x128/apps/nix-snowflake.png -alpha Background -background "#000000" -fill "#000000" -flatten tmp.png + pngtopnm tmp.png | pnmquant 16 | pnmtopng > breeze/images/16bit/${logoName}.logo.png + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/install-paths.patch b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/install-paths.patch new file mode 100644 index 000000000000..5d5856d122dd --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/install-paths.patch @@ -0,0 +1,19 @@ +Index: breeze-plymouth-5.7.3/cmake/FindPlymouth.cmake +=================================================================== +--- breeze-plymouth-5.7.3.orig/cmake/FindPlymouth.cmake ++++ breeze-plymouth-5.7.3/cmake/FindPlymouth.cmake +@@ -24,12 +24,8 @@ + include(FindPkgConfig) + + pkg_check_modules(Plymouth ply-boot-client ply-splash-core) +-exec_program(${PKG_CONFIG_EXECUTABLE} +- ARGS ply-splash-core --variable=pluginsdir +- OUTPUT_VARIABLE Plymouth_PLUGINSDIR) +-exec_program(${PKG_CONFIG_EXECUTABLE} +- ARGS ply-splash-core --variable=themesdir +- OUTPUT_VARIABLE Plymouth_THEMESDIR) ++set(Plymouth_PLUGINSDIR "@out@/lib/plymouth") ++set(Plymouth_THEMESDIR "@out@/share/plymouth/themes") + + find_package_handle_standard_args(Plymouth + FOUND_VAR diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/series b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/series new file mode 100644 index 000000000000..8920e7ca5189 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-plymouth/series @@ -0,0 +1 @@ +install-paths.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/breeze-qt5.nix b/nixpkgs/pkgs/desktops/plasma-5/breeze-qt5.nix new file mode 100644 index 000000000000..3f3222e05cdb --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/breeze-qt5.nix @@ -0,0 +1,20 @@ +{ + mkDerivation, + extra-cmake-modules, + frameworkintegration, kcmutils, kconfigwidgets, kcoreaddons, kdecoration, + kguiaddons, ki18n, kwayland, kwindowsystem, plasma-framework, qtdeclarative, + qtx11extras, fftw +}: + +mkDerivation { + name = "breeze-qt5"; + sname = "breeze"; + nativeBuildInputs = [ extra-cmake-modules ]; + propagatedBuildInputs = [ + frameworkintegration kcmutils kconfigwidgets kcoreaddons kdecoration + kguiaddons ki18n kwayland kwindowsystem plasma-framework qtdeclarative + qtx11extras fftw + ]; + outputs = [ "bin" "dev" "out" ]; + cmakeFlags = [ "-DUSE_Qt4=OFF" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/default.nix b/nixpkgs/pkgs/desktops/plasma-5/default.nix new file mode 100644 index 000000000000..2c99713bcd4a --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/default.nix @@ -0,0 +1,142 @@ +/* + +# New packages + +READ THIS FIRST + +This module is for official packages in KDE Plasma 5. All available packages are +listed in `./srcs.nix`, although a few are not yet packaged in Nixpkgs (see +below). + +IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE. + +Many of the packages released upstream are not yet built in Nixpkgs due to lack +of demand. To add a Nixpkgs build for an upstream package, copy one of the +existing packages here and modify it as necessary. + +# Updates + +1. Update the URL in `./fetch.sh`. +2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/plasma-5` + from the top of the Nixpkgs tree. +3. Use `nox-review wip` to check that everything builds. +4. Commit the changes and open a pull request. + +*/ + +{ + libsForQt5, lib, fetchurl, + gconf, gsettings-desktop-schemas +}: + +let + srcs = import ./srcs.nix { + inherit fetchurl; + mirror = "mirror://kde"; + }; + + mkDerivation = libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {}; + + packages = self: with self; + let + + propagate = out: + let setupHook = { writeScript }: + writeScript "setup-hook" '' + if [ "$hookName" != postHook ]; then + postHooks+=("source @dev@/nix-support/setup-hook") + else + # Propagate $${out} output + propagatedUserEnvPkgs="$propagatedUserEnvPkgs @${out}@" + + if [ -z "$outputDev" ]; then + echo "error: \$outputDev is unset!" >&2 + exit 1 + fi + + # Propagate $dev so that this setup hook is propagated + # But only if there is a separate $dev output + if [ "$outputDev" != out ]; then + propagatedBuildInputs="$propagatedBuildInputs @dev@" + fi + fi + ''; + in callPackage setupHook {}; + + propagateBin = propagate "bin"; + + callPackage = self.newScope { + inherit propagate propagateBin; + + mkDerivation = args: + let + inherit (args) name; + sname = args.sname or name; + inherit (srcs."${sname}") src version; + + outputs = args.outputs or [ "out" ]; + hasBin = lib.elem "bin" outputs; + hasDev = lib.elem "dev" outputs; + + defaultSetupHook = if hasBin && hasDev then propagateBin else null; + setupHook = args.setupHook or defaultSetupHook; + + meta = { + license = with lib.licenses; [ + lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12 + ]; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ ttuegel ]; + homepage = http://www.kde.org; + } // (args.meta or {}); + in + mkDerivation (args // { + name = "${name}-${version}"; + inherit meta outputs setupHook src; + }); + }; + + in { + bluedevil = callPackage ./bluedevil.nix {}; + breeze-gtk = callPackage ./breeze-gtk.nix {}; + breeze-qt5 = callPackage ./breeze-qt5.nix {}; + breeze-grub = callPackage ./breeze-grub.nix {}; + breeze-plymouth = callPackage ./breeze-plymouth {}; + kactivitymanagerd = callPackage ./kactivitymanagerd.nix {}; + kde-cli-tools = callPackage ./kde-cli-tools.nix {}; + kde-gtk-config = callPackage ./kde-gtk-config { inherit gsettings-desktop-schemas; }; + kdecoration = callPackage ./kdecoration.nix {}; + kdeplasma-addons = callPackage ./kdeplasma-addons.nix {}; + kgamma5 = callPackage ./kgamma5.nix {}; + khotkeys = callPackage ./khotkeys.nix {}; + kinfocenter = callPackage ./kinfocenter.nix {}; + kmenuedit = callPackage ./kmenuedit.nix {}; + kscreen = callPackage ./kscreen.nix {}; + kscreenlocker = callPackage ./kscreenlocker.nix {}; + ksshaskpass = callPackage ./ksshaskpass.nix {}; + ksysguard = callPackage ./ksysguard.nix {}; + kwallet-pam = callPackage ./kwallet-pam.nix {}; + kwayland-integration = callPackage ./kwayland-integration.nix {}; + kwin = callPackage ./kwin {}; + kwrited = callPackage ./kwrited.nix {}; + libkscreen = callPackage ./libkscreen {}; + libksysguard = callPackage ./libksysguard {}; + milou = callPackage ./milou.nix {}; + oxygen = callPackage ./oxygen.nix {}; + plasma-browser-integration = callPackage ./plasma-browser-integration.nix {}; + plasma-desktop = callPackage ./plasma-desktop {}; + plasma-integration = callPackage ./plasma-integration {}; + plasma-nm = callPackage ./plasma-nm {}; + plasma-pa = callPackage ./plasma-pa.nix { inherit gconf; }; + plasma-vault = callPackage ./plasma-vault {}; + plasma-workspace = callPackage ./plasma-workspace {}; + plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix {}; + polkit-kde-agent = callPackage ./polkit-kde-agent.nix {}; + powerdevil = callPackage ./powerdevil.nix {}; + sddm-kcm = callPackage ./sddm-kcm.nix {}; + systemsettings = callPackage ./systemsettings.nix {}; + user-manager = callPackage ./user-manager.nix {}; + xdg-desktop-portal-kde = callPackage ./xdg-desktop-portal-kde.nix {}; + }; +in +lib.makeScope libsForQt5.newScope packages diff --git a/nixpkgs/pkgs/desktops/plasma-5/fetch.sh b/nixpkgs/pkgs/desktops/plasma-5/fetch.sh new file mode 100644 index 000000000000..814795499a99 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/fetch.sh @@ -0,0 +1 @@ +WGET_ARGS=( https://download.kde.org/stable/plasma/5.14.5/ -A '*.tar.xz' ) diff --git a/nixpkgs/pkgs/desktops/plasma-5/kactivitymanagerd.nix b/nixpkgs/pkgs/desktops/plasma-5/kactivitymanagerd.nix new file mode 100644 index 000000000000..d2870c27e659 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kactivitymanagerd.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, + extra-cmake-modules, + boost, kconfig, kcoreaddons, kdbusaddons, ki18n, kio, kglobalaccel, + kwindowsystem, kxmlgui, kcrash +}: + +mkDerivation { + name = "kactivitymanagerd"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + boost kconfig kcoreaddons kdbusaddons kglobalaccel ki18n kio kwindowsystem + kxmlgui kcrash + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-cli-tools.nix b/nixpkgs/pkgs/desktops/plasma-5/kde-cli-tools.nix new file mode 100644 index 000000000000..3364ee2c0632 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-cli-tools.nix @@ -0,0 +1,14 @@ +{ + mkDerivation, extra-cmake-modules, kdoctools, + kcmutils, kconfig, kdesu, ki18n, kiconthemes, kinit, kio, kwindowsystem, + qtsvg, qtx11extras, kactivities, plasma-workspace +}: + +mkDerivation { + name = "kde-cli-tools"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kconfig kdesu ki18n kiconthemes kinit kio kwindowsystem qtsvg + qtx11extras kactivities plasma-workspace + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/default.nix b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/default.nix new file mode 100644 index 000000000000..8cfc947d30bd --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/default.nix @@ -0,0 +1,25 @@ +{ + mkDerivation, + extra-cmake-modules, wrapGAppsHook, + glib, gtk2, gtk3, karchive, kcmutils, kconfigwidgets, ki18n, kiconthemes, kio, + knewstuff, gsettings-desktop-schemas +}: + +mkDerivation { + name = "kde-gtk-config"; + nativeBuildInputs = [ extra-cmake-modules wrapGAppsHook ]; + dontWrapGApps = true; # There is nothing to wrap + buildInputs = [ + ki18n kio glib gtk2 gtk3 karchive kcmutils kconfigwidgets kiconthemes + knewstuff gsettings-desktop-schemas + ]; + patches = [ ./patches/follow-symlinks.patch ./patches/gsettings.patch ]; + cmakeFlags = [ + "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include" + "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include" + "-DGLIB_SCHEMAS_DIR=${gsettings-desktop-schemas.out}/" + ]; + preConfigure = '' + NIX_CFLAGS_COMPILE+=" -DGSETTINGS_SCHEMAS_PATH=\"$GSETTINGS_SCHEMAS_PATH\"" + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/follow-symlinks.patch b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/follow-symlinks.patch new file mode 100644 index 000000000000..f30a0a4588fa --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/follow-symlinks.patch @@ -0,0 +1,49 @@ +From 33b25c2e3c7a002c7f726cd79fc4bab22b1299be Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@gmail.com> +Date: Tue, 27 Oct 2015 18:07:54 -0500 +Subject: [PATCH] follow symlinks + +--- + src/appearancegtk2.cpp | 2 +- + src/iconthemesmodel.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: kde-gtk-config-5.12.4/src/appearancegtk2.cpp +=================================================================== +--- kde-gtk-config-5.12.4.orig/src/appearancegtk2.cpp ++++ kde-gtk-config-5.12.4/src/appearancegtk2.cpp +@@ -69,7 +69,7 @@ QString AppearanceGTK2::themesGtkrcFile( + QStringList themes=installedThemes(); + themes=themes.filter(QRegExp("/"+themeName+"/?$")); + if(themes.size()==1) { +- QDirIterator it(themes.first(), QDirIterator::Subdirectories); ++ QDirIterator it(themes.first(), QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); + while(it.hasNext()) { + it.next(); + if(it.fileName()=="gtkrc") { +Index: kde-gtk-config-5.12.4/src/iconthemesmodel.cpp +=================================================================== +--- kde-gtk-config-5.12.4.orig/src/iconthemesmodel.cpp ++++ kde-gtk-config-5.12.4/src/iconthemesmodel.cpp +@@ -47,7 +47,7 @@ QList<QDir> IconThemesModel::installedTh + + foreach(const QString& dir, dirs) { + QDir userIconsDir(dir); +- QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs|QDir::NoSymLinks); ++ QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs); + while(it.hasNext()) { + QString currentPath = it.next(); + QDir dir(currentPath); +Index: kde-gtk-config-5.12.4/src/cursorthemesmodel.cpp +=================================================================== +--- kde-gtk-config-5.12.4.orig/src/cursorthemesmodel.cpp ++++ kde-gtk-config-5.12.4/src/cursorthemesmodel.cpp +@@ -47,7 +47,7 @@ QList<QDir> CursorThemesModel::installed + + foreach(const QString& dir, dirs) { + QDir userIconsDir(dir); +- QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs|QDir::NoSymLinks); ++ QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs); + while(it.hasNext()) { + QString currentPath = it.next(); + QDir dir(currentPath); diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/gsettings.patch b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/gsettings.patch new file mode 100644 index 000000000000..69f7bc4e56a0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/gsettings.patch @@ -0,0 +1,21 @@ +diff --git a/src/gtkconfigkcmodule.cpp b/src/gtkconfigkcmodule.cpp +index 7b82d50..96831d8 100644 +--- a/src/gtkconfigkcmodule.cpp ++++ b/src/gtkconfigkcmodule.cpp +@@ -91,6 +91,16 @@ GTKConfigKCModule::GTKConfigKCModule(QWidget* parent, const QVariantList& args ) + iconsProxyModel->sort(0); + ui->cb_icon->setModel(iconsProxyModel); + ui->cb_icon_fallback->setModel(iconsProxyModel); ++ ++ // Add GSETTINGS_SCHEMAS_PATH to the front of XDG_DATA_DIRS. ++ // Normally this would be done by wrapGAppsHook, but this plugin ++ // (shared object) cannot be wrapped. ++ QByteArray xdgdata = qgetenv("XDG_DATA_DIRS"); ++ if (!xdgdata.isEmpty()) { ++ xdgdata.push_front(":"); ++ } ++ xdgdata.push_front(QByteArray(GSETTINGS_SCHEMAS_PATH)); ++ qputenv("XDG_DATA_DIRS", xdgdata); + + m_tempGtk2Preview = QStandardPaths::writableLocation(QStandardPaths::TempLocation)+ "/gtkrc-2.0"; + m_tempGtk3Preview = QStandardPaths::writableLocation(QStandardPaths::TempLocation)+ "/.config/gtk-3.0/settings.ini"; diff --git a/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/series b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/series new file mode 100644 index 000000000000..7aad1acf6ac4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kde-gtk-config/patches/series @@ -0,0 +1,2 @@ +follow-symlinks.patch +gsettings.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/kdecoration.nix b/nixpkgs/pkgs/desktops/plasma-5/kdecoration.nix new file mode 100644 index 000000000000..569da3c70349 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kdecoration.nix @@ -0,0 +1,8 @@ +{ mkDerivation, extra-cmake-modules, qtbase, ki18n }: + +mkDerivation { + name = "kdecoration"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ qtbase ki18n ]; + outputs = [ "out" "dev" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kdeplasma-addons.nix b/nixpkgs/pkgs/desktops/plasma-5/kdeplasma-addons.nix new file mode 100644 index 000000000000..398fc356fc93 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kdeplasma-addons.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kconfig, kconfigwidgets, kcoreaddons, kcmutils, kdelibs4support, kio, + knewstuff, kross, krunner, kservice, ksysguard, kunitconversion, ibus, + plasma-framework, plasma-workspace, qtdeclarative, qtx11extras, kholidays +}: + +mkDerivation { + name = "kdeplasma-addons"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kconfig kconfigwidgets kcoreaddons kcmutils kdelibs4support kio knewstuff + kross krunner kservice ksysguard kunitconversion ibus plasma-framework + plasma-workspace qtdeclarative qtx11extras kholidays + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kgamma5.nix b/nixpkgs/pkgs/desktops/plasma-5/kgamma5.nix new file mode 100644 index 000000000000..ccbf3820b908 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kgamma5.nix @@ -0,0 +1,11 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kconfig, kconfigwidgets, ki18n, qtx11extras, libXxf86vm +}: + +mkDerivation { + name = "kgamma5"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ kconfig kconfigwidgets ki18n qtx11extras libXxf86vm ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/khotkeys.nix b/nixpkgs/pkgs/desktops/plasma-5/khotkeys.nix new file mode 100644 index 000000000000..77763c5e203e --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/khotkeys.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kcmutils, kdbusaddons, kdelibs4support, kglobalaccel, ki18n, kio, kxmlgui, + plasma-framework, plasma-workspace, qtx11extras +}: + +mkDerivation { + name = "khotkeys"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kdbusaddons kdelibs4support kglobalaccel ki18n kio kxmlgui + plasma-framework plasma-workspace qtx11extras + ]; + outputs = [ "bin" "dev" "out" ]; + enableParallelBuilding = false; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix b/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix new file mode 100644 index 000000000000..b35493929ff3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kinfocenter.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kcmutils, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kdbusaddons, + kdeclarative, kdelibs4support, ki18n, kiconthemes, kio, kpackage, kservice, + kwayland, kwidgetsaddons, kxmlgui, libraw1394, libGLU, pciutils, solid +}: + +mkDerivation { + name = "kinfocenter"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons + kdeclarative kdelibs4support ki18n kiconthemes kio kpackage kservice + kwayland kwidgetsaddons kxmlgui libraw1394 libGLU pciutils solid + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kmenuedit.nix b/nixpkgs/pkgs/desktops/plasma-5/kmenuedit.nix new file mode 100644 index 000000000000..016ea940d99b --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kmenuedit.nix @@ -0,0 +1,14 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kdbusaddons, kdelibs4support, khotkeys, ki18n, kiconthemes, kio, kxmlgui, + sonnet +}: + +mkDerivation { + name = "kmenuedit"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kdbusaddons kdelibs4support khotkeys ki18n kiconthemes kio kxmlgui sonnet + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kscreen.nix b/nixpkgs/pkgs/desktops/plasma-5/kscreen.nix new file mode 100644 index 000000000000..422bb95c6059 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kscreen.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, + kconfig, kconfigwidgets, kdbusaddons, kglobalaccel, ki18n, kwidgetsaddons, + kxmlgui, libkscreen, qtdeclarative, qtgraphicaleffects, kwindowsystem, + kdeclarative, plasma-framework +}: + +mkDerivation { + name = "kscreen"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + kconfig kconfigwidgets kdbusaddons kglobalaccel ki18n kwidgetsaddons kxmlgui + libkscreen qtdeclarative qtgraphicaleffects kwindowsystem kdeclarative + plasma-framework + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kscreenlocker.nix b/nixpkgs/pkgs/desktops/plasma-5/kscreenlocker.nix new file mode 100644 index 000000000000..e748121132c1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kscreenlocker.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kcmutils, kcrash, kdeclarative, kdelibs4support, kglobalaccel, kidletime, + kwayland, libXcursor, pam, plasma-framework, qtdeclarative, qtx11extras, + wayland, +}: + +mkDerivation { + name = "kscreenlocker"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kcrash kdeclarative kdelibs4support kglobalaccel kidletime kwayland + libXcursor pam plasma-framework qtdeclarative qtx11extras wayland + ]; + outputs = [ "out" "dev" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/ksshaskpass.nix b/nixpkgs/pkgs/desktops/plasma-5/ksshaskpass.nix new file mode 100644 index 000000000000..39e260f6c708 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/ksshaskpass.nix @@ -0,0 +1,11 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + kcoreaddons, ki18n, kwallet, kwidgetsaddons, qtbase, +}: + +mkDerivation { + name = "ksshaskpass"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ kcoreaddons ki18n kwallet kwidgetsaddons qtbase ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix b/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix new file mode 100644 index 000000000000..150b97be50d7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/ksysguard.nix @@ -0,0 +1,16 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + lm_sensors, + kconfig, kcoreaddons, kdelibs4support, ki18n, kiconthemes, kitemviews, + knewstuff, libksysguard, qtwebkit +}: + +mkDerivation { + name = "ksysguard"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kconfig kcoreaddons kitemviews knewstuff kiconthemes libksysguard + kdelibs4support ki18n lm_sensors qtwebkit + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwallet-pam.nix b/nixpkgs/pkgs/desktops/plasma-5/kwallet-pam.nix new file mode 100644 index 000000000000..1cbfb87ea563 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwallet-pam.nix @@ -0,0 +1,10 @@ +{ mkDerivation, lib, extra-cmake-modules, pam, socat, libgcrypt, qtbase, }: + +mkDerivation { + name = "kwallet-pam"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ pam socat libgcrypt qtbase ]; + postPatch = '' + sed -i pam_kwallet_init -e "s|socat|${lib.getBin socat}/bin/socat|" + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwayland-integration.nix b/nixpkgs/pkgs/desktops/plasma-5/kwayland-integration.nix new file mode 100644 index 000000000000..1344b477f736 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwayland-integration.nix @@ -0,0 +1,11 @@ +{ + mkDerivation, + extra-cmake-modules, + kidletime, kwayland, kwindowsystem, qtbase, +}: + +mkDerivation { + name = "kwayland-integration"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ kidletime kwindowsystem kwayland qtbase ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix b/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix new file mode 100644 index 000000000000..b8f381e97149 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/default.nix @@ -0,0 +1,46 @@ +{ + mkDerivation, lib, copyPathsToStore, + extra-cmake-modules, kdoctools, + + epoxy,libICE, libSM, libinput, libxkbcommon, udev, wayland, xcb-util-cursor, + xwayland, + + qtdeclarative, qtmultimedia, qtscript, qtx11extras, + + breeze-qt5, kactivities, kcompletion, kcmutils, kconfig, kconfigwidgets, + kcoreaddons, kcrash, kdeclarative, kdecoration, kglobalaccel, ki18n, + kiconthemes, kidletime, kinit, kio, knewstuff, knotifications, kpackage, + kscreenlocker, kservice, kwayland, kwidgetsaddons, kwindowsystem, kxmlgui, + plasma-framework, qtsensors, libcap, libdrm +}: + +mkDerivation { + name = "kwin"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + epoxy libICE libSM libinput libxkbcommon udev wayland xcb-util-cursor + xwayland + + qtdeclarative qtmultimedia qtscript qtx11extras qtsensors + + breeze-qt5 kactivities kcmutils kcompletion kconfig kconfigwidgets + kcoreaddons kcrash kdeclarative kdecoration kglobalaccel ki18n kiconthemes + kidletime kinit kio knewstuff knotifications kpackage kscreenlocker kservice + kwayland kwidgetsaddons kwindowsystem kxmlgui plasma-framework + libcap libdrm + ]; + outputs = [ "bin" "dev" "out" ]; + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + CXXFLAGS = [ + ''-DNIXPKGS_XWAYLAND=\"${lib.getBin xwayland}/bin/Xwayland\"'' + ]; + cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF" ]; + postInstall = '' + # Some package(s) refer to these service types by the wrong name. + # I would prefer to patch those packages, but I cannot find them! + ln -s ''${!outputBin}/share/kservicetypes5/kwineffect.desktop \ + ''${!outputBin}/share/kservicetypes5/kwin-effect.desktop + ln -s ''${!outputBin}/share/kservicetypes5/kwinscript.desktop \ + ''${!outputBin}/share/kservicetypes5/kwin-script.desktop + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/follow-symlinks.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/follow-symlinks.patch new file mode 100644 index 000000000000..60b8f5ef541f --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/follow-symlinks.patch @@ -0,0 +1,13 @@ +Index: kwin-5.7.3/plugins/kdecorations/aurorae/src/aurorae.cpp +=================================================================== +--- kwin-5.7.3.orig/plugins/kdecorations/aurorae/src/aurorae.cpp ++++ kwin-5.7.3/plugins/kdecorations/aurorae/src/aurorae.cpp +@@ -211,7 +211,7 @@ void Helper::init() + // so let's try to locate our plugin: + QString pluginPath; + for (const QString &path : m_engine->importPathList()) { +- QDirIterator it(path, QDirIterator::Subdirectories); ++ QDirIterator it(path, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); + while (it.hasNext()) { + it.next(); + QFileInfo fileInfo = it.fileInfo(); diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/no-setcap-install.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/no-setcap-install.patch new file mode 100644 index 000000000000..80aacacc6ca0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/no-setcap-install.patch @@ -0,0 +1,24 @@ +Dont set capabilities on kwin_wayland executable at build time + +This is handled by security.wrappers on NixOS + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 48cbcdbfe..93b410ed8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -674,15 +674,6 @@ if (HAVE_LIBCAP) + endif() + + install(TARGETS kwin_wayland ${INSTALL_TARGETS_DEFAULT_ARGS} ) +-if (HAVE_LIBCAP) +- install( +- CODE "execute_process( +- COMMAND +- ${SETCAP_EXECUTABLE} +- CAP_SYS_NICE=+ep +- \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/kwin_wayland)" +- ) +-endif() + + add_subdirectory(platformsupport) + add_subdirectory(plugins) diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/series b/nixpkgs/pkgs/desktops/plasma-5/kwin/series new file mode 100644 index 000000000000..8efb74eabd67 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/series @@ -0,0 +1,3 @@ +follow-symlinks.patch +xwayland.patch +no-setcap-install.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwin/xwayland.patch b/nixpkgs/pkgs/desktops/plasma-5/kwin/xwayland.patch new file mode 100644 index 000000000000..51f15c87d274 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwin/xwayland.patch @@ -0,0 +1,13 @@ +Index: kwin-5.7.3/main_wayland.cpp +=================================================================== +--- kwin-5.7.3.orig/main_wayland.cpp ++++ kwin-5.7.3/main_wayland.cpp +@@ -315,7 +315,7 @@ void ApplicationWayland::startXwaylandSe + + m_xwaylandProcess = new Process(kwinApp()); + m_xwaylandProcess->setProcessChannelMode(QProcess::ForwardedErrorChannel); +- m_xwaylandProcess->setProgram(QStringLiteral("Xwayland")); ++ m_xwaylandProcess->setProgram(QLatin1String(NIXPKGS_XWAYLAND)); + QProcessEnvironment env = m_environment; + env.insert("WAYLAND_SOCKET", QByteArray::number(wlfd)); + m_xwaylandProcess->setProcessEnvironment(env); diff --git a/nixpkgs/pkgs/desktops/plasma-5/kwrited.nix b/nixpkgs/pkgs/desktops/plasma-5/kwrited.nix new file mode 100644 index 000000000000..f6f6187e9462 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/kwrited.nix @@ -0,0 +1,11 @@ +{ + mkDerivation, + extra-cmake-modules, + kcoreaddons, kdbusaddons, ki18n, knotifications, kpty, qtbase, +}: + +mkDerivation { + name = "kwrited"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ kcoreaddons kdbusaddons ki18n knotifications kpty qtbase ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/libkscreen/default.nix b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/default.nix new file mode 100644 index 000000000000..5625aa656ceb --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/default.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, lib, copyPathsToStore, propagate, + extra-cmake-modules, + kwayland, libXrandr, qtx11extras +}: + +mkDerivation { + name = "libkscreen"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ kwayland libXrandr qtx11extras ]; + outputs = [ "out" "dev" ]; + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + preConfigure = '' + NIX_CFLAGS_COMPILE+=" -DNIXPKGS_LIBKSCREEN_BACKENDS=\"''${!outputBin}/$qtPluginPrefix/kf5/kscreen\"" + ''; + setupHook = propagate "out"; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch new file mode 100644 index 000000000000..48be0d037df5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/libkscreen-backends-path.patch @@ -0,0 +1,27 @@ +Index: libkscreen-5.9.4/src/backendmanager.cpp +=================================================================== +--- libkscreen-5.9.4.orig/src/backendmanager.cpp ++++ libkscreen-5.9.4/src/backendmanager.cpp +@@ -178,17 +178,11 @@ QFileInfo BackendManager::preferredBacke + QFileInfoList BackendManager::listBackends() + { + // Compile a list of installed backends first +- const QString backendFilter = QStringLiteral("KSC_*"); +- const QStringList paths = QCoreApplication::libraryPaths(); +- QFileInfoList finfos; +- for (const QString &path : paths) { +- const QDir dir(path + QLatin1String("/kf5/kscreen/"), +- backendFilter, +- QDir::SortFlags(QDir::QDir::Name), +- QDir::NoDotAndDotDot | QDir::Files); +- finfos.append(dir.entryInfoList()); +- } +- return finfos; ++ const QDir dir(QLatin1String(NIXPKGS_LIBKSCREEN_BACKENDS), ++ QStringLiteral("KSC_*"), ++ QDir::SortFlags(QDir::QDir::Name), ++ QDir::NoDotAndDotDot | QDir::Files); ++ return dir.entryInfoList(); + } + + KScreen::AbstractBackend *BackendManager::loadBackendPlugin(QPluginLoader *loader, const QString &name, diff --git a/nixpkgs/pkgs/desktops/plasma-5/libkscreen/series b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/series new file mode 100644 index 000000000000..86bf4ab10602 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libkscreen/series @@ -0,0 +1 @@ +libkscreen-backends-path.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/libksysguard/0001-qdiriterator-follow-symlinks.patch b/nixpkgs/pkgs/desktops/plasma-5/libksysguard/0001-qdiriterator-follow-symlinks.patch new file mode 100644 index 000000000000..fbbb11ae7556 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libksysguard/0001-qdiriterator-follow-symlinks.patch @@ -0,0 +1,25 @@ +From 46164a50de4102d02ae9d1d480acdd4b12303db8 Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@gmail.com> +Date: Wed, 14 Oct 2015 07:07:22 -0500 +Subject: [PATCH] qdiriterator follow symlinks + +--- + processui/scripting.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/processui/scripting.cpp b/processui/scripting.cpp +index efed8ff..841761a 100644 +--- a/processui/scripting.cpp ++++ b/processui/scripting.cpp +@@ -167,7 +167,7 @@ void Scripting::loadContextMenu() { + QStringList scripts; + const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "ksysguard/scripts/", QStandardPaths::LocateDirectory); + Q_FOREACH (const QString& dir, dirs) { +- QDirIterator it(dir, QStringList() << QStringLiteral("*.desktop"), QDir::NoFilter, QDirIterator::Subdirectories); ++ QDirIterator it(dir, QStringList() << QStringLiteral("*.desktop"), QDir::NoFilter, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); + while (it.hasNext()) { + scripts.append(it.next()); + } +-- +2.5.2 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/libksysguard/default.nix b/nixpkgs/pkgs/desktops/plasma-5/libksysguard/default.nix new file mode 100644 index 000000000000..0f9fe40d73c3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/libksysguard/default.nix @@ -0,0 +1,21 @@ +{ + mkDerivation, + extra-cmake-modules, + kauth, kcompletion, kconfig, kconfigwidgets, kcoreaddons, ki18n, kiconthemes, + kservice, kwidgetsaddons, kwindowsystem, plasma-framework, qtscript, qtwebkit, + qtx11extras +}: + +mkDerivation { + name = "libksysguard"; + patches = [ + ./0001-qdiriterator-follow-symlinks.patch + ]; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + kauth kconfig ki18n kiconthemes kwindowsystem kcompletion kconfigwidgets + kcoreaddons kservice kwidgetsaddons plasma-framework qtscript qtx11extras + qtwebkit + ]; + outputs = [ "bin" "dev" "out" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/milou.nix b/nixpkgs/pkgs/desktops/plasma-5/milou.nix new file mode 100644 index 000000000000..db019db358bb --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/milou.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, + extra-cmake-modules, + kcoreaddons, kdeclarative, ki18n, krunner, kservice, plasma-framework, + qtscript, qtdeclarative +}: + +mkDerivation { + name = "milou"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + kcoreaddons kdeclarative ki18n krunner kservice plasma-framework + qtdeclarative qtscript + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/oxygen.nix b/nixpkgs/pkgs/desktops/plasma-5/oxygen.nix new file mode 100644 index 000000000000..1b1f34f17b53 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/oxygen.nix @@ -0,0 +1,18 @@ +{ + mkDerivation, + extra-cmake-modules, + frameworkintegration, kcmutils, kcompletion, kconfig, kdecoration, kguiaddons, + ki18n, kwidgetsaddons, kservice, kwayland, kwindowsystem, qtdeclarative, + qtx11extras +}: + +mkDerivation { + name = "oxygen"; + nativeBuildInputs = [ extra-cmake-modules ]; + propagatedBuildInputs = [ + frameworkintegration kcmutils kcompletion kconfig kdecoration kguiaddons + ki18n kservice kwayland kwidgetsaddons kwindowsystem qtdeclarative + qtx11extras + ]; + outputs = [ "bin" "dev" "out" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix new file mode 100644 index 000000000000..e01efabe8a6a --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-browser-integration.nix @@ -0,0 +1,11 @@ +{ mkDerivation, extra-cmake-modules, qtbase, kio, ki18n, kconfig +, kdbusaddons, knotifications, krunner, kwindowsystem, kactivities +}: + +mkDerivation { + name = "plasma-browser-integration"; + nativeBuildInputs = [ + extra-cmake-modules qtbase kio ki18n kconfig kdbusaddons + knotifications krunner kwindowsystem kactivities + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/default.nix new file mode 100644 index 000000000000..32bd5f3a9f28 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/default.nix @@ -0,0 +1,51 @@ +{ + mkDerivation, lib, copyPathsToStore, + extra-cmake-modules, kdoctools, + + boost, fontconfig, ibus, libXcursor, libXft, libcanberra_kde, libpulseaudio, + libxkbfile, xf86inputevdev, xf86inputsynaptics, xinput, xkeyboard_config, + xorgserver, utillinux, + + qtdeclarative, qtquickcontrols, qtquickcontrols2, qtsvg, qtx11extras, + + attica, baloo, kactivities, kactivities-stats, kauth, kcmutils, kdbusaddons, + kdeclarative, kded, kdelibs4support, kemoticons, kglobalaccel, ki18n, + kitemmodels, knewstuff, knotifications, knotifyconfig, kpeople, krunner, + kscreenlocker, ksysguard, kwallet, kwin, phonon, plasma-framework, + plasma-workspace, xf86inputlibinput +}: + +mkDerivation rec { + name = "plasma-desktop"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + boost fontconfig ibus libcanberra_kde libpulseaudio libXcursor libXft + libxkbfile phonon xf86inputevdev xf86inputsynaptics xinput xkeyboard_config + + qtdeclarative qtquickcontrols qtquickcontrols2 qtsvg qtx11extras + + attica baloo kactivities kactivities-stats kauth kcmutils kdbusaddons + kdeclarative kded kdelibs4support kemoticons kglobalaccel ki18n kitemmodels + knewstuff knotifications knotifyconfig kpeople krunner kscreenlocker + ksysguard kwallet kwin plasma-framework plasma-workspace + ]; + + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + postPatch = '' + sed '1i#include <cmath>' -i kcms/touchpad/src/backends/x11/synapticstouchpad.cpp + ''; + CXXFLAGS = [ + "-I${lib.getDev xorgserver}/include/xorg" + ''-DNIXPKGS_HWCLOCK=\"${lib.getBin utillinux}/sbin/hwclock\"'' + ]; + cmakeFlags = [ + "-DEvdev_INCLUDE_DIRS=${lib.getDev xf86inputevdev}/include/xorg" + "-DSynaptics_INCLUDE_DIRS=${lib.getDev xf86inputsynaptics}/include/xorg" + "-DXORGLIBINPUT_INCLUDE_DIRS=${lib.getDev xf86inputlibinput}/include/xorg" + ]; + postInstall = '' + # Display ~/Desktop contents on the desktop by default. + sed -i "''${!outputBin}/share/plasma/shells/org.kde.plasma.desktop/contents/defaults" \ + -e 's/Containment=org.kde.desktopcontainment/Containment=org.kde.plasma.folder/' + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch new file mode 100644 index 000000000000..a46212af10fb --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/hwclock-path.patch @@ -0,0 +1,24 @@ +Index: plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp +=================================================================== +--- plasma-desktop-5.8.5.orig/kcms/dateandtime/helper.cpp ++++ plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp +@@ -48,10 +48,6 @@ + #include <sys/stat.h> + #endif + +-// We cannot rely on the $PATH environment variable, because D-Bus activation +-// clears it. So we have to use a reasonable default. +-static const QString exePath = QStringLiteral("/usr/sbin:/usr/bin:/sbin:/bin"); +- + int ClockHelper::ntp( const QStringList& ntpServers, bool ntpEnabled ) + { + int ret = 0; +@@ -227,7 +223,7 @@ int ClockHelper::tzreset() + + void ClockHelper::toHwclock() + { +- QString hwclock = KStandardDirs::findExe(QStringLiteral("hwclock"), exePath); ++ QString hwclock = QLatin1String(NIXPKGS_HWCLOCK); + if (!hwclock.isEmpty()) { + KProcess::execute(hwclock, QStringList() << QStringLiteral("--systohc")); + } diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/series b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/series new file mode 100644 index 000000000000..26517ba93565 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/series @@ -0,0 +1,2 @@ +hwclock-path.patch +tzdir.patch diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/tzdir.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/tzdir.patch new file mode 100644 index 000000000000..97504b330fed --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-desktop/tzdir.patch @@ -0,0 +1,18 @@ +Index: plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp +=================================================================== +--- plasma-desktop-5.8.5.orig/kcms/dateandtime/helper.cpp ++++ plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp +@@ -181,7 +181,12 @@ int ClockHelper::tz( const QString& sele + + val = selectedzone; + #else +- QString tz = "/usr/share/zoneinfo/" + selectedzone; ++ QString tzdir = QString::fromLocal8Bit(qgetenv("TZDIR")); ++ QString tz = tzdir + "/" + selectedzone; ++ if (tzdir.isEmpty()) { ++ // Standard Linux path ++ tz = "/usr/share/zoneinfo/" + selectedzone; ++ } + + if (QFile::exists(tz)) { // make sure the new TZ really exists + QFile::remove(QStringLiteral("/etc/localtime")); diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-integration/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-integration/default.nix new file mode 100644 index 000000000000..f69644287624 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-integration/default.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, + breeze-qt5, kconfig, kconfigwidgets, kiconthemes, kio, knotifications, + kwayland, libXcursor, qtquickcontrols2 +}: + +# TODO: install Noto Sans and Oxygen Mono fonts with plasma-integration + +mkDerivation { + name = "plasma-integration"; + nativeBuildInputs = [ extra-cmake-modules ]; + buildInputs = [ + breeze-qt5 kconfig kconfigwidgets kiconthemes kio knotifications kwayland + libXcursor qtquickcontrols2 + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0001-mobile-broadband-provider-info-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0001-mobile-broadband-provider-info-path.patch new file mode 100644 index 000000000000..79b5cfb437e2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0001-mobile-broadband-provider-info-path.patch @@ -0,0 +1,25 @@ +From faf13c97ff1192a201843b9d52f4002dbd9022af Mon Sep 17 00:00:00 2001 +From: Thomas Tuegel <ttuegel@gmail.com> +Date: Sun, 25 Oct 2015 09:09:27 -0500 +Subject: [PATCH] mobile-broadband-provider-info path + +--- + libs/editor/mobileproviders.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libs/editor/mobileproviders.cpp b/libs/editor/mobileproviders.cpp +index 568cb34..98a5992 100644 +--- a/libs/editor/mobileproviders.cpp ++++ b/libs/editor/mobileproviders.cpp +@@ -26,7 +26,7 @@ + + #include <KLocale> + +-const QString MobileProviders::ProvidersFile = "/usr/share/mobile-broadband-provider-info/serviceproviders.xml"; ++const QString MobileProviders::ProvidersFile = "@mobile_broadband_provider_info@/share/mobile-broadband-provider-info/serviceproviders.xml"; + + bool localeAwareCompare(const QString & one, const QString & two) { + return one.localeAwareCompare(two) < 0; +-- +2.6.2 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0002-openvpn-binary-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0002-openvpn-binary-path.patch new file mode 100644 index 000000000000..3bc871f09063 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/0002-openvpn-binary-path.patch @@ -0,0 +1,13 @@ +diff --git a/vpn/openvpn/openvpnadvancedwidget.cpp b/vpn/openvpn/openvpnadvancedwidget.cpp +index 2f11ba1d..310f11b4 100644 +--- a/vpn/openvpn/openvpnadvancedwidget.cpp ++++ b/vpn/openvpn/openvpnadvancedwidget.cpp +@@ -75,7 +75,7 @@ OpenVpnAdvancedWidget::OpenVpnAdvancedWidget(const NetworkManager::VpnSetting::P + connect(m_ui->cmbProxyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &OpenVpnAdvancedWidget::proxyTypeChanged); + + // start openVPN process and get its cipher list +- const QString openVpnBinary = QStandardPaths::findExecutable("openvpn", QStringList() << "/sbin" << "/usr/sbin"); ++ const QString openVpnBinary = "@openvpn@/bin/openvpn"; + const QStringList ciphersArgs(QLatin1String("--show-ciphers")); + const QStringList versionArgs(QLatin1String("--version")); + diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/default.nix new file mode 100644 index 000000000000..8296d549782f --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-nm/default.nix @@ -0,0 +1,31 @@ +{ + mkDerivation, substituteAll, + extra-cmake-modules, kdoctools, + kcompletion, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative, + kdelibs4support, ki18n, kiconthemes, kinit, kio, kitemviews, knotifications, + kservice, kwallet, kwidgetsaddons, kwindowsystem, kxmlgui, + mobile-broadband-provider-info, modemmanager-qt, networkmanager-qt, + openconnect, openvpn, plasma-framework, qca-qt5, qtdeclarative, qttools, solid +}: + +mkDerivation { + name = "plasma-nm"; + nativeBuildInputs = [ extra-cmake-modules kdoctools qttools ]; + buildInputs = [ + kdeclarative kdelibs4support ki18n kio kwindowsystem plasma-framework + qtdeclarative kcompletion kconfigwidgets kcoreaddons kdbusaddons kiconthemes + kinit kitemviews knotifications kservice kwallet kwidgetsaddons kxmlgui + mobile-broadband-provider-info modemmanager-qt networkmanager-qt openconnect + qca-qt5 solid + ]; + patches = [ + (substituteAll { + src = ./0001-mobile-broadband-provider-info-path.patch; + mobile_broadband_provider_info = mobile-broadband-provider-info; + }) + (substituteAll { + src = ./0002-openvpn-binary-path.patch; + inherit openvpn; + }) + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-pa.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-pa.nix new file mode 100644 index 000000000000..b60b5298d6db --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-pa.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + gconf, glib, kconfigwidgets, kcoreaddons, kdeclarative, kglobalaccel, ki18n, + libcanberra-gtk3, libpulseaudio, plasma-framework, qtdeclarative, kwindowsystem +}: + +mkDerivation { + name = "plasma-pa"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + gconf glib kconfigwidgets kcoreaddons kdeclarative kglobalaccel ki18n + libcanberra-gtk3 libpulseaudio plasma-framework qtdeclarative kwindowsystem + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/cryfs-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/cryfs-path.patch new file mode 100644 index 000000000000..6bab35fe4a97 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/cryfs-path.patch @@ -0,0 +1,13 @@ +diff --git a/kded/engine/backends/cryfs/cryfsbackend.cpp b/kded/engine/backends/cryfs/cryfsbackend.cpp +index 58a6929..7212980 100644 +--- a/kded/engine/backends/cryfs/cryfsbackend.cpp ++++ b/kded/engine/backends/cryfs/cryfsbackend.cpp +@@ -241,7 +241,7 @@ QProcess *CryFsBackend::cryfs(const QStringList &arguments) const + auto config = KSharedConfig::openConfig(PLASMAVAULT_CONFIG_FILE); + KConfigGroup backendConfig(config, "CryfsBackend"); + +- return process("cryfs", ++ return process(NIXPKGS_CRYFS, + arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), + { { "CRYFS_FRONTEND", "noninteractive" } }); + } diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/default.nix new file mode 100644 index 000000000000..e016944be456 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/default.nix @@ -0,0 +1,40 @@ +{ + mkDerivation, lib, + extra-cmake-modules, + + kactivities, + plasma-framework, + kwindowsystem, + networkmanager-qt, + libksysguard, + + encfs, + cryfs, + fuse +}: + +mkDerivation { + name = "plasma-vault"; + nativeBuildInputs = [ extra-cmake-modules ]; + + patches = [ + ./encfs-path.patch + ./cryfs-path.patch + ./fusermount-path.patch + ]; + + buildInputs = [ + kactivities plasma-framework kwindowsystem libksysguard + networkmanager-qt + ]; + + CXXFLAGS = [ + ''-DNIXPKGS_ENCFS=\"${lib.getBin encfs}/bin/encfs\"'' + ''-DNIXPKGS_ENCFSCTL=\"${lib.getBin encfs}/bin/encfsctl\"'' + + ''-DNIXPKGS_CRYFS=\"${lib.getBin cryfs}/bin/cryfs\"'' + + ''-DNIXPKGS_FUSERMOUNT=\"${lib.getBin fuse}/bin/fusermount\"'' + ]; + +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/encfs-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/encfs-path.patch new file mode 100644 index 000000000000..e1c325e16934 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/encfs-path.patch @@ -0,0 +1,22 @@ +diff --git a/kded/engine/backends/encfs/encfsbackend.cpp b/kded/engine/backends/encfs/encfsbackend.cpp +index 628af7b..6edd38e 100644 +--- a/kded/engine/backends/encfs/encfsbackend.cpp ++++ b/kded/engine/backends/encfs/encfsbackend.cpp +@@ -137,7 +137,7 @@ QProcess *EncFsBackend::encfs(const QStringList &arguments) const + auto config = KSharedConfig::openConfig(PLASMAVAULT_CONFIG_FILE); + KConfigGroup backendConfig(config, "EncfsBackend"); + +- return process("encfs", ++ return process(NIXPKGS_ENCFS, + arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), + {}); + } +@@ -146,7 +146,7 @@ QProcess *EncFsBackend::encfs(const QStringList &arguments) const + + QProcess *EncFsBackend::encfsctl(const QStringList &arguments) const + { +- return process("encfsctl", arguments, {}); ++ return process(NIXPKGS_ENCFSCTL, arguments, {}); + } + + diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/fusermount-path.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/fusermount-path.patch new file mode 100644 index 000000000000..b2a7866531bf --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-vault/fusermount-path.patch @@ -0,0 +1,18 @@ +diff --git a/kded/engine/fusebackend_p.cpp b/kded/engine/fusebackend_p.cpp +index d07e313..ea7d81c 100644 +--- a/kded/engine/fusebackend_p.cpp ++++ b/kded/engine/fusebackend_p.cpp +@@ -106,7 +106,7 @@ QProcess *FuseBackend::process(const QString &executable, + + QProcess *FuseBackend::fusermount(const QStringList &arguments) const + { +- return process("fusermount", arguments, {}); ++ return process(NIXPKGS_FUSERMOUNT, arguments, {}); + } + + +@@ -279,4 +279,3 @@ bool FuseBackend::isOpened(const MountPoint &mountPoint) const + } + + } // namespace PlasmaVault +- diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace-wallpapers.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace-wallpapers.nix new file mode 100644 index 000000000000..cb068166c1d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace-wallpapers.nix @@ -0,0 +1,6 @@ +{ mkDerivation , extra-cmake-modules }: + +mkDerivation { + name = "plasma-workspace-wallpapers"; + nativeBuildInputs = [ extra-cmake-modules ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix new file mode 100644 index 000000000000..2866cddbea18 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/default.nix @@ -0,0 +1,81 @@ +{ + mkDerivation, lib, fetchpatch, + + extra-cmake-modules, kdoctools, + + coreutils, dbus, gnugrep, gnused, isocodes, libdbusmenu, libSM, libXcursor, + libXtst, pam, wayland, xmessage, xprop, xrdb, xsetroot, + + baloo, kactivities, kcmutils, kconfig, kcrash, kdbusaddons, kdeclarative, + kdelibs4support, kdesu, kglobalaccel, kidletime, kinit, kjsembed, knewstuff, + knotifyconfig, kpackage, krunner, kscreenlocker, ktexteditor, ktextwidgets, + kwallet, kwayland, kwin, kxmlrpcclient, libkscreen, libksysguard, libqalculate, + networkmanager-qt, phonon, plasma-framework, prison, solid, kholidays, + breeze-qt5, + + qtgraphicaleffects, qtquickcontrols, qtquickcontrols2, qtscript, qttools, + qtwayland, qtx11extras, +}: + +let inherit (lib) getBin getLib; in + +mkDerivation { + name = "plasma-workspace"; + + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + isocodes libdbusmenu libSM libXcursor libXtst pam wayland + + baloo kactivities kcmutils kconfig kcrash kdbusaddons kdeclarative + kdelibs4support kdesu kglobalaccel kidletime kjsembed knewstuff + knotifyconfig kpackage krunner kscreenlocker ktexteditor ktextwidgets + kwallet kwayland kwin kxmlrpcclient libkscreen libksysguard libqalculate + networkmanager-qt phonon plasma-framework prison solid kholidays + + qtgraphicaleffects qtquickcontrols qtquickcontrols2 qtscript qtwayland qtx11extras + ]; + outputs = [ "bin" "dev" "out" ]; + + cmakeFlags = [ + "-DNIXPKGS_XMESSAGE=${getBin xmessage}/bin/xmessage" + "-DNIXPKGS_MKDIR=${getBin coreutils}/bin/mkdir" + "-DNIXPKGS_XRDB=${getBin xrdb}/bin/xrdb" + "-DNIXPKGS_QTPATHS=${getBin qttools}/bin/qtpaths" + "-DNIXPKGS_XSETROOT=${getBin xsetroot}/bin/xsetroot" + "-DNIXPKGS_XPROP=${getBin xprop}/bin/xprop" + "-DNIXPKGS_ID=${getBin coreutils}/bin/id" + "-DNIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT=${getBin dbus}/bin/dbus-update-activation-environment" + "-DNIXPKGS_START_KDEINIT_WRAPPER=${getLib kinit}/lib/libexec/kf5/start_kdeinit_wrapper" + "-DNIXPKGS_QDBUS=${getBin qttools}/bin/qdbus" + "-DNIXPKGS_KWRAPPER5=${getBin kinit}/bin/kwrapper5" + "-DNIXPKGS_KREADCONFIG5=${getBin kconfig}/bin/kreadconfig5" + "-DNIXPKGS_GREP=${getBin gnugrep}/bin/grep" + "-DNIXPKGS_KDEINIT5_SHUTDOWN=${getBin kinit}/bin/kdeinit5_shutdown" + "-DNIXPKGS_SED=${getBin gnused}/bin/sed" + "-DNIXPKGS_WALLPAPER_INSTALL_DIR=${getBin breeze-qt5}/share/wallpapers/" + ]; + + # To regenerate ./plasma-workspace.patch, + # + # > git clone https://github.com/ttuegel/plasma-workspace + # > cd plasma-workspace + # > git checkout nixpkgs/$x.$y # where $x.$y.$z == $version + # ... make some commits ... + # > git diff v$x.$y.$z + # + # Add upstream patches to the list below. For new patchs, particularly if not + # submitted upstream, please make a pull request and add it to + # ./plasma-workspace.patch. + patches = [ + ./plasma-workspace.patch + ]; + + preConfigure = '' + NIX_CFLAGS_COMPILE+=" -DNIXPKGS_KDOSTARTUPCONFIG5=\"''${!outputBin}/bin/kdostartupconfig5\"" + cmakeFlags+=" -DNIXPKGS_STARTPLASMA=''${!outputBin}/lib/libexec/startplasma" + ''; + + postInstall = '' + moveToOutput lib/libexec/startplasma ''${!outputBin} + ''; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch new file mode 100644 index 000000000000..dd5f7321f0e2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch @@ -0,0 +1,1079 @@ +diff --git a/sddm-theme/theme.conf.cmake b/sddm-theme/theme.conf.cmake +index 69d30705..52e91028 100644 +--- a/sddm-theme/theme.conf.cmake ++++ b/sddm-theme/theme.conf.cmake +@@ -1,4 +1,4 @@ + [General] + type=image + color=#1d99f3 +-background=${CMAKE_INSTALL_PREFIX}/${WALLPAPER_INSTALL_DIR}/Next/contents/images/3200x2000.png ++background=${NIXPKGS_WALLPAPER_INSTALL_DIR}/Next/contents/images/3200x2000.png +diff --git a/startkde/CMakeLists.txt b/startkde/CMakeLists.txt +index cb75aeca..247db953 100644 +--- a/startkde/CMakeLists.txt ++++ b/startkde/CMakeLists.txt +@@ -3,11 +3,6 @@ add_subdirectory(kstartupconfig) + add_subdirectory(ksyncdbusenv) + add_subdirectory(waitforname) + +-#FIXME: reconsider, looks fishy +-if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr") +- set(EXPORT_XCURSOR_PATH "XCURSOR_PATH=${KDE_INSTALL_FULL_DATAROOTDIR}/icons:$XCURSOR_PATH\":~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons\"; export XCURSOR_PATH") +-endif() +- + configure_file(startkde.cmake ${CMAKE_CURRENT_BINARY_DIR}/startkde @ONLY) + configure_file(startplasmacompositor.cmake ${CMAKE_CURRENT_BINARY_DIR}/startplasmacompositor @ONLY) + configure_file(startplasma.cmake ${CMAKE_CURRENT_BINARY_DIR}/startplasma @ONLY) +diff --git a/startkde/kstartupconfig/kstartupconfig.cpp b/startkde/kstartupconfig/kstartupconfig.cpp +index 493218ea..d507aa55 100644 +--- a/startkde/kstartupconfig/kstartupconfig.cpp ++++ b/startkde/kstartupconfig/kstartupconfig.cpp +@@ -147,5 +147,5 @@ int main() + fclose( keys ); + fclose( config ); + doit: +- return system( "kdostartupconfig5" ); ++ return system( NIXPKGS_KDOSTARTUPCONFIG5 ); + } +diff --git a/startkde/startkde.cmake b/startkde/startkde.cmake +index 714a9bf1..9733c612 100644 +--- a/startkde/startkde.cmake ++++ b/startkde/startkde.cmake +@@ -1,22 +1,31 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS KDE STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + ++if test "x$1" = x--failsafe; then ++ KDE_FAILSAFE=1 # General failsafe flag ++ KWIN_COMPOSE=N # Disable KWin's compositing ++ QT_XCB_FORCE_SOFTWARE_OPENGL=1 ++ export KWIN_COMPOSE KDE_FAILSAFE QT_XCB_FORCE_SOFTWARE_OPENGL ++fi ++ + # When the X server dies we get a HUP signal from xinit. We must ignore it + # because we still need to do some cleanup. + trap 'echo GOT SIGHUP' HUP + +-# Check if a Plasma session already is running and whether it's possible to connect to X +-kcheckrunning ++# we have to unset this for Darwin since it will screw up KDE's dynamic-loading ++unset DYLD_FORCE_FLAT_NAMESPACE ++ ++# Check if a KDE session already is running and whether it's possible to connect to X ++@CMAKE_INSTALL_FULL_BINDIR@/kcheckrunning + kcheckrunning_result=$? +-if test $kcheckrunning_result -eq 0 ; then +- echo "Plasma seems to be already running on this display." +- xmessage -geometry 500x100 "Plasma seems to be already running on this display." > /dev/null 2>/dev/null +- exit 1 +-elif test $kcheckrunning_result -eq 2 ; then +- echo "\$DISPLAY is not set or cannot connect to the X server." +- exit 1 ++if [ $kcheckrunning_result -eq 0 ]; then ++ echo "KDE seems to be already running on this display." ++ exit 1 ++elif [ $kcheckrunning_result -eq 2 ]; then ++ echo "\$DISPLAY is not set or cannot connect to the X server." ++ exit 1 + fi + + # Boot sequence: +@@ -33,61 +42,133 @@ fi + # + # * Then ksmserver is started which takes control of the rest of the startup sequence + +-if [ ${XDG_CONFIG_HOME} ]; then +- configDir=$XDG_CONFIG_HOME; +-else +- configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++@NIXPKGS_MKDIR@ -p "$XDG_CONFIG_HOME" ++ ++# The KDE icon cache is supposed to update itself ++# automatically, but it uses the timestamp on the icon ++# theme directory as a trigger. Since in Nix the ++# timestamp is always the same, this doesn't work. So as ++# a workaround, nuke the icon cache on login. This isn't ++# perfect, since it may require logging out after ++# installing new applications to update the cache. ++# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html ++rm -fv $HOME/.cache/icon-cache.kcache ++ ++# Qt writes a weird ‘libraryPath’ line to ++# ~/.config/Trolltech.conf that causes the KDE plugin ++# paths of previous KDE invocations to be searched. ++# Obviously using mismatching KDE libraries is potentially ++# disastrous, so here we nuke references to the Nix store ++# in Trolltech.conf. A better solution would be to stop ++# Qt from doing this wackiness in the first place. ++if [ -e $XDG_CONFIG_HOME/Trolltech.conf ]; then ++ @NIXPKGS_SED@ -e '/nix\\store\|nix\/store/ d' -i $XDG_CONFIG_HOME/Trolltech.conf + fi + sysConfigDirs=${XDG_CONFIG_DIRS:-/etc/xdg} + +-# We need to create config folder so we can write startupconfigkeys +-mkdir -p $configDir ++@NIXPKGS_KBUILDSYCOCA5@ ++ ++# Set the default GTK 2 theme ++gtkrc2="$HOME/.gtkrc-2.0" ++breeze_gtkrc2="/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc" ++if ! [ -e "$gtkrc2" ] && [ -e "$breeze_gtkrc2" ]; then ++ cat >"$gtkrc2" <<EOF ++# Default GTK+ 2 config for NixOS KDE 5 ++include "$breeze_gtkrc2" ++style "user-font" ++{ ++ font_name="Sans Serif Regular" ++} ++widget_class "*" style "user-font" ++gtk-font-name="Sans Serif Regular 10" ++gtk-theme-name="Breeze" ++gtk-icon-theme-name="breeze" ++gtk-fallback-icon-theme="hicolor" ++gtk-cursor-theme-name="breeze_cursors" ++gtk-toolbar-style=GTK_TOOLBAR_ICONS ++gtk-menu-images=1 ++gtk-button-images=1 ++EOF ++fi ++ ++# Set the default GTK 3 theme ++gtk3_settings="$XDG_CONFIG_HOME/gtk-3.0/settings.ini" ++breeze_gtk3="/run/current-system/sw/share/themes/Breeze/gtk-3.0" ++if ! [ -e "$gtk3_settings" ] && [ -e "$breeze_gtk" ]; then ++ mkdir -p $(dirname "$gtk3_settings") ++ cat >"$gtk3_settings" <<EOF ++[Settings] ++gtk-font-name=Sans Serif Regular 10 ++gtk-theme-name=Breeze ++gtk-icon-theme-name=breeze ++gtk-fallback-icon-theme=hicolor ++gtk-cursor-theme-name=breeze_cursors ++gtk-toolbar-style=GTK_TOOLBAR_ICONS ++gtk-menu-images=1 ++gtk-button-images=1 ++EOF ++fi ++ ++kcminputrc="$XDG_CONFIG_HOME/kcminputrc" ++if ! [ -e "$kcminputrc" ]; then ++ cat >"$kcminputrc" <<EOF ++[Mouse] ++cursorTheme=breeze_cursors ++cursorSize=0 ++EOF ++fi + + #This is basically setting defaults so we can use them with kstartupconfig5 +-cat >$configDir/startupconfigkeys <<EOF ++cat >"$XDG_CONFIG_HOME/startupconfigkeys" <<EOF + kcminputrc Mouse cursorTheme 'breeze_cursors' + kcminputrc Mouse cursorSize '' +-ksplashrc KSplash Theme Breeze ++ksplashrc KSplash Theme org.kde.breeze.desktop + ksplashrc KSplash Engine KSplashQML + kdeglobals KScreen ScreenScaleFactors '' + kcmfonts General forceFontDPI 0 ++kcmfonts General dontChangeAASettings true + EOF + + # preload the user's locale on first start +-plasmalocalerc=$configDir/plasma-localerc +-test -f $plasmalocalerc || { +-cat >$plasmalocalerc <<EOF ++plasmalocalerc="$XDG_CONFIG_HOME/plasma-localerc" ++if ! [ -f "$plasmalocalerc" ]; then ++ cat >"$plasmalocalerc" <<EOF + [Formats] + LANG=$LANG + EOF +-} ++fi + + # export LC_* variables set by kcmshell5 formats into environment + # so it can be picked up by QLocale and friends. +-exportformatssettings=$configDir/plasma-locale-settings.sh +-test -f $exportformatssettings && { +- . $exportformatssettings +-} ++exportformatssettings="$XDG_CONFIG_HOME/plasma-locale-settings.sh" ++if [ -r "$exportformatssettings" ]; then ++ . "$exportformatssettings" ++fi + + # Write a default kdeglobals file to set up the font +-kdeglobalsfile=$configDir/kdeglobals +-test -f $kdeglobalsfile || { +-cat >$kdeglobalsfile <<EOF ++kdeglobalsfile="$XDG_CONFIG_HOME/kdeglobals" ++if ! [ -f "$kdeglobalsfile" ]; then ++ cat >"$kdeglobalsfile" <<EOF + [General] +-XftAntialias=true +-XftHintStyle=hintmedium +-XftSubPixel=none ++fixed=Monospace,10,-1,5,50,0,0,0,0,0,Regular ++font=Sans Serif,10,-1,5,50,0,0,0,0,0,Regular ++menuFont=Sans Serif,10,-1,5,50,0,0,0,0,0,Regular ++smallestReadableFont=Sans Serif,8,-1,5,50,0,0,0,0,0,Regular ++toolBarFont=Sans Serif,8,-1,5,50,0,0,0,0,0,Regular ++ ++[WM] ++activeFont=Noto Sans,12,-1,5,50,0,0,0,0,0,Bold + EOF +-} ++fi + +-kstartupconfig5 +-returncode=$? +-if test $returncode -ne 0; then +- xmessage -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation." ++if ! @CMAKE_INSTALL_FULL_BINDIR@/kstartupconfig5; then ++ echo "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation." 1>&2 + exit 1 + fi +-[ -r $configDir/startupconfig ] && . $configDir/startupconfig +- ++if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then ++ . "$XDG_CONFIG_HOME/startupconfig" ++fi + + #Do not sync any of this section with the wayland versions as there scale factors are + #sent properly over wl_output +@@ -99,26 +180,33 @@ fi + #otherwise apps that manually opt in for high DPI get auto scaled by the developer AND manually scaled by us + export QT_AUTO_SCREEN_SCALE_FACTOR=0 + ++#Set the QtQuickControls style to our own: for QtQuickControls1 ++#it will fall back to Desktop, while it will use our own org.kde.desktop ++#for QtQuickControlsStyle and Kirigami ++export QT_QUICK_CONTROLS_STYLE=org.kde.desktop ++ ++XCURSOR_PATH=~/.icons ++IFS=":" read -r -a xdgDirs <<< "$XDG_DATA_DIRS" ++for xdgDir in "${xdgDirs[@]}"; do ++ XCURSOR_PATH="$XCURSOR_PATH:$xdgDir/icons" ++done ++export XCURSOR_PATH ++ + # XCursor mouse theme needs to be applied here to work even for kded or ksmserver + if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then +- @EXPORT_XCURSOR_PATH@ +- + kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize" +- if test $? -eq 10; then +- XCURSOR_THEME=breeze_cursors +- export XCURSOR_THEME +- elif test -n "$kcminputrc_mouse_cursortheme"; then +- XCURSOR_THEME="$kcminputrc_mouse_cursortheme" +- export XCURSOR_THEME ++ if [ $? -eq 10 ]; then ++ export XCURSOR_THEME=breeze_cursors ++ elif [ -n "$kcminputrc_mouse_cursortheme" ]; then ++ export XCURSOR_THEME="$kcminputrc_mouse_cursortheme" + fi +- if test -n "$kcminputrc_mouse_cursorsize"; then +- XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" +- export XCURSOR_SIZE ++ if [ -n "$kcminputrc_mouse_cursorsize" ]; then ++ export XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" + fi + fi + +-if test "$kcmfonts_general_forcefontdpi" -ne 0; then +- xrdb -quiet -merge -nocpp <<EOF ++if [ "${kcmfonts_general_forcefontdpi:-0}" -ne 0 ]; then ++ @NIXPKGS_XRDB@ -quiet -merge -nocpp <<EOF + Xft.dpi: $kcmfonts_general_forcefontdpi + EOF + fi +@@ -127,11 +215,11 @@ dl=$DESKTOP_LOCKED + unset DESKTOP_LOCKED # Don't want it in the environment + + ksplash_pid= +-if test -z "$dl"; then ++if [ -z "$dl" ]; then + # the splashscreen and progress indicator + case "$ksplashrc_ksplash_engine" in + KSplashQML) +- ksplash_pid=`ksplashqml "${ksplashrc_ksplash_theme}" --pid` ++ ksplash_pid=$(@CMAKE_INSTALL_FULL_BINDIR@/ksplashqml "${ksplashrc_ksplash_theme}" --pid) + ;; + None) + ;; +@@ -140,69 +228,6 @@ if test -z "$dl"; then + esac + fi + +-# Source scripts found in <config locations>/plasma-workspace/env/*.sh +-# (where <config locations> correspond to the system and user's configuration +-# directory. +-# +-# This is where you can define environment variables that will be available to +-# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` +-# or eval `gpg-agent --daemon`. +-# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script +-# +-# (see end of this file). +-# For anything else (that doesn't set env vars, or that needs a window manager), +-# better use the Autostart folder. +- +-scriptpath=`echo "$configDir:$sysConfigDirs" | tr ':' '\n'` +- +-for prefix in `echo $scriptpath`; do +- for file in "$prefix"/plasma-workspace/env/*.sh; do +- test -r "$file" && . "$file" || true +- done +-done +- +-# Activate the kde font directories. +-# +-# There are 4 directories that may be used for supplying fonts for KDE. +-# +-# There are two system directories. These belong to the administrator. +-# There are two user directories, where the user may add her own fonts. +-# +-# The 'override' versions are for fonts that should come first in the list, +-# i.e. if you have a font in your 'override' directory, it will be used in +-# preference to any other. +-# +-# The preference order looks like this: +-# user override, system override, X, user, system +-# +-# Where X is the original font database that was set up before this script +-# runs. +- +-usr_odir=$HOME/.fonts/kde-override +-usr_fdir=$HOME/.fonts +- +-if test -n "$KDEDIRS"; then +- kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'` +- sys_odir=$kdedirs_first/share/fonts/override +- sys_fdir=$kdedirs_first/share/fonts +-else +- sys_odir=$KDEDIR/share/fonts/override +- sys_fdir=$KDEDIR/share/fonts +-fi +- +-# We run mkfontdir on the user's font dirs (if we have permission) to pick +-# up any new fonts they may have installed. If mkfontdir fails, we still +-# add the user's dirs to the font path, as they might simply have been made +-# read-only by the administrator, for whatever reason. +- +-test -d "$sys_odir" && xset +fp "$sys_odir" +-test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir") +-test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir") +-test -d "$sys_fdir" && xset fp+ "$sys_fdir" +- +-# Ask X11 to rebuild its font list. +-xset fp rehash +- + # Set a left cursor instead of the standard X11 "X" cursor, since I've heard + # from some users that they're confused and don't know what to do. This is + # especially necessary on slow machines, where starting KDE takes one or two +@@ -257,44 +282,65 @@ export XDG_DATA_DIRS + # + KDE_FULL_SESSION=true + export KDE_FULL_SESSION +-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true ++@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true + + KDE_SESSION_VERSION=5 + export KDE_SESSION_VERSION +-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 ++@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 + +-KDE_SESSION_UID=`id -ru` ++KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru) + export KDE_SESSION_UID + + XDG_CURRENT_DESKTOP=KDE + export XDG_CURRENT_DESKTOP + ++# Enforce xcb QPA. Helps switching between Wayland and X sessions. ++export QT_QPA_PLATFORM=xcb ++ ++# Source scripts found in <config locations>/plasma-workspace/env/*.sh ++# (where <config locations> correspond to the system and user's configuration ++# directories, as identified by Qt's qtpaths, e.g. $HOME/.config ++# and /etc/xdg/ on Linux) ++# ++# This is where you can define environment variables that will be available to ++# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` ++# or eval `gpg-agent --daemon`. ++# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script ++# ++# (see end of this file). ++# For anything else (that doesn't set env vars, or that needs a window manager), ++# better use the Autostart folder. ++ ++IFS=":" read -r -a scriptpath <<< $(@NIXPKGS_QTPATHS@ --paths GenericConfigLocation) ++# Add /env/ to the directory to locate the scripts to be sourced ++for prefix in "${scriptpath[@]}"; do ++ for file in "$prefix"/plasma-workspace/env/*.sh; do ++ if [ -r "$file" ]; then ++ . "$file" ++ fi ++ done ++done ++ + # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment +-if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then +- dbus-update-activation-environment --systemd --all +-else +- @CMAKE_INSTALL_FULL_LIBEXECDIR@/ksyncdbusenv +-fi +-if test $? -ne 0; then ++ ++if ! @NIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT@ --systemd --all; then + # Startup error + echo 'startkde: Could not sync environment to dbus.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not sync environment to dbus." + exit 1 + fi + + # We set LD_BIND_NOW to increase the efficiency of kdeinit. + # kdeinit unsets this variable before loading applications. +-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup ++LD_BIND_NOW=true @NIXPKGS_START_KDEINIT_WRAPPER@ --kded +kcminit_startup + if test $? -ne 0; then + # Startup error + echo 'startkde: Could not start kdeinit5. Check your installation.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation." + exit 1 + fi + +-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & ++@NIXPKGS_QDBUS@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & + + # finally, give the session control to the session manager + # see kdebase/ksmserver for the description of the rest of the startup sequence +@@ -306,12 +352,16 @@ qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & + # We only check for 255 which means that the ksmserver process could not be + # started, any problems thereafter, e.g. ksmserver failing to initialize, + # will remain undetected. +-test -n "$KDEWM" && KDEWM="--windowmanager $KDEWM" ++if [ -n "$KDEWM" ]; then ++ KDEWM="--windowmanager $KDEWM" ++fi + # If the session should be locked from the start (locked autologin), + # lock now and do the rest of the KDE startup underneath the locker. + KSMSERVEROPTIONS="" +-test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen" +-kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS ++if [ -n "$dl" ]; then ++ KSMSERVEROPTIONS=" --lockscreen" ++fi ++@NIXPKGS_KWRAPPER5@ @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS + if test $? -eq 255; then + # Startup error + echo 'startkde: Could not start ksmserver. Check your installation.' 1>&2 +@@ -322,36 +372,36 @@ fi + #Anything after here is logout + #It is not called after shutdown/restart + +-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` ++wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) + +-if test x"$wait_drkonqi"x = x"true"x ; then ++if [ x"$wait_drkonqi"x = x"true"x ]; then + # wait for remaining drkonqi instances with timeout (in seconds) +- wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900` ++ wait_drkonqi_timeout=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900) + wait_drkonqi_counter=0 +- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do ++ while @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ -q "^[^w]*org.kde.drkonqi" ; do + sleep 5 + wait_drkonqi_counter=$((wait_drkonqi_counter+5)) +- if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then ++ if [ "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ]; then + # ask remaining drkonqis to die in a graceful way +- qdbus | grep 'org.kde.drkonqi-' | while read address ; do +- qdbus "$address" "/MainApplication" "quit" +- done +- break ++ @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ 'org.kde.drkonqi-' | while read address ; do ++ @NIXPKGS_QDBUS@ "$address" "/MainApplication" "quit" + fi + done + fi + + echo 'startkde: Shutting down...' 1>&2 + # just in case +-test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++if [ -n "$ksplash_pid" ]; then ++ kill "$ksplash_pid" 2>/dev/null ++fi + + # Clean up +-kdeinit5_shutdown ++@NIXPKGS_KDEINIT5_SHUTDOWN@ + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startkde: Done.' 1>&2 +diff --git a/startkde/startplasma.cmake b/startkde/startplasma.cmake +index de98541c..39c0b521 100644 +--- a/startkde/startplasma.cmake ++++ b/startkde/startplasma.cmake +@@ -1,6 +1,6 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + + # Boot sequence: +@@ -17,28 +17,26 @@ + # + # * Then ksmserver is started which takes control of the rest of the startup sequence + +-# We need to create config folder so we can write startupconfigkeys +-if [ ${XDG_CONFIG_HOME} ]; then +- configDir=$XDG_CONFIG_HOME; +-else +- configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then ++ . "$XDG_CONFIG_HOME/startupconfig" + fi + +-[ -r $configDir/startupconfig ] && . $configDir/startupconfig +- +-xrdb -quiet -merge -nocpp <<EOF ++if [ "$kcmfonts_general_forcefontdpi" -ne 0 ]; then ++ @NIXPKGS_XRDB@ -quiet -merge -nocpp <<EOF + Xft.dpi: $QT_WAYLAND_FORCE_DPI + EOF ++fi + + dl=$DESKTOP_LOCKED + unset DESKTOP_LOCKED # Don't want it in the environment + + ksplash_pid= +-if test -z "$dl"; then ++if [ -z "$dl" ]; then + # the splashscreen and progress indicator + case "$ksplashrc_ksplash_engine" in + KSplashQML) +- ksplash_pid=`ksplashqml "${ksplashrc_ksplash_theme}" --pid` ++ ksplash_pid=$(@CMAKE_INSTALL_FULL_BINDIR@/ksplashqml "${ksplashrc_ksplash_theme}" --pid) + ;; + None) + ;; +@@ -50,48 +48,6 @@ fi + #In wayland we want Plasma to use Qt's scaling + export PLASMA_USE_QT_SCALING=1 + +-# Activate the kde font directories. +-# +-# There are 4 directories that may be used for supplying fonts for KDE. +-# +-# There are two system directories. These belong to the administrator. +-# There are two user directories, where the user may add her own fonts. +-# +-# The 'override' versions are for fonts that should come first in the list, +-# i.e. if you have a font in your 'override' directory, it will be used in +-# preference to any other. +-# +-# The preference order looks like this: +-# user override, system override, X, user, system +-# +-# Where X is the original font database that was set up before this script +-# runs. +- +-usr_odir=$HOME/.fonts/kde-override +-usr_fdir=$HOME/.fonts +- +-if test -n "$KDEDIRS"; then +- kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'` +- sys_odir=$kdedirs_first/share/fonts/override +- sys_fdir=$kdedirs_first/share/fonts +-else +- sys_odir=$KDEDIR/share/fonts/override +- sys_fdir=$KDEDIR/share/fonts +-fi +- +-# We run mkfontdir on the user's font dirs (if we have permission) to pick +-# up any new fonts they may have installed. If mkfontdir fails, we still +-# add the user's dirs to the font path, as they might simply have been made +-# read-only by the administrator, for whatever reason. +- +-test -d "$sys_odir" && xset +fp "$sys_odir" +-test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir") +-test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir") +-test -d "$sys_fdir" && xset fp+ "$sys_fdir" +- +-# Ask X11 to rebuild its font list. +-xset fp rehash +- + # Set a left cursor instead of the standard X11 "X" cursor, since I've heard + # from some users that they're confused and don't know what to do. This is + # especially necessary on slow machines, where starting KDE takes one or two +@@ -100,22 +56,13 @@ xset fp rehash + # If the user has overwritten fonts, the cursor font may be different now + # so don't move this up. + # +-xsetroot -cursor_name left_ptr +- +-# Get Ghostscript to look into user's KDE fonts dir for additional Fontmap +-if test -n "$GS_LIB" ; then +- GS_LIB=$usr_fdir:$GS_LIB +- export GS_LIB +-else +- GS_LIB=$usr_fdir +- export GS_LIB +-fi ++@NIXPKGS_XSETROOT@ -cursor_name left_ptr + + echo 'startplasma: Starting up...' 1>&2 + + # export our session variables to the Xwayland server +-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true +-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 ++@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true ++@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 + + # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment + if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then +@@ -131,16 +78,15 @@ fi + + # We set LD_BIND_NOW to increase the efficiency of kdeinit. + # kdeinit unsets this variable before loading applications. +-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup ++LD_BIND_NOW=true @NIXPKGS_START_KDEINIT_WRAPPER@ --kded +kcminit_startup + if test $? -ne 0; then + # Startup error + echo 'startplasma: Could not start kdeinit5. Check your installation.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation." + exit 1 + fi + +-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & ++@NIXPKGS_QDBUS@ org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & + + # finally, give the session control to the session manager + # see kdebase/ksmserver for the description of the rest of the startup sequence +@@ -166,19 +112,19 @@ fi + #Anything after here is logout + #It is not called after shutdown/restart + +-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` +- +-if test x"$wait_drkonqi"x = x"true"x ; then ++wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) ++ ++if [ x"$wait_drkonqi"x = x"true"x ]; then + # wait for remaining drkonqi instances with timeout (in seconds) +- wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900` ++ wait_drkonqi_timeout=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900) + wait_drkonqi_counter=0 +- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do ++ while @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ -q "^[^w]*org.kde.drkonqi" ; do + sleep 5 + wait_drkonqi_counter=$((wait_drkonqi_counter+5)) +- if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then ++ if [ "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ]; then + # ask remaining drkonqis to die in a graceful way +- qdbus | grep 'org.kde.drkonqi-' | while read address ; do +- qdbus "$address" "/MainApplication" "quit" ++ @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ 'org.kde.drkonqi-' | while read address ; do ++ @NIXPKGS_QDBUS@ "$address" "/MainApplication" "quit" + done + break + fi +@@ -187,15 +133,17 @@ fi + + echo 'startplasma: Shutting down...' 1>&2 + # just in case +-test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++if [ -n "$ksplash_pid" ]; then ++ "$ksplash_pid" 2>/dev/null ++fi + + # Clean up +-kdeinit5_shutdown ++@NIXPKGS_KDEINIT5_SHUTDOWN@ + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startplasma: Done.' 1>&2 +diff --git a/startkde/startplasmacompositor.cmake b/startkde/startplasmacompositor.cmake +index dd9e304d..12132f9e 100644 +--- a/startkde/startplasmacompositor.cmake ++++ b/startkde/startplasmacompositor.cmake +@@ -1,118 +1,165 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + +-# We need to create config folder so we can write startupconfigkeys +-if [ ${XDG_CONFIG_HOME} ]; then +- configDir=$XDG_CONFIG_HOME; +-else +- configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html ++# we have to unset this for Darwin since it will screw up KDE's dynamic-loading ++unset DYLD_FORCE_FLAT_NAMESPACE ++ ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++@NIXPKGS_MKDIR@ -p "$XDG_CONFIG_HOME" ++ ++# The KDE icon cache is supposed to update itself ++# automatically, but it uses the timestamp on the icon ++# theme directory as a trigger. Since in Nix the ++# timestamp is always the same, this doesn't work. So as ++# a workaround, nuke the icon cache on login. This isn't ++# perfect, since it may require logging out after ++# installing new applications to update the cache. ++# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html ++rm -fv $HOME/.cache/icon-cache.kcache ++ ++# Qt writes a weird ‘libraryPath’ line to ++# ~/.config/Trolltech.conf that causes the KDE plugin ++# paths of previous KDE invocations to be searched. ++# Obviously using mismatching KDE libraries is potentially ++# disastrous, so here we nuke references to the Nix store ++# in Trolltech.conf. A better solution would be to stop ++# Qt from doing this wackiness in the first place. ++if [ -e $XDG_CONFIG_HOME/Trolltech.conf ]; then ++ @NIXPKGS_SED@ -e '/nix\\store\|nix\/store/ d' -i $XDG_CONFIG_HOME/Trolltech.conf ++fi ++ ++@NIXPKGS_KBUILDSYCOCA5@ ++ ++# Set the default GTK 2 theme ++gtkrc2="$HOME/.gtkrc-2.0" ++breeze_gtkrc2="/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc" ++if ! [ -e "$gtkrc2" ] && [ -e "$breeze_gtkrc2" ]; then ++ cat >"$gtkrc2" <<EOF ++# Default GTK+ 2 config for NixOS KDE 5 ++include "$breeze_gtkrc2" ++style "user-font" ++{ ++ font_name="Sans Serif Regular" ++} ++widget_class "*" style "user-font" ++gtk-font-name="Sans Serif Regular 10" ++gtk-theme-name="Breeze" ++gtk-icon-theme-name="breeze" ++gtk-fallback-icon-theme="hicolor" ++gtk-cursor-theme-name="breeze_cursors" ++gtk-toolbar-style=GTK_TOOLBAR_ICONS ++gtk-menu-images=1 ++gtk-button-images=1 ++EOF + fi + sysConfigDirs=${XDG_CONFIG_DIRS:-/etc/xdg} + +-# We need to create config folder so we can write startupconfigkeys +-mkdir -p $configDir ++# Set the default GTK 3 theme ++gtk3_settings="$XDG_CONFIG_HOME/gtk-3.0/settings.ini" ++breeze_gtk3="/run/current-system/sw/share/themes/Breeze/gtk-3.0" ++if ! [ -e "$gtk3_settings" ] && [ -e "$breeze_gtk" ]; then ++ mkdir -p $(dirname "$gtk3_settings") ++ cat >"$gtk3_settings" <<EOF ++[Settings] ++gtk-font-name=Sans Serif Regular 10 ++gtk-theme-name=Breeze ++gtk-icon-theme-name=breeze ++gtk-fallback-icon-theme=hicolor ++gtk-cursor-theme-name=breeze_cursors ++gtk-toolbar-style=GTK_TOOLBAR_ICONS ++gtk-menu-images=1 ++gtk-button-images=1 ++EOF ++fi ++ ++kcminputrc="$XDG_CONFIG_HOME/kcminputrc" ++if ! [ -e "$kcminputrc" ]; then ++ cat >"$kcminputrc" <<EOF ++[Mouse] ++cursorTheme=breeze_cursors ++cursorSize=0 ++EOF ++fi + + #This is basically setting defaults so we can use them with kstartupconfig5 +-cat >$configDir/startupconfigkeys <<EOF ++cat >"$XDG_CONFIG_HOME/startupconfigkeys" <<EOF + kcminputrc Mouse cursorTheme 'breeze_cursors' + kcminputrc Mouse cursorSize '' +-ksplashrc KSplash Theme Breeze ++ksplashrc KSplash Theme org.kde.breeze.desktop + ksplashrc KSplash Engine KSplashQML +-kcmfonts General forceFontDPIWayland 0 ++kdeglobals KScreen ScreenScaleFactors '' ++kcmfonts General forceFontDPI 0 ++kcmfonts General dontChangeAASettings true + EOF + + # preload the user's locale on first start +-plasmalocalerc=$configDir/plasma-localerc +-test -f $plasmalocalerc || { +-cat >$plasmalocalerc <<EOF ++plasmalocalerc="$XDG_CONFIG_HOME/plasma-localerc" ++if ! [ -f "$plasmalocalerc" ]; then ++ cat >"$plasmalocalerc" <<EOF + [Formats] + LANG=$LANG + EOF +-} ++fi + + # export LC_* variables set by kcmshell5 formats into environment + # so it can be picked up by QLocale and friends. +-exportformatssettings=$configDir/plasma-locale-settings.sh +-test -f $exportformatssettings && { +- . $exportformatssettings +-} ++exportformatssettings="$XDG_CONFIG_HOME/plasma-locale-settings.sh" ++if [ -r "$exportformatssettings" ]; then ++ . "$exportformatssettings" ++fi + + # Write a default kdeglobals file to set up the font +-kdeglobalsfile=$configDir/kdeglobals +-test -f $kdeglobalsfile || { +-cat >$kdeglobalsfile <<EOF ++kdeglobalsfile="$XDG_CONFIG_HOME/kdeglobals" ++if ! [ -f "$kdeglobalsfile" ]; then ++ cat >"$kdeglobalsfile" <<EOF + [General] +-XftAntialias=true +-XftHintStyle=hintmedium +-XftSubPixel=none ++fixed=Monospace,10,-1,5,50,0,0,0,0,0,Regular ++font=Sans Serif,10,-1,5,50,0,0,0,0,0,Regular ++menuFont=Sans Serif,10,-1,5,50,0,0,0,0,0,Regular ++smallestReadableFont=Sans Serif,8,-1,5,50,0,0,0,0,0,Regular ++toolBarFont=Sans Serif,8,-1,5,50,0,0,0,0,0,Regular ++ ++[WM] ++activeFont=Noto Sans,12,-1,5,50,0,0,0,0,0,Bold + EOF +-} +- +-# Make sure the Oxygen font is installed +-# This is necessary for setups where CMAKE_INSTALL_PREFIX +-# is not in /usr. fontconfig looks in /usr, ~/.fonts and +-# $XDG_DATA_HOME for fonts. In this case, we symlink the +-# Oxygen font under ${XDG_DATA_HOME} and make it known to +-# fontconfig +- +-usr_share="/usr/share" +-install_share="@KDE_INSTALL_FULL_DATADIR@" +- +-if [ ! $install_share = $usr_share ]; then +- +- if [ ${XDG_DATA_HOME} ]; then +- fontsDir="${XDG_DATA_HOME}/fonts" +- else +- fontsDir="${HOME}/.fonts" +- fi +- +- test -d $fontsDir || { +- mkdir -p $fontsDir +- } +- +- oxygenDir=$fontsDir/truetype/oxygen +- prefixDir="@KDE_INSTALL_FULL_DATADIR@/fonts/truetype/oxygen" +- +- # if the oxygen dir doesn't exist, create a symlink to be sure that the +- # Oxygen font is available to the user +- test -d $oxygenDir || test -d $prefixDir && { +- test -h $oxygenDir || ln -s $prefixDir $oxygenDir && fc-cache $oxygenDir +- } + fi + +-kstartupconfig5 ++@CMAKE_INSTALL_FULL_BINDIR@/kstartupconfig5 + returncode=$? + if test $returncode -ne 0; then + exit 1 + fi +-[ -r $configDir/startupconfig ] && . $configDir/startupconfig ++if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then ++ . "$XDG_CONFIG_HOME/startupconfig" ++fi + + #Manually disable auto scaling because we are scaling above + #otherwise apps that manually opt in for high DPI get auto scaled by the developer AND scaled by the wl_output + export QT_AUTO_SCREEN_SCALE_FACTOR=0 + +-# XCursor mouse theme needs to be applied here to work even for kded or ksmserver +-if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then +- @EXPORT_XCURSOR_PATH@ ++XCURSOR_PATH=~/.icons ++IFS=":" read -r -a xdgDirs <<< "$XDG_DATA_DIRS" ++for xdgDir in "${xdgDirs[@]}"; do ++ XCURSOR_PATH="$XCURSOR_PATH:$xdgDir/icons" ++done ++export XCURSOR_PATH + +- # TODO: is kapplymousetheme a core app? ++# XCursor mouse theme needs to be applied here to work even for kded or ksmserver ++if [ -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ]; then + #kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize" +- if test $? -eq 10; then +- XCURSOR_THEME=breeze_cursors +- export XCURSOR_THEME +- elif test -n "$kcminputrc_mouse_cursortheme"; then +- XCURSOR_THEME="$kcminputrc_mouse_cursortheme" +- export XCURSOR_THEME ++ if [ $? -eq 10 ]; then ++ export XCURSOR_THEME=breeze_cursors ++ elif [ -n "$kcminputrc_mouse_cursortheme" ]; then ++ export XCURSOR_THEME="$kcminputrc_mouse_cursortheme" + fi +- if test -n "$kcminputrc_mouse_cursorsize"; then +- XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" +- export XCURSOR_SIZE ++ if [ -n "$kcminputrc_mouse_cursorsize" ]; then ++ export XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" + fi + fi + +-if test "$kcmfonts_general_forcefontdpiwayland" -ne 0; then ++if [ "${kcmfonts_general_forcefontdpiwayland:-0}" -ne 0 ]; then + export QT_WAYLAND_FORCE_DPI=$kcmfonts_general_forcefontdpiwayland + else + export QT_WAYLAND_FORCE_DPI=96 +@@ -120,12 +167,12 @@ fi + + # Get a property value from org.freedesktop.locale1 + queryLocale1() { +- qdbus --system org.freedesktop.locale1 /org/freedesktop/locale1 "$1" ++ @NIXPKGS_QDBUS@ --system org.freedesktop.locale1 /org/freedesktop/locale1 "$1" + } + + # Query whether org.freedesktop.locale1 is available. If it is, try to + # set XKB_DEFAULT_{MODEL,LAYOUT,VARIANT,OPTIONS} accordingly. +-if qdbus --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then ++if @NIXPKGS_QDBUS@ --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then + # Do not overwrite existing values. There is no point in setting only some + # of them as then they would not match anymore. + if [ -z "${XKB_DEFAULT_MODEL}" -a -z "${XKB_DEFAULT_LAYOUT}" -a \ +@@ -141,41 +188,10 @@ if qdbus --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then + fi + fi + +-# Source scripts found in <config locations>/plasma-workspace/env/*.sh +-# (where <config locations> correspond to the system and user's configuration +-# directories, as identified by Qt's qtpaths, e.g. $HOME/.config +-# and /etc/xdg/ on Linux) +-# +-# This is where you can define environment variables that will be available to +-# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` +-# or eval `gpg-agent --daemon`. +-# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script +-# +-# (see end of this file). +-# For anything else (that doesn't set env vars, or that needs a window manager), +-# better use the Autostart folder. +- +-scriptpath=`echo "$configDir:$sysConfigDirs" | tr ':' '\n'` +- +-for prefix in `echo $scriptpath`; do +- for file in "$prefix"/plasma-workspace/env/*.sh; do +- test -r "$file" && . "$file" || true +- done +-done +- + echo 'startplasmacompositor: Starting up...' 1>&2 + +-# Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all. +-# The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend +-# to set it to a list of paths *not* including the KDE prefix if it's not /usr or +-# /usr/local. +-if test -z "$XDG_DATA_DIRS"; then +-XDG_DATA_DIRS="@KDE_INSTALL_FULL_DATADIR@:/usr/share:/usr/local/share" +-fi +-export XDG_DATA_DIRS +- + # Make sure that D-Bus is running +-if qdbus >/dev/null 2>/dev/null; then ++if @NIXPKGS_QDBUS@ >/dev/null 2>/dev/null; then + : # ok + else + echo 'startplasmacompositor: Could not start D-Bus. Can you call qdbus?' 1>&2 +@@ -212,26 +228,47 @@ export KDE_FULL_SESSION + KDE_SESSION_VERSION=5 + export KDE_SESSION_VERSION + +-KDE_SESSION_UID=`id -ru` ++KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru) + export KDE_SESSION_UID + + XDG_CURRENT_DESKTOP=KDE + export XDG_CURRENT_DESKTOP + ++# Source scripts found in <config locations>/plasma-workspace/env/*.sh ++# (where <config locations> correspond to the system and user's configuration ++# directories, as identified by Qt's qtpaths, e.g. $HOME/.config ++# and /etc/xdg/ on Linux) ++# ++# This is where you can define environment variables that will be available to ++# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` ++# or eval `gpg-agent --daemon`. ++# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script ++# ++# (see end of this file). ++# For anything else (that doesn't set env vars, or that needs a window manager), ++# better use the Autostart folder. ++ ++IFS=":" read -r -a scriptpath <<< $(@NIXPKGS_QTPATHS@ --paths GenericConfigLocation) ++# Add /env/ to the directory to locate the scripts to be sourced ++for prefix in "${scriptpath[@]}"; do ++ for file in "$prefix"/plasma-workspace/env/*.sh; do ++ if [ -r "$file" ]; then ++ . "$file" ++ fi ++ done ++done ++ + # kwin_wayland can possibly also start dbus-activated services which need env variables. + # In that case, the update in startplasma might be too late. +-if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then +- dbus-update-activation-environment --systemd --all +-else +- @CMAKE_INSTALL_FULL_LIBEXECDIR@/ksyncdbusenv +-fi +-if test $? -ne 0; then +- # Startup error +- echo 'startplasmacompositor: Could not sync environment to dbus.' 1>&2 +- exit 1 ++if ! @NIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT@ --systemd --all; then ++ # Startup error ++ echo 'startkde: Could not sync environment to dbus.' 1>&2 ++ test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++ echo 'startplasmacompositor: Could not sync environment to dbus.' 1>&2 ++ exit 1 + fi + +-@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@CMAKE_INSTALL_FULL_LIBEXECDIR@/startplasma ++@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@NIXPKGS_STARTPLASMA@ + + echo 'startplasmacompositor: Shutting down...' 1>&2 + diff --git a/nixpkgs/pkgs/desktops/plasma-5/polkit-kde-agent.nix b/nixpkgs/pkgs/desktops/plasma-5/polkit-kde-agent.nix new file mode 100644 index 000000000000..c25b3d2744b7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/polkit-kde-agent.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, extra-cmake-modules, + kcoreaddons, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, knotifications, + kwidgetsaddons, kwindowsystem, polkit-qt +}: + +mkDerivation { + name = "polkit-kde-agent"; + nativeBuildInputs = [ extra-cmake-modules ]; + propagatedBuildInputs = [ + kdbusaddons kwidgetsaddons kcoreaddons kcrash kconfig ki18n kiconthemes + knotifications kwindowsystem polkit-qt + ]; + outputs = [ "out" "dev" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/powerdevil.nix b/nixpkgs/pkgs/desktops/plasma-5/powerdevil.nix new file mode 100644 index 000000000000..65fc5446c16e --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/powerdevil.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, + extra-cmake-modules, kdoctools, + bluez-qt, kactivities, kauth, kconfig, kdbusaddons, kdelibs4support, + kglobalaccel, ki18n, kidletime, kio, knotifyconfig, kwayland, libkscreen, + networkmanager-qt, plasma-workspace, qtx11extras, solid, udev +}: + +mkDerivation { + name = "powerdevil"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kconfig kdbusaddons knotifyconfig solid udev bluez-qt kactivities kauth + kdelibs4support kglobalaccel ki18n kio kidletime kwayland libkscreen + networkmanager-qt plasma-workspace qtx11extras + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix b/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix new file mode 100644 index 000000000000..6becf3bf420b --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/sddm-kcm.nix @@ -0,0 +1,16 @@ +{ + mkDerivation, extra-cmake-modules, shared-mime-info, + libpthreadstubs, libXcursor, libXdmcp, + qtquickcontrols2, qtx11extras, + karchive, ki18n, kio, knewstuff +}: + +mkDerivation { + name = "sddm-kcm"; + nativeBuildInputs = [ extra-cmake-modules shared-mime-info ]; + buildInputs = [ + libpthreadstubs libXcursor libXdmcp + qtquickcontrols2 qtx11extras + karchive ki18n kio knewstuff + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/srcs.nix b/nixpkgs/pkgs/desktops/plasma-5/srcs.nix new file mode 100644 index 000000000000..0842034f0d89 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/srcs.nix @@ -0,0 +1,365 @@ +# DO NOT EDIT! This file is generated automatically by fetch-kde-qt.sh +{ fetchurl, mirror }: + +{ + bluedevil = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/bluedevil-5.14.5.tar.xz"; + sha256 = "1khqw11apvcf5g5m9z111rvk4scxh3z3yhcpwqws1h0s5c5lr7z7"; + name = "bluedevil-5.14.5.tar.xz"; + }; + }; + breeze = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/breeze-5.14.5.tar.xz"; + sha256 = "15hphz2mm2m3j0a0hwj7m65rggyaxdxy08yqs73bg3yg67n6x3p7"; + name = "breeze-5.14.5.tar.xz"; + }; + }; + breeze-grub = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/breeze-grub-5.14.5.tar.xz"; + sha256 = "0bkaaxfl1ds58qcdrxswaacir7wcc65a960lwdkmpdl16g9f4gix"; + name = "breeze-grub-5.14.5.tar.xz"; + }; + }; + breeze-gtk = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/breeze-gtk-5.14.5.tar.xz"; + sha256 = "0bysq83xbqmhb4wld51zd6lllr66b8w7pinizc99k8z1yz5jdb0m"; + name = "breeze-gtk-5.14.5.tar.xz"; + }; + }; + breeze-plymouth = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/breeze-plymouth-5.14.5.tar.xz"; + sha256 = "1rbdpz9vlami7217v3dk8ljz0fgjz9zi1l0gwkhslayz5sybld96"; + name = "breeze-plymouth-5.14.5.tar.xz"; + }; + }; + discover = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/discover-5.14.5.tar.xz"; + sha256 = "0gxhl2cv5yz3jw8fp8g8idi1k5hlhnvwbnvvg0dgnlzz6jb1s8dd"; + name = "discover-5.14.5.tar.xz"; + }; + }; + drkonqi = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/drkonqi-5.14.5.tar.xz"; + sha256 = "0xgym368f9r21wjh9fpv16m90dcj87g9p5df850fnn2k5n8x38z8"; + name = "drkonqi-5.14.5.tar.xz"; + }; + }; + kactivitymanagerd = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kactivitymanagerd-5.14.5.tar.xz"; + sha256 = "0zms9npis0rklnbz93c69h4yg7dkrmfkzvzsfvkg90w37ap3vyl7"; + name = "kactivitymanagerd-5.14.5.tar.xz"; + }; + }; + kde-cli-tools = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kde-cli-tools-5.14.5.tar.xz"; + sha256 = "01mrnjqla4q07cnb1p51nq2pvj9vaamic3dsyj3b7hqky9fna9ln"; + name = "kde-cli-tools-5.14.5.tar.xz"; + }; + }; + kdecoration = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kdecoration-5.14.5.tar.xz"; + sha256 = "115pli0qpa8lx0jasg1886fcg7gb2kk8v6k8r8l8c820l97sq7in"; + name = "kdecoration-5.14.5.tar.xz"; + }; + }; + kde-gtk-config = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kde-gtk-config-5.14.5.tar.xz"; + sha256 = "12467wkjh2nmcf6r7n8qin1rryd39g0dg7gn43sdg6vdwpyl2kdm"; + name = "kde-gtk-config-5.14.5.tar.xz"; + }; + }; + kdeplasma-addons = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kdeplasma-addons-5.14.5.tar.xz"; + sha256 = "18sph3719d9pq2j5k7swiv9xbrpj659a3q66zvhz3dmh11y73f0m"; + name = "kdeplasma-addons-5.14.5.tar.xz"; + }; + }; + kgamma5 = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kgamma5-5.14.5.tar.xz"; + sha256 = "17smrdwyalknb3f6ckqs7kglfpqwajbiyd212wlsmqbva4by0fy0"; + name = "kgamma5-5.14.5.tar.xz"; + }; + }; + khotkeys = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/khotkeys-5.14.5.tar.xz"; + sha256 = "0572jpgbhacx4gy40m594rbnxy3zaq5w3lcrfd8i2750ljswcq24"; + name = "khotkeys-5.14.5.tar.xz"; + }; + }; + kinfocenter = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kinfocenter-5.14.5.tar.xz"; + sha256 = "1z1i9g923cbdni5gfa6dpv46z1p2v40rfcvhy7i9h5nf49aw2rnc"; + name = "kinfocenter-5.14.5.tar.xz"; + }; + }; + kmenuedit = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kmenuedit-5.14.5.tar.xz"; + sha256 = "1aa4a35s5h44fc88hmmfdpzy26zc47h9n448cd4vbm4bm411551d"; + name = "kmenuedit-5.14.5.tar.xz"; + }; + }; + kscreen = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kscreen-5.14.5.tar.xz"; + sha256 = "1nb1ysgcx49galbf16mxbawybfik92bpr9vbwgg5ycsdx1f9q8yi"; + name = "kscreen-5.14.5.tar.xz"; + }; + }; + kscreenlocker = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kscreenlocker-5.14.5.tar.xz"; + sha256 = "16amr7pz0k6w5vkk1dwn2qi3s1mln0jypwmjazqq2lbwimn8k56m"; + name = "kscreenlocker-5.14.5.tar.xz"; + }; + }; + ksshaskpass = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/ksshaskpass-5.14.5.tar.xz"; + sha256 = "0skr247k4ky7lpbdwlmkrnr3mj1pa6pxl96pyxwsw7za784qg6dj"; + name = "ksshaskpass-5.14.5.tar.xz"; + }; + }; + ksysguard = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/ksysguard-5.14.5.tar.xz"; + sha256 = "0ybxh6ll080rkrrr4b5ydl06x8zi97702661cajvbv00lhq4vp8b"; + name = "ksysguard-5.14.5.tar.xz"; + }; + }; + kwallet-pam = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kwallet-pam-5.14.5.tar.xz"; + sha256 = "1mkjjc88kqf5x313nifla9pzrgzqm4v92150dbs1f89bsn673pk8"; + name = "kwallet-pam-5.14.5.tar.xz"; + }; + }; + kwayland-integration = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kwayland-integration-5.14.5.tar.xz"; + sha256 = "0rd0xhb53iixv9i8x0gh3rr1082lj7zdymsqdmi7sfgb66g8c03l"; + name = "kwayland-integration-5.14.5.tar.xz"; + }; + }; + kwin = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kwin-5.14.5.tar.xz"; + sha256 = "0ifdlnzw3ydrbidzk256vks66d1rxyilhqi09csygx17jqk7szj4"; + name = "kwin-5.14.5.tar.xz"; + }; + }; + kwrited = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/kwrited-5.14.5.tar.xz"; + sha256 = "0115qscr8a54h7h8w4xw4fjzp7qipyw3d3jswhii7axnzp6q6qnh"; + name = "kwrited-5.14.5.tar.xz"; + }; + }; + libkscreen = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/libkscreen-5.14.5.tar.xz"; + sha256 = "1vyaml5ap9siw9idiny92li2bykd0nwjsmwmg0c7ad912j4g1s7y"; + name = "libkscreen-5.14.5.tar.xz"; + }; + }; + libksysguard = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/libksysguard-5.14.5.tar.xz"; + sha256 = "11nz0g7dqvpvgsv0a7sai445vgfsfi25plj7jb1i46n7zf8i8mya"; + name = "libksysguard-5.14.5.tar.xz"; + }; + }; + milou = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/milou-5.14.5.tar.xz"; + sha256 = "1776441mhmwcvrzmdqg531md79azbkbhng51kyq6i9cvkhxyf583"; + name = "milou-5.14.5.tar.xz"; + }; + }; + oxygen = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/oxygen-5.14.5.tar.xz"; + sha256 = "0h70k7af69zdky0g6napd1kdnvbxhnw3nrwr9jqv1fq5762xnkk8"; + name = "oxygen-5.14.5.tar.xz"; + }; + }; + plasma-browser-integration = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-browser-integration-5.14.5.tar.xz"; + sha256 = "1260h5sh0gkbkhcj17ss0n0y48i1pxh3f4p5dcbgbz775g1dhi2s"; + name = "plasma-browser-integration-5.14.5.tar.xz"; + }; + }; + plasma-desktop = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-desktop-5.14.5.tar.xz"; + sha256 = "0pr07p36jrpvkk4fp14fb4minnwj5gnmvdg9jf7bi8sjjz6jpnnl"; + name = "plasma-desktop-5.14.5.tar.xz"; + }; + }; + plasma-integration = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-integration-5.14.5.tar.xz"; + sha256 = "15nhrliri4cjx712f1rxbq2f87lj4wxsqgbhw9p02z12h3n9z3ds"; + name = "plasma-integration-5.14.5.tar.xz"; + }; + }; + plasma-nm = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-nm-5.14.5.tar.xz"; + sha256 = "1hf98c9llcff0h2w4l45nw0vysxvnanf7hczhj93z4562qrafxm2"; + name = "plasma-nm-5.14.5.tar.xz"; + }; + }; + plasma-pa = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-pa-5.14.5.tar.xz"; + sha256 = "0z74qg7m4y1ifzni1877hiil3rn6ad3x4fvgv4bib4jhg7ckaiqg"; + name = "plasma-pa-5.14.5.tar.xz"; + }; + }; + plasma-sdk = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-sdk-5.14.5.tar.xz"; + sha256 = "0v90nk6yhrapdszh8sd3m0wffkjgnrhdy1sz1vl9s0ab5sdpmxr1"; + name = "plasma-sdk-5.14.5.tar.xz"; + }; + }; + plasma-tests = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-tests-5.14.5.tar.xz"; + sha256 = "03h889xn6i067d1sdymn6fgj8xik3pa75lljl8kj3vl6bks24jyh"; + name = "plasma-tests-5.14.5.tar.xz"; + }; + }; + plasma-vault = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-vault-5.14.5.tar.xz"; + sha256 = "17r44n0mkcwc2fkjf397ks8xv82m59gvnawbj9713c5l31ln5mi3"; + name = "plasma-vault-5.14.5.tar.xz"; + }; + }; + plasma-workspace = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-workspace-5.14.5.tar.xz"; + sha256 = "14d3wnsm4bi1izx5qlpk0mnqmxwx18bqypa3wwmhn1535kfz8glh"; + name = "plasma-workspace-5.14.5.tar.xz"; + }; + }; + plasma-workspace-wallpapers = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plasma-workspace-wallpapers-5.14.5.tar.xz"; + sha256 = "17q0685i4267ihlrii3b8764ak458kzs0inqfcj9x25m338xz19q"; + name = "plasma-workspace-wallpapers-5.14.5.tar.xz"; + }; + }; + plymouth-kcm = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/plymouth-kcm-5.14.5.tar.xz"; + sha256 = "1cwmkprhc4496x4a38l2x7hnifnp4daw8g1gic0ik2sm0a6xn77k"; + name = "plymouth-kcm-5.14.5.tar.xz"; + }; + }; + polkit-kde-agent = { + version = "1-5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/polkit-kde-agent-1-5.14.5.tar.xz"; + sha256 = "1lzw4zq2ysnva5g1v85k9k6yck30wfgcy0sn1ncxy183vm36b2ag"; + name = "polkit-kde-agent-1-5.14.5.tar.xz"; + }; + }; + powerdevil = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/powerdevil-5.14.5.tar.xz"; + sha256 = "0rdrj6k7bb1cisz1g8akxxn68c8rj0zddim1afvcq1iqr727wqj5"; + name = "powerdevil-5.14.5.tar.xz"; + }; + }; + sddm-kcm = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/sddm-kcm-5.14.5.tar.xz"; + sha256 = "0aix2grc2h2w8qxcbdwxhvq09ispblnisl017bvb19apkvs0w8m1"; + name = "sddm-kcm-5.14.5.tar.xz"; + }; + }; + systemsettings = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/systemsettings-5.14.5.tar.xz"; + sha256 = "1q1ih74vkdhss64ayc3qmbrw4hhvfl3axlkhh63rky09qn83x9zw"; + name = "systemsettings-5.14.5.tar.xz"; + }; + }; + user-manager = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/user-manager-5.14.5.tar.xz"; + sha256 = "0aw2s029547rzx3xg9nib5w30d25978fpv7xyshxmp3z8rmzgcjv"; + name = "user-manager-5.14.5.tar.xz"; + }; + }; + xdg-desktop-portal-kde = { + version = "5.14.5"; + src = fetchurl { + url = "${mirror}/stable/plasma/5.14.5/xdg-desktop-portal-kde-5.14.5.tar.xz"; + sha256 = "0h6hdk9fkf98jfjaza773k37369ayvwmwrgxn6al2pma6n07vddq"; + name = "xdg-desktop-portal-kde-5.14.5.tar.xz"; + }; + }; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/systemsettings.nix b/nixpkgs/pkgs/desktops/plasma-5/systemsettings.nix new file mode 100644 index 000000000000..9ff906f79745 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/systemsettings.nix @@ -0,0 +1,17 @@ +{ + mkDerivation, extra-cmake-modules, kdoctools, + kcmutils, kconfig, kdbusaddons, khtml, ki18n, kiconthemes, kio, kitemviews, + kservice, kwindowsystem, kxmlgui, qtquickcontrols, qtquickcontrols2, + kactivities, kactivities-stats, kirigami2, kcrash, plasma-workspace +}: + +mkDerivation { + name = "systemsettings"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kconfig kdbusaddons khtml ki18n kiconthemes kio kitemviews kservice + kwindowsystem kxmlgui qtquickcontrols qtquickcontrols2 + kactivities kactivities-stats kirigami2 kcrash plasma-workspace + ]; + outputs = [ "bin" "dev" "out" ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/user-manager.nix b/nixpkgs/pkgs/desktops/plasma-5/user-manager.nix new file mode 100644 index 000000000000..f46792fc48f7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/user-manager.nix @@ -0,0 +1,13 @@ +{ + mkDerivation, extra-cmake-modules, kdoctools, kcmutils, kconfig, khtml, + ki18n, kiconthemes, kio, kwindowsystem, libpwquality +}: + +mkDerivation { + name = "user-manager"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kcmutils kconfig khtml ki18n kiconthemes kio kwindowsystem + libpwquality + ]; +} diff --git a/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix b/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix new file mode 100644 index 000000000000..fc77e163e8f9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/plasma-5/xdg-desktop-portal-kde.nix @@ -0,0 +1,15 @@ +{ + mkDerivation, + extra-cmake-modules, gettext, kdoctools, python, + kcoreaddons, knotifications, kwayland, kwidgetsaddons, + cups, pcre, pipewire +}: + +mkDerivation { + name = "xdg-desktop-portal-kde"; + nativeBuildInputs = [ extra-cmake-modules gettext kdoctools python ]; + buildInputs = [ + cups pcre pipewire + kcoreaddons knotifications kwayland kwidgetsaddons + ]; +} diff --git a/nixpkgs/pkgs/desktops/rox/rox-filer/default.nix b/nixpkgs/pkgs/desktops/rox/rox-filer/default.nix new file mode 100644 index 000000000000..543e3ca897f1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/rox/rox-filer/default.nix @@ -0,0 +1,79 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, gtk, libSM, shared-mime-info, hicolor-icon-theme }: + +let + version = "2.11"; + name = "rox-filer-${version}"; +in stdenv.mkDerivation { + inherit name; + + src = fetchurl { + url = "mirror://sourceforge/rox/rox-filer-${version}.tar.bz2"; + sha256 = "a929bd32ee18ef7a2ed48b971574574592c42e34ae09f36604bf663d7c101ba8"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libxml2 gtk shared-mime-info hicolor-icon-theme libSM ]; + NIX_LDFLAGS = [ "-ldl" "-lm" ]; + + patches = [ + ./rox-filer-2.11-in-source-build.patch + ]; + + # go to the source directory after unpacking the sources + setSourceRoot = "export sourceRoot=rox-filer-${version}/ROX-Filer/"; + + # patch source with defined patches + patchFlags = "-p0"; + + # patch the main.c to disable the lookup of the APP_DIR environment variable, + # which is used to lookup the location for certain images when rox-filer + # starts; rather override the location with an absolute path to the directory + # where images are stored to prevent having to use a wrapper, which sets the + # APP_DIR environment variable prior to starting rox-filer + preConfigure = '' + sed -i -e "s:g_strdup(getenv(\"APP_DIR\")):\"$out\":" src/main.c + mkdir build + cd build + ''; + + configureScript = "../src/configure"; + + installPhase = '' + mkdir -p "$out" + cd .. + cp -av Help Messages Options.xml ROX images style.css .DirIcon "$out" + + # create the man/ directory, which will be moved from $out to share/ in the fixup phase + mkdir "$out/man/" + cp -av ../rox.1 "$out/man/" + + # the main executable + mkdir "$out/bin/" + cp -v ROX-Filer "$out/bin/rox" + + # mime types + mkdir -p "$out/ROX/MIME" + cd "$out/ROX/MIME" + ln -sv text-x-{diff,patch}.png + ln -sv application-x-font-{afm,type1}.png + ln -sv application-xml{,-dtd}.png + ln -sv application-xml{,-external-parsed-entity}.png + ln -sv application-{,rdf+}xml.png + ln -sv application-x{ml,-xbel}.png + ln -sv application-{x-shell,java}script.png + ln -sv application-x-{bzip,xz}-compressed-tar.png + ln -sv application-x-{bzip,lzma}-compressed-tar.png + ln -sv application-x-{bzip-compressed-tar,lzo}.png + ln -sv application-x-{bzip,xz}.png + ln -sv application-x-{gzip,lzma}.png + ln -sv application-{msword,rtf}.png + ''; + + meta = with stdenv.lib; { + description = "Fast, lightweight, gtk2 file manager"; + homepage = http://rox.sourceforge.net/desktop; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.linux; + maintainers = [ maintainers.eleanor ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/rox/rox-filer/rox-filer-2.11-in-source-build.patch b/nixpkgs/pkgs/desktops/rox/rox-filer/rox-filer-2.11-in-source-build.patch new file mode 100644 index 000000000000..11bd80044595 --- /dev/null +++ b/nixpkgs/pkgs/desktops/rox/rox-filer/rox-filer-2.11-in-source-build.patch @@ -0,0 +1,16 @@ +--- src/configure 2011-10-09 16:32:14.000000000 +0200 ++++ src/configure2 2016-03-20 09:26:31.640891863 +0100 +@@ -2132,13 +2132,6 @@ + + + ac_config_headers="$ac_config_headers config.h" +- +- +- if [ -f configure ]; then +- as_fn_error $? "Please run configure from the build directory (try ../AppRun --compile)" "$LINENO" 5 +- exit 1 +-fi +- + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' diff --git a/nixpkgs/pkgs/desktops/xfce/applications/gigolo.nix b/nixpkgs/pkgs/desktops/xfce/applications/gigolo.nix new file mode 100644 index 000000000000..b29a50af3654 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/gigolo.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, python, gettext, intltool, pkgconfig, gtk, gvfs }: + +stdenv.mkDerivation rec { + p_name = "gigolo"; + ver_maj = "0.4"; + ver_min = "2"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0r4ij0mlnp0bqq44pyrdcpz18r1zwsksw6w5yc0jzgg7wj7wfgsm"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ python gettext intltool gtk gvfs]; + + meta = { + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "A frontend to easily manage connections to remote filesystems"; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/mousepad-12134.patch b/nixpkgs/pkgs/desktops/xfce/applications/mousepad-12134.patch new file mode 100644 index 000000000000..74a28ecf61af --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/mousepad-12134.patch @@ -0,0 +1,90 @@ +diff -urNZ a/mousepad/mousepad-action-group.c b/mousepad/mousepad-action-group.c +--- a/mousepad/mousepad-action-group.c 2014-09-01 20:50:07.000000000 +0000 ++++ b/mousepad/mousepad-action-group.c 2017-12-18 16:57:46.836538403 +0000 +@@ -302,11 +302,6 @@ + gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE); + self->locked = FALSE; + +- /* update the setting when the active action is changed */ +- self->locked = TRUE; +- MOUSEPAD_SETTING_SET_STRING (COLOR_SCHEME, gtk_source_style_scheme_get_id (scheme)); +- self->locked = FALSE; +- + g_object_notify (G_OBJECT (self), "active-style-scheme"); + } + +@@ -473,6 +468,8 @@ + mousepad_action_group_style_scheme_action_activate (MousepadActionGroup *self, + MousepadStyleSchemeAction *action) + { ++ const gchar *scheme_name = NULL; ++ + /* only update the active action if we're not already in the process of + * setting it and the sender action is actually active */ + if (! self->locked && +@@ -481,7 +478,14 @@ + GtkSourceStyleScheme *scheme; + + scheme = mousepad_style_scheme_action_get_style_scheme (action); +- mousepad_action_group_set_active_style_scheme (self, scheme); ++ ++ /* update the setting when the active action is changed */ ++ if (scheme != NULL) ++ scheme_name = gtk_source_style_scheme_get_id(scheme); ++ ++ self->locked = TRUE; ++ MOUSEPAD_SETTING_SET_STRING (COLOR_SCHEME, scheme_name); ++ self->locked = FALSE; + } + } + +diff -urNZ a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c +--- a/mousepad/mousepad-window.c 2014-09-01 20:58:02.000000000 +0000 ++++ b/mousepad/mousepad-window.c 2017-12-18 17:07:51.099321408 +0000 +@@ -712,32 +712,6 @@ + + + static void +-mousepad_window_action_group_style_scheme_changed (MousepadWindow *window, +- GParamSpec *pspec, +- MousepadActionGroup *group) +-{ +- GtkSourceStyleScheme *scheme; +- const gchar *scheme_id; +- gint npages, i; +- +- /* get the new active language */ +- scheme = mousepad_action_group_get_active_style_scheme (group); +- scheme_id = gtk_source_style_scheme_get_id (scheme); +- +- /* update the color scheme on all the documents */ +- npages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->notebook)); +- for (i = 0; i < npages; i++) +- { +- MousepadDocument *document; +- +- document = MOUSEPAD_DOCUMENT (gtk_notebook_get_nth_page (GTK_NOTEBOOK (window->notebook), i)); +- mousepad_view_set_color_scheme (document->textview, scheme_id); +- } +-} +- +- +- +-static void + mousepad_window_create_style_schemes_menu (MousepadWindow *window) + { + GtkWidget *menu, *item; +@@ -751,13 +725,6 @@ + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); + gtk_widget_show_all (menu); + gtk_widget_show (item); +- +- /* watch for activations of the style schemes actions */ +- g_signal_connect_object (window->action_group, +- "notify::active-style-scheme", +- G_CALLBACK (mousepad_window_action_group_style_scheme_changed), +- window, +- G_CONNECT_SWAPPED); + } + + diff --git a/nixpkgs/pkgs/desktops/xfce/applications/mousepad.nix b/nixpkgs/pkgs/desktops/xfce/applications/mousepad.nix new file mode 100644 index 000000000000..d66fa2049e65 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/mousepad.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util +, gtk, gtksourceview, dbus, dbus-glib, makeWrapper +, dconf }: + +stdenv.mkDerivation rec { + p_name = "mousepad"; + ver_maj = "0.4"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "60114431eac8db6bb6ce18bd38f1630cccb684375b97a445a1b6fd619848d132"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + patches = [ ./mousepad-12134.patch ]; + + buildInputs = + [ pkgconfig intltool libxfce4util + gtk gtksourceview dbus dbus-glib makeWrapper + dconf + ]; + + configureFlags = [ "--enable-keyfile-settings" ]; + + preFixup = '' + wrapProgram "$out/bin/mousepad" \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:${gtksourceview}/share" \ + --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules" + ''; + + meta = { + homepage = http://www.xfce.org/; + description = "A simple text editor for Xfce"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/orage.nix b/nixpkgs/pkgs/desktops/xfce/applications/orage.nix new file mode 100644 index 000000000000..72d8e682c862 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/orage.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, bison, flex, intltool, gtk, libical, dbus-glib, tzdata +, libnotify, popt, xfce, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + p_name = "orage"; + ver_maj = "4.12"; + ver_min = "1"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0qlhvnl2m33vfxqlbkic2nmfpwyd4mq230jzhs48cg78392amy9w"; + }; + + patches = [ + # Fix build with libical 3.0 + (fetchpatch { + name = "fix-libical3.patch"; + url = https://git.archlinux.org/svntogit/packages.git/plain/trunk/libical3.patch?h=packages/orage&id=7b1b06c42dda034d538977b9f3550b28e370057f; + sha256 = "1l8s106mcidmbx2p8c2pi8v9ngbv2x3fsgv36j8qk8wyd4qd1jbf"; + }) + ]; + + postPatch = '' + substituteInPlace src/parameters.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + substituteInPlace src/tz_zoneinfo_read.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + substituteInPlace tz_convert/tz_convert.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + ''; + + postConfigure = "rm -rf libical"; # ensure pkgs.libical is used instead of one included in the orage sources + + nativeBuildInputs = [ pkgconfig intltool bison flex ]; + + buildInputs = [ gtk libical dbus-glib libnotify popt xfce.libxfce4util + xfce.xfce4-panel ]; + + meta = { + homepage = http://www.xfce.org/projects/; + description = "A simple calendar application with reminders"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/parole.nix b/nixpkgs/pkgs/desktops/xfce/applications/parole.nix new file mode 100644 index 000000000000..3951c9deedc6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/parole.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, makeWrapper, pkgconfig, intltool, gst_all_1 +, gtk, dbus-glib, libxfce4ui, libxfce4util, xfconf +, taglib, libnotify, hicolor-icon-theme +, withGstPlugins ? true +}: + +stdenv.mkDerivation rec { + p_name = "parole"; + ver_maj = "0.5"; + ver_min = "4"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1hxzqg9dfghrhvmnnccwwa4278fh2awkcqy89sla05m08mxvvx60"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ + makeWrapper hicolor-icon-theme + gtk dbus-glib libxfce4ui libxfce4util xfconf + taglib libnotify + ] ++ (with gst_all_1; [ gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav]); + + configureFlags = [ "--with-gstreamer=1.0" ]; + + postInstall = stdenv.lib.optionalString withGstPlugins '' + wrapProgram "$out/bin/parole" --prefix \ + GST_PLUGIN_SYSTEM_PATH_1_0 ":" "$GST_PLUGIN_SYSTEM_PATH_1_0" + ''; + + meta = { + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "Modern simple media player"; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/ristretto.nix b/nixpkgs/pkgs/desktops/xfce/applications/ristretto.nix new file mode 100644 index 000000000000..f849fbd20a73 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/ristretto.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libexif, gtk +, exo, dbus-glib, libxfce4util, libxfce4ui, xfconf +, hicolor-icon-theme, makeWrapper +}: + +stdenv.mkDerivation rec { + p_name = "ristretto"; + ver_maj = "0.6"; + ver_min = "3"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0y9d8w1plwp4vmxs44y8k8x15i0k0xln89k6jndhv6lf57g1cs1b"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = + [ pkgconfig intltool libexif gtk dbus-glib exo libxfce4util + libxfce4ui xfconf hicolor-icon-theme makeWrapper + ]; + + postInstall = '' + wrapProgram "$out/bin/ristretto" \ + --prefix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" + ''; + + meta = { + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "A fast and lightweight picture-viewer for the Xfce desktop environment"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/terminal.nix b/nixpkgs/pkgs/desktops/xfce/applications/terminal.nix new file mode 100644 index 000000000000..773a8274f341 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/terminal.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pkgconfig, intltool, ncurses, gtk, vte, dbus-glib +, exo, libxfce4util, libxfce4ui +}: + +stdenv.mkDerivation rec { + p_name = "xfce4-terminal"; + ver_maj = "0.6"; + ver_min = "3"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "023y0lkfijifh05yz8grimxadqpi98mrivr00sl18nirq8b4fbwi"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool exo gtk vte libxfce4util ncurses dbus-glib libxfce4ui ]; + + meta = { + homepage = http://www.xfce.org/projects/terminal; + description = "A modern terminal emulator primarily for the Xfce desktop environment"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-mixer.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-mixer.nix new file mode 100644 index 000000000000..93a7fad4918a --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-mixer.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, pkgconfig, intltool, makeWrapper +, glib, gstreamer, gst-plugins-base, gtk +, libxfce4util, libxfce4ui, xfce4-panel, xfconf, libunique ? null +, pulseaudioSupport ? false, gst-plugins-good +}: + +let + # The usual Gstreamer plugins package has a zillion dependencies + # that we don't need for a simple mixer, so build a minimal package. + gst_plugins_minimal = gst-plugins-base.override { + minimalDeps = true; + }; + gst_plugins_pulse = gst-plugins-good.override { + minimalDeps = true; + }; + gst_plugins = [ gst_plugins_minimal ] ++ stdenv.lib.optional pulseaudioSupport gst_plugins_pulse; + +in + +stdenv.mkDerivation rec { + p_name = "xfce4-mixer"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1pnsd00583l7p5d80rxbh58brzy3jnccwikbbbm730a33c08kid8"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = + [ pkgconfig intltool glib gstreamer gtk + libxfce4util libxfce4ui xfce4-panel xfconf libunique makeWrapper + ] ++ gst_plugins; + + postInstall = + '' + wrapProgram "$out/bin/xfce4-mixer" \ + --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" + ''; + + passthru = { inherit gst_plugins; }; + + meta = { + homepage = http://www.xfce.org/projects/xfce4-mixer; # referenced but inactive + description = "A volume control application for the Xfce desktop environment"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd.nix new file mode 100644 index 000000000000..19ecff290933 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libnotify +, gtk , libxfce4util, libxfce4ui, xfconf, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + p_name = "xfce4-notifyd"; + ver_maj = "0.2"; + ver_min = "4"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1l6fpfk0fkizdx7vwbyjdyzzj5i2ng8pf7r8j49nv0cnjhpxczlc"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libnotify gtk libxfce4util libxfce4ui xfconf hicolor-icon-theme ]; + + preFixup = '' + # to be able to run the daemon we need it in PATH + ln -rs $out/lib/xfce4/notifyd/xfce4-notifyd $out/bin + ''; + + doCheck = true; + + meta = { + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "Notification daemon for Xfce"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter.nix new file mode 100644 index 000000000000..8e5bffd9dd6f --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, intltool, xfce4-panel, libxfce4util, gtk, libsoup +, glib-networking, exo, hicolor-icon-theme, wrapGAppsHook }: + +stdenv.mkDerivation rec { + p_name = "xfce4-screenshooter"; + ver_maj = "1.8"; + ver_min = "2"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "9dce2ddfaa87f703e870e29bae13f3fc82a1b3f06b44f8386640e45a135f5f69"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ + pkgconfig intltool wrapGAppsHook + ]; + + buildInputs = [ + xfce4-panel libxfce4util gtk libsoup exo hicolor-icon-theme glib-networking + ]; + + meta = { + homepage = http://goodies.xfce.org/projects/applications/xfce4-screenshooter; + description = "Xfce screenshooter"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix new file mode 100644 index 000000000000..2de4f34fcf6f --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, intltool, pkgconfig, gtk, libwnck }: + +stdenv.mkDerivation rec { + p_name = "xfce4-taskmanager"; + ver_maj = "1.1"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1jwywmkkkmz7406m1jq40w6apiav25cznafhigbgpjv6z5hv27if"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool gtk libwnck ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/applications/${p_name}"; + description = "Easy to use task manager for Xfce"; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse.nix new file mode 100644 index 000000000000..4344d34f13f6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, libpulseaudio +, gtk2, libnotify +, keybinder, xfconf +}: + +stdenv.mkDerivation rec { + p_name = "xfce4-volumed-pulse"; + ver_maj = "0.2"; + ver_min = "2"; + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0xjcs1b6ix6rwj9xgr9n89h315r3yhdm8wh5bkincd4lhz6ibhqf"; + }; + + buildInputs = + [ libpulseaudio gtk2 + keybinder xfconf libnotify + ]; + + nativeBuildInputs = [ pkgconfig ]; + + meta = with stdenv.lib; { + homepage = https://launchpad.net/xfce4-volumed-pulse; + description = "A volume keys control daemon for the Xfce desktop environment (Xubuntu fork)"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.abbradar ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed.nix new file mode 100644 index 000000000000..8e4f952438fe --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, pkgconfig, makeWrapper +, gstreamer, gtk2, gst-plugins-base, libnotify +, keybinder, xfconf +}: + +let + # The usual Gstreamer plugins package has a zillion dependencies + # that we don't need for a simple mixer, so build a minimal package. + gst_plugins_minimal = gst-plugins-base.override { + minimalDeps = true; + }; + +in + +stdenv.mkDerivation rec { + p_name = "xfce4-volumed"; + ver_maj = "0.1"; + ver_min = "13"; + + src = fetchurl { + url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1aa0a1sbf9yzi7bc78kw044m0xzg1li3y4w9kf20wqv5kfjs7v2c"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = + [ gstreamer gst_plugins_minimal gtk2 + keybinder xfconf libnotify + ]; + + nativeBuildInputs = [ pkgconfig makeWrapper ]; + + postInstall = + '' + wrapProgram "$out/bin/xfce4-volumed" \ + --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" + ''; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/projects/xfce4-volumed; # referenced but inactive + description = "A volume keys control daemon for the Xfce desktop environment"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.abbradar ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme.nix b/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme.nix new file mode 100644 index 000000000000..a0f2ed00d0e8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk2 }: + +stdenv.mkDerivation rec { + p_name = "xfce4-icon-theme"; + ver_maj = "4.4"; + ver_min = "3"; + + src = fetchurl { + url = "mirror://xfce/src/art/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1yk6rx3zr9grm4jwpjvqdkl13pisy7qn1wm5cqzmd2kbsn96cy6l"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool gtk2 ]; + + meta = { + homepage = http://www.xfce.org/; + description = "Icons for Xfce"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes.nix b/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes.nix new file mode 100644 index 000000000000..80cf7dd28c5d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + p_name = "xfwm4-themes"; + ver_maj = "4.10"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/art/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0xfmdykav4rf6gdxbd6fhmrfrvbdc1yjihz7r7lba0wp1vqda51j"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/; + description = "Themes for Xfce"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/exo.nix b/nixpkgs/pkgs/desktops/xfce/core/exo.nix new file mode 100644 index 000000000000..6b5ee4b31328 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/exo.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, intltool, URI, glib, gtk, libxfce4ui, libxfce4util +, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + p_name = "exo"; + ver_maj = "0.10"; + ver_min = "7"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "521581481128af93e815f9690020998181f947ac9e9c2b232b1f144d76b1b35c"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + outputs = [ "out" "dev" "devdoc" ]; + # lib/xfce4/exo-1/exo-compose-mail-1 is a perl script :-/ + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ URI glib gtk libxfce4ui libxfce4util hicolor-icon-theme ]; + + meta = with stdenv.lib; { + homepage = "http://www.xfce.org/projects/${p_name}"; + description = "Application library for the Xfce desktop environment"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/garcon-10967.patch b/nixpkgs/pkgs/desktops/xfce/core/garcon-10967.patch new file mode 100644 index 000000000000..aea123255478 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/garcon-10967.patch @@ -0,0 +1,14 @@ +diff -urNZ a/garcon-gtk/garcon-gtk-menu.c b/garcon-gtk/garcon-gtk-menu.c +--- a/garcon-gtk/garcon-gtk-menu.c 2017-11-16 19:22:33.551926068 +0000 ++++ b/garcon-gtk/garcon-gtk-menu.c 2017-11-16 19:23:33.055497211 +0000 +@@ -676,6 +676,9 @@ + G_CALLBACK (garcon_gtk_menu_deactivate), menu); + gtk_widget_show (mi); + ++ /* submenu are child items, too. */ ++ has_children = TRUE; ++ + if (menu->priv->show_menu_icons) + { + icon_name = garcon_menu_element_get_icon_name (li->data); +Binary files a/.git/index and b/.git/index differ diff --git a/nixpkgs/pkgs/desktops/xfce/core/garcon-12700.patch b/nixpkgs/pkgs/desktops/xfce/core/garcon-12700.patch new file mode 100644 index 000000000000..b95a65cc2194 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/garcon-12700.patch @@ -0,0 +1,44 @@ +From 222080e6d5fce85eb2a8a5c33df671bd9f21add8 Mon Sep 17 00:00:00 2001 +From: Yegor Timoshenko <yegortimoshenko@gmail.com> +Date: Thu, 14 Dec 2017 22:04:04 +0000 +Subject: [PATCH] Decrement allocation counter on item unref (#12700) + +--- + garcon/garcon-menu-item-pool.c | 7 ++++++- + garcon/garcon-menu-item.c | 2 ++ + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/garcon/garcon-menu-item-pool.c b/garcon/garcon-menu-item-pool.c +index 2017180..355e520 100644 +--- a/garcon/garcon-menu-item-pool.c ++++ b/garcon/garcon-menu-item-pool.c +@@ -191,7 +191,12 @@ garcon_menu_item_pool_filter_exclude (const gchar *desktop_id, + g_return_val_if_fail (GARCON_IS_MENU_ITEM (item), FALSE); + g_return_val_if_fail (node != NULL, FALSE); + +- return garcon_menu_node_tree_rule_matches (node, item); ++ gboolean matches = garcon_menu_node_tree_rule_matches (node, item); ++ ++ if (matches) ++ garcon_menu_item_increment_allocated (item); ++ ++ return matches; + } + + +diff --git a/garcon/garcon-menu-item.c b/garcon/garcon-menu-item.c +index 66a86bf..d61c88f 100644 +--- a/garcon/garcon-menu-item.c ++++ b/garcon/garcon-menu-item.c +@@ -1516,6 +1516,8 @@ garcon_menu_item_unref (GarconMenuItem *item) + { + g_return_if_fail (GARCON_IS_MENU_ITEM (item)); + ++ garcon_menu_item_decrement_allocated (item); ++ + /* Decrement the reference counter */ + g_object_unref (G_OBJECT (item)); + } +-- +2.15.1 + diff --git a/nixpkgs/pkgs/desktops/xfce/core/garcon.nix b/nixpkgs/pkgs/desktops/xfce/core/garcon.nix new file mode 100644 index 000000000000..d9c918c0fdc1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/garcon.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util, libxfce4ui, gtk }: +let + p_name = "garcon"; + ver_maj = "0.4"; + ver_min = "0"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0wm9pjbwq53s3n3nwvsyf0q8lbmhiy2ln3bn5ncihr9vf5cwhzbq"; + }; + + outputs = [ "out" "dev" ]; + patches = [ ./garcon-10967.patch ./garcon-12700.patch ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool glib libxfce4util gtk libxfce4ui ]; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/; + description = "Xfce menu support library"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/gtk-xfce-engine.nix b/nixpkgs/pkgs/desktops/xfce/core/gtk-xfce-engine.nix new file mode 100644 index 000000000000..0d69d4d2f32b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/gtk-xfce-engine.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk2, withGtk3 ? false, gtk3 ? null }: + +assert withGtk3 -> (gtk3 != null); + +stdenv.mkDerivation rec { + p_name = "gtk-xfce-engine"; + ver_maj = "3.2"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1va71f3gpl8gikfkmqsd5ikgp7qj8b64jii2l98g1ylnv8xrqp47"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool gtk2 ] ++ stdenv.lib.optional withGtk3 gtk3; + + # `glib-mkenums' is unhappy that some source files are not valid UTF-8 + postPatch = ''find . -type f -name '*.[ch]' -exec sed -r -i 's/\xD6/O/g' {} +''; + + configureFlags = stdenv.lib.optional withGtk3 "--enable-gtk3"; + + meta = { + homepage = http://www.xfce.org/; + description = "GTK+ theme engine for Xfce"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui.nix b/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui.nix new file mode 100644 index 000000000000..e8d5b4acd769 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, intltool, xorg, gtk, libxfce4util, xfconf +, libglade, libstartup_notification, hicolor-icon-theme +, withGtk3 ? false, gtk3 +}: +let + p_name = "libxfce4ui"; + ver_maj = "4.12"; + ver_min = "1"; + inherit (stdenv.lib) optional; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "3d619811bfbe7478bb984c16543d980cadd08586365a7bc25e59e3ca6384ff43"; + }; + + outputs = [ "out" "dev" "devdoc" ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = + [ gtk libxfce4util xfconf libglade + libstartup_notification hicolor-icon-theme + ] ++ optional withGtk3 gtk3; + + propagatedBuildInputs = [ xorg.libICE xorg.libSM ]; + + #TODO: glade? + configureFlags = optional withGtk3 "--enable-gtk3"; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/; + description = "Basic GUI library for Xfce"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + }; +} + diff --git a/nixpkgs/pkgs/desktops/xfce/core/libxfce4util.nix b/nixpkgs/pkgs/desktops/xfce/core/libxfce4util.nix new file mode 100644 index 000000000000..5a411bfbb5be --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4util.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, glib, intltool }: +let + p_name = "libxfce4util"; + ver_maj = "4.12"; + ver_min = "1"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "07c8r3xwx5is298zk77m3r784gmr5y4mh8bbca5zdjqk5vxdwsw7"; + }; + + outputs = [ "out" "dev" "devdoc" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib intltool ]; + + meta = { + homepage = http://www.xfce.org/; + description = "Basic utility non-GUI functions for Xfce"; + license = "bsd"; + platforms = stdenv.lib.platforms.linux; + }; +} + diff --git a/nixpkgs/pkgs/desktops/xfce/core/libxfcegui4.nix b/nixpkgs/pkgs/desktops/xfce/core/libxfcegui4.nix new file mode 100644 index 000000000000..7fe76057c930 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/libxfcegui4.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk +, libxfce4util, xfconf, libglade, libstartup_notification, hicolor-icon-theme }: +let + p_name = "libxfcegui4"; + ver_maj = "4.10"; + ver_min = "0"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0cs5im0ib0cmr1lhr5765yliqjfyxvk4kwy8h1l8bn3mj6bzk0ib"; + }; + + outputs = [ "out" "dev" "devdoc" ]; + + #TODO: gladeui + # By default, libxfcegui4 tries to install into libglade's prefix. + # Install into our own prefix instead. + configureFlags = [ + "--with-libglade-module-path=$(out)/lib/libglade/2.0" + ]; + #NOTE: missing keyboard library support is OK according to the mailing-list + + buildInputs = + [ pkgconfig intltool gtk libxfce4util xfconf libglade + libstartup_notification hicolor-icon-theme + ]; + + meta = { + homepage = http://www.xfce.org/; + description = "Basic GUI library for Xfce"; + license = stdenv.lib.licenses.lgpl2Plus; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar-build.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar-build.nix new file mode 100644 index 000000000000..0b606ee5fdd7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/thunar-build.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, intltool +, gtk, dbus-glib, libstartup_notification, libnotify, libexif, pcre, udev +, exo, libxfce4util, xfconf, xfce4-panel, hicolor-icon-theme, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + p_name = "thunar"; + ver_maj = "1.6"; + ver_min = "10"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/Thunar-${ver_maj}.${ver_min}.tar.bz2"; + sha256 = "7e9d24067268900e5e44d3325e60a1a2b2f8f556ec238ec12574fbea15fdee8a"; + }; + + name = "${p_name}-build-${ver_maj}.${ver_min}"; + + patches = [ ./thunarx_plugins_directory.patch ]; + + postPatch = '' + sed -i -e 's|thunar_dialogs_show_insecure_program (parent, _(".*"), file, exec)|1|' thunar/thunar-file.c + ''; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook ]; + buildInputs = [ + intltool + gtk dbus-glib libstartup_notification libnotify libexif pcre udev + exo libxfce4util xfconf xfce4-panel + hicolor-icon-theme + ]; + # TODO: optionality? + + enableParallelBuilding = true; + + meta = { + homepage = http://thunar.xfce.org/; + description = "Xfce file manager"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar-volman.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar-volman.nix new file mode 100644 index 000000000000..39214ca57b1f --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/thunar-volman.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, intltool, exo, gtk, libxfce4util, libxfce4ui +, xfconf, udev, libgudev, libnotify, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + p_name = "thunar-volman"; + ver_maj = "0.8"; + ver_min = "1"; + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1gf259n1v3y23n1zlkhyr6r0i8j59rnl1cmxvxj6la9cwdfbn22s"; + }; + + + buildInputs = + [ pkgconfig intltool exo gtk udev libgudev libxfce4ui libxfce4util + xfconf libnotify hicolor-icon-theme + ]; + + enableParallelBuilding = true; + + meta = { + homepage = http://goodies.xfce.org/projects/thunar-plugins/thunar-volman; + description = "Thunar extension for automatic management of removable drives and media"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar.nix new file mode 100644 index 000000000000..83e3a2879d79 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/thunar.nix @@ -0,0 +1,68 @@ +{ stdenv, buildEnv, runCommand, makeWrapper, lndir, thunar-bare +, thunarPlugins ? [] +}: + +with stdenv.lib; + +let + + build = thunar-bare; + + replaceLnExeListWithWrapped = exeDir: exeNameList: mkWrapArgs: '' + exeDir="${exeDir}" + oriDir=`realpath -e "$exeDir"` + unlink "$exeDir" + mkdir -p "$exeDir" + lndir "$oriDir" "$exeDir" + + exeList="${concatStrings (intersperse " " (map (x: "${exeDir}/${x}") exeNameList))}" + + for exe in $exeList; do + oriExe=`realpath -e "$exe"` + rm -f "$exe" + makeWrapper "$oriExe" "$exe" ${concatStrings (intersperse " " mkWrapArgs)} + done + ''; + + name = "${build.p_name}-${build.ver_maj}.${build.ver_min}"; + + meta = { + inherit (build.meta) homepage license platforms; + + description = build.meta.description + optionalString + (0 != length thunarPlugins) + " (with plugins: ${concatStrings (intersperse ", " (map (x: x.name) thunarPlugins))})"; + maintainers = build.meta.maintainers /*++ [ jraygauthier ]*/; + }; + +in + +# TODO: To be replaced with `buildEnv` awaiting missing features. +runCommand name { + inherit build; + inherit meta; + + nativeBuildInputs = [ makeWrapper lndir ]; + + dontPatchELF = true; + dontStrip = true; + +} +(let + buildWithPlugins = buildEnv { + name = "thunar-bare-with-plugins"; + paths = [ build ] ++ thunarPlugins; + }; + +in '' + mkdir -p $out + pushd ${buildWithPlugins} > /dev/null + for d in `find . -maxdepth 1 -name "*" -printf "%f\n" | tail -n+2`; do + ln -s "${buildWithPlugins}/$d" "$out/$d" + done + popd > /dev/null + + ${replaceLnExeListWithWrapped "$out/bin" [ "thunar" "thunar-settings" ] [ + "--set THUNARX_MODULE_DIR \"${buildWithPlugins}/lib/thunarx-2\"" + ]} +'') diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunarx_plugins_directory.patch b/nixpkgs/pkgs/desktops/xfce/core/thunarx_plugins_directory.patch new file mode 100644 index 000000000000..e1431d86b147 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/thunarx_plugins_directory.patch @@ -0,0 +1,48 @@ +diff --git a/thunarx/thunarx-provider-factory.c b/thunarx/thunarx-provider-factory.c +index 31b8835..a3e7f4e 100644 +--- a/thunarx/thunarx-provider-factory.c ++++ b/thunarx/thunarx-provider-factory.c +@@ -141,12 +141,19 @@ static GList* + thunarx_provider_factory_load_modules (ThunarxProviderFactory *factory) + { + ThunarxProviderModule *module; ++ const gchar *thunar_dir; + const gchar *name; + GList *modules = NULL; + GList *lp; + GDir *dp; + +- dp = g_dir_open (THUNARX_DIRECTORY, 0, NULL); ++ thunar_dir = g_getenv("THUNARX_MODULE_DIR"); ++ if (NULL == thunar_dir) ++ { ++ thunar_dir = THUNARX_DIRECTORY; ++ } ++ ++ dp = g_dir_open (thunar_dir, 0, NULL); + if (G_LIKELY (dp != NULL)) + { + /* determine the types for all existing plugins */ +diff --git a/thunarx/thunarx-provider-module.c b/thunarx/thunarx-provider-module.c +index 023ad2a..6c21997 100644 +--- a/thunarx/thunarx-provider-module.c ++++ b/thunarx/thunarx-provider-module.c +@@ -174,10 +174,17 @@ static gboolean + thunarx_provider_module_load (GTypeModule *type_module) + { + ThunarxProviderModule *module = THUNARX_PROVIDER_MODULE (type_module); ++ const gchar *thunar_dir; + gchar *path; ++ ++ thunar_dir = g_getenv("THUNARX_MODULE_DIR"); ++ if (NULL == thunar_dir) ++ { ++ thunar_dir = THUNARX_DIRECTORY; ++ } + + /* load the module using the runtime link editor */ +- path = g_build_filename (THUNARX_DIRECTORY, type_module->name, NULL); ++ path = g_build_filename (thunar_dir, type_module->name, NULL); + module->library = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); + g_free (path); + diff --git a/nixpkgs/pkgs/desktops/xfce/core/tumbler.nix b/nixpkgs/pkgs/desktops/xfce/core/tumbler.nix new file mode 100644 index 000000000000..3e1d2be2b531 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/tumbler.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, intltool, dbus-glib, gdk_pixbuf, curl, freetype +, libgsf, poppler, bzip2 }: +let + p_name = "tumbler"; + ver_maj = "0.1"; + ver_min = "31"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0wvip28gm2w061hn84zp2q4dv947ihylrppahn4cjspzff935zfh"; + }; + + outputs = [ "out" "dev" "devdoc" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + intltool dbus-glib gdk_pixbuf curl freetype + poppler libgsf bzip2 + ]; + + configureFlags = [ + # Needs gst-tag + # "--enable-gstreamer-thumbnailer" + + # Needs libffmpegthumbnailer + # "--enable-ffmpeg-thumbnailer" + + "--enable-odf-thumbnailer" + "--enable-poppler-thumbnailer" + ]; + + meta = with stdenv.lib; { + homepage = http://git.xfce.org/xfce/tumbler/; + description = "A D-Bus thumbnailer service"; + platforms = platforms.linux; + license = licenses.gpl2; + }; +} + diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder.nix new file mode 100644 index 000000000000..d39708dd523f --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, gtk, libxfce4util +, libxfce4ui, garcon, xfconf }: +let + p_name = "xfce4-appfinder"; + ver_maj = "4.12"; + ver_min = "0"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0ry5hin8xhgnkmm9vs7jq8blk1cnbyr0s18nm1j6nsm7360abm1a"; + }; + + buildInputs = + [ pkgconfig intltool glib gtk libxfce4util libxfce4ui garcon xfconf ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://docs.xfce.org/xfce/xfce4-appfinder/; + description = "Xfce application finder, a tool to locate and launch programs on your system"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.eelco ]; + }; +} + diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools.nix new file mode 100644 index 000000000000..109c22f1e58c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, glib, autoconf, automake, libtool, intltool }: +let + p_name = "xfce4-dev-tools"; + ver_maj = "4.12"; + ver_min = "0"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1jxmyp80pwbfgmqmwpjxs7z5dmm6pyf3qj62z20xy44izraadqz2"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib ]; + + # not needed to build it but to use it + propagatedBuildInputs = [ autoconf automake libtool intltool ]; + + meta = { + homepage = http://foo-projects.org/~benny/projects/xfce4-dev-tools/; + description = "Tools and M4 macros for Xfce4 developers"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + }; +} + diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-light-locker.patch b/nixpkgs/pkgs/desktops/xfce/core/xfce4-light-locker.patch new file mode 100644 index 000000000000..0fabdffd7ed6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-light-locker.patch @@ -0,0 +1,25 @@ +--- ./scripts/xflock4.orig 2017-08-06 23:05:53.807688995 +0100 ++++ ./scripts/xflock4 2017-08-06 23:09:06.171789989 +0100 +@@ -24,12 +24,19 @ + PATH=/bin:/usr/bin + export PATH + +-# Lock by xscreensaver or gnome-screensaver, if a respective daemon is running ++# First test for the command set in the session's xfconf channel ++LOCK_CMD=$(xfconf-query -c xfce4-session -p /general/LockCommand) ++ ++# Lock by xscreensaver, gnome-screensaver, or light-locker, if a respective daemon is running + for lock_cmd in \ ++ "$LOCK_CMD" \ + "xscreensaver-command -lock" \ +- "gnome-screensaver-command --lock" ++ "gnome-screensaver-command --lock" \ ++ "light-locker-command -l" + do +- $lock_cmd >/dev/null 2>&1 && exit ++ if [ ! -z "$lock_cmd" ]; then ++ $lock_cmd >/dev/null 2>&1 && exit ++ fi + done + + # else run another access locking utility, if installed diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel-datadir.patch b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel-datadir.patch new file mode 100644 index 000000000000..ed9df9ef36f3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel-datadir.patch @@ -0,0 +1,24 @@ +diff --git a/panel/panel-module-factory.c b/panel/panel-module-factory.c +index 529fe85..8c792b7 100644 +--- a/panel/panel-module-factory.c ++++ b/panel/panel-module-factory.c +@@ -39,6 +39,7 @@ + #include <panel/panel-module.h> + #include <panel/panel-module-factory.h> + ++#define DATADIR "/run/current-system/sw/share/xfce4" + #define PANEL_PLUGINS_DATA_DIR (DATADIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins") + #define PANEL_PLUGINS_DATA_DIR_OLD (DATADIR G_DIR_SEPARATOR_S "panel-plugins") + +diff --git a/panel/panel-module.c b/panel/panel-module.c +index ba39320..519440b 100644 +--- a/panel/panel-module.c ++++ b/panel/panel-module.c +@@ -35,6 +35,7 @@ + #include <panel/panel-plugin-external-wrapper.h> + #include <panel/panel-plugin-external-46.h> + ++#define LIBDIR "/run/current-system/sw/lib/xfce4" + #define PANEL_PLUGINS_LIB_DIR (LIBDIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins") + #define PANEL_PLUGINS_LIB_DIR_OLD (LIBDIR G_DIR_SEPARATOR_S "panel-plugins") + diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel.nix new file mode 100644 index 000000000000..d2d992d54a88 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel.nix @@ -0,0 +1,59 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui +, libxfce4ui_gtk3, libwnck, exo, garcon, xfconf, libstartup_notification +, makeWrapper, xfce4-mixer, hicolor-icon-theme, tzdata +, withGtk3 ? false, gtk3, gettext, glib-networking +}: +let + inherit (stdenv.lib) optional; + p_name = "xfce4-panel"; + ver_maj = "4.12"; + ver_min = "2"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1s8cvsrgmkmmm84g6mghpj2k4777gm22g5lrsf8pdy5qh6xql1a2"; + }; + + patches = [ ./xfce4-panel-datadir.patch ]; + patchFlags = "-p1"; + + postPatch = '' + for f in $(find . -name \*.sh); do + substituteInPlace $f --replace gettext ${gettext}/bin/gettext + done + substituteInPlace plugins/clock/clock.c \ + --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" \ + --replace "if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK))" "" + ''; + + outputs = [ "out" "dev" "devdoc" ]; + + buildInputs = + [ pkgconfig intltool gtk libxfce4util exo libwnck + garcon xfconf libstartup_notification makeWrapper hicolor-icon-theme + ] ++ xfce4-mixer.gst_plugins + ++ optional withGtk3 gtk3; + + propagatedBuildInputs = [ (if withGtk3 then libxfce4ui_gtk3 else libxfce4ui) ]; + + configureFlags = optional withGtk3 "--enable-gtk3"; + + postInstall = '' + wrapProgram "$out/bin/xfce4-panel" \ + --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" \ + --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/projects/xfce4-panel; + description = "Xfce panel"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager.nix new file mode 100644 index 000000000000..ffcc67bf0e9b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager.nix @@ -0,0 +1,45 @@ +{ stdenv, lib, fetchurl, pkgconfig, intltool, glib, gtk, dbus-glib, upower, xfconf +, libxfce4ui, libxfce4util, libnotify, xfce4-panel, hicolor-icon-theme +, withGtk3 ? false, gtk3, libxfce4ui_gtk3, xfce4panel_gtk3 }: +let + p_name = "xfce4-power-manager"; + ver_maj = if withGtk3 then "1.6" else "1.4"; + ver_min = if withGtk3 then "0" else "4"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = + if withGtk3 + then "0avzhllpimcn7a6z9aa4jn0zg5ahxr9ks5ldchizycdb0rz1bqxx" + else "01rvqy1cif4s8lkidb7hhmsz7d9f2fwcwvc51xycaj3qgsmch3n5"; + }; + + buildInputs = + [ pkgconfig intltool glib dbus-glib upower xfconf libxfce4util + libnotify hicolor-icon-theme + ] ++ + (if withGtk3 + then [ gtk3 libxfce4ui_gtk3 xfce4panel_gtk3 ] + else [ gtk libxfce4ui xfce4-panel ]); + + postPatch = lib.optionalString withGtk3 '' + substituteInPlace configure --replace gio-2.0 gio-unix-2.0 + ''; + + postConfigure = lib.optionalString withGtk3 '' + substituteInPlace src/Makefile --replace "xfce4_power_manager_CFLAGS = " "xfce4_power_manager_CFLAGS = \$(GIO_CFLAGS) " + substituteInPlace settings/Makefile --replace "xfce4_power_manager_settings_CFLAGS = " "xfce4_power_manager_settings_CFLAGS = \$(GIO_CFLAGS) " + ''; + + meta = with stdenv.lib; { + homepage = http://goodies.xfce.org/projects/applications/xfce4-power-manager; + description = "A power manager for the Xfce Desktop Environment"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.eelco ]; + }; +} + diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-session.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-session.nix new file mode 100644 index 000000000000..3f6237d6de17 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-session.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk, polkit +, libxfce4util, libxfce4ui, xfce4-panel, libwnck, dbus-glib, xfconf, libglade, xorg +, hicolor-icon-theme +}: + +let + p_name = "xfce4-session"; + ver_maj = "4.12"; + ver_min = "1"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "97d7f2a2d0af7f3623b68d1f04091e02913b28f9555dab8b0d26c8a1299d08fd"; + }; + + patches = [ + # Fix "lock screen" not working for light-locker + ./xfce4-light-locker.patch + ]; + + buildInputs = + [ pkgconfig intltool gtk libxfce4util libxfce4ui libwnck dbus-glib + xfconf xfce4-panel libglade xorg.iceauth xorg.libSM + polkit hicolor-icon-theme + ]; #TODO: upower-glib, gconf (assistive?), gnome keyring + + preBuild = '' + sed '/^PATH=/d' -i scripts/xflock4 + sed '/^export PATH$/d' -i scripts/xflock4 + ''; + + configureFlags = [ "--with-xsession-prefix=$(out)" ]; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/projects/xfce4-session; + description = "Session manager for Xfce"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.eelco ]; + }; +} + diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings-default-icon-theme.patch b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings-default-icon-theme.patch new file mode 100644 index 000000000000..2683b3c3dfdd --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings-default-icon-theme.patch @@ -0,0 +1,11 @@ +--- a/xfsettingsd/xsettings.xml 2015-02-28 22:32:02.681796319 +0100 ++++ b/xfsettingsd/xsettings.xml 2015-02-28 22:32:27.881214735 +0100 +@@ -7,7 +7,7 @@ + <channel name="xsettings" version="1.0"> + <property name="Net" type="empty"> + <property name="ThemeName" type="empty"/> +- <property name="IconThemeName" type="empty"/> ++ <property name="IconThemeName" type="string" value="Rodent"/> + <property name="DoubleClickTime" type="int" value="400"/> + <property name="DoubleClickDistance" type="int" value="5"/> + <property name="DndDragThreshold" type="int" value="8"/> \ No newline at end of file diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings.nix new file mode 100644 index 000000000000..592b03e8954a --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchurl, pkgconfig, intltool, exo, gtk, garcon, libxfce4util +, libxfce4ui, xfconf, libXi, upower ? null, libnotify ? null +, libXcursor ? null, xf86inputlibinput ? null, libxklavier ? null }: + +let + p_name = "xfce4-settings"; + ver_maj = "4.12"; + ver_min = "1"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0x35i1cvkqp0hib1knwa58mckdwrfbhaisz4bsx6bbbx385llj7n"; + }; + + patches = [ ./xfce4-settings-default-icon-theme.patch ]; + + postPatch = '' + for f in $(find . -name \*.c); do + substituteInPlace $f --replace \"libinput-properties.h\" '<xorg/libinput-properties.h>' + done + ''; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ + exo + gtk + garcon + libxfce4util + libxfce4ui + xfconf + libXi + upower + libnotify + libXcursor + xf86inputlibinput + libxklavier + ]; + + configureFlags = [ "--enable-pluggable-dialogs" "--enable-sound-settings" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/projects/xfce4-settings; + description = "Settings manager for Xfce"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfconf.nix b/nixpkgs/pkgs/desktops/xfce/core/xfconf.nix new file mode 100644 index 000000000000..9af365c6f14d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfconf.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util, dbus-glib }: +let + p_name = "xfconf"; + ver_maj = "4.12"; + ver_min = "1"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0dns190bwb615wy9ma2654sw4vz1d0rcv061zmaalkv9wmj8bx1m"; + }; + + outputs = [ "out" "dev" "devdoc" ]; + + #TODO: no perl bingings yet (ExtUtils::Depends, ExtUtils::PkgConfig, Glib) + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool glib libxfce4util ]; + propagatedBuildInputs = [ dbus-glib ]; + + doCheck = false; # requires dbus daemon + + meta = with stdenv.lib; { + homepage = http://docs.xfce.org/xfce/xfconf/start; + description = "Simple client-server configuration storage and query system for Xfce"; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfdesktop.nix b/nixpkgs/pkgs/desktops/xfce/core/xfdesktop.nix new file mode 100644 index 000000000000..48585b4004bb --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfdesktop.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, fetchpatch, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui +, libwnck, xfconf, libglade, xfce4-panel, thunar, exo, garcon, libnotify +, hicolor-icon-theme }: +let + p_name = "xfdesktop"; + ver_maj = "4.12"; + ver_min = "3"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "a8a8d93744d842ca6ac1f9bd2c8789ee178937bca7e170e5239cbdbef30520ac"; + }; + + buildInputs = [ + pkgconfig intltool gtk libxfce4util libxfce4ui libwnck xfconf + libglade xfce4-panel thunar exo garcon libnotify hicolor-icon-theme + ]; + + patches = [(fetchpatch { + url = https://git.xfce.org/xfce/xfdesktop/patch?id=157f5b55cfc3629d595ef38984278de5915aac27; + sha256 = "0ki7hnyfpz7bdmsxqnm9qvyk040iyv1fawnhzfbyyzrh4nc5jd3x"; + })]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/projects/xfdesktop; + description = "Xfce desktop manager"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.eelco ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfwm4.nix b/nixpkgs/pkgs/desktops/xfce/core/xfwm4.nix new file mode 100644 index 000000000000..313a2662f039 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/core/xfwm4.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, gtk, intltool, libglade, libxfce4util +, libxfce4ui, xfconf, libwnck, libstartup_notification, xorg }: +let + p_name = "xfwm4"; + ver_maj = "4.12"; + ver_min = "4"; +in +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0dpvdrd5lclkcrzmdpva38gfsgvdf3xkqfknvy96x6k4fn508x7s"; + }; + + buildInputs = + [ pkgconfig intltool gtk libglade libxfce4util libxfce4ui xfconf + libwnck libstartup_notification + xorg.libXcomposite xorg.libXfixes xorg.libXdamage + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://www.xfce.org/projects/xfwm4; + description = "Window manager for Xfce"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.eelco ]; + }; +} + diff --git a/nixpkgs/pkgs/desktops/xfce/default.nix b/nixpkgs/pkgs/desktops/xfce/default.nix new file mode 100644 index 000000000000..abf03d4277be --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/default.nix @@ -0,0 +1,211 @@ +{ config, lib, pkgs }: + +lib.makeScope pkgs.newScope (self: with self; { + #### NixOS support + + inherit (pkgs.gnome2) libglade libwnck vte gtksourceview; + inherit (pkgs.gnome3) dconf; + inherit (pkgs.perlPackages) URI; + + gtk = pkgs.gtk2; + + # Samba is a rather heavy dependency + gvfs = pkgs.gvfs.override { samba = null; }; + + xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc"; + + #### CORE + + exo = callPackage ./core/exo.nix { }; + + garcon = callPackage ./core/garcon.nix { }; + + # When built with GTK+3, it was breaking GTK+3 app layout + gtk-xfce-engine = callPackage ./core/gtk-xfce-engine.nix { withGtk3 = false; }; + + libxfce4ui = callPackage ./core/libxfce4ui.nix { }; + + libxfce4util = callPackage ./core/libxfce4util.nix { }; + + libxfcegui4 = callPackage ./core/libxfcegui4.nix { }; + + thunar-bare = callPackage ./core/thunar-build.nix { }; + + thunar = callPackage ./core/thunar.nix { }; + + # NB: thunar already has it + thunar-volman = callPackage ./core/thunar-volman.nix { }; + + thunar-archive-plugin = callPackage ./thunar-plugins/archive { }; + + thunar-dropbox-plugin = callPackage ./thunar-plugins/dropbox { }; + + tumbler = callPackage ./core/tumbler.nix { }; + + # TODO: impure plugins from /run/current-system/sw/lib/xfce4 + xfce4-panel = callPackage ./core/xfce4-panel.nix { }; + + xfce4-session = callPackage ./core/xfce4-session.nix { }; + + xfce4-settings = callPackage ./core/xfce4-settings.nix { }; + + xfce4-power-manager = callPackage ./core/xfce4-power-manager.nix { }; + + xfconf = callPackage ./core/xfconf.nix { }; + + xfdesktop = callPackage ./core/xfdesktop.nix { }; + + xfwm4 = callPackage ./core/xfwm4.nix { }; + + xfce4-appfinder = callPackage ./core/xfce4-appfinder.nix { }; + + xfce4-dev-tools = callPackage ./core/xfce4-dev-tools.nix { }; + + #### APPLICATIONS + + gigolo = callPackage ./applications/gigolo.nix { }; + + mousepad = callPackage ./applications/mousepad.nix { }; + + orage = callPackage ./applications/orage.nix { }; + + parole = callPackage ./applications/parole.nix { }; + + ristretto = callPackage ./applications/ristretto.nix { }; + + xfce4-mixer = callPackage ./applications/xfce4-mixer.nix { }; + + xfce4-mixer-pulse = callPackage ./applications/xfce4-mixer.nix { pulseaudioSupport = true; }; + + xfce4-notifyd = callPackage ./applications/xfce4-notifyd.nix { }; + + xfce4-taskmanager = callPackage ./applications/xfce4-taskmanager.nix { }; + + xfce4-terminal = callPackage ./applications/terminal.nix { }; + + xfce4-screenshooter = callPackage ./applications/xfce4-screenshooter.nix { }; + + xfce4-volumed = callPackage ./applications/xfce4-volumed.nix { }; + + xfce4-volumed-pulse = callPackage ./applications/xfce4-volumed-pulse.nix { }; + + #### ART + + xfce4-icon-theme = callPackage ./art/xfce4-icon-theme.nix { }; + + xfwm4-themes = callPackage ./art/xfwm4-themes.nix { }; + + #### PANEL PLUGINS + + xfce4-vala-panel-appmenu-plugin = callPackage ./panel-plugins/xfce4-vala-panel-appmenu-plugin { }; + + xfce4-battery-plugin = callPackage ./panel-plugins/xfce4-battery-plugin.nix { }; + + xfce4-clipman-plugin = callPackage ./panel-plugins/xfce4-clipman-plugin.nix { }; + + xfce4-cpufreq-plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin.nix { }; + + xfce4-cpugraph-plugin = callPackage ./panel-plugins/xfce4-cpugraph-plugin.nix { }; + + xfce4-datetime-plugin = callPackage ./panel-plugins/xfce4-datetime-plugin.nix { }; + + xfce4-dict-plugin = callPackage ./panel-plugins/xfce4-dict-plugin.nix { }; + + xfce4-dockbarx-plugin = callPackage ./panel-plugins/xfce4-dockbarx-plugin.nix { }; + + xfce4-embed-plugin = callPackage ./panel-plugins/xfce4-embed-plugin.nix { }; + + xfce4-eyes-plugin = callPackage ./panel-plugins/xfce4-eyes-plugin.nix { }; + + xfce4-fsguard-plugin = callPackage ./panel-plugins/xfce4-fsguard-plugin.nix { }; + + xfce4-genmon-plugin = callPackage ./panel-plugins/xfce4-genmon-plugin.nix { }; + + xfce4-hardware-monitor-plugin = callPackage ./panel-plugins/xfce4-hardware-monitor-plugin.nix { }; + + xfce4-namebar-plugin = callPackage ./panel-plugins/xfce4-namebar-plugin.nix { }; + + xfce4-netload-plugin = callPackage ./panel-plugins/xfce4-netload-plugin.nix { }; + + xfce4-notes-plugin = callPackage ./panel-plugins/xfce4-notes-plugin.nix { }; + + xfce4-mailwatch-plugin = callPackage ./panel-plugins/xfce4-mailwatch-plugin.nix { }; + + xfce4-mpc-plugin = callPackage ./panel-plugins/xfce4-mpc-plugin.nix { }; + + xfce4-sensors-plugin = callPackage ./panel-plugins/xfce4-sensors-plugin.nix { }; + + xfce4-systemload-plugin = callPackage ./panel-plugins/xfce4-systemload-plugin.nix { }; + + xfce4-timer-plugin = callPackage ./panel-plugins/xfce4-timer-plugin.nix { }; + + xfce4-verve-plugin = callPackage ./panel-plugins/xfce4-verve-plugin.nix { }; + + xfce4-xkb-plugin = callPackage ./panel-plugins/xfce4-xkb-plugin.nix { }; + + xfce4-weather-plugin = callPackage ./panel-plugins/xfce4-weather-plugin.nix { }; + + xfce4-whiskermenu-plugin = callPackage ./panel-plugins/xfce4-whiskermenu-plugin.nix { }; + + xfce4-windowck-plugin = callPackage ./panel-plugins/xfce4-windowck-plugin.nix { }; + + xfce4-pulseaudio-plugin = callPackage ./panel-plugins/xfce4-pulseaudio-plugin.nix { }; + + #### GTK+3 (deprecated, see NixOS/nixpkgs#32763) + + libxfce4ui_gtk3 = libxfce4ui.override { withGtk3 = true; }; + + xfce4panel_gtk3 = xfce4-panel.override { withGtk3 = true; }; + + xfce4_power_manager_gtk3 = xfce4-power-manager.override { withGtk3 = true; }; + +} // lib.optionalAttrs (config.allowAliases or true) { + #### ALIASES - added 2018-01 + + terminal = xfce4-terminal; + thunar-build = thunar-bare; + thunarx-2-dev = thunar-build; + thunar_volman = thunar-volman; + xfce4panel = xfce4-panel; + xfce4session = xfce4-session; + xfce4settings = xfce4-settings; + xfce4_power_manager = xfce4-power-manager; + xfce4_appfinder = xfce4-appfinder; + xfce4_dev_tools = xfce4-dev-tools; + xfce4mixer = xfce4-mixer; + xfce4mixer_pulse = xfce4-mixer-pulse; + xfce4notifyd = xfce4-notifyd; + xfce4taskmanager = xfce4-taskmanager; + xfce4terminal = xfce4-terminal; + xfce4volumed = xfce4-volumed; + xfce4volumed_pulse = xfce4-volumed-pulse; + xfce4icontheme = xfce4-icon-theme; + xfwm4themes = xfwm4-themes; + + xfce4_battery_plugin = xfce4-battery-plugin; + xfce4_clipman_plugin = xfce4-clipman-plugin; + xfce4_cpufreq_plugin = xfce4-cpufreq-plugin; + xfce4_cpugraph_plugin = xfce4-cpugraph-plugin; + xfce4_datetime_plugin = xfce4-datetime-plugin; + xfce4_dict_plugin = xfce4-dict-plugin; + xfce4_dockbarx_plugin = xfce4-dockbarx-plugin; + xfce4_embed_plugin = xfce4-embed-plugin; + xfce4_eyes_plugin = xfce4-eyes-plugin; + xfce4_fsguard_plugin = xfce4-fsguard-plugin; + xfce4_genmon_plugin = xfce4-genmon-plugin; + xfce4_hardware_monitor_plugin = xfce4-hardware-monitor-plugin; + xfce4_namebar_plugin = xfce4-namebar-plugin; + xfce4_netload_plugin = xfce4-netload-plugin; + xfce4_notes_plugin = xfce4-notes-plugin; + xfce4_mailwatch_plugin = xfce4-mailwatch-plugin; + xfce4_mpc_plugin = xfce4-mpc-plugin; + xfce4_sensors_plugin = xfce4-sensors-plugin; + xfce4_systemload_plugin = xfce4-systemload-plugin; + xfce4_timer_plugin = xfce4-timer-plugin; + xfce4_verve_plugin = xfce4-verve-plugin; + xfce4_xkb_plugin = xfce4-xkb-plugin; + xfce4_weather_plugin = xfce4-weather-plugin; + xfce4_whiskermenu_plugin = xfce4-whiskermenu-plugin; + xfce4_windowck_plugin = xfce4-windowck-plugin; + xfce4_pulseaudio_plugin = xfce4-pulseaudio-plugin; +}) diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin.nix new file mode 100644 index 000000000000..6399aa3cc20d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-battery-plugin"; + ver_maj = "1.0"; + ver_min = "5"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "04gbplcj8z4vg5xbks8cc2jjf62mmf9sdymg90scjwmb82pv2ngn"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk hicolor-icon-theme ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Battery plugin for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin.nix new file mode 100644 index 000000000000..280f39f8d997 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, libXtst, xorgproto, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-clipman-plugin"; + ver_maj = "1.2"; + ver_min = "6"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "19a8gwcqc0r5qqi8w28dc8arqip34m8yxdb87lgps9g5qfcky113"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool glib exo libXtst xorgproto libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk hicolor-icon-theme ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Clipboard manager for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix new file mode 100644 index 000000000000..07838f8fe7c9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-cpufreq-plugin"; + ver_maj = "1.1"; + ver_min = "3"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0crd21l5cw0xgm6w7s049xa36k203yx7l56ssnah9nq1w73n58bl"; + }; + + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk hicolor-icon-theme ]; + + enableParallelBuilding = true; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "CPU Freq load plugin for Xfce panel"; + license = [ licenses.gpl2Plus ]; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix new file mode 100644 index 000000000000..e088e74cfb1c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, libXtst, xorgproto, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk, hicolor-icon-theme }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-cpugraph-plugin"; + ver_maj = "1.0"; + ver_min = "5"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1izl53q95m5xm2fiq7385vb1i9nwgjizxkmgpgh33zdckb40xnl5"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool glib exo libXtst xorgproto libxfce4util libxfce4ui xfce4-panel xfconf gtk hicolor-icon-theme ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "CPU graph show for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin.nix new file mode 100644 index 000000000000..c63170100312 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, libxfcegui4, xfce4-panel +, gtk }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-datetime-plugin"; + ver_maj = "0.6"; + ver_min = "2"; + + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0b4yril07qgkmywjym1qp12r4g35bnh96879zbjps7cd3rkxld4p"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfcegui4 xfce4-panel gtk ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Shows the date and time in the panel, and a calendar appears when you left-click on it"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix new file mode 100644 index 000000000000..8210fc62ccb4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk}: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-dict-plugin"; + ver_maj = "0.3"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.gz"; + sha256 = "1x0imfnsdfq7fbhka8bc0yjjspkcljc1jafhrwzb08qi9bk2wbar"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Dictionary plugin for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + broken = true; # see http://goodies.xfce.org/projects/panel-plugins/xfce4-dict-plugin + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix new file mode 100644 index 000000000000..b33ba7770be3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix @@ -0,0 +1,40 @@ +{ stdenv, pkgconfig, fetchFromGitHub, python2, bash, vala +, dockbarx, gtk2, xfce, pythonPackages, wafHook }: + +stdenv.mkDerivation rec { + ver = "0.5"; + rev = "a2dcb66"; + name = "xfce4-dockbarx-plugin-${ver}-${rev}"; + + src = fetchFromGitHub { + owner = "TiZ-EX1"; + repo = "xfce4-dockbarx-plugin"; + rev = rev; + sha256 = "1f75iwlshnif60x0qqdqw5ffng2m4f4zp0ijkrbjz83wm73nsxfx"; + }; + + pythonPath = [ dockbarx ]; + + nativeBuildInputs = [ pkgconfig wafHook ]; + buildInputs = [ python2 vala gtk2 pythonPackages.wrapPython ] + ++ (with xfce; [ libxfce4util xfce4-panel xfconf xfce4-dev-tools ]) + ++ pythonPath; + + postPatch = '' + substituteInPlace wscript --replace /usr/share/ "\''${PREFIX}/share/" + substituteInPlace src/dockbarx.vala --replace /usr/share/ $out/share/ + substituteInPlace src/dockbarx.vala --replace '/usr/bin/env python2' ${bash}/bin/bash + ''; + + postFixup = '' + wrapPythonProgramsIn "$out/share/xfce4/panel/plugins" "$out $pythonPath" + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/TiZ-EX1/xfce4-dockbarx-plugin; + description = "A plugins to embed DockbarX into xfce4-panel"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix new file mode 100644 index 000000000000..e6d1f6da26b5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2 }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-embed-plugin"; + ver_maj = "1.6"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0a72kqsjjh45swimqlpyrahdnplp0383v0i4phr4n6g8c1ixyry7"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Embed arbitrary app windows on Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix new file mode 100644 index 000000000000..3a79f67068c8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk}: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-eyes-plugin"; + ver_maj = "4.4"; + ver_min = "4"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1jh02hylvsvfpxrx0bq6fzgy6vnxf9qakgpbfvr63lfkd1dyh314"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Eyes following you!"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix new file mode 100644 index 000000000000..6d0f8ee73a4c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk}: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-fsguard-plugin"; + ver_maj = "1.0"; + ver_min = "2"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1bj021h4q68bc03f32pkyqy4gfd1sz6s21nxdg7j6gdfhs9xbj52"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Filesystem monitor"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix new file mode 100644 index 000000000000..039ac1440947 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk}: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-genmon-plugin"; + ver_maj = "3.4"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "11q3g6lmgz3d5lyh6614mxkd9cblfdyf9jgki7f26mn895xk79dh"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Cyclically spawns a command and captures its output"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix new file mode 100644 index 000000000000..d18c3b8ee256 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, intltool, autoreconfHook, gnome2, + libgtop, libxfce4ui, libxfce4util, xfce4-panel, lm_sensors +}: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "xfce4-hardware-monitor-plugin"; + version = "1.6.0"; + + src = fetchurl { + url = "https://git.xfce.org/panel-plugins/${pname}/snapshot/${name}.tar.bz2"; + sha256 = "0xg5har11fk1wmdymydxlbk1z8aa39j8k0p4gzw2iqslv3n0zf7b"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkgconfig + intltool + ]; + + buildInputs = [ + gnome2.gtkmm2 + gnome2.libgnomecanvas + gnome2.libgnomecanvasmm + libgtop + libxfce4ui + libxfce4util + xfce4-panel + lm_sensors + ]; + + enableParallelBuilding = true; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${pname}"; + description = "Hardware monitor plugin for the XFCE4 panel"; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix new file mode 100644 index 000000000000..80153332934a --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, +libxfcegui4, xfconf, gtk, exo, gnutls, libgcrypt }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-mailwatch-plugin"; + ver_maj = "1.2"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1bfw3smwivr9mzdyq768biqrl4aq94zqi3xjzq6kqnd8561cqjk2"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel + libxfcegui4 xfconf gtk exo gnutls libgcrypt ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Mailwatch plugin for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.matthiasbeyer ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix new file mode 100644 index 000000000000..8a602b8b4a1e --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, +libxfcegui4, xfconf, gtk, exo }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-mpc-plugin"; + ver_maj = "0.4"; + ver_min = "5"; + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1kvgq1pq7cykqdc3227dq0izad093ppfw3nfsrcp9i8mi6i5f7z7"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel + libxfcegui4 xfconf gtk exo ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "MPD plugin for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.matthiasbeyer ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix new file mode 100644 index 000000000000..8c6c91e25194 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin.nix @@ -0,0 +1,31 @@ +{ stdenv, pkgconfig, fetchFromGitHub, python2, vala_0_40 +, gtk2, libwnck, libxfce4util, xfce4-panel, wafHook }: + +stdenv.mkDerivation rec { + ver = "0.3.1"; + rev = "07a23b3"; + name = "xfce4-namebar-plugin-${ver}"; + + src = fetchFromGitHub { + owner = "TiZ-EX1"; + repo = "xfce4-namebar-plugin"; + rev = rev; + sha256 = "1sl4qmjywfvv53ch7hyfysjfd91zl38y7gdw2y3k69vkzd3h18ad"; + }; + + nativeBuildInputs = [ pkgconfig wafHook ]; + buildInputs = [ python2 vala_0_40 gtk2 libwnck libxfce4util xfce4-panel ]; + + postPatch = '' + substituteInPlace src/preferences.vala --replace 'Environment.get_system_data_dirs()' "{ \"$out/share\" }" + substituteInPlace src/namebar.vala --replace 'Environment.get_system_data_dirs()' "{ \"$out/share\" }" + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/TiZ-EX1/xfce4-namebar-plugin; + description = "A plugins which integrates titlebar and window controls into the xfce4-panel"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin.nix new file mode 100644 index 000000000000..e82669cc1a35 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-netload-plugin"; + ver_maj = "1.2"; + ver_min = "4"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1lrhhzxmybcfl52hnadr2dvasis9wmk6a48pcy02s09ch8cfkb7z"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk hicolor-icon-theme ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Battery plugin for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix new file mode 100644 index 000000000000..d61dae6bdd56 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, libunique }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-notes-plugin"; + ver_maj = "1.7"; + ver_min = "7"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "05sjbwgch1j93m3r23ksbjnpfk11sf7xjmbb9pm5vl3snc2s3fm7"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk libunique ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Sticky notes plugin for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + broken = true; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin.nix new file mode 100644 index 000000000000..6f6f5699b6e9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4panel_gtk3, xfconf +, gtk3, libpulseaudio, hicolor-icon-theme +, withKeybinder ? true, keybinder3 +, withLibnotify ? true, libnotify +}: + +assert withKeybinder -> keybinder3 != null; +assert withLibnotify -> libnotify != null; + +with stdenv.lib; + +stdenv.mkDerivation rec { + p_name = "xfce4-pulseaudio-plugin"; + ver_maj = "0.2"; + ver_min = "3"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "e82836bc8cf7d905b4e60d43dc630ba8e32dea785989700c71d4aeee9f583b33"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ libxfce4util xfce4panel_gtk3 xfconf gtk3 libpulseaudio hicolor-icon-theme ] + ++ optional withKeybinder keybinder3 + ++ optional withLibnotify libnotify; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Adjust the audio volume of the PulseAudio sound system"; + platforms = platforms.linux; + maintainers = [ ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix new file mode 100644 index 000000000000..5a4dfee76fc4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome2, libxfce4ui, + libxfce4util, xfce4-panel, libnotify, lm_sensors, hddtemp, netcat-gnu +}: + +stdenv.mkDerivation rec { + name = "${pname}-${ver_maj}.${ver_min}"; + pname = "xfce4-sensors-plugin"; + ver_maj = "1.2"; + ver_min = "6"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${pname}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1h0vpqxcziml3gwrbvd8xvy1mwh9mf2a68dvxsy03rs5pm1ghpi3"; + }; + + nativeBuildInputs = [ + pkgconfig + intltool + ]; + + buildInputs = [ + gnome2.gtk + libxfce4ui + libxfce4util + xfce4-panel + libnotify + lm_sensors + hddtemp + netcat-gnu + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-pathhddtemp=${hddtemp}/bin/hddtemp" + "--with-pathnetcat=${netcat-gnu}/bin/netcat" + ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${pname}"; + description = "A panel plug-in for different sensors using acpi, lm_sensors and hddtemp"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix new file mode 100644 index 000000000000..698d4aae5328 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk}: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-systemload-plugin"; + ver_maj = "1.1"; + ver_min = "2"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0z4as6sxdz93d4jpgv0665dg4sykfvc5068mc689phlfl2rvcsdl"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel gtk ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "System load plugin for Xfce panel"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix new file mode 100644 index 000000000000..73ab7782ebd4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel +, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-timer-plugin"; + ver_maj = "1.6"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "0z46gyw3ihcd1jf0m5z1dsc790xv1cpi8mk1dagj3i4v14gx5mrr"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf + gtk hicolor-icon-theme ]; + + nativeBuildInputs = [ pkgconfig ]; + + hardeningDisable = [ "format" ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "A simple XFCE panel plugin that lets the user run an alarm at a specified time or at the end of a specified countdown period"; + platforms = platforms.linux; + license = licenses.gpl2; + maintainers = [ maintainers.matthiasbeyer ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/appmenu-gtk-module.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/appmenu-gtk-module.nix new file mode 100644 index 000000000000..7134d29c9ffb --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/appmenu-gtk-module.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, cmake, vala, glib, gtk2, gtk3 }: +stdenv.mkDerivation rec { + name = "vala-panel-appmenu-xfce-${version}"; + version = "0.6.94"; + + src = "${fetchFromGitHub { + owner = "rilian-la-te"; + repo = "vala-panel-appmenu"; + rev = version; + fetchSubmodules = true; + + sha256 = "0xxn3zs60a9nfix8wrdp056wviq281cm1031hznzf1l38lp3wr5p"; + }}/subprojects/appmenu-gtk-module"; + + nativeBuildInputs = [ cmake vala ]; + buildInputs = [ glib gtk2 gtk3 ]; + + configurePhase = '' + cmake . -DGTK3_INCLUDE_GDK= + ''; + installPhase = '' + make DESTDIR=output install + cp -r output/var/empty/* "$out" + ''; + + meta = with stdenv.lib; { + description = "Port of the Unity GTK+ Module"; + license = licenses.lgpl3; + maintainers = with maintainers; [ jD91mZM2 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix new file mode 100644 index 000000000000..694f6772282b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, substituteAll, callPackage, pkgconfig, cmake, vala, libxml2, + glib, pcre, gtk2, gtk3, xorg, libxkbcommon, epoxy, at-spi2-core, dbus-glib, bamf, + xfce, libwnck3, libdbusmenu, gobject-introspection }: + +stdenv.mkDerivation rec { + name = "xfce4-vala-panel-appmenu-plugin-${version}"; + version = "0.6.94"; + + src = fetchFromGitHub { + owner = "rilian-la-te"; + repo = "vala-panel-appmenu"; + rev = version; + fetchSubmodules = true; + + sha256 = "0xxn3zs60a9nfix8wrdp056wviq281cm1031hznzf1l38lp3wr5p"; + }; + + nativeBuildInputs = [ pkgconfig cmake vala libxml2.bin ]; + buildInputs = [ (callPackage ./appmenu-gtk-module.nix {}) + glib pcre gtk2 gtk3 xorg.libpthreadstubs xorg.libXdmcp libxkbcommon epoxy + at-spi2-core dbus-glib bamf xfce.xfce4panel_gtk3 xfce.libxfce4util xfce.xfconf + libwnck3 libdbusmenu gobject-introspection ]; + + patches = [ + (substituteAll { + src = ./fix-bamf-dependency.patch; + bamf = bamf; + }) + ]; + + cmakeFlags = [ + "-DENABLE_XFCE=ON" + "-DENABLE_BUDGIE=OFF" + "-DENABLE_VALAPANEL=OFF" + "-DENABLE_MATE=OFF" + "-DENABLE_JAYATANA=OFF" + "-DENABLE_APPMENU_GTK_MODULE=OFF" + ]; + + preConfigure = '' + mv cmake/FallbackVersion.cmake.in cmake/FallbackVersion.cmake + ''; + + meta = with stdenv.lib; { + description = "Global Menu applet for XFCE4"; + license = licenses.lgpl3; + maintainers = with maintainers; [ jD91mZM2 ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/fix-bamf-dependency.patch b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/fix-bamf-dependency.patch new file mode 100644 index 000000000000..1ed86a67f727 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/fix-bamf-dependency.patch @@ -0,0 +1,12 @@ ++++ source/cmake/FindBAMF.cmake 2018-05-11 17:03:44.385917811 +0200 +@@ -80,9 +80,7 @@ + + find_program(BAMF_DAEMON_EXECUTABLE + bamfdaemon +- HINTS ${CMAKE_INSTALL_FULL_LIBDIR} +- ${CMAKE_INSTALL_FULL_LIBEXECDIR} +- ${BAMF_LIBDIR} ++ HINTS "@bamf@/libexec/bamf/" + PATH_SUFFIXES bamf + ) + diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin.nix new file mode 100644 index 000000000000..96ef08cbeb70 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, pcre +, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-verve-plugin"; + ver_maj = "1.1"; + ver_min = "0"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "114wkmgjxkim1jkswih20zg9d7rbzmlf30b5rlcpvmbsij0ny6d3"; + }; + name = "${p_name}-${ver_maj}.${ver_min}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool glib exo pcre libxfce4util libxfce4ui xfce4-panel xfconf gtk ]; + + hardeningDisable = [ "format" ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "A command-line plugin"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix new file mode 100644 index 000000000000..15cd526d6def --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxml2, libsoup, upower, +libxfce4ui, libxfce4util, xfce4-panel, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + name = "${p_name}-${ver_maj}.${ver_min}"; + p_name = "xfce4-weather-plugin"; + ver_maj = "0.8"; + ver_min = "10"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "1f7ac2zr5s5w6krdpgsq252wxhhmcblia3j783132ilh8k246vgf"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + + buildInputs = [ gtk libxml2 libsoup upower libxfce4ui libxfce4util + xfce4-panel hicolor-icon-theme ]; + + enableParallelBuilding = true; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Weather plugin for the Xfce desktop environment"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.romildo ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin.nix new file mode 100644 index 000000000000..c29758452ae6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, intltool, libxfce4util, libxfcegui4 +, xfce4-panel, gtk, exo, garcon }: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-whiskermenu-plugin"; + version = "1.7.2"; + + name = "${p_name}-${version}"; + + src = fetchFromGitHub { + owner = "gottcode"; + repo = "xfce4-whiskermenu-plugin"; + rev = "v${version}"; + sha256 = "1rpazgnjp443abc31bgi6gp9q3sgbg13v7v74nn7vf6kl4v725ah"; + }; + + nativeBuildInputs = [ cmake pkgconfig intltool ]; + + buildInputs = [ libxfce4util libxfcegui4 xfce4-panel gtk exo garcon ]; + + enableParallelBuilding = true; + + preFixup = '' + substituteInPlace $out/bin/xfce4-popup-whiskermenu \ + --replace $out/bin/xfce4-panel ${xfce4-panel.out}/bin/xfce4-panel + ''; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Alternate application launcher for Xfce"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.pjbarnoy ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix new file mode 100644 index 000000000000..8798851579d8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, pkgconfig, intltool, python3, imagemagick, libwnck, gtk2 +, exo, libxfce4ui, libxfce4util, xfce4-panel, xfconf, xfce4-dev-tools }: + +stdenv.mkDerivation rec { + p_name = "xfce4-windowck-plugin"; + version = "0.4.4"; + + src = fetchFromGitHub { + owner = "cedl38"; + repo = "xfce4-windowck-plugin"; + rev = "v${version}"; + sha256 = "0c6a1ibh39dpq9x0dha5lsg0vzmgaf051fgwz0nlky0s94nwzvgv"; + }; + name = "${p_name}-${version}"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool python3 imagemagick libwnck gtk2 + exo libxfce4ui libxfce4util xfce4-panel xfconf xfce4-dev-tools ]; + + preConfigure = '' + ./autogen.sh + patchShebangs . + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Set of two plugins which allows you to put the maximized window title and windows buttons on the panel"; + license = licenses.gpl2Plus; + platforms = platforms.unix; + maintainers = [ maintainers.volth ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin.nix new file mode 100644 index 000000000000..307d2e81bf24 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, libxfce4ui, xfce4-panel +, garcon, gtk, libxklavier, librsvg, libwnck +}: + +with stdenv.lib; +stdenv.mkDerivation rec { + p_name = "xfce4-xkb-plugin"; + ver_maj = "0.7"; + ver_min = "1"; + + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2"; + sha256 = "10g65j5ia389ahhn3b9hr52ghpp0817fk0m60rfrv4wrzqrjxzk1"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel garcon + gtk libxklavier librsvg libwnck ]; + + meta = { + homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}"; + description = "Allows you to setup and use multiple keyboard layouts"; + platforms = platforms.linux; + maintainers = [ maintainers.AndersonTorres ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix new file mode 100644 index 000000000000..ea3a0f084439 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchFromGitHub, pkgconfig, xfce4-dev-tools +, gtk +, thunar-bare +, exo, libxfce4util, libxfce4ui +, xfconf, udev, libnotify, hicolor-icon-theme +}: + +stdenv.mkDerivation rec { + p_name = "thunar-archive-plugin"; + ver_maj = "0.3"; + ver_min = "1"; + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchFromGitHub { + owner = "xfce-mirror"; + repo = p_name; + rev = "72b23eefc348bee31e06a04f968e430bc7dfa51e"; + sha256 = "0l8715x23qmk0jkywiza3qx0xxmafxi4grp7p82kkc5df5ccs8kx"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + xfce4-dev-tools + thunar-bare + exo gtk libxfce4util libxfce4ui + xfconf udev libnotify hicolor-icon-theme + ]; + + preConfigure = '' + ./autogen.sh + ''; + + /* + File roller `*.desktop` situation + --------------------------------- + + For some odd reason, in nix os, gnome file-roller's desktop file has the non-standard name + `org.gnome.FileRoller.desktop`. In order to be compatible with this odd context, create + a `*.tap` file of the same name. + + IMPORTANT: Adapt or remove the symbolic link if the situation changes. + */ + preFixup = '' + pushd $out/libexec/thunar-archive-plugin > /dev/null + ln -s ./file-roller.tap org.gnome.FileRoller.tap + popd > /dev/null + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://foo-projects.org/~benny/projects/thunar-archive-plugin/; + description = "Thunar plugin providing file context menus for archives"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix new file mode 100644 index 000000000000..217cecf85a8c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig +, gtk +, thunar-bare, python2, hicolor-icon-theme +, wafHook +}: + +stdenv.mkDerivation rec { + p_name = "thunar-dropbox-plugin"; + ver_maj = "0.2"; + ver_min = "1"; + name = "${p_name}-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "http://softwarebakery.com/maato/files/thunar-dropbox/thunar-dropbox-${ver_maj}.${ver_min}.tar.bz2"; + sha256 = "08vhzzzwshyz371yl7fzfylmhvchhv3s5kml3dva4v39jhvrpnkf"; + }; + + nativeBuildInputs = [ pkgconfig wafHook ]; + buildInputs = [ + gtk + thunar-bare python2 hicolor-icon-theme + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://softwarebakery.com/maato/thunar-dropbox.html; + description = "A plugin for thunar that adds context-menu items from dropbox"; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/automakeAddFlags.sh b/nixpkgs/pkgs/desktops/xfce4-13/automakeAddFlags.sh new file mode 100644 index 000000000000..92d5659d05ca --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/automakeAddFlags.sh @@ -0,0 +1,7 @@ +automakeAddFlags() { + local file="$1" + local target="$2" + local source="$3" + + sed "/$target/a\$($source) \\\\" -i $file +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/default.nix new file mode 100644 index 000000000000..d3e46cf23654 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/default.nix @@ -0,0 +1,113 @@ +{ lib, makeSetupHook, newScope, gnome3, gst_all_1 }: + +let + inherit (lib) makeScope; +in + +makeScope newScope (self: with self; { + mkXfceDerivation = callPackage ./mkXfceDerivation.nix { }; + + automakeAddFlags = makeSetupHook { } ./automakeAddFlags.sh; + + exo = callPackage ./exo { }; + + garcon = callPackage ./garcon { }; + + gigolo = callPackage ./gigolo { }; + + libxfce4util = callPackage ./libxfce4util { }; + + libxfce4ui = callPackage ./libxfce4ui { }; + + mousepad = callPackage ./mousepad { }; + + orage = callPackage ./orage { }; + + parole = callPackage ./parole { + inherit (gst_all_1) gst-plugins-bad gst-plugins-base gst-plugins-good; + gst-plugins-ugly = null; + }; + + ristretto = callPackage ./ristretto { }; + + thunar = callPackage ./thunar { }; + + thunar-volman = callPackage ./thunar-volman { }; + + tumbler = callPackage ./tumbler { }; + + xfburn = callPackage ./xfburn { }; + + xfconf = callPackage ./xfconf { }; + + xfdesktop = callPackage ./xfdesktop { }; + + xfce4-appfinder = callPackage ./xfce4-appfinder { }; + + xfce4-battery-plugin = callPackage ./xfce4-battery-plugin { }; + + xfce4-cpufreq-plugin = callPackage ./xfce4-cpufreq-plugin { }; + + xfce4-clipman-plugin = callPackage ./xfce4-clipman-plugin { }; + + xfce4-dev-tools = callPackage ./xfce4-dev-tools { + mkXfceDerivation = mkXfceDerivation.override { + xfce4-dev-tools = null; + }; + }; + + xfce4-dict = callPackage ./xfce4-dict { }; + + xfce4-mixer = callPackage ./xfce4-mixer { }; + + xfce4-netload-plugin = callPackage ./xfce4-netload-plugin { }; + + xfce4-notifyd = callPackage ./xfce4-notifyd { }; + + xfce4-panel = callPackage ./xfce4-panel { }; + + xfce4-power-manager = callPackage ./xfce4-power-manager { }; + + xfce4-pulseaudio-plugin = callPackage ./xfce4-pulseaudio-plugin { }; + + xfce4-screenshooter = callPackage ./xfce4-screenshooter { + inherit (gnome3) libsoup; + }; + + xfce4-session = callPackage ./xfce4-session { }; + xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc"; + + xfce4-settings = callPackage ./xfce4-settings { }; + + xfce4-taskmanager = callPackage ./xfce4-taskmanager { }; + + xfce4-terminal = callPackage ./xfce4-terminal { }; + + xfce4-volumed-pulse = callPackage ./xfce4-volumed-pulse { }; + + xfce4-whiskermenu-plugin = callPackage ./xfce4-whiskermenu-plugin { }; + + xfce4-xkb-plugin = callPackage ./xfce4-xkb-plugin { }; + + xfwm4 = callPackage ./xfwm4 { }; + + ## COMMON PARTS WITH XFCE 4.12 + + gtk-xfce-engine = callPackage ../xfce/core/gtk-xfce-engine.nix { withGtk3 = false; }; + + xfce4-icon-theme = callPackage ../xfce/art/xfce4-icon-theme.nix { }; + + xfwm4-themes = callPackage ../xfce/art/xfwm4-themes.nix { }; + + xfce4-embed-plugin = callPackage ../xfce/panel-plugins/xfce4-embed-plugin.nix { }; + + xfce4-hardware-monitor-plugin = callPackage ../xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix { }; + + ## THIRD PARTY PLIGINS + + xfce4-dockbarx-plugin = callPackage ../xfce/panel-plugins/xfce4-dockbarx-plugin.nix { }; + + xfce4-namebar-plugin = callPackage ../xfce/panel-plugins/xfce4-namebar-plugin.nix { }; + + xfce4-windowck-plugin = callPackage ../xfce/panel-plugins/xfce4-windowck-plugin.nix { }; +}) diff --git a/nixpkgs/pkgs/desktops/xfce4-13/exo/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/exo/default.nix new file mode 100644 index 000000000000..1096996ee6d5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/exo/default.nix @@ -0,0 +1,23 @@ +{ mkXfceDerivation, docbook_xsl, libxslt, perlPackages, gtk2, gtk3 +, libxfce4ui, libxfce4util }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "exo"; + version = "0.12.2"; + + sha256 = "1b4hl9yxvf8b8akqf2zngq3m93yqnqcmxqqds1dwzm9vm5sqydgh"; + + nativeBuildInputs = [ libxslt perlPackages.URI ]; + buildInputs = [ gtk2 gtk3 libxfce4ui libxfce4util ]; + + postPatch = '' + substituteInPlace docs/reference/Makefile.am \ + --replace http://docbook.sourceforge.net/release/xsl/current \ + ${docbook_xsl}/share/xml/docbook-xsl + ''; + + meta = { + description = "Application library for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/exo/gtk3-only.patch b/nixpkgs/pkgs/desktops/xfce4-13/exo/gtk3-only.patch new file mode 100644 index 000000000000..74e6f812e3c7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/exo/gtk3-only.patch @@ -0,0 +1,28 @@ +diff -urNZ a/configure.ac.in b/configure.ac.in +--- a/configure.ac.in 2017-11-20 02:57:40.476664918 +0000 ++++ b/configure.ac.in 2017-11-20 03:07:18.999128370 +0000 +@@ -165,11 +165,9 @@ + dnl *********************************** + XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.42.0]) + XDT_CHECK_PACKAGE([GIO], [gio-2.0], [2.42.0]) +-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.24.0]) + XDT_CHECK_PACKAGE([GTK3], [gtk+-3.0], [3.20.0]) + XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.42.0]) + XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.10.0]) +-XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.12.0]) + XDT_CHECK_PACKAGE([LIBXFCE4UI2], [libxfce4ui-2], [4.12.0]) + XDT_CHECK_OPTIONAL_PACKAGE([GIO_UNIX], [gio-unix-2.0], [2.42.0], [gio-unix], [GIO-Unix features]) + +diff -urNZ a/exo/Makefile.am b/exo/Makefile.am +--- a/exo/Makefile.am 2017-11-20 02:57:34.444785202 +0000 ++++ b/exo/Makefile.am 2017-11-20 03:00:49.402897465 +0000 +@@ -117,7 +117,7 @@ + + libexo_2_includedir = $(includedir)/exo-2/exo + +-lib_LTLIBRARIES += libexo-2.la ++lib_LTLIBRARIES = libexo-2.la + + libexo_2_include_HEADERS = \ + exo.h \ +Binary files a/.git/index and b/.git/index differ diff --git a/nixpkgs/pkgs/desktops/xfce4-13/garcon/12700.patch b/nixpkgs/pkgs/desktops/xfce4-13/garcon/12700.patch new file mode 100644 index 000000000000..fda36d696510 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/garcon/12700.patch @@ -0,0 +1,37 @@ +From: Yegor Timoshenko <yegortimoshenko@gmail.com> +Date: Thu, 14 Dec 2017 21:13:02 +0000 +Subject: [PATCH] Decrement allocation counter on item unref (#12700) + +diff --git a/garcon/garcon-menu-item-pool.c b/garcon/garcon-menu-item-pool.c +index 2017180..355e520 100644 +--- a/garcon/garcon-menu-item-pool.c ++++ b/garcon/garcon-menu-item-pool.c +@@ -191,7 +191,12 @@ garcon_menu_item_pool_filter_exclude (const gchar *desktop_id, + g_return_val_if_fail (GARCON_IS_MENU_ITEM (item), FALSE); + g_return_val_if_fail (node != NULL, FALSE); + +- return garcon_menu_node_tree_rule_matches (node, item); ++ gboolean matches = garcon_menu_node_tree_rule_matches (node, item); ++ ++ if (matches) ++ garcon_menu_item_increment_allocated (item); ++ ++ return matches; + } + + +diff --git a/garcon/garcon-menu-item.c b/garcon/garcon-menu-item.c +index ca8cb63..b44acfe 100644 +--- a/garcon/garcon-menu-item.c ++++ b/garcon/garcon-menu-item.c +@@ -1908,6 +1908,8 @@ garcon_menu_item_unref (GarconMenuItem *item) + { + g_return_if_fail (GARCON_IS_MENU_ITEM (item)); + ++ garcon_menu_item_decrement_allocated (item); ++ + /* Decrement the reference counter */ + g_object_unref (G_OBJECT (item)); + } +-- +2.15.1 diff --git a/nixpkgs/pkgs/desktops/xfce4-13/garcon/13785.patch b/nixpkgs/pkgs/desktops/xfce4-13/garcon/13785.patch new file mode 100644 index 000000000000..1b723d21d60a --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/garcon/13785.patch @@ -0,0 +1,75 @@ +From 4387496fe332a50945e7db76bc2196b419656fe3 Mon Sep 17 00:00:00 2001 +From: Stefan Berzl <stefanberzl@gmail.com> +Date: Mon, 21 Aug 2017 18:39:07 +0300 +Subject: [PATCH] fix: some menu icons are too big (Bug #13785) + +Some packages only provide icons in sizes much bigger than the standard +GTK menu size of 16px. + +The clipboard manager qlipper for example provides the following icon: +/usr/share/icons/hicolor/128x128/apps/qlipper.png + +In GTK 3.22.18 the function gtk_image_new_from_icon_name when given +GTK_ICON_SIZE_MENU as second argument still returns an image with 128x128. + +The patch I have supplied uses existing code to scale such an image. + +Signed-off-by: Eric Koegel <eric.koegel@gmail.com> +--- + garcon-gtk/garcon-gtk-menu.c | 33 +++++++++++++++++++-------------- + 1 file changed, 19 insertions(+), 14 deletions(-) + +diff --git a/garcon-gtk/garcon-gtk-menu.c b/garcon-gtk/garcon-gtk-menu.c +index 41990f2..f31a1ed 100644 +--- a/garcon-gtk/garcon-gtk-menu.c ++++ b/garcon-gtk/garcon-gtk-menu.c +@@ -650,7 +650,11 @@ garcon_gtk_menu_load_icon (const gchar *icon_name) + gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h); + size = MIN (w, h); + +- if (! gtk_icon_theme_has_icon (icon_theme, icon_name)) ++ if (gtk_icon_theme_has_icon (icon_theme, icon_name)) ++ { ++ pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name, size, 0, NULL);; ++ } ++ else + { + if (g_path_is_absolute (icon_name)) + { +@@ -684,22 +688,23 @@ garcon_gtk_menu_load_icon (const gchar *icon_name) + g_free (name); + } + } ++ } + +- /* Turn the pixbuf into a gtk_image */ +- if (G_LIKELY (pixbuf)) +- { +- /* scale the pixbuf down if it needs it */ +- GdkPixbuf *tmp = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_BILINEAR); +- g_object_unref (pixbuf); +- pixbuf = tmp; ++ /* Turn the pixbuf into a gtk_image */ ++ if (G_LIKELY (pixbuf)) ++ { ++ /* scale the pixbuf down if it needs it */ ++ GdkPixbuf *pixbuf_scaled = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_BILINEAR); ++ g_object_unref (G_OBJECT (pixbuf)); + +- image = gtk_image_new_from_pixbuf (pixbuf); +- g_object_unref (G_OBJECT (pixbuf)); +- } ++ image = gtk_image_new_from_pixbuf (pixbuf_scaled); ++ g_object_unref (G_OBJECT (pixbuf_scaled)); ++ } ++ else ++ { ++ /* display the placeholder at least */ ++ image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); + } +- +- if (image == NULL) +- image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); + + return image; + } diff --git a/nixpkgs/pkgs/desktops/xfce4-13/garcon/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/garcon/default.nix new file mode 100644 index 000000000000..a88d64702a1a --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/garcon/default.nix @@ -0,0 +1,12 @@ +{ mkXfceDerivation, gtk2 ? null, gtk3, libxfce4ui, libxfce4util }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "garcon"; + version = "0.6.1"; + + sha256 = "19k8bwn29x7hkg882pxv5xxmrbfagdqgkxg166pwz2k0prab6hl8"; + + patches = [ ./12700.patch ./13785.patch ]; + buildInputs = [ gtk2 gtk3 libxfce4ui libxfce4util ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/gigolo/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/gigolo/default.nix new file mode 100644 index 000000000000..0d7b2210b12c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/gigolo/default.nix @@ -0,0 +1,11 @@ +{ mkXfceDerivation, gtk2, libX11 }: + +mkXfceDerivation rec { + category = "apps"; + pname = "gigolo"; + version = "0.4.2"; + + sha256 = "0qd2jkf3zsvfyd9jn8bfnljja1xfj3ph4wjh3fx10dcwcd791al1"; + + buildInputs = [ gtk2 libX11 ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/libxfce4ui/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/libxfce4ui/default.nix new file mode 100644 index 000000000000..f6997551262e --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/libxfce4ui/default.nix @@ -0,0 +1,18 @@ +{ lib, mkXfceDerivation, gobject-introspection, gtk2, gtk3, libICE, libSM +, libstartup_notification ? null, libxfce4util, xfconf }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "libxfce4ui"; + version = "4.13.4"; + + sha256 = "0m9h3kvkk2nx8pxxmsg9sjnyp6ajwjrz9djjxxvranjsdw3ilydy"; + + buildInputs = [ gobject-introspection gtk2 gtk3 libstartup_notification xfconf ]; + propagatedBuildInputs = [ libxfce4util libICE libSM ]; + + meta = with lib; { + description = "Widgets library for Xfce"; + license = licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/libxfce4util/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/libxfce4util/default.nix new file mode 100644 index 000000000000..6a3b633cd09d --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/libxfce4util/default.nix @@ -0,0 +1,16 @@ +{ lib, mkXfceDerivation, gobject-introspection }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "libxfce4util"; + version = "4.13.2"; + + sha256 = "0sb6pzhmh0qzfdhixj1ard56zi68318k86z3a1h3f2fhqy7gyf98"; + + buildInputs = [ gobject-introspection ]; + + meta = with lib; { + description = "Extension library for Xfce"; + license = licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/mkXfceDerivation.nix b/nixpkgs/pkgs/desktops/xfce4-13/mkXfceDerivation.nix new file mode 100644 index 000000000000..da7179c46462 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/mkXfceDerivation.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchgit, pkgconfig, xfce4-dev-tools, hicolor-icon-theme }: + +{ category, pname, version, rev ? "${pname}-${version}", sha256, ... } @ args: + +let + inherit (builtins) filter getAttr head isList; + inherit (stdenv.lib) attrNames concatLists recursiveUpdate zipAttrsWithNames; + + filterAttrNames = f: attrs: + filter (n: f (getAttr n attrs)) (attrNames attrs); + + concatAttrLists = attrsets: + zipAttrsWithNames (filterAttrNames isList (head attrsets)) (_: concatLists) attrsets; + + template = rec { + name = "${pname}-${version}"; + + nativeBuildInputs = [ pkgconfig xfce4-dev-tools ]; + buildInputs = [ hicolor-icon-theme ]; + configureFlags = [ "--enable-maintainer-mode" ]; + + src = fetchgit { + url = "git://git.xfce.org/${category}/${pname}"; + inherit rev sha256; + }; + + enableParallelBuilding = true; + outputs = [ "out" "dev" ]; + + meta = with stdenv.lib; { + homepage = "https://git.xfce.org/${category}/${pname}/about"; + license = licenses.gpl2; # some libraries are under LGPLv2+ + platforms = platforms.linux; + }; + }; + + publicArgs = removeAttrs args [ "category" "pname" "sha256" ]; +in + +stdenv.mkDerivation (recursiveUpdate template publicArgs // concatAttrLists [ template args ]) diff --git a/nixpkgs/pkgs/desktops/xfce4-13/mousepad/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/mousepad/default.nix new file mode 100644 index 000000000000..b5fd3a19d060 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/mousepad/default.nix @@ -0,0 +1,12 @@ +{ mkXfceDerivation, exo, wrapGAppsHook, dbus-glib, gtk3, gtksourceview3 }: + +mkXfceDerivation rec { + category = "apps"; + pname = "mousepad"; + version = "0.4.1"; + + sha256 = "0pr1w9n0qq2raxhy78982i9g17x0ya02q7vdrn0wb2bpk74hlki5"; + + nativeBuildInputs = [ exo wrapGAppsHook ]; + buildInputs = [ dbus-glib gtk3 gtksourceview3 ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/orage/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/orage/default.nix new file mode 100644 index 000000000000..3c8395a49088 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/orage/default.nix @@ -0,0 +1,35 @@ +{ lib, fetchpatch, mkXfceDerivation, dbus-glib, gtk2, libical, libnotify, tzdata +, popt, libxfce4ui ? null, xfce4-panel ? null, withPanelPlugin ? true }: + +assert withPanelPlugin -> libxfce4ui != null && xfce4-panel != null; + +let + inherit (lib) optionals; +in + +mkXfceDerivation rec { + category = "apps"; + pname = "orage"; + version = "4.12.1"; + + sha256 = "04z6y1vfaz1im1zq1zr7cf8pjibjhj9zkyanbp7vn30q520yxa0m"; + buildInputs = [ dbus-glib gtk2 libical libnotify popt ] + ++ optionals withPanelPlugin [ libxfce4ui xfce4-panel ]; + + postPatch = '' + substituteInPlace src/parameters.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + substituteInPlace src/tz_zoneinfo_read.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + substituteInPlace tz_convert/tz_convert.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" + ''; + + postConfigure = "rm -rf libical"; # ensure pkgs.libical is used instead of one included in the orage sources + + patches = [ + # Fix build with libical 3.0 + (fetchpatch { + name = "fix-libical3.patch"; + url = https://git.archlinux.org/svntogit/packages.git/plain/trunk/libical3.patch?h=packages/orage&id=7b1b06c42dda034d538977b9f3550b28e370057f; + sha256 = "1l8s106mcidmbx2p8c2pi8v9ngbv2x3fsgv36j8qk8wyd4qd1jbf"; + }) + ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/parole/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/parole/default.nix new file mode 100644 index 000000000000..e720791f1c47 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/parole/default.nix @@ -0,0 +1,36 @@ +{ mkXfceDerivation, makeWrapper, wrapGAppsHook, dbus, dbus-glib +, gst-plugins-bad ? null, gst-plugins-base, gst-plugins-good +, gst-plugins-ugly ? null, gtk3, libnotify, libxfce4ui, libxfce4util +, taglib ? null, xfconf }: + +# Doesn't seem to find H.264 codec even though built with gst-plugins-bad. + +mkXfceDerivation rec { + category = "apps"; + pname = "parole"; + version = "1.0.1"; + + sha256 = "0zq1imbjqmwfk3yrsha2s7lclzbh8xgggz0rbksa51siqk73swbb"; + + postPatch = '' + substituteInPlace src/plugins/mpris2/Makefile.am \ + --replace GST_BASE_CFLAGS GST_VIDEO_CFLAGS + ''; + + nativeBuildInputs = [ makeWrapper wrapGAppsHook ]; + + buildInputs = [ + dbus + dbus-glib + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gtk3 + libnotify + libxfce4ui + libxfce4util + taglib + xfconf + ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/ristretto/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/ristretto/default.nix new file mode 100644 index 000000000000..b4b0778e9824 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/ristretto/default.nix @@ -0,0 +1,18 @@ +{ mkXfceDerivation, automakeAddFlags, exo, dbus-glib, gtk2, libexif +, libxfce4ui, libxfce4util, xfconf }: + +mkXfceDerivation rec { + category = "apps"; + pname = "ristretto"; + version = "0.8.3"; + + postPatch = '' + automakeAddFlags src/Makefile.am ristretto_CFLAGS DBUS_GLIB_CFLAGS + automakeAddFlags src/Makefile.am ristretto_LDADD DBUS_GLIB_LIBS + ''; + + nativeBuildInputs = [ automakeAddFlags exo ]; + buildInputs = [ dbus-glib gtk2 libexif libxfce4ui libxfce4util xfconf ]; + + sha256 = "02i61ddzpv0qjwahkksnzla57zdmkywyg1qrqs57z4bzj6l4nmkx"; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/thunar-volman/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/thunar-volman/default.nix new file mode 100644 index 000000000000..0055d0d82179 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/thunar-volman/default.nix @@ -0,0 +1,11 @@ +{ mkXfceDerivation, exo, gtk3, libgudev, libxfce4ui, libxfce4util, xfconf }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "thunar-volman"; + version = "0.9.0"; + + buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ]; + + sha256 = "08aqbp3i0z6frj7z3laz9nj641iakrcr7vh2dxb057ky24gj61i7"; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/thunar/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/thunar/default.nix new file mode 100644 index 000000000000..dbeb80ac9bd2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/thunar/default.nix @@ -0,0 +1,30 @@ +{ mkXfceDerivation, docbook_xsl, exo, gdk_pixbuf, gtk3, libgudev ? null +, libnotify ? null, libX11, libxfce4ui, libxfce4util, libxslt, xfconf }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "thunar"; + version = "1.8.1"; + + sha256 = "00n5iinhg3xgzj2rcy7zl6g9449i59x2l09cnlkhyrjzghb4k5ha"; + + postPatch = '' + substituteInPlace docs/Makefile.am \ + --replace http://docbook.sourceforge.net/release/xsl/current \ + ${docbook_xsl}/share/xml/docbook-xsl + ''; + + nativeBuildInputs = [ libxslt ]; + + buildInputs = [ + exo + gdk_pixbuf + gtk3 + libgudev + libnotify + libX11 + libxfce4ui + libxfce4util + xfconf + ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/tumbler/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/tumbler/default.nix new file mode 100644 index 000000000000..05a4f4ecde3c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/tumbler/default.nix @@ -0,0 +1,14 @@ +{ mkXfceDerivation, gdk_pixbuf ? null, ffmpegthumbnailer ? null, libgsf ? null +, poppler ? null }: + +# TODO: add libopenraw + +mkXfceDerivation rec { + category = "xfce"; + pname = "tumbler"; + version = "0.2.3"; + + sha256 = "1gb4dav6q9bn64c2ayi4896cr79lb8k63ja2sm3lwsjxgg1r4hw9"; + + buildInputs = [ gdk_pixbuf ffmpegthumbnailer libgsf poppler ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfburn/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfburn/default.nix new file mode 100644 index 000000000000..b8a61f6cf90c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfburn/default.nix @@ -0,0 +1,18 @@ +{ mkXfceDerivation, docbook_xsl, exo, gtk2, libburn, libisofs, libxfce4ui, libxslt }: + +mkXfceDerivation rec { + category = "apps"; + pname = "xfburn"; + version = "0.5.5"; + + postPatch = '' + substituteInPlace docs/Makefile.am \ + --replace http://docbook.sourceforge.net/release/xsl/current \ + ${docbook_xsl}/share/xml/docbook-xsl + ''; + + sha256 = "1lmv48vqrlap1a2ha72g16vqly18zvcwj8y3f3f00l10pmn52bkp"; + + nativeBuildInputs = [ libxslt ]; + buildInputs = [ exo gtk2 libburn libisofs libxfce4ui ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-appfinder/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-appfinder/default.nix new file mode 100644 index 000000000000..65941fee4c4a --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-appfinder/default.nix @@ -0,0 +1,12 @@ +{ mkXfceDerivation, exo, garcon, gtk3, libxfce4util, libxfce4ui, xfconf }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfce4-appfinder"; + version = "4.13.0"; + + sha256 = "13xsshzw04gx5rhalx4r0khjb0dbq26fv6n20biyiai1ykznyryy"; + + nativeBuildInputs = [ exo ]; + buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-battery-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-battery-plugin/default.nix new file mode 100644 index 000000000000..b4b5ff7b7148 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-battery-plugin/default.nix @@ -0,0 +1,11 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation rec { + category = "panel-plugins"; + pname = "xfce4-battery-plugin"; + version = "1.1.0"; + rev = version; + sha256 = "0mz0lj3wjrsj9n4wcqrvv08430g38nkjbdimxdy8316n6bqgngfn"; + + buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-clipman-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-clipman-plugin/default.nix new file mode 100644 index 000000000000..28f63a6769d7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-clipman-plugin/default.nix @@ -0,0 +1,11 @@ +{ mkXfceDerivation, gtk3, libXtst, libxfce4ui, libxfce4util, xfce4-panel, xfconf, exo }: + +mkXfceDerivation rec { + category = "panel-plugins"; + pname = "xfce4-clipman-plugin"; + version = "1.4.2"; + rev = version; + sha256 = "1c2h1cs7pycf1rhpirmvb0l0dfvlacb7xgm31q9rxmhihnycd2na"; + + buildInputs = [ exo gtk3 libXtst libxfce4ui libxfce4util xfce4-panel xfconf ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-cpufreq-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-cpufreq-plugin/default.nix new file mode 100644 index 000000000000..e17204c0cd55 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-cpufreq-plugin/default.nix @@ -0,0 +1,10 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation rec { + category = "panel-plugins"; + pname = "xfce4-cpufreq-plugin"; + version = "1.2.0"; + sha256 = "0zhs7b7py1njczmpnib4532fwpnd3vnpqfhss2r136cfgy72kp6g"; + + buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/default.nix new file mode 100644 index 000000000000..9dedb8674dc2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/default.nix @@ -0,0 +1,32 @@ +{ mkXfceDerivation, autoreconfHook, autoconf, automake +, glib, gtk-doc, intltool, libtool }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfce4-dev-tools"; + version = "4.12.0"; + + sha256 = "0bbmlmw2dpm10q2wv3vy592i0vx7b5h1qnd35j0fdzxqb8x2hbw2"; + + nativeBuildInputs = [ autoreconfHook ]; + + propagatedBuildInputs = [ + autoconf + automake + glib + gtk-doc + intltool + libtool + ]; + + preAutoreconf = '' + substitute configure.ac.in configure.ac \ + --subst-var-by REVISION UNKNOWN + ''; + + setupHook = ./setup-hook.sh; + + meta = { + description = "Autoconf macros and scripts to augment app build systems"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/setup-hook.sh b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/setup-hook.sh new file mode 100644 index 000000000000..600bf47fd872 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/setup-hook.sh @@ -0,0 +1,12 @@ +xdtEnvHook() { + addToSearchPath ACLOCAL_PATH $1/share/xfce4/dev-tools/m4macros +} + +envHooks+=(xdtEnvHook) + +xdtAutogenPhase() { + mkdir -p m4 + NOCONFIGURE=1 xdt-autogen +} + +preConfigurePhases+=(xdtAutogenPhase) diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/configure-gio.patch b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/configure-gio.patch new file mode 100644 index 000000000000..787b63511a23 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/configure-gio.patch @@ -0,0 +1,11 @@ +diff -urNZ a/configure.ac.in b/configure.ac.in +--- a/configure.ac.in 2017-12-16 19:46:13.784914017 +0000 ++++ b/configure.ac.in 2017-12-16 19:46:38.612477052 +0000 +@@ -53,6 +53,7 @@ + dnl *********************************** + dnl *** Check for required packages *** + dnl *********************************** ++XDT_CHECK_PACKAGE([GIO], [gio-unix-2.0], [2.32.0]) + XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.24.0]) + XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.20.0]) + XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.12.0]) diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/default.nix new file mode 100644 index 000000000000..1236b60175d0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/default.nix @@ -0,0 +1,19 @@ +{ mkXfceDerivation, automakeAddFlags, gtk3, libxfce4ui, libxfce4util, xfce4-panel }: + +mkXfceDerivation rec { + category = "apps"; + pname = "xfce4-dict"; + version = "0.8.1"; + + sha256 = "0kxirzqmpp7qlr8220i8kipz4bgzkam7h1lpx7yzld5xf7wdzvaf"; + + patches = [ ./configure-gio.patch ]; + + nativeBuildInputs = [ automakeAddFlags ]; + + postPatch = '' + automakeAddFlags lib/Makefile.am libdict_la_CFLAGS GIO_CFLAGS + ''; + + buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-mixer/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-mixer/default.nix new file mode 100644 index 000000000000..a4bc0a3eaddb --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-mixer/default.nix @@ -0,0 +1,32 @@ +{ mkXfceDerivation, automakeAddFlags, dbus-glib, gtk2, libxfce4ui, libxfce4util, xfce4-panel, xfconf, gst-plugins-base, libunique }: + +let + gst_plugins_minimal = gst-plugins-base.override { + minimalDeps = true; + }; +in +mkXfceDerivation rec { + category = "apps"; + pname = "xfce4-mixer"; + version = "4.11.0"; + + sha256 = "1kiz5ysn4rqkjfzz4dvbsfj64kqqayg7bqakcys3rw28g2q5qyys"; + + nativeBuildInputs = [ automakeAddFlags ]; + + postPatch = '' + automakeAddFlags panel-plugin/Makefile.am libmixer_la_CFLAGS DBUS_GLIB_CFLAGS + automakeAddFlags xfce4-mixer/Makefile.am xfce4_mixer_CFLAGS DBUS_GLIB_CFLAGS + ''; + + buildInputs = [ + dbus-glib + gst_plugins_minimal + gtk2 + libunique + libxfce4ui + libxfce4util + xfce4-panel + xfconf + ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-netload-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-netload-plugin/default.nix new file mode 100644 index 000000000000..d9f517981d3e --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-netload-plugin/default.nix @@ -0,0 +1,11 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation rec { + category = "panel-plugins"; + pname = "xfce4-netload-plugin"; + version = "1.3.1"; + rev = "version-${version}"; + sha256 = "0nm8advafw4jpc9p1qszyfqa56194sz51z216rdh4c6ilcrrpy1h"; + + buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-notifyd/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-notifyd/default.nix new file mode 100644 index 000000000000..bac258785079 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-notifyd/default.nix @@ -0,0 +1,12 @@ +{ mkXfceDerivation, dbus-glib, exo, gtk3, libnotify, libxfce4ui, libxfce4util +, xfce4-panel, xfconf }: + +mkXfceDerivation rec { + category = "apps"; + pname = "xfce4-notifyd"; + version = "0.4.2"; + + sha256 = "1zxwzigrhms74crasbqpnzidmq2mnyxpmc9pqr4p4qj14yw4sam9"; + + buildInputs = [ dbus-glib exo gtk3 libnotify libxfce4ui libxfce4util xfce4-panel xfconf ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-panel/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-panel/default.nix new file mode 100644 index 000000000000..27c8e1e58c71 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-panel/default.nix @@ -0,0 +1,36 @@ +{ mkXfceDerivation, makeWrapper, tzdata, exo, garcon, gtk2, gtk3, gettext, glib-networking, libxfce4ui, libxfce4util, libwnck3, xfconf }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfce4-panel"; + version = "4.13.4"; + + sha256 = "13hnzh31d2b1331lnsbfaxg4fqhqa7hmdwkiqsl9hyr8pqimjb2g"; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ exo garcon gtk2 gtk3 libxfce4ui libxfce4util libwnck3 xfconf ]; + + patches = [ ../../xfce/core/xfce4-panel-datadir.patch ]; + patchFlags = "-p1"; + + postPatch = '' + for f in $(find . -name \*.sh); do + substituteInPlace $f --replace gettext ${gettext}/bin/gettext + done + substituteInPlace plugins/clock/clock.c \ + --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" \ + --replace "if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK))" "" + ''; + + configureFlags = [ "--enable-gtk3" ]; + + postInstall = '' + wrapProgram "$out/bin/xfce4-panel" \ + --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" \ + --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" + ''; + + meta = { + description = "Xfce's panel"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-power-manager/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-power-manager/default.nix new file mode 100644 index 000000000000..5389af668820 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-power-manager/default.nix @@ -0,0 +1,19 @@ +{ mkXfceDerivation, automakeAddFlags, exo, gtk3, libnotify +, libxfce4ui, libxfce4util, upower, xfconf }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfce4-power-manager"; + version = "1.6.1"; + + sha256 = "0b32m46v3dv1ln3xwlpqbnpflknm4gyfk2w6gn7xjx1k7igcjym3"; + + nativeBuildInputs = [ automakeAddFlags exo ]; + buildInputs = [ gtk3 libnotify libxfce4ui libxfce4util upower xfconf ]; + + postPatch = '' + substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0 + automakeAddFlags src/Makefile.am xfce4_power_manager_CFLAGS GIO_CFLAGS + automakeAddFlags settings/Makefile.am xfce4_power_manager_settings_CFLAGS GIO_CFLAGS + ''; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-pulseaudio-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-pulseaudio-plugin/default.nix new file mode 100644 index 000000000000..185494c25439 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-pulseaudio-plugin/default.nix @@ -0,0 +1,19 @@ +{ mkXfceDerivation, automakeAddFlags, dbus-glib, dbus, gtk3, libpulseaudio +, libnotify, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation rec { + category = "panel-plugins"; + pname = "xfce4-pulseaudio-plugin"; + version = "0.4.1"; + sha256 = "1c8krpg3l6ki00ldd9hifc4bddysdm0w3x5w43fkr31j0zrscvfp"; + + nativeBuildInputs = [ automakeAddFlags ]; + + NIX_CFLAGS_COMPILE = [ "-I${dbus-glib.dev}/include/dbus-1.0" "-I${dbus.dev}/include/dbus-1.0" ]; + + postPatch = '' + substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0 + ''; + + buildInputs = [ gtk3 libnotify libpulseaudio libxfce4ui libxfce4util xfce4-panel xfconf ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-screenshooter/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-screenshooter/default.nix new file mode 100644 index 000000000000..0dfad21d07ba --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-screenshooter/default.nix @@ -0,0 +1,12 @@ +{ mkXfceDerivation, exo, gtk3, libsoup, libxfce4ui, libxfce4util, xfce4-panel, wrapGAppsHook, glib-networking }: + +mkXfceDerivation rec { + category = "apps"; + pname = "xfce4-screenshooter"; + version = "1.9.2"; + + sha256 = "1zl16xcmgrb1s6rsrn37mpl5w522i1i9s7x167xf2d092x333yx2"; + + nativeBuildInputs = [ wrapGAppsHook ]; # fix "No GSettings schemas are installed on the system" + buildInputs = [ exo gtk3 libsoup libxfce4ui libxfce4util xfce4-panel glib-networking ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-session/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-session/default.nix new file mode 100644 index 000000000000..ecf1f6ac505e --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-session/default.nix @@ -0,0 +1,27 @@ +{ mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, dbus-glib, dbus, iceauth, gtk3, libwnck3, xorg }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfce4-session"; + version = "4.13.0"; + + sha256 = "0d6h1kgqq6g084jrxx4jxw98h5g0vwsxqrvk0bmapyxh2sbrg07y"; + + buildInputs = [ exo dbus-glib dbus gtk3 libxfce4ui libxfce4util libwnck3 xfconf polkit iceauth ]; + + configureFlags = [ "--with-xsession-prefix=$(out)" ]; + + NIX_CFLAGS_COMPILE = [ "-I${dbus-glib.dev}/include/dbus-1.0" + "-I${dbus.dev}/include/dbus-1.0" + "-I${dbus.lib}/lib/dbus-1.0/include" + ]; + + postPatch = '' + substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0 + substituteInPlace scripts/xflock4 --replace PATH=/bin:/usr/bin "PATH=\$PATH:$out/bin:${xorg.xset}/bin" + ''; + + meta = { + description = "Session manager for Xfce"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-settings/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-settings/default.nix new file mode 100644 index 000000000000..6eb917fd76fd --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-settings/default.nix @@ -0,0 +1,38 @@ +{ mkXfceDerivation, automakeAddFlags, exo, garcon, gtk3 +, libnotify ? null, libxfce4ui, libxfce4util, libxklavier ? null +, upower ? null, xfconf, xf86inputlibinput ? null }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfce4-settings"; + version = "4.13.4"; + + sha256 = "0qnnpvcs2hpfq3n4byjwq343p95i9xw96rq7ym4md4mahnk176dy"; + + postPatch = '' + automakeAddFlags xfce4-settings-editor/Makefile.am xfce4_settings_editor_CFLAGS DBUS_GLIB_CFLAGS + for f in $(find . -name \*.c); do + substituteInPlace $f --replace \"libinput-properties.h\" '<xorg/libinput-properties.h>' + done + ''; + + nativeBuildInputs = [ automakeAddFlags ]; + + buildInputs = [ + exo + garcon + gtk3 + libnotify + libxfce4ui + libxfce4util + libxklavier + upower + xfconf + xf86inputlibinput + ]; + + configureFlags = [ + "--enable-pluggable-dialogs" + "--enable-sound-settings" + ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-taskmanager/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-taskmanager/default.nix new file mode 100644 index 000000000000..d9a5991598bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-taskmanager/default.nix @@ -0,0 +1,18 @@ +{ lib, mkXfceDerivation, exo, gtk2, gtk3 ? null, libwnck3 ? null, libXmu }: + +let + inherit (lib) enableFeature; +in + +mkXfceDerivation rec { + category = "apps"; + pname = "xfce4-taskmanager"; + version = "1.2.1"; + + sha256 = "1p0496r1fb5zqvn6c41kb6rjqwlqghqahgg6hkzw0gjy911im99w"; + + nativeBuildInputs = [ exo ]; + buildInputs = [ gtk2 gtk3 libwnck3 libXmu ]; + + configureFlags = [ (enableFeature (gtk3 != null) "gtk3") ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-terminal/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-terminal/default.nix new file mode 100644 index 000000000000..6bc88ee76611 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-terminal/default.nix @@ -0,0 +1,16 @@ +{ mkXfceDerivation, gtk3, libxfce4ui, wrapGAppsHook, vte }: + +mkXfceDerivation rec { + category = "apps"; + pname = "xfce4-terminal"; + version = "0.8.7.4"; + + sha256 = "1s1dq560icg602jjb2ja58x7hxg4ikp3jrrf74v3qgi0ir950k2y"; + + buildInputs = [ gtk3 libxfce4ui vte ]; + nativeBuildInputs = [ wrapGAppsHook ]; + + meta = { + description = "A modern terminal emulator"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-volumed-pulse/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-volumed-pulse/default.nix new file mode 100644 index 000000000000..626451c70d63 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-volumed-pulse/default.nix @@ -0,0 +1,15 @@ +{ lib, mkXfceDerivation, gtk3, libnotify ? null, libpulseaudio, keybinder3, xfconf }: + +mkXfceDerivation rec { + category = "apps"; + pname = "xfce4-volumed-pulse"; + version = "0.2.3"; + + sha256 = "1rsjng9qmq7vzrx5bfxq76h63y501cfl1mksrxkf1x39by9r628j"; + + buildInputs = [ gtk3 libnotify libpulseaudio keybinder3 xfconf ]; + + meta = with lib; { + license = licenses.gpl3Plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-whiskermenu-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-whiskermenu-plugin/default.nix new file mode 100644 index 000000000000..41a1ef82932b --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-whiskermenu-plugin/default.nix @@ -0,0 +1,18 @@ +{ mkXfceDerivation, dbus-glib, gtk3, cmake, exo, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation rec { + category = "panel-plugins"; + pname = "xfce4-whiskermenu-plugin"; + version = "2.2.0"; + rev = "v${version}"; + sha256 = "1d35xxkdzw8pl3d5ps226mmrrjk0hqczsbvl5smh7l7jbwfambjm"; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ dbus-glib exo garcon gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ]; + + postInstall = '' + substituteInPlace $out/bin/xfce4-popup-whiskermenu \ + --replace $out/bin/xfce4-panel ${xfce4-panel.out}/bin/xfce4-panel + ''; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-xkb-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-xkb-plugin/default.nix new file mode 100644 index 000000000000..a024d3a88ba0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-xkb-plugin/default.nix @@ -0,0 +1,11 @@ +{ mkXfceDerivation, gtk3, librsvg, libwnck3, libxklavier, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }: + +mkXfceDerivation rec { + category = "panel-plugins"; + pname = "xfce4-xkb-plugin"; + version = "0.8.1"; + rev = version; + sha256 = "1gyky4raynp2ggdnq0g96c6646fjm679fzipcsmf1q0aymr8d5ky"; + + buildInputs = [ garcon gtk3 librsvg libxfce4ui libxfce4util libxklavier libwnck3 xfce4-panel xfconf ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfconf/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfconf/default.nix new file mode 100644 index 000000000000..def60bcfe21c --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfconf/default.nix @@ -0,0 +1,11 @@ +{ mkXfceDerivation, libxfce4util }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfconf"; + version = "4.13.5"; + + sha256 = "0xpnwb04yw5qdn0bj8b740a7rmiy316vhja5pp8p6sdiqm32yi8a"; + + buildInputs = [ libxfce4util ]; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfdesktop/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfdesktop/default.nix new file mode 100644 index 000000000000..0209b7913602 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfdesktop/default.nix @@ -0,0 +1,22 @@ +{ mkXfceDerivation, exo, gtk3, libxfce4ui, libxfce4util, libwnck3, xfconf }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfdesktop"; + version = "4.13.2"; + + sha256 = "0v6dlhraqh9v20qciyj03cbjmg3jb6gvmf0hqzavxqi2di3mv5fl"; + + buildInputs = [ + exo + gtk3 + libxfce4ui + libxfce4util + libwnck3 + xfconf + ]; + + meta = { + description = "Xfce's desktop manager"; + }; +} diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfwm4/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfwm4/default.nix new file mode 100644 index 000000000000..97d414d66932 --- /dev/null +++ b/nixpkgs/pkgs/desktops/xfce4-13/xfwm4/default.nix @@ -0,0 +1,26 @@ +{ mkXfceDerivation, exo, dbus-glib, epoxy, gtk2, libXdamage +, libstartup_notification, libxfce4ui, libxfce4util, libwnck +, libXpresent, xfconf }: + +mkXfceDerivation rec { + category = "xfce"; + pname = "xfwm4"; + version = "4.13.0"; + + sha256 = "19ikyls4xawsbz07qdz60g5yl2jbvpb90sfy5zql7ghypd69cgn9"; + + nativeBuildInputs = [ exo ]; + + buildInputs = [ + dbus-glib + epoxy + gtk2 + libXdamage + libstartup_notification + libxfce4ui + libxfce4util + libwnck + libXpresent + xfconf + ]; +} |