puppet/gnome/manifests/init.pp
2015-05-04 11:03:26 +03:00

136 lines
2.8 KiB
Puppet

# Install support for setting D-Conf default settings
#
class gnome::dconf {
file { "/etc/dconf/db/site.d":
ensure => directory,
source => "puppet:///modules/custom/empty",
mode => "0755",
owner => "root",
group => "root",
purge => true,
force => true,
recurse => true,
notify => Exec["dconf-update"],
}
file { "/etc/dconf/profile/user":
ensure => present,
content => "user-db:user\nsystem-db:site\n",
mode => "0644",
owner => "root",
group => "root",
notify => Exec["dconf-update"],
}
exec { "dconf-update":
command => "dconf update",
path => "/bin:/usr/bin:/sbin:/usr/sbin",
user => "root",
refreshonly => true,
}
}
# Install D-Conf defaults setting file
#
# === Parameters:
#
# $name:
# Settings name
#
# $source:
# File to use as source for settings
#
# === Sample usage:
#
# gnome::dconf::default { "desktop":
# source => "puppet:///files/common/gnome/desktop.conf",
# }
#
define gnome::dconf::default($source) {
include gnome::dconf
file { "/etc/dconf/db/site.d/${name}":
ensure => present,
source => $source,
mode => "0644",
owner => "root",
group => "root",
require => File["/etc/dconf/db/site.d"],
notify => Exec["dconf-update"],
}
}
# Install D-Conf editor
#
class gnome::dconf::editor {
package { "dconf-editor":
ensure => installed,
}
}
# Set GNOME gconf values.
#
# === Parameters
#
# $name:
# Key to update
# $value:
# Value for given key
# $source:
# Source to update. Valid values are "default" and "mandatory",
# defaults to "default".
# $type:
# Value type. Valid values are "string" and "int", defaults to
# string.
#
define gnome::gconf($value, $source = "default", $type = "string", $ltype = "") {
case $source {
"mandatory": {
$xml = "/etc/gconf/gconf.xml.mandatory"
}
"default": {
$xml = "/etc/gconf/gconf.xml.defaults"
}
default: {
fail("Invalid gnome::gconf source.")
}
}
case $ltype {
"string": {
$param = "--list-type 'string'"
}
default: {
$param = ""
}
}
exec { "gconftool-2 --direct --config-source xml:readwrite:${xml} --type ${type} ${param} --set '${name}' '${value}'":
path => "/bin:/usr/bin:/sbin:/usr/sbin",
unless => "test \"`gconftool-2 --direct --config-source xml:readwrite:${xml} --get '${name}'`\" = '${value}'",
}
}
# Install GConf editor
#
class gnome::gconf::editor {
package { "gconf-editor":
ensure => installed,
}
}