@ -4,7 +4,6 @@ with lib;
let
cfg = config . services . xserver . desktopManager . gnome3 ;
gnome3 = config . environment . gnome3 . packageSet ;
# Remove packages of ys from xs, based on their names
removePackagesByName = xs : ys :
@ -28,7 +27,7 @@ let
nixos-gsettings-desktop-schemas = pkgs . runCommand " n i x o s - g s e t t i n g s - d e s k t o p - s c h e m a s " { }
''
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 /* . x m l $ o u t / s h a r e / g s e t t i n g s - s c h e m a s / n i x o s - g s e t t i n g s - o v e r r i d e s / g l i b - 2 . 0 / s c h e m a s
cp - rf $ { pkgs . gnome3 . gsettings_desktop_schemas } /share/gsettings-schemas/gsettings-desktop-schemas * /glib-2.0/schemas /* . x m l $ o u t / s h a r e / g s e t t i n g s - s c h e m a s / n i x o s - g s e t t i n g s - o v e r r i d e s / g l i b - 2 . 0 / s c h e m a s
$ { concatMapStrings ( pkg : " c p - r f ${ pkg } / s h a r e / g s e t t i n g s - s c h e m a s / * / g l i b - 2 . 0 / s c h e m a s / * . x m l $ o u t / s h a r e / g s e t t i n g s - s c h e m a s / n i x o s - g s e t t i n g s - o v e r r i d e s / g l i b - 2 . 0 / s c h e m a s \n " ) cfg . extraGSettingsOverridePackages }
@ -61,7 +60,7 @@ in {
example = literalExample " [ p k g s . g n o m e 3 . g p a s t e ] " ;
description = " A d d i t i o n a l l i s t o f p a c k a g e s t o b e a d d e d t o t h e s e s s i o n s e a r c h p a t h .
Useful for gnome shell extensions or gsettings-conditionated autostart . " ;
apply = list : list ++ [ gnome3 . gnome_shell gnome3 . gnome-shell-extensions ] ;
apply = list : list ++ [ pkgs . gnome3 . gnome_shell pkgs . gnome3 . gnome-shell-extensions ] ;
} ;
extraGSettingsOverrides = mkOption {
@ -79,13 +78,6 @@ in {
debug = mkEnableOption " g n o m e - s e s s i o n d e b u g m e s s a g e s " ;
} ;
environment . gnome3 . packageSet = mkOption {
default = null ;
example = literalExample " p k g s . g n o m e 3 _ 2 2 " ;
description = " W h i c h G N O M E 3 p a c k a g e s e t t o u s e . " ;
apply = p : if p == null then pkgs . gnome3 else p ;
} ;
environment . gnome3 . excludePackages = mkOption {
default = [ ] ;
example = literalExample " [ p k g s . g n o m e 3 . t o t e m ] " ;
@ -169,26 +161,26 @@ in {
# Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
$ { pkgs . xdg-user-dirs } /bin/xdg-user-dirs-update
$ { gnome3 . gnome_session } /bin/gnome-session $ { optionalString cfg . debug " - - d e b u g " } &
$ { pkgs . gnome3 . gnome_session } /bin/gnome-session $ { optionalString cfg . debug " - - d e b u g " } &
waitPID = $ !
'' ;
} ;
services . xserver . updateDbusEnvironment = true ;
environment . variables . GIO_EXTRA_MODULES = [ " ${ lib . getLib gnome3 . dconf } / l i b / g i o / m o d u l e s "
" ${ gnome3 . glib_networking . out } / l i b / g i o / m o d u l e s "
" ${ gnome3 . gvfs } / l i b / g i o / m o d u l e s " ] ;
environment . systemPackages = gnome3 . corePackages ++ cfg . sessionPath
++ ( removePackagesByName gnome3 . optionalPackages config . environment . gnome3 . excludePackages ) ;
environment . variables . GIO_EXTRA_MODULES = [ " ${ lib . getLib pkgs . gnome3 . dconf } / l i b / g i o / m o d u l e s "
" ${ pkgs . gnome3 . glib_networking . out } / l i b / g i o / m o d u l e s "
" ${ pkgs . gnome3 . gvfs } / l i b / g i o / m o d u l e s " ] ;
environment . systemPackages = pkgs . gnome3 . corePackages ++ cfg . sessionPath
++ ( removePackagesByName pkgs . gnome3 . optionalPackages config . environment . gnome3 . excludePackages ) ;
# Use the correct gnome3 packageSet
networking . networkmanager . basePackages =
{ inherit ( pkgs ) networkmanager modemmanager wpa_supplicant ;
inherit ( gnome3 ) networkmanager_openvpn networkmanager_vpnc
networkmanager_openconnect networkmanager_fortisslvpn
networkmanager_pptp networkmanager_iodine
networkmanager_l2tp ; } ;
inherit ( pkgs . gnome3 ) networkmanager_openvpn networkmanager_vpnc
networkmanager_openconnect networkmanager_fortisslvpn
networkmanager_pptp networkmanager_iodine
networkmanager_l2tp ; } ;
# Needed for themes and backgrounds
environment . pathsToLink = [ " / s h a r e " ] ;