You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jade/src/functions/desktops.rs

187 lines
4.3 KiB
Rust

use crate::args::DesktopSetup;
use crate::internal::exec::*;
use crate::internal::*;
pub fn install_desktop_setup(desktop_setup: DesktopSetup) {
log::debug!("Installing {:?}", desktop_setup);
match desktop_setup {
DesktopSetup::Onyx => install_onyx(),
DesktopSetup::Gnome => install_gnome(),
DesktopSetup::Kde => install_kde(),
DesktopSetup::Budgie => install_budgie(),
DesktopSetup::Cinnamon => install_cinnamon(),
DesktopSetup::Mate => install_mate(),
DesktopSetup::Xfce => install_xfce(),
DesktopSetup::Enlightenment => install_enlightenment(),
DesktopSetup::None => log::debug!("No desktop setup selected"),
}
install_networkmanager();
}
fn install_networkmanager() {
install(vec!["networkmanager"]);
exec_eval(
exec_chroot(
"systemctl",
vec![String::from("enable"), String::from("NetworkManager")],
),
"Enable network manager",
);
}
fn install_enlightenment() {
install(vec![
"xorg",
"enlightenment",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"terminology",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_xfce() {
install(vec![
"xorg",
"xfce4",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"xfce4-goodies",
"pipewire",
"pipewire-pulse",
"pipewire-jack",
"pipewire-alsa",
"pavucontrol",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_mate() {
install(vec![
"xorg",
"mate",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"mate-extra",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_cinnamon() {
install(vec![
"xorg",
"cinnamon",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"metacity",
"gnome-shell",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_budgie() {
install(vec![
"xorg",
"budgie-desktop",
"gnome",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
"xdg-desktop-portal",
"xdg-desktop-portal-gtk",
"xdg-utils",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn install_kde() {
install(vec![
"xorg",
"plasma",
"plasma-wayland-session",
"kde-utilities",
"kde-system",
"sddm",
]);
enable_dm("sddm");
}
fn install_gnome() {
install(vec![
"gnome-shell",
"nautilus",
"gnome-terminal",
"gnome-control-center",
"xdg-user-dirs",
"gdm",
"xorg",
"gnome-tweaks",
]);
enable_dm("gdm");
}
fn install_onyx() {
install(vec![
"xorg",
"onyx",
"lightdm",
"lightdm-gtk-greeter",
"lightdm-gtk-greeter-settings",
]);
files_eval(
files::append_file(
"/mnt/etc/lightdm/lightdm.conf",
"[SeatDefaults]\ngreeter-session=lightdm-gtk-greeter\n",
),
"Add lightdm greeter",
);
enable_dm("lightdm");
}
fn enable_dm(dm: &str) {
log::debug!("Enabling {}", dm);
exec_eval(
exec_chroot("systemctl", vec![String::from("enable"), String::from(dm)]),
format!("Enable {}", dm).as_str(),
);
}