129 changed files with 5013 additions and 91 deletions
-
3nixos/modules/module-list.nix
-
39nixos/modules/services/desktops/pantheon/contractor.nix
-
36nixos/modules/services/desktops/pantheon/files.nix
-
50nixos/modules/services/desktops/tumbler.nix
-
2nixos/modules/services/x11/desktop-managers/default.nix
-
195nixos/modules/services/x11/desktop-managers/pantheon.nix
-
47nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix
-
1nixos/modules/services/x11/display-managers/lightdm.nix
-
1nixos/release-combined.nix
-
55nixos/tests/pantheon.nix
-
8pkgs/applications/audio/vocal/default.nix
-
12pkgs/applications/editors/quilter/default.nix
-
10pkgs/applications/misc/notejot/default.nix
-
18pkgs/applications/misc/regextester/default.nix
-
8pkgs/applications/misc/sequeler/default.nix
-
9pkgs/applications/misc/tootle/default.nix
-
6pkgs/applications/networking/ftp/taxi/default.nix
-
20pkgs/applications/networking/transporter/default.nix
-
2pkgs/applications/networking/weather/meteo/default.nix
-
8pkgs/applications/office/aesop/default.nix
-
12pkgs/applications/office/bookworm/default.nix
-
17pkgs/applications/office/spice-up/default.nix
-
14pkgs/applications/science/math/nasc/default.nix
-
4pkgs/data/icons/faba-icon-theme/default.nix
-
4pkgs/desktops/deepin/deepin-wm/default.nix
-
58pkgs/desktops/pantheon/apps/elementary-calculator/default.nix
-
66pkgs/desktops/pantheon/apps/elementary-calendar/default.nix
-
64pkgs/desktops/pantheon/apps/elementary-camera/default.nix
-
80pkgs/desktops/pantheon/apps/elementary-code/default.nix
-
77pkgs/desktops/pantheon/apps/elementary-files/default.nix
-
22pkgs/desktops/pantheon/apps/elementary-files/hardcode-gsettings.patch
-
78pkgs/desktops/pantheon/apps/elementary-music/default.nix
-
80pkgs/desktops/pantheon/apps/elementary-photos/default.nix
-
67pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix
-
28pkgs/desktops/pantheon/apps/elementary-screenshot-tool/redacted-script.nix
-
66pkgs/desktops/pantheon/apps/elementary-terminal/default.nix
-
64pkgs/desktops/pantheon/apps/elementary-videos/default.nix
-
45pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix
-
54pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix
-
13pkgs/desktops/pantheon/apps/switchboard-plugs/about/lspci-path.patch
-
55pkgs/desktops/pantheon/apps/switchboard-plugs/about/remove-update-button.patch
-
45pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix
-
47pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix
-
12pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/clock-format.patch
-
55pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix
-
13pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/timezone.patch
-
45pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix
-
57pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix
-
22pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/xkb.patch
-
45pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix
-
55pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix
-
43pkgs/desktops/pantheon/apps/switchboard-plugs/network/nma.patch
-
45pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix
-
56pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix
-
26pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/backgrounds.patch
-
63pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix
-
23pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/hardcode-gsettings.patch
-
64pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix
-
13pkgs/desktops/pantheon/apps/switchboard-plugs/power/dpms-helper-exec.patch
-
20pkgs/desktops/pantheon/apps/switchboard-plugs/power/hardcode-gsettings.patch
-
47pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix
-
62pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix
-
36pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/hardcode-gsettings.patch
-
45pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix
-
49pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix
-
56pkgs/desktops/pantheon/apps/switchboard/default.nix
-
25pkgs/desktops/pantheon/apps/switchboard/plugs-path-env.patch
-
19pkgs/desktops/pantheon/apps/switchboard/wrapper.nix
-
35pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix
-
55pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix
-
36pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix
-
38pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix
-
222pkgs/desktops/pantheon/default.nix
-
25pkgs/desktops/pantheon/desktop/elementary-default-settings/correct-override.patch
-
60pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix
-
6pkgs/desktops/pantheon/desktop/elementary-default-settings/io.elementary.greeter.whitelist
-
2pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/gala-multitaskingview.dockitem
-
2pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.calendar.dockitem
-
2pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.music.dockitem
-
2pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.photos.dockitem
-
2pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.switchboard.dockitem
-
2pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/io.elementary.videos.dockitem
-
2pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Epiphany.dockitem
-
2pkgs/desktops/pantheon/desktop/elementary-default-settings/launchers/org.gnome.Geary.dockitem
-
25pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch
-
103pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
-
13pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch
-
13pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch
-
44pkgs/desktops/pantheon/desktop/elementary-gsettings-schemas/default.nix
-
39pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix
-
8pkgs/desktops/pantheon/desktop/elementary-session-settings/default-elementary-dockitems.desktop
-
107pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
-
50pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix
-
39pkgs/desktops/pantheon/desktop/extra-elementary-contracts/default.nix
-
34pkgs/desktops/pantheon/desktop/extra-elementary-contracts/exec-path.patch
-
66pkgs/desktops/pantheon/desktop/gala/default.nix
-
22pkgs/desktops/pantheon/desktop/gala/plugins-dir.patch
-
24pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/bc.patch
-
72pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix
-
13pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/xdg.patch
@ -0,0 +1,39 @@ |
|||
# Contractor |
|||
|
|||
{ config, pkgs, lib, ... }: |
|||
|
|||
with lib; |
|||
|
|||
{ |
|||
|
|||
###### interface |
|||
|
|||
options = { |
|||
|
|||
services.pantheon.contractor = { |
|||
|
|||
enable = mkEnableOption "contractor, a desktop-wide extension service used by pantheon"; |
|||
|
|||
}; |
|||
|
|||
}; |
|||
|
|||
|
|||
###### implementation |
|||
|
|||
config = mkIf config.services.pantheon.contractor.enable { |
|||
|
|||
environment.systemPackages = with pkgs.pantheon; [ |
|||
contractor |
|||
extra-elementary-contracts |
|||
]; |
|||
|
|||
services.dbus.packages = [ pkgs.pantheon.contractor ]; |
|||
|
|||
environment.pathsToLink = [ |
|||
"/share/contractor" |
|||
]; |
|||
|
|||
}; |
|||
|
|||
} |
@ -0,0 +1,36 @@ |
|||
# pantheon files daemon. |
|||
|
|||
{ config, pkgs, lib, ... }: |
|||
|
|||
with lib; |
|||
|
|||
{ |
|||
|
|||
###### interface |
|||
|
|||
options = { |
|||
|
|||
services.pantheon.files = { |
|||
|
|||
enable = mkEnableOption "pantheon files daemon"; |
|||
|
|||
}; |
|||
|
|||
}; |
|||
|
|||
|
|||
###### implementation |
|||
|
|||
config = mkIf config.services.pantheon.files.enable { |
|||
|
|||
environment.systemPackages = [ |
|||
pkgs.pantheon.elementary-files |
|||
]; |
|||
|
|||
services.dbus.packages = [ |
|||
pkgs.pantheon.elementary-files |
|||
]; |
|||
|
|||
}; |
|||
|
|||
} |
@ -0,0 +1,50 @@ |
|||
# Tumbler |
|||
|
|||
{ config, pkgs, lib, ... }: |
|||
|
|||
with lib; |
|||
|
|||
let |
|||
|
|||
cfg = config.services.tumbler; |
|||
tumbler = cfg.package; |
|||
|
|||
in |
|||
|
|||
{ |
|||
|
|||
###### interface |
|||
|
|||
options = { |
|||
|
|||
services.tumbler = { |
|||
|
|||
enable = mkEnableOption "Tumbler, A D-Bus thumbnailer service"; |
|||
|
|||
package = mkOption { |
|||
type = types.package; |
|||
default = pkgs.xfce4-13.tumbler; |
|||
description = "Which tumbler package to use"; |
|||
example = pkgs.xfce4-12.tumbler; |
|||
}; |
|||
|
|||
}; |
|||
|
|||
}; |
|||
|
|||
|
|||
###### implementation |
|||
|
|||
config = mkIf cfg.enable { |
|||
|
|||
environment.systemPackages = [ |
|||
tumbler |
|||
]; |
|||
|
|||
services.dbus.packages = [ |
|||
tumbler |
|||
]; |
|||
|
|||
}; |
|||
|
|||
} |
@ -0,0 +1,195 @@ |
|||
{ config, lib, pkgs, ... }: |
|||
|
|||
with lib; |
|||
|
|||
let |
|||
|
|||
cfg = config.services.xserver.desktopManager.pantheon; |
|||
|
|||
nixos-gsettings-desktop-schemas = pkgs.pantheon.elementary-gsettings-schemas.override { |
|||
extraGSettingsOverridePackages = cfg.extraGSettingsOverridePackages; |
|||
extraGSettingsOverrides = cfg.extraGSettingsOverrides; |
|||
}; |
|||
|
|||
in |
|||
|
|||
{ |
|||
options = { |
|||
|
|||
services.xserver.desktopManager.pantheon = { |
|||
enable = mkOption { |
|||
type = types.bool; |
|||
default = false; |
|||
description = "Enable the pantheon desktop manager"; |
|||
}; |
|||
|
|||
sessionPath = mkOption { |
|||
default = []; |
|||
example = literalExample "[ pkgs.gnome3.gpaste ]"; |
|||
description = '' |
|||
Additional list of packages to be added to the session search path. |
|||
Useful for GSettings-conditional autostart. |
|||
|
|||
Note that this should be a last resort; patching the package is preferred (see GPaste). |
|||
''; |
|||
apply = list: list ++ |
|||
[ |
|||
pkgs.pantheon.pantheon-agent-geoclue2 |
|||
]; |
|||
}; |
|||
|
|||
extraGSettingsOverrides = mkOption { |
|||
default = ""; |
|||
type = types.lines; |
|||
description = "Additional gsettings overrides."; |
|||
}; |
|||
|
|||
extraGSettingsOverridePackages = mkOption { |
|||
default = []; |
|||
type = types.listOf types.path; |
|||
description = "List of packages for which gsettings are overridden."; |
|||
}; |
|||
|
|||
debug = mkEnableOption "gnome-session debug messages"; |
|||
|
|||
}; |
|||
|
|||
environment.pantheon.excludePackages = mkOption { |
|||
default = []; |
|||
example = literalExample "[ pkgs.pantheon.elementary-camera ]"; |
|||
type = types.listOf types.package; |
|||
description = "Which packages pantheon should exclude from the default environment"; |
|||
}; |
|||
|
|||
}; |
|||
|
|||
|
|||
config = mkIf cfg.enable { |
|||
|
|||
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.pantheon.elementary-session-settings ]; |
|||
|
|||
# Ensure lightdm is used when Pantheon is enabled |
|||
# Without it screen locking will be nonfunctional because of the use of lightlocker |
|||
services.xserver.displayManager.lightdm.enable = mkDefault true; |
|||
services.xserver.displayManager.lightdm.greeters.pantheon.enable = mkDefault true; |
|||
|
|||
# If not set manually Pantheon session cannot be started |
|||
# Known issue of https://github.com/NixOS/nixpkgs/pull/43992 |
|||
services.xserver.desktopManager.default = mkForce "pantheon"; |
|||
|
|||
services.xserver.displayManager.sessionCommands = '' |
|||
if test "$XDG_CURRENT_DESKTOP" = "Pantheon"; then |
|||
${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} |
|||
|
|||
# Makes qt applications look less alien |
|||
export QT_QPA_PLATFORMTHEME=gtk3 |
|||
export QT_STYLE_OVERRIDE=adwaita |
|||
fi |
|||
''; |
|||
|
|||
hardware.bluetooth.enable = mkDefault true; |
|||
hardware.pulseaudio.enable = mkDefault true; |
|||
security.polkit.enable = true; |
|||
services.accounts-daemon.enable = true; |
|||
services.bamf.enable = true; |
|||
services.colord.enable = mkDefault true; |
|||
services.pantheon.files.enable = mkDefault true; |
|||
services.tumbler.enable = mkDefault true; |
|||
services.dbus.packages = mkMerge [ |
|||
([ pkgs.pantheon.switchboard-plug-power ]) |
|||
(mkIf config.services.printing.enable ([pkgs.system-config-printer]) ) |
|||
]; |
|||
services.pantheon.contractor.enable = true; |
|||
services.geoclue2.enable = mkDefault true; |
|||
# pantheon has pantheon-agent-geoclue2 |
|||
services.geoclue2.enableDemoAgent = false; |
|||
services.gnome3.at-spi2-core.enable = true; |
|||
services.gnome3.evolution-data-server.enable = true; |
|||
# TODO: gnome-keyring's xdg autostarts will still be in the environment (from elementary-session-settings) if disabled forcefully |
|||
services.gnome3.gnome-keyring.enable = true; |
|||
services.gnome3.gvfs.enable = true; |
|||
services.gnome3.rygel.enable = true; |
|||
services.gsignond.enable = true; |
|||
services.gsignond.plugins = with pkgs.gsignondPlugins; [ lastfm mail oauth ]; |
|||
services.udev.packages = [ pkgs.pantheon.elementary-settings-daemon ]; |
|||
services.udisks2.enable = true; |
|||
services.upower.enable = config.powerManagement.enable; |
|||
services.xserver.libinput.enable = mkDefault true; |
|||
services.xserver.updateDbusEnvironment = true; |
|||
services.zeitgeist.enable = true; |
|||
|
|||
networking.networkmanager.enable = mkDefault true; |
|||
networking.networkmanager.basePackages = |
|||
{ inherit (pkgs) networkmanager modemmanager wpa_supplicant; |
|||
inherit (pkgs.gnome3) networkmanager-openvpn networkmanager-vpnc |
|||
networkmanager-openconnect networkmanager-fortisslvpn |
|||
networkmanager-iodine networkmanager-l2tp; }; |
|||
|
|||
# Override GSettings schemas |
|||
environment.variables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas"; |
|||
|
|||
environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1"; |
|||
|
|||
environment.variables.GIO_EXTRA_MODULES = [ |
|||
"${lib.getLib pkgs.gnome3.dconf}/lib/gio/modules" |
|||
"${pkgs.gnome3.glib-networking.out}/lib/gio/modules" |
|||
"${pkgs.gnome3.gvfs}/lib/gio/modules" |
|||
]; |
|||
|
|||
environment.pathsToLink = [ |
|||
# FIXME: modules should link subdirs of `/share` rather than relying on this |
|||
"/share" |
|||
]; |
|||
|
|||
environment.systemPackages = pkgs.pantheon.artwork ++ pkgs.pantheon.desktop ++ pkgs.pantheon.services ++ cfg.sessionPath |
|||
++ (pkgs.gnome3.removePackagesByName pkgs.pantheon.apps config.environment.pantheon.excludePackages) |
|||
++ (with pkgs.gnome3; |
|||
[ |
|||
adwaita-icon-theme |
|||
dconf |
|||
epiphany |
|||
evince |
|||
file-roller |
|||
geary |
|||
gnome-bluetooth |
|||
gnome-font-viewer |
|||
gnome-power-manager |
|||
]) |
|||
++ (with pkgs; |
|||
[ |
|||
adwaita-qt |
|||
desktop-file-utils |
|||
glib |
|||
glib-networking |
|||
gnome-menus |
|||
gtk3.out |
|||
hicolor-icon-theme |
|||
lightlocker |
|||
plank |
|||
qgnomeplatform |
|||
shared-mime-info |
|||
sound-theme-freedesktop |
|||
xdg-user-dirs |
|||
]); |
|||
|
|||
fonts.fonts = with pkgs; [ |
|||
opensans-ttf |
|||
roboto-mono |
|||
]; |
|||
fonts.fontconfig.defaultFonts = { |
|||
monospace = [ "Roboto Mono" ]; |
|||
sansSerif = [ "Open Sans" ]; |
|||
}; |
|||
|
|||
}; |
|||
|
|||
} |
@ -0,0 +1,47 @@ |
|||
{ config, lib, pkgs, ... }: |
|||
|
|||
with lib; |
|||
|
|||
let |
|||
|
|||
dmcfg = config.services.xserver.displayManager; |
|||
ldmcfg = dmcfg.lightdm; |
|||
cfg = ldmcfg.greeters.pantheon; |
|||
|
|||
xgreeters = pkgs.linkFarm "pantheon-greeter-xgreeters" [{ |
|||
path = "${pkgs.pantheon.elementary-greeter}/share/xgreeters/io.elementary.greeter.desktop"; |
|||
name = "io.elementary.greeter.desktop"; |
|||
}]; |
|||
|
|||
in |
|||
{ |
|||
options = { |
|||
|
|||
services.xserver.displayManager.lightdm.greeters.pantheon = { |
|||
|
|||
enable = mkOption { |
|||
type = types.bool; |
|||
default = false; |
|||
description = '' |
|||
Whether to enable elementary-greeter as the lightdm greeter. |
|||
''; |
|||
}; |
|||
|
|||
}; |
|||
|
|||
}; |
|||
|
|||
config = mkIf (ldmcfg.enable && cfg.enable) { |
|||
|
|||
services.xserver.displayManager.lightdm.greeters.gtk.enable = false; |
|||
|
|||
services.xserver.displayManager.lightdm.greeter = mkDefault { |
|||
package = xgreeters; |
|||
name = "io.elementary.greeter"; |
|||
}; |
|||
|
|||
environment.etc."lightdm/io.elementary.greeter.conf".source = "${pkgs.pantheon.elementary-greeter}/etc/lightdm/io.elementary.greeter.conf"; |
|||
environment.etc."wingpanel.d/io.elementary.greeter.whitelist".source = "${pkgs.pantheon.elementary-default-settings}/etc/wingpanel.d/io.elementary.greeter.whitelist"; |
|||
|
|||
}; |
|||
} |
@ -0,0 +1,55 @@ |
|||
import ./make-test.nix ({ pkgs, ...} : |
|||
|
|||
{ |
|||
name = "pantheon"; |
|||
meta = with pkgs.stdenv.lib.maintainers; { |
|||
maintainers = [ worldofpeace ]; |
|||
}; |
|||
|
|||
machine = { ... }: |
|||
|
|||
{ |
|||
imports = [ ./common/user-account.nix ]; |
|||
|
|||
services.xserver.enable = true; |
|||
services.xserver.desktopManager.pantheon.enable = true; |
|||
|
|||
virtualisation.memorySize = 1024; |
|||
}; |
|||
|
|||
enableOCR = true; |
|||
|
|||
testScript = { nodes, ... }: let |
|||
user = nodes.machine.config.users.users.alice; |
|||
in '' |
|||
startAll; |
|||
|
|||
# Wait for display manager to start |
|||
$machine->waitForText(qr/${user.description}/); |
|||
$machine->screenshot("lightdm"); |
|||
|
|||
# Log in |
|||
$machine->sendChars("${user.password}\n"); |
|||
$machine->waitForFile("/home/alice/.Xauthority"); |
|||
$machine->succeed("xauth merge ~alice/.Xauthority"); |
|||
|
|||
# Check if "pantheon-shell" components actually start |
|||
$machine->waitUntilSucceeds("pgrep gala"); |
|||
$machine->waitForWindow(qr/gala/); |
|||
$machine->waitUntilSucceeds("pgrep wingpanel"); |
|||
$machine->waitForWindow("wingpanel"); |
|||
$machine->waitUntilSucceeds("pgrep plank"); |
|||
$machine->waitForWindow(qr/plank/); |
|||
|
|||
# Check that logging in has given the user ownership of devices. |
|||
$machine->succeed("getfacl /dev/snd/timer | grep -q alice"); |
|||
|
|||
# Open elementary terminal |
|||
$machine->execute("su - alice -c 'DISPLAY=:0.0 io.elementary.terminal &'"); |
|||
$machine->waitForWindow(qr/io.elementary.terminal/); |
|||
|
|||
# Take a screenshot of the desktop |
|||
$machine->sleep(20); |
|||
$machine->screenshot("screen"); |
|||
''; |
|||
}) |
@ -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; |
|||
}; |
|||
} |
@ -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; |
|||
}; |
|||
} |
@ -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; |
|||
}; |
|||
} |
@ -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; |
|||
}; |
|||
} |
@ -0,0 +1,77 @@ |
|||
{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, gettext, vala |
|||
, python3, desktop-file-utils, intltool, 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.3"; |
|||
|
|||
name = "elementary-${pname}-${version}"; |
|||
|
|||
src = fetchFromGitHub { |
|||
owner = "elementary"; |
|||
repo = pname; |
|||
rev = version; |
|||
sha256 = "0vz6m6kqm9r1scj1jdljbzh019skj8fhf916011wkdfzdpc1zlac"; |
|||
}; |
|||
|
|||
passthru = { |
|||
updateScript = pantheon.updateScript { |
|||
repoName = pname; |
|||
attrPath = "elementary-${pname}"; |
|||
}; |
|||
}; |
|||
|
|||
nativeBuildInputs = [ |
|||
desktop-file-utils |
|||
gettext |
|||
glib-networking |
|||
gobject-introspection |
|||
intltool |
|||
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; |
|||
}; |
|||
} |
@ -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 (); |
@ -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; |
|||
}; |
|||
} |
@ -0,0 +1,80 @@ |
|||
{ 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 |
|||
, scour, webkitgtk, libwebp, appstream, libunity, wrapGAppsHook, gobject-introspection, elementary-icon-theme }: |
|||
|
|||
stdenv.mkDerivation rec { |
|||
pname = "photos"; |
|||
version = "2.6.1"; |
|||
|
|||
name = "elementary-${pname}-${version}"; |
|||
|
|||
src = fetchFromGitHub { |
|||
owner = "elementary"; |
|||
repo = pname; |
|||
rev = version; |
|||
sha256 = "063h6jr0p8v46w8bppsss1zlphx21xqwylh57qbyd5xi71z4gl1v"; |
|||
}; |
|||
|
|||
passthru = { |
|||
updateScript = pantheon.updateScript { |
|||
repoName = pname; |
|||
attrPath = "elementary-${pname}"; |
|||
}; |
|||