1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
package harddrake::autoconf;
use common;
sub xconf {
my ($modules_conf, $o, $o_skip_fb_setup, $o_resolution_wanted) = @_;
log::l('automatic XFree configuration');
require Xconfig::default;
require do_pkgs;
my $do_pkgs = do_pkgs_standalone->new;
$o->{raw_X} = Xconfig::default::configure($do_pkgs);
my $old_x = { if_($o_resolution_wanted, resolution_wanted => $o_resolution_wanted) };
require Xconfig::main;
Xconfig::main::configure_everything_auto_install($o->{raw_X}, $do_pkgs, $old_x, { allowFB => listlength(cat_("/proc/fb")), skip_fb_setup => $o_skip_fb_setup });
#- always disable compositing desktop effects when configuring a new video card
require Xconfig::glx;
Xconfig::glx::write({});
modules::load_category($modules_conf, 'various/agpgart');
}
sub network_conf {
my ($obj) = @_;
require network::network;
network::network::easy_dhcp($obj->{net}, $obj->{modules_conf});
}
sub mouse_conf {
my ($modules_conf) = @_;
require do_pkgs;
require mouse;
mouse::write_conf(do_pkgs_standalone->new, $modules_conf, my $mouse = mouse::detect($modules_conf), 1);
mouse::load_modules($mouse);
}
sub pcmcia {
my ($pcic) = @_;
require modules;
modules::set_preload_modules("pcmcia", if_($pcic, $pcic));
}
sub bluetooth {
my ($enable) = @_;
# do not disable bluetooth service if adapter disappears
# (for example if disabled by Fn keys)
# systemd will automatically disable the service if needed
return if !$enable;
#- FIXME: make sure these packages are installed when needed
# if ($enable) {
# require do_pkgs;
# my $do_pkgs = do_pkgs_standalone->new;
# $do_pkgs->ensure_is_installed("bluez-utils", "/usr/bin/rfcomm");
# }
require services;
services::set_status("bluetooth", $enable);
my $kbluetoothd_cfg = '/etc/kde/kbluetoothrc';
update_gnomekderc($kbluetoothd_cfg,
'General',
'AutoStart' => bool2text($enable)) if -f $kbluetoothd_cfg;
}
sub laptop {
my ($on_laptop) = @_;
#- FIXME: make sure these packages are installed when needed
# require do_pkgs;
# my $do_pkgs = do_pkgs_standalone->new;
# if ($on_laptop) {
# $do_pkgs->ensure_is_installed("cpufreq", "/etc/rc.d/init.d/cpufreq");
# $do_pkgs->ensure_is_installed("apmd", "/usr/bin/apm");
# $do_pkgs->ensure_is_installed("hotkeys", "/usr/bin/hotkeys");
# $do_pkgs->ensure_is_installed("laptop-mode-tools", "/usr/sbin/laptop_mode");
# } else {
# $do_pkgs->ensure_is_installed("numlock", "/etc/rc.d/init.d/numlock");
# }
require services;
services::set_status("apmd", -e "/proc/apm");
services::set_status("laptop-mode", $on_laptop);
services::set_status("numlock", !$on_laptop);
}
sub cpufreq() {
require cpufreq;
modules::set_preload_modules("cpufreq", cpufreq::get_modules());
}
sub floppy() {
require detect_devices;
modules::set_preload_modules("floppy", if_(detect_devices::floppy(), "floppy"));
}
sub fix_aliases {
my ($modules_conf) = @_;
require modalias;
my %new_aliases;
#- first pass: find module targets whose modalias is not valid anymore
foreach my $module ($modules_conf->modules) {
if (my $aliased_to = $modules_conf->get_alias($module)) {
my @valid_modaliases = modalias::get_modules($module, 'skip_config') or next;
my ($found, $others) = partition { $_ eq $aliased_to } @valid_modaliases;
$new_aliases{$aliased_to} = @{$others || []} == 1 && $others->[0] if is_empty_array_ref($found);
}
}
#- second pass: adapt module targets that are not valid anymore
foreach my $module ($modules_conf->modules) {
if (my $aliased_to = $modules_conf->get_alias($module)) {
if (my $new = exists $new_aliases{$aliased_to} && $new_aliases{$aliased_to}) {
$modules_conf->set_alias($module, $new);
} else {
$modules_conf->remove_alias($module);
}
}
}
$modules_conf->write;
}
1;
|