Merge pull request #216737 from FedericoSchonborn/budgie
Budgie Desktop
This commit is contained in:
commit
28031f7579
@ -47,6 +47,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- [stevenblack-blocklist](https://github.com/StevenBlack/hosts), A unified hosts file with base extensions for blocking unwanted websites. Available as [networking.stevenblack](options.html#opt-networking.stevenblack.enable).
|
||||
|
||||
- [Budgie Desktop](https://github.com/BuddiesOfBudgie/budgie-desktop), a familiar, modern desktop environment. Availabe as [services.xserver.desktopManager.budgie](options.html#opt-services.xserver.desktopManager.budgie).
|
||||
|
||||
- [imaginary](https://github.com/h2non/imaginary), a microservice for high-level image processing that Nextcloud can use to generate previews. Available as [services.imaginary](#opt-services.imaginary.enable).
|
||||
|
||||
- [opensearch](https://opensearch.org), a search server alternative to Elasticsearch. Available as [services.opensearch](options.html#opt-services.opensearch.enable).
|
||||
|
201
nixos/modules/services/x11/desktop-managers/budgie.nix
Normal file
201
nixos/modules/services/x11/desktop-managers/budgie.nix
Normal file
@ -0,0 +1,201 @@
|
||||
{ lib, pkgs, config, utils, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) concatMapStrings literalExpression mdDoc mkDefault mkEnableOption mkIf mkOption types;
|
||||
|
||||
cfg = config.services.xserver.desktopManager.budgie;
|
||||
|
||||
nixos-background-light = pkgs.nixos-artwork.wallpapers.nineish;
|
||||
nixos-background-dark = pkgs.nixos-artwork.wallpapers.nineish-dark-gray;
|
||||
|
||||
nixos-gsettings-overrides = pkgs.budgie.budgie-gsettings-overrides.override {
|
||||
inherit (cfg) extraGSettingsOverrides extraGSettingsOverridePackages;
|
||||
inherit nixos-background-dark nixos-background-light;
|
||||
};
|
||||
in {
|
||||
options = {
|
||||
services.xserver.desktopManager.budgie = {
|
||||
enable = mkEnableOption (mdDoc "Budgie desktop");
|
||||
|
||||
sessionPath = mkOption {
|
||||
description = mdDoc "Additional list of packages to be added to the session search path. Useful for GSettings-conditional autostart.";
|
||||
type = with types; listOf package;
|
||||
example = literalExpression "[ pkgs.budgie.budgie-desktop-view ]";
|
||||
default = [];
|
||||
};
|
||||
|
||||
extraGSettingsOverrides = mkOption {
|
||||
description = mdDoc "Additional GSettings overrides.";
|
||||
type = types.lines;
|
||||
default = "";
|
||||
};
|
||||
|
||||
extraGSettingsOverridePackages = mkOption {
|
||||
description = mdDoc "List of packages for which GSettings are overridden.";
|
||||
type = with types; listOf path;
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
|
||||
environment.budgie.excludePackages = mkOption {
|
||||
description = mdDoc "Which packages Budgie should exclude from the default environment.";
|
||||
type = with types; listOf package;
|
||||
default = [];
|
||||
example = literalExpression "[ pkgs.mate-terminal ]";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.displayManager.sessionPackages = with pkgs; [
|
||||
budgie.budgie-desktop
|
||||
];
|
||||
|
||||
services.xserver.displayManager.lightdm.greeters.slick = {
|
||||
enable = mkDefault true;
|
||||
theme = mkDefault { name = "Qogir"; package = pkgs.qogir-theme; };
|
||||
iconTheme = mkDefault { name = "Qogir"; package = pkgs.qogir-icon-theme; };
|
||||
cursorTheme = mkDefault { name = "Qogir"; package = pkgs.qogir-icon-theme; };
|
||||
};
|
||||
|
||||
services.xserver.desktopManager.budgie.sessionPath = [ pkgs.budgie.budgie-desktop-view ];
|
||||
|
||||
environment.extraInit = ''
|
||||
${concatMapStrings (p: ''
|
||||
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
|
||||
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
|
||||
fi
|
||||
if [ -d "${p}/lib/girepository-1.0" ]; then
|
||||
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
|
||||
fi
|
||||
'') cfg.sessionPath}
|
||||
'';
|
||||
|
||||
environment.systemPackages = with pkgs;
|
||||
[
|
||||
# Budgie Desktop.
|
||||
budgie.budgie-backgrounds
|
||||
budgie.budgie-control-center
|
||||
budgie.budgie-desktop
|
||||
budgie.budgie-desktop-view
|
||||
budgie.budgie-screensaver
|
||||
|
||||
# Required by the Budgie Desktop session.
|
||||
(gnome.gnome-session.override {gnomeShellSupport = false;})
|
||||
|
||||
# Required by Budgie Menu.
|
||||
gnome-menus
|
||||
|
||||
# Provides `gsettings`.
|
||||
glib
|
||||
|
||||
# Update user directories.
|
||||
xdg-user-dirs
|
||||
]
|
||||
++ (utils.removePackagesByName [
|
||||
cinnamon.nemo
|
||||
mate.eom
|
||||
mate.pluma
|
||||
mate.atril
|
||||
mate.engrampa
|
||||
mate.mate-calc
|
||||
mate.mate-terminal
|
||||
mate.mate-system-monitor
|
||||
vlc
|
||||
|
||||
# Desktop themes.
|
||||
qogir-theme
|
||||
qogir-icon-theme
|
||||
|
||||
# Default settings.
|
||||
nixos-gsettings-overrides
|
||||
] config.environment.budgie.excludePackages)
|
||||
++ cfg.sessionPath;
|
||||
|
||||
# Fonts.
|
||||
fonts.fonts = mkDefault [
|
||||
pkgs.noto-fonts
|
||||
pkgs.hack-font
|
||||
];
|
||||
fonts.fontconfig.defaultFonts = {
|
||||
sansSerif = mkDefault ["Noto Sans"];
|
||||
monospace = mkDefault ["Hack"];
|
||||
};
|
||||
|
||||
# Qt application style.
|
||||
qt = {
|
||||
enable = mkDefault true;
|
||||
style = mkDefault "gtk2";
|
||||
platformTheme = mkDefault "gtk2";
|
||||
};
|
||||
|
||||
environment.pathsToLink = [
|
||||
"/share" # TODO: https://github.com/NixOS/nixpkgs/issues/47173
|
||||
];
|
||||
|
||||
# GSettings overrides.
|
||||
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
|
||||
|
||||
# Required by Budgie Desktop.
|
||||
services.xserver.updateDbusEnvironment = true;
|
||||
programs.dconf.enable = true;
|
||||
|
||||
# Required by Budgie Screensaver.
|
||||
security.pam.services.budgie-screensaver = {};
|
||||
|
||||
# Required by Budgie's Polkit Dialog.
|
||||
security.polkit.enable = mkDefault true;
|
||||
|
||||
# Required by Budgie Panel plugins and/or Budgie Control Center panels.
|
||||
networking.networkmanager.enable = mkDefault true; # for BCC's Network panel.
|
||||
programs.nm-applet.enable = config.networking.networkmanager.enable; # Budgie has no Network applet.
|
||||
programs.nm-applet.indicator = false; # Budgie doesn't support AppIndicators.
|
||||
|
||||
hardware.bluetooth.enable = mkDefault true; # for Budgie's Status Indicator and BCC's Bluetooth panel.
|
||||
hardware.pulseaudio.enable = mkDefault true; # for Budgie's Status Indicator and BCC's Sound panel.
|
||||
|
||||
xdg.portal.enable = mkDefault true; # for BCC's Applications panel.
|
||||
xdg.portal.extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk # provides a XDG Portals implementation.
|
||||
];
|
||||
|
||||
services.geoclue2.enable = mkDefault true; # for BCC's Privacy > Location Services panel.
|
||||
services.upower.enable = config.powerManagement.enable; # for Budgie's Status Indicator and BCC's Power panel.
|
||||
services.xserver.libinput.enable = mkDefault true; # for BCC's Mouse panel.
|
||||
services.colord.enable = mkDefault true; # for BCC's Color panel.
|
||||
services.gnome.at-spi2-core.enable = mkDefault true; # for BCC's A11y panel.
|
||||
services.accounts-daemon.enable = mkDefault true; # for BCC's Users panel.
|
||||
services.fprintd.enable = mkDefault true; # for BCC's Users panel.
|
||||
services.udisks2.enable = mkDefault true; # for BCC's Details panel.
|
||||
|
||||
# For BCC's Online Accounts panel.
|
||||
services.gnome.gnome-online-accounts.enable = mkDefault true;
|
||||
services.gnome.gnome-online-miners.enable = true;
|
||||
|
||||
# For BCC's Printers panel.
|
||||
services.printing.enable = mkDefault true;
|
||||
services.system-config-printer.enable = config.services.printing.enable;
|
||||
|
||||
# For BCC's Sharing panel.
|
||||
services.dleyna-renderer.enable = mkDefault true;
|
||||
services.dleyna-server.enable = mkDefault true;
|
||||
services.gnome.gnome-user-share.enable = mkDefault true;
|
||||
services.gnome.rygel.enable = mkDefault true;
|
||||
|
||||
# Other default services.
|
||||
services.gnome.evolution-data-server.enable = mkDefault true;
|
||||
services.gnome.glib-networking.enable = mkDefault true;
|
||||
services.gnome.gnome-keyring.enable = mkDefault true;
|
||||
services.gnome.gnome-settings-daemon.enable = mkDefault true;
|
||||
services.gvfs.enable = mkDefault true;
|
||||
|
||||
# Register packages for DBus.
|
||||
services.dbus.packages = with pkgs; [
|
||||
budgie.budgie-control-center
|
||||
];
|
||||
|
||||
# Shell integration for MATE Terminal.
|
||||
programs.bash.vteIntegration = true;
|
||||
programs.zsh.vteIntegration = true;
|
||||
};
|
||||
}
|
@ -21,7 +21,7 @@ in
|
||||
./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ./lumina.nix
|
||||
./lxqt.nix ./enlightenment.nix ./gnome.nix ./retroarch.nix ./kodi.nix
|
||||
./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
|
||||
./cinnamon.nix
|
||||
./cinnamon.nix ./budgie.nix
|
||||
];
|
||||
|
||||
options = {
|
||||
|
@ -112,6 +112,7 @@ in {
|
||||
btrbk-doas = handleTest ./btrbk-doas.nix {};
|
||||
btrbk-no-timer = handleTest ./btrbk-no-timer.nix {};
|
||||
btrbk-section-order = handleTest ./btrbk-section-order.nix {};
|
||||
budgie = handleTest ./budgie.nix {};
|
||||
buildbot = handleTest ./buildbot.nix {};
|
||||
buildkite-agents = handleTest ./buildkite-agents.nix {};
|
||||
caddy = handleTest ./caddy.nix {};
|
||||
|
51
nixos/tests/budgie.nix
Normal file
51
nixos/tests/budgie.nix
Normal file
@ -0,0 +1,51 @@
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "budgie";
|
||||
|
||||
meta = with lib; {
|
||||
maintainers = [ maintainers.federicoschonborn ];
|
||||
};
|
||||
|
||||
nodes.machine = { ... }: {
|
||||
imports = [
|
||||
./common/user-account.nix
|
||||
];
|
||||
|
||||
services.xserver.enable = true;
|
||||
|
||||
services.xserver.displayManager = {
|
||||
lightdm.enable = true;
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = "alice";
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver.desktopManager.budgie.enable = true;
|
||||
};
|
||||
|
||||
testScript = { nodes, ... }:
|
||||
let
|
||||
user = nodes.machine.users.users.alice;
|
||||
in
|
||||
''
|
||||
with subtest("Wait for login"):
|
||||
machine.wait_for_x()
|
||||
machine.wait_for_file("${user.home}/.Xauthority")
|
||||
machine.succeed("xauth merge ${user.home}/.Xauthority")
|
||||
|
||||
with subtest("Check that logging in has given the user ownership of devices"):
|
||||
machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
|
||||
|
||||
with subtest("Check if Budgie session components actually start"):
|
||||
machine.wait_until_succeeds("pgrep budgie-daemon")
|
||||
machine.wait_for_window("budgie-daemon")
|
||||
machine.wait_until_succeeds("pgrep budgie-panel")
|
||||
machine.wait_for_window("budgie-panel")
|
||||
|
||||
with subtest("Open MATE terminal"):
|
||||
machine.succeed("su - ${user.name} -c 'DISPLAY=:0 mate-terminal >&2 &'")
|
||||
machine.wait_for_window("Terminal")
|
||||
machine.sleep(20)
|
||||
machine.screenshot("screen")
|
||||
'';
|
||||
})
|
40
pkgs/desktops/budgie/budgie-backgrounds/default.nix
Normal file
40
pkgs/desktops/budgie/budgie-backgrounds/default.nix
Normal file
@ -0,0 +1,40 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, imagemagick
|
||||
, jhead
|
||||
, meson
|
||||
, ninja
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "budgie-backgrounds";
|
||||
version = "0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "BuddiesOfBudgie";
|
||||
repo = "budgie-backgrounds";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-pDFd+WvWOPgDoSffmX9mzjDQbhePsJV1wGqmPDcnOlw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
imagemagick
|
||||
jhead
|
||||
meson
|
||||
ninja
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
chmod +x ./scripts/optimizeImage.sh
|
||||
patchShebangs ./scripts/optimizeImage.sh
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "The default background set for the Budgie Desktop";
|
||||
homepage = "https://github.com/BuddiesOfBudgie/budgie-backgrounds";
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.federicoschonborn ];
|
||||
license = licenses.cc0;
|
||||
};
|
||||
}
|
175
pkgs/desktops/budgie/budgie-control-center/default.nix
Normal file
175
pkgs/desktops/budgie/budgie-control-center/default.nix
Normal file
@ -0,0 +1,175 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, substituteAll
|
||||
, accountsservice
|
||||
, budgie-desktop
|
||||
, clutter
|
||||
, clutter-gtk
|
||||
, colord
|
||||
, colord-gtk
|
||||
, cups
|
||||
, docbook-xsl-nons
|
||||
, fontconfig
|
||||
, gcr
|
||||
, gdk-pixbuf
|
||||
, gettext
|
||||
, glib
|
||||
, glib-networking
|
||||
, glibc
|
||||
, gnome
|
||||
, gnome-desktop
|
||||
, gnome-online-accounts
|
||||
, gsettings-desktop-schemas
|
||||
, gsound
|
||||
, gtk3
|
||||
, ibus
|
||||
, libcanberra-gtk3
|
||||
, libepoxy
|
||||
, libgnomekbd
|
||||
, libgtop
|
||||
, libgudev
|
||||
, libhandy
|
||||
, libkrb5
|
||||
, libnma
|
||||
, libpulseaudio
|
||||
, libpwquality
|
||||
, librsvg
|
||||
, libsecret
|
||||
, libwacom
|
||||
, libxml2
|
||||
, libxslt
|
||||
, meson
|
||||
, modemmanager
|
||||
, networkmanager
|
||||
, networkmanagerapplet
|
||||
, ninja
|
||||
, pkg-config
|
||||
, polkit
|
||||
, samba
|
||||
, shadow
|
||||
, shared-mime-info
|
||||
, tzdata
|
||||
, udisks2
|
||||
, upower
|
||||
, webp-pixbuf-loader
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "budgie-control-center";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "BuddiesOfBudgie";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-z9apestNLEUKzrCMNo0BNAWeyE6FsUCAzcHIom8LcUs=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(substituteAll {
|
||||
src = ./paths.patch;
|
||||
budgie_desktop = budgie-desktop;
|
||||
gcm = gnome.gnome-color-manager;
|
||||
inherit cups glibc libgnomekbd shadow;
|
||||
inherit networkmanagerapplet tzdata;
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
docbook-xsl-nons
|
||||
gettext
|
||||
libxslt
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
shared-mime-info
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
accountsservice
|
||||
clutter
|
||||
clutter-gtk
|
||||
colord
|
||||
colord-gtk
|
||||
fontconfig
|
||||
gcr
|
||||
gdk-pixbuf
|
||||
glib
|
||||
glib-networking
|
||||
gnome-desktop
|
||||
gnome-online-accounts
|
||||
gnome.adwaita-icon-theme
|
||||
gnome.cheese
|
||||
gnome.gnome-bluetooth_1_0
|
||||
gnome.gnome-remote-desktop
|
||||
gnome.gnome-settings-daemon
|
||||
gnome.gnome-user-share
|
||||
gnome.mutter
|
||||
gsettings-desktop-schemas
|
||||
gsound
|
||||
gtk3
|
||||
ibus
|
||||
libcanberra-gtk3
|
||||
libepoxy
|
||||
libgtop
|
||||
libgudev
|
||||
libhandy
|
||||
libkrb5
|
||||
libnma
|
||||
libpulseaudio
|
||||
libpwquality
|
||||
librsvg
|
||||
libsecret
|
||||
libwacom
|
||||
libxml2
|
||||
modemmanager
|
||||
networkmanager
|
||||
polkit
|
||||
samba
|
||||
udisks2
|
||||
upower
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
# For ITS rules
|
||||
addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# Pull in WebP support for gnome-backgrounds.
|
||||
# In postInstall to run before gappsWrapperArgsHook.
|
||||
export GDK_PIXBUF_MODULE_FILE="${gnome._gdkPixbufCacheBuilder_DO_NOT_USE {
|
||||
extraLoaders = [
|
||||
librsvg
|
||||
webp-pixbuf-loader
|
||||
];
|
||||
}}"
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
# Sound theme
|
||||
--prefix XDG_DATA_DIRS : "${budgie-desktop}/share"
|
||||
# Thumbnailers (for setting user profile pictures)
|
||||
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
|
||||
--prefix XDG_DATA_DIRS : "${librsvg}/share"
|
||||
# WM keyboard shortcuts
|
||||
--prefix XDG_DATA_DIRS : "${gnome.mutter}/share"
|
||||
)
|
||||
'';
|
||||
|
||||
separateDebugInfo = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A fork of GNOME Control Center for the Budgie 10 Series";
|
||||
homepage = "https://github.com/BuddiesOfBudgie/budgie-control-center";
|
||||
mainProgram = "budgie-control-center";
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.federicoschonborn ];
|
||||
license = licenses.gpl2Plus;
|
||||
};
|
||||
}
|
185
pkgs/desktops/budgie/budgie-control-center/paths.patch
Normal file
185
pkgs/desktops/budgie/budgie-control-center/paths.patch
Normal file
@ -0,0 +1,185 @@
|
||||
diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
|
||||
index a2f90b093..7801b4a5e 100644
|
||||
--- a/panels/color/cc-color-panel.c
|
||||
+++ b/panels/color/cc-color-panel.c
|
||||
@@ -587,7 +587,7 @@ gcm_prefs_calibrate_cb (CcColorPanel *prefs)
|
||||
|
||||
/* run with modal set */
|
||||
argv = g_ptr_array_new_with_free_func (g_free);
|
||||
- g_ptr_array_add (argv, g_strdup ("gcm-calibrate"));
|
||||
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-calibrate", NULL));
|
||||
g_ptr_array_add (argv, g_strdup ("--device"));
|
||||
g_ptr_array_add (argv, g_strdup (cd_device_get_id (prefs->current_device)));
|
||||
g_ptr_array_add (argv, g_strdup ("--parent-window"));
|
||||
@@ -940,7 +940,7 @@ gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile)
|
||||
|
||||
/* open up gcm-viewer as a info pane */
|
||||
argv = g_ptr_array_new_with_free_func (g_free);
|
||||
- g_ptr_array_add (argv, g_strdup ("gcm-viewer"));
|
||||
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL));
|
||||
g_ptr_array_add (argv, g_strdup ("--profile"));
|
||||
g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile)));
|
||||
g_ptr_array_add (argv, g_strdup ("--parent-window"));
|
||||
@@ -1186,15 +1186,12 @@ gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device)
|
||||
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);
|
||||
diff --git a/panels/datetime/tz.h b/panels/datetime/tz.h
|
||||
index b6b7ab9d0..31f268e91 100644
|
||||
--- a/panels/datetime/tz.h
|
||||
+++ b/panels/datetime/tz.h
|
||||
@@ -4,7 +4,7 @@
|
||||
* Copyright (C) 2000-2001 Ximian, Inc.
|
||||
*
|
||||
* Authors: Hans Petter Jansson <hpj@ximian.com>
|
||||
- *
|
||||
+ *
|
||||
* Largely based on Michael Fulbright's work on Anaconda.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -27,11 +27,7 @@
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
-#ifndef __sun
|
||||
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
|
||||
-#else
|
||||
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
|
||||
-#endif
|
||||
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
|
||||
|
||||
typedef struct _TzDB TzDB;
|
||||
typedef struct _TzLocation TzLocation;
|
||||
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
|
||||
index 25cda02d3..db664bc56 100644
|
||||
--- a/panels/info-overview/cc-info-overview-panel.c
|
||||
+++ b/panels/info-overview/cc-info-overview-panel.c
|
||||
@@ -156,7 +156,7 @@ load_budgie_version (char **version)
|
||||
gsize length;
|
||||
g_autoptr(VersionData) data = NULL;
|
||||
|
||||
- if (!g_file_get_contents (DATADIR "/budgie/budgie-version.xml",
|
||||
+ if (!g_file_get_contents ("@budgie_desktop@/share/budgie/budgie-version.xml",
|
||||
&contents,
|
||||
&length,
|
||||
&error))
|
||||
diff --git a/panels/keyboard/cc-input-list-box.c b/panels/keyboard/cc-input-list-box.c
|
||||
index 191207490..37e0fddc2 100644
|
||||
--- a/panels/keyboard/cc-input-list-box.c
|
||||
+++ b/panels/keyboard/cc-input-list-box.c
|
||||
@@ -62,7 +62,7 @@ struct _CcInputListBox {
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (CcInputListBox, cc_input_list_box, GTK_TYPE_LIST_BOX)
|
||||
-
|
||||
+
|
||||
typedef struct
|
||||
{
|
||||
CcInputListBox *panel;
|
||||
@@ -223,10 +223,10 @@ row_layout_cb (CcInputListBox *self,
|
||||
layout_variant = cc_input_source_get_layout_variant (source);
|
||||
|
||||
if (layout_variant && layout_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, 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);
|
||||
diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c
|
||||
index 505b8ee25..62e94009f 100644
|
||||
--- a/panels/network/connection-editor/net-connection-editor.c
|
||||
+++ b/panels/network/connection-editor/net-connection-editor.c
|
||||
@@ -267,9 +267,9 @@ net_connection_editor_do_fallback (NetConnectionEditor *self, const gchar *type)
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
if (self->is_new_connection) {
|
||||
- cmdline = g_strdup_printf ("nm-connection-editor --type='%s' --create", type);
|
||||
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --type='%s' --create", type);
|
||||
} else {
|
||||
- cmdline = g_strdup_printf ("nm-connection-editor --edit='%s'",
|
||||
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit='%s'",
|
||||
nm_connection_get_uuid (self->connection));
|
||||
}
|
||||
|
||||
diff --git a/panels/network/net-device-bluetooth.c b/panels/network/net-device-bluetooth.c
|
||||
index 372c0c4f8..464f4b6a0 100644
|
||||
--- a/panels/network/net-device-bluetooth.c
|
||||
+++ b/panels/network/net-device-bluetooth.c
|
||||
@@ -141,7 +141,7 @@ options_button_clicked_cb (NetDeviceBluetooth *self)
|
||||
|
||||
connection = net_device_get_find_connection (self->client, self->device);
|
||||
uuid = nm_connection_get_uuid (connection);
|
||||
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
|
||||
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
|
||||
g_debug ("Launching '%s'\n", cmdline);
|
||||
if (!g_spawn_command_line_async (cmdline, &error))
|
||||
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
|
||||
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
|
||||
index f50fd5d07..c6f6f776e 100644
|
||||
--- a/panels/network/net-device-mobile.c
|
||||
+++ b/panels/network/net-device-mobile.c
|
||||
@@ -522,7 +522,7 @@ options_button_clicked_cb (NetDeviceMobile *self)
|
||||
|
||||
connection = net_device_get_find_connection (self->client, self->device);
|
||||
uuid = nm_connection_get_uuid (connection);
|
||||
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
|
||||
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
|
||||
g_debug ("Launching '%s'\n", cmdline);
|
||||
if (!g_spawn_command_line_async (cmdline, &error))
|
||||
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
|
||||
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
|
||||
index a31a606e3..ed5133d29 100644
|
||||
--- a/panels/printers/pp-host.c
|
||||
+++ b/panels/printers/pp-host.c
|
||||
@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask *task,
|
||||
devices = g_ptr_array_new_with_free_func (g_object_unref);
|
||||
|
||||
argv = g_new0 (gchar *, 3);
|
||||
- argv[0] = g_strdup ("/usr/lib/cups/backend/snmp");
|
||||
+ argv[0] = g_strdup ("@cups@/lib/cups/backend/snmp");
|
||||
argv[1] = g_strdup (priv->hostname);
|
||||
|
||||
/* Use SNMP to get printer's informations */
|
||||
diff --git a/panels/user-accounts/run-passwd.c b/panels/user-accounts/run-passwd.c
|
||||
index 86f53d4fc..0b052856f 100644
|
||||
--- a/panels/user-accounts/run-passwd.c
|
||||
+++ b/panels/user-accounts/run-passwd.c
|
||||
@@ -150,7 +150,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error)
|
||||
gchar **envp;
|
||||
gint my_stdin, my_stdout, my_stderr;
|
||||
|
||||
- argv[0] = "/usr/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
|
||||
+ argv[0] = "/run/wrappers/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
|
||||
argv[1] = NULL;
|
||||
|
||||
envp = g_get_environ ();
|
||||
diff --git a/panels/user-accounts/user-utils.c b/panels/user-accounts/user-utils.c
|
||||
index 0de83479e..628e35247 100644
|
||||
--- a/panels/user-accounts/user-utils.c
|
||||
+++ b/panels/user-accounts/user-utils.c
|
||||
@@ -497,7 +497,7 @@ is_valid_username_async (const gchar *username,
|
||||
* future, so it would be nice to have some official way for this
|
||||
* instead of relying on the current "--login" implementation.
|
||||
*/
|
||||
- argv[0] = "/usr/sbin/usermod";
|
||||
+ argv[0] = "@shadow@/bin/usermod";
|
||||
argv[1] = "--login";
|
||||
argv[2] = data->username;
|
||||
argv[3] = "--";
|
53
pkgs/desktops/budgie/budgie-desktop-view/default.nix
Normal file
53
pkgs/desktops/budgie/budgie-desktop-view/default.nix
Normal file
@ -0,0 +1,53 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, desktop-file-utils
|
||||
, glib
|
||||
, gtk3
|
||||
, intltool
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, vala
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "budgie-desktop-view";
|
||||
version = "1.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "BuddiesOfBudgie";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-USsySJuDov2oe9UXyzACBAyYIRLKSXOMXdia8Ix/8TE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
desktop-file-utils
|
||||
intltool
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
vala
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glib
|
||||
gtk3
|
||||
];
|
||||
|
||||
preInstall = ''
|
||||
substituteInPlace ../scripts/mesonPostInstall.sh --replace "update-desktop-database -q" "update-desktop-database $out/share/applications"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "The official Budgie desktop icons application/implementation";
|
||||
homepage = "https://github.com/BuddiesOfBudgie/budgie-desktop-view";
|
||||
mainProgram = "org.buddiesofbudgie.budgie-desktop-view";
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.federicoschonborn ];
|
||||
license = licenses.asl20;
|
||||
};
|
||||
}
|
101
pkgs/desktops/budgie/budgie-desktop/default.nix
Normal file
101
pkgs/desktops/budgie/budgie-desktop/default.nix
Normal file
@ -0,0 +1,101 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, accountsservice
|
||||
, alsa-lib
|
||||
, budgie-screensaver
|
||||
, docbook-xsl-nons
|
||||
, glib
|
||||
, gnome
|
||||
, gnome-desktop
|
||||
, gnome-menus
|
||||
, graphene
|
||||
, gst_all_1
|
||||
, gtk-doc
|
||||
, gtk3
|
||||
, ibus
|
||||
, intltool
|
||||
, libcanberra-gtk3
|
||||
, libgee
|
||||
, libGL
|
||||
, libnotify
|
||||
, libpeas
|
||||
, libpulseaudio
|
||||
, libuuid
|
||||
, libwnck
|
||||
, mesa
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, polkit
|
||||
, sassc
|
||||
, upower
|
||||
, vala
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "budgie-desktop";
|
||||
version = "10.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "BuddiesOfBudgie";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-ww65J9plixbxFza6xCfaz1WYtT9giKkLVH1XYxH41+0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
docbook-xsl-nons
|
||||
gtk-doc
|
||||
intltool
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
vala
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
accountsservice
|
||||
alsa-lib
|
||||
budgie-screensaver
|
||||
glib
|
||||
gnome-desktop
|
||||
gnome-menus
|
||||
gnome.gnome-bluetooth_1_0
|
||||
gnome.gnome-settings-daemon
|
||||
gnome.mutter
|
||||
graphene
|
||||
gtk3
|
||||
ibus
|
||||
libcanberra-gtk3
|
||||
libgee
|
||||
libGL
|
||||
libnotify
|
||||
libpeas
|
||||
libpulseaudio
|
||||
libuuid
|
||||
libwnck
|
||||
mesa
|
||||
polkit
|
||||
sassc
|
||||
upower
|
||||
] ++ (with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
]);
|
||||
|
||||
passthru.providedSessions = [
|
||||
"budgie-desktop"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A feature-rich, modern desktop designed to keep out the way of the user";
|
||||
homepage = "https://github.com/BuddiesOfBudgie/budgie-desktop";
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.federicoschonborn ];
|
||||
license = with licenses; [ gpl2Plus lgpl21Plus cc-by-sa-30];
|
||||
};
|
||||
}
|
78
pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix
Normal file
78
pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix
Normal file
@ -0,0 +1,78 @@
|
||||
{ lib
|
||||
, runCommand
|
||||
, budgie-desktop
|
||||
, budgie-desktop-view
|
||||
, glib
|
||||
, gnome
|
||||
, gsettings-desktop-schemas
|
||||
, mate
|
||||
, nixos-artwork
|
||||
, nixos-background-light ? nixos-artwork.wallpapers.nineish
|
||||
, nixos-background-dark ? nixos-artwork.wallpapers.nineish-dark-gray
|
||||
, extraGSettingsOverrides ? ""
|
||||
, extraGSettingsOverridePackages ? []
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) concatMapStringsSep;
|
||||
|
||||
gsettingsOverrides = ''
|
||||
[org.gnome.desktop.background:Budgie]
|
||||
picture-uri="file://${nixos-background-light.gnomeFilePath}"
|
||||
picture-uri-dark="file://${nixos-background-dark.gnomeFilePath}"
|
||||
|
||||
[org.gnome.desktop.screensaver:Budgie]
|
||||
picture-uri="file://${nixos-background-dark.gnomeFilePath}"
|
||||
|
||||
[org.gnome.desktop.interface:Budgie]
|
||||
gtk-theme="Qogir"
|
||||
icon-theme="Qogir"
|
||||
cursor-theme="Qogir"
|
||||
font-name="Noto Sans 10"
|
||||
document-font-name="Noto Sans 10"
|
||||
monospace-font-name="Hack 10"
|
||||
enable-hot-corners=true
|
||||
|
||||
[org.gnome.desktop.wm.preferences:Budgie]
|
||||
titlebar-font="Noto Sans Bold 10"
|
||||
|
||||
[org.gnome.mutter:Budgie]
|
||||
workspaces-only-on-primary=true
|
||||
|
||||
[com.solus-project.budgie-panel:Budgie]
|
||||
dark-theme=false
|
||||
builtin-theme=false
|
||||
|
||||
[com.solus-project.icon-tasklist:Budgie]
|
||||
pinned-launchers=["nemo.desktop", "vlc.desktop", "mate-terminal.desktop"]
|
||||
|
||||
[org.buddiesofbudgie.budgie-desktop-view:Budgie]
|
||||
show=true
|
||||
click-policy="double"
|
||||
terminal="${mate.mate-terminal}/bin/mate-terminal"
|
||||
|
||||
${extraGSettingsOverrides}
|
||||
'';
|
||||
|
||||
gsettingsOverridePackages = [
|
||||
budgie-desktop
|
||||
budgie-desktop-view
|
||||
gsettings-desktop-schemas
|
||||
gnome.mutter
|
||||
] ++ extraGSettingsOverridePackages;
|
||||
|
||||
in
|
||||
runCommand "budgie-gsettings-overrides" { preferLocalBuild = true; } ''
|
||||
data_dir="$out/share/gsettings-schemas/nixos-gsettings-overrides"
|
||||
schema_dir="$data_dir/glib-2.0/schemas"
|
||||
mkdir -p "$schema_dir"
|
||||
|
||||
${concatMapStringsSep "\n" (pkg: "cp -rf \"${glib.getSchemaPath pkg}\"/*.xml \"${glib.getSchemaPath pkg}\"/*.gschema.override \"$schema_dir\"") gsettingsOverridePackages}
|
||||
|
||||
chmod -R a+w "$data_dir"
|
||||
cat - > "$schema_dir/zz-nixos-defaults.gschema.override" <<- EOF
|
||||
${gsettingsOverrides}
|
||||
EOF
|
||||
|
||||
${glib.dev}/bin/glib-compile-schemas --strict "$schema_dir"
|
||||
''
|
@ -1,5 +1,10 @@
|
||||
{ lib, pkgs }:
|
||||
|
||||
lib.makeScope pkgs.newScope (self: with self; {
|
||||
budgie-backgrounds = callPackage ./budgie-backgrounds { };
|
||||
budgie-control-center = callPackage ./budgie-control-center { };
|
||||
budgie-desktop = callPackage ./budgie-desktop { };
|
||||
budgie-desktop-view = callPackage ./budgie-desktop-view { };
|
||||
budgie-gsettings-overrides = callPackage ./budgie-gsettings-overrides { };
|
||||
budgie-screensaver = callPackage ./budgie-screensaver { };
|
||||
})
|
||||
|
@ -25,6 +25,7 @@
|
||||
, libepoxy
|
||||
, bash
|
||||
, gnome-session-ctl
|
||||
, gnomeShellSupport ? true
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@ -113,7 +114,7 @@ stdenv.mkDerivation rec {
|
||||
wrapProgram "$out/libexec/gnome-session-binary" \
|
||||
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
|
||||
--suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \
|
||||
--suffix XDG_DATA_DIRS : "${gnome.gnome-shell}/share"\
|
||||
${lib.optionalString gnomeShellSupport "--suffix XDG_DATA_DIRS : \"${gnome.gnome-shell}/share\""} \
|
||||
--suffix XDG_CONFIG_DIRS : "${gnome.gnome-settings-daemon}/etc/xdg"
|
||||
'';
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user