mirror of
https://github.com/CachyOS/New-Cli-Installer.git
synced 2025-01-23 14:32:22 +08:00
👷 get env packages from toml file parsed by gucc
This commit is contained in:
parent
b0815bd475
commit
b3c3527d32
150
net-profiles.toml
Normal file
150
net-profiles.toml
Normal file
@ -0,0 +1,150 @@
|
||||
[base-packages]
|
||||
# should be equal to pacstrap module in GUI installer
|
||||
packages = [
|
||||
"amd-ucode",
|
||||
"intel-ucode",
|
||||
"base", "base-devel", "linux-firmware", "mkinitcpio", "vim", "wget", "micro", "nano", "networkmanager", "openssh", "ripgrep", "sed", "rsync", "pacman-contrib", "paru", "btop",
|
||||
"man-db", "less",
|
||||
"cachyos-mirrorlist", "cachyos-v3-mirrorlist", "cachyos-v4-mirrorlist", "cachyos-keyring"]
|
||||
|
||||
[base-packages.desktop]
|
||||
# should be equal to base in netinstall module in GUI installer
|
||||
packages = [
|
||||
"alacritty", "cachy-browser", "cachyos-fish-config", "cachyos-ananicy-rules", "cachyos-hello", "cachyos-hooks", "cachyos-kernel-manager",
|
||||
"cachyos-rate-mirrors", "cachyos-packageinstaller", "cachyos-settings", "cachyos-zsh-config", "chwd",
|
||||
"bluez", "bluez-hid2hci", "bluez-libs", "bluez-utils",
|
||||
"ufw",
|
||||
"adobe-source-han-sans-cn-fonts", "adobe-source-han-sans-jp-fonts", "adobe-source-han-sans-kr-fonts", "awesome-terminal-fonts", "noto-fonts-emoji",
|
||||
"noto-color-emoji-fontconfig", "cantarell-fonts", "noto-fonts", "ttf-bitstream-vera", "ttf-dejavu", "ttf-opensans", "ttf-meslo-nerd", "noto-fonts-cjk",
|
||||
"alsa-firmware", "alsa-plugins", "alsa-utils", "pavucontrol", "pipewire-pulse", "wireplumber", "pipewire-alsa", "pipewire-jack", "rtkit",
|
||||
"cpupower", "power-profiles-daemon", "upower",
|
||||
"duf", "fsarchiver", "hwinfo", "inxi", "fastfetch"]
|
||||
|
||||
[desktop.kde]
|
||||
# should be equal to netinstall KDE section group in GUI installer
|
||||
packages = [
|
||||
"ark", "bluedevil", "breeze-gtk",
|
||||
"cachyos-nord-kde-theme-git", "cachyos-iridescent-kde", "cachyos-emerald-kde-theme-git",
|
||||
"cachyos-kde-settings", "cachyos-themes-sddm", "cachyos-wallpapers", "char-white", "dolphin", "egl-wayland", "gwenview",
|
||||
"konsole", "kate", "kdeconnect", "kscreen", "kde-gtk-config", "khotkeys", "kinfocenter",
|
||||
"kinit", "kwallet-pam", "kwalletmanager", "plasma-wayland-protocols", "plasma-wayland-session",
|
||||
"plasma-desktop", "plasma-framework5", "plasma-nm", "plasma-pa", "plasma-workspace", "plasma-integration",
|
||||
"plasma-firewall", "plasma-browser-integration", "plasma-systemmonitor", "plasma-thunderbolt",
|
||||
"powerdevil", "ksysguard", "spectacle", "sddm", "sddm-kcm", "xsettingsd", "xdg-desktop-portal", "xdg-desktop-portal-kde", "phonon-qt5-vlc"]
|
||||
|
||||
[desktop.xfce]
|
||||
# should be equal to netinstall xfce section group in GUI installer
|
||||
packages = [
|
||||
"cachyos-xfce-settings", "blueman", "file-roller", "galculator",
|
||||
"gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb",
|
||||
"lightdm", "lightdm-gtk-greeter", "lightdm-gtk-greeter-settings",
|
||||
"network-manager-applet", "parole", "ristretto", "thunar-archive-plugin", "thunar-media-tags-plugin",
|
||||
"xdg-user-dirs-gtk", "xed", "xfce4", "xfce4-battery-plugin", "xfce4-datetime-plugin", "xfce4-mount-plugin",
|
||||
"xfce4-netload-plugin", "xfce4-notifyd", "xfce4-pulseaudio-plugin", "xfce4-screensaver", "xfce4-screenshooter",
|
||||
"xfce4-taskmanager", "xfce4-wavelan-plugin", "xfce4-weather-plugin", "xfce4-whiskermenu-plugin", "xfce4-xkb-plugin"]
|
||||
|
||||
[desktop.sway]
|
||||
# should be equal to netinstall sway section group in GUI installer
|
||||
packages = [
|
||||
"sway", "waybar", "wl-clipboard", "egl-wayland", "wayland-protocols", "wofi", "ly", "xorg-xwayland", "xdg-desktop-portal", "xdg-desktop-portal-wlr"]
|
||||
|
||||
[desktop.wayfire]
|
||||
# should be equal to netinstall wayfire section group in GUI installer
|
||||
packages = [
|
||||
"cachyos-wayfire-settings", "wayfire-desktop-git", "egl-wayland", "wayland-protocols", "wofi", "ly", "xorg-xhost", "xorg-xwayland"]
|
||||
|
||||
[desktop.i3wm]
|
||||
# should be equal to netinstall i3wm section group in GUI installer
|
||||
packages = [
|
||||
"i3-wm", "i3blocks", "i3lock-color", "i3status", "rofi", "polybar", "ly", "cachyos-picom-config", "dunst", "cachyos-i3wm-settings"]
|
||||
|
||||
[desktop.gnome]
|
||||
# should be equal to netinstall gnome section group in GUI installer
|
||||
packages = [
|
||||
"adwaita-icon-theme", "cachyos-gnome-settings",
|
||||
"cachyos-nord-gtk-theme-git", "eog", "evince", "file-roller", "gdm", "gedit", "gnome-calculator",
|
||||
"gnome-control-center", "gnome-disk-utility", "gnome-keyring", "gnome-nettool", "gnome-power-manager",
|
||||
"gnome-screenshot", "gnome-shell", "gnome-terminal", "gnome-themes-extra", "gnome-tweaks",
|
||||
"gnome-usage", "gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb",
|
||||
"nautilus", "nautilus-sendto", "sushi", "totem", "qt6-wayland", "xdg-user-dirs-gtk", "xdg-desktop-portal-gnome"]
|
||||
|
||||
[desktop.openbox]
|
||||
# should be equal to netinstall openbox section group in GUI installer
|
||||
packages = [
|
||||
"cachyos-openbox-settings", "obconf", "libwnck3", "acpi", "arandr",
|
||||
"archlinux-xdg-menu", "dex", "dmenu", "dunst", "feh", "gtk-engine-murrine", "gvfs", "gvfs-afc", "gvfs-gphoto2",
|
||||
"gvfs-mtp", "gvfs-nfs", "gvfs-smb", "jgmenu", "jq", "lightdm", "lightdm-slick-greeter",
|
||||
"lxappearance-gtk3", "mpv", "network-manager-applet", "nitrogen", "obconf", "openbox",
|
||||
"pasystray", "picom", "polkit-gnome", "rofi", "scrot", "slock", "sysstat", "thunar",
|
||||
"thunar-archive-plugin", "thunar-media-tags-plugin", "thunar-volman", "tint2",
|
||||
"ttf-nerd-fonts-symbols", "tumbler", "xbindkeys", "xcursor-neutral",
|
||||
"xdg-user-dirs-gtk", "xed", "xfce4-terminal"]
|
||||
|
||||
[desktop.bspwm]
|
||||
# should be equal to netinstall bspwm section group in GUI installer
|
||||
packages = [
|
||||
"bspwm", "sxhkd", "polybar", "lightdm", "cachyos-picom-config"]
|
||||
|
||||
[desktop.lxqt]
|
||||
# should be equal to netinstall lxqt section group in GUI installer
|
||||
packages = [
|
||||
"audiocd-kio", "baka-mplayer", "breeze", "breeze-gtk",
|
||||
"featherpad", "gvfs", "gvfs-mtp", "kio-fuse", "libstatgrab", "libsysstat", "lm_sensors",
|
||||
"lxqt", "lxqt-archiver", "network-manager-applet", "oxygen-icons", "pavucontrol-qt",
|
||||
"print-manager", "qt5-translations", "sddm", "xdg-utils", "xscreensaver", "xsettingsd"]
|
||||
|
||||
[desktop.cinnamon]
|
||||
# should be equal to netinstall lxqt section group in GUI installer
|
||||
packages = [
|
||||
"cinnamon", "system-config-printer", "gnome-keyring", "gnome-terminal", "blueberry", "metacity", "lightdm", "lightdm-gtk-greeter"]
|
||||
|
||||
[desktop.ukui]
|
||||
# should be equal to netinstall ukui section group in GUI installer
|
||||
packages = [
|
||||
"sddm", "thunar", "thunar-archive-plugin", "thunar-volman", "peony", "xfce4-terminal", "ukui", "mate-terminal",
|
||||
"mate-system-monitor", "mate-control-center", "redshift", "gnome-screenshot", "accountsservice", "gvfs", "qt5-quickcontrols"]
|
||||
|
||||
[desktop.qtile]
|
||||
# should be equal to netinstall qtile section group in GUI installer
|
||||
packages = [
|
||||
"ttf-nerd-fonts-symbols", "qtile", "ttf-cascadia-code", "cachyos-qtile-settings",
|
||||
"wired", "rofi", "thunar", "polkit-gnome", "qt5ct", "noto-fonts", "flameshot",
|
||||
"gnome-themes-extra", "ttf-jetbrains-mono", "ttf-font-awesome", "picom", "ly"]
|
||||
|
||||
[desktop.mate]
|
||||
# should be equal to netinstall mate section group in GUI installer
|
||||
packages = [
|
||||
"celluloid", "gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb",
|
||||
"lightdm", "lightdm-gtk-greeter", "mate", "mate-extra", "network-manager-applet", "xdg-user-dirs-gtk"]
|
||||
|
||||
[desktop.lxde]
|
||||
# should be equal to netinstall lxde section group in GUI installer
|
||||
packages = [
|
||||
"celluloid", "file-roller", "galculator", "gnome-screenshot", "gpicview",
|
||||
"gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb", "lxappearance-gtk3",
|
||||
"lxde-common", "lxde-icon-theme", "lxhotkey-gtk3", "lxinput-gtk3", "lxlauncher-gtk3",
|
||||
"lxpanel-gtk3", "lxrandr-gtk3", "lxsession-gtk3", "lxtask-gtk3", "lxterminal", "ly", "notification-daemon",
|
||||
"pcmanfm-gtk3", "lxmusic", "network-manager-applet", "xdg-user-dirs-gtk", "xed"]
|
||||
|
||||
[desktop.hyprland]
|
||||
# should be equal to netinstall hyprland section group in GUI installer
|
||||
packages = [
|
||||
"cachyos-hyprland-settings", "hyprland-git", "kvantum", "qt5ct", "sddm",
|
||||
"swaybg", "swaylock-effects-git", "swaylock-fancy-git", "waybar-hyprland", "xdg-desktop-portal-hyprland",
|
||||
"grimblast-git", "slurp", "mako", "wob", "pamixer", "rofi", "rofi-emoji", "wofi",
|
||||
"wlogout", "swappy", "wl-clipboard", "polkit-kde-agent", "bemenu", "bemenu-wayland", "xorg-xwayland",
|
||||
"capitaine-cursors", "cachyos-wallpapers", "kvantum-theme-nordic-git", "cachyos-nord-gtk-theme-git"]
|
||||
|
||||
[desktop.budgie]
|
||||
# should be equal to netinstall budgie section group in GUI installer
|
||||
packages = [
|
||||
"budgie-control-center", "budgie-desktop", "budgie-desktop-view", "budgie-extras",
|
||||
"budgie-screensaver", "eog", "evince", "file-roller", "gedit", "gnome-keyring", "gnome-screenshot",
|
||||
"gnome-terminal", "gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb", "ly",
|
||||
"nemo", "nemo-fileroller", "nemo-preview", "network-manager-applet", "sushi", "totem", "xdg-user-dirs-gtk"]
|
||||
|
||||
[desktop.xorg]
|
||||
# should be equal to netinstall xorg section group in GUI installer
|
||||
packages = [
|
||||
"libwnck3", "mesa-utils", "xf86-input-libinput", "xorg-xdpyinfo", "xorg-server",
|
||||
"xorg-xinit", "xorg-xinput", "xorg-xkill", "xorg-xrandr"]
|
@ -39,6 +39,10 @@ bool Config::initialize() noexcept {
|
||||
s_config->m_data["READY_PARTITIONS"] = std::vector<std::string>{};
|
||||
s_config->m_data["ZFS_ZPOOL_NAMES"] = std::vector<std::string>{};
|
||||
|
||||
// TODO(vnepogodin): change location and try first remote location(e.g from CDN) or
|
||||
// local location as a fallback.
|
||||
s_config->m_data["NET_PROFILES_URL"] = "net-profiles.toml";
|
||||
|
||||
// Mounting
|
||||
s_config->m_data["MOUNTPOINT"] = "/mnt";
|
||||
|
||||
|
206
src/utils.cpp
206
src/utils.cpp
@ -16,6 +16,7 @@
|
||||
#include "gucc/io_utils.hpp"
|
||||
#include "gucc/locale.hpp"
|
||||
#include "gucc/luks.hpp"
|
||||
#include "gucc/package_profiles.hpp"
|
||||
#include "gucc/pacmanconf_repo.hpp"
|
||||
#include "gucc/string_utils.hpp"
|
||||
#include "gucc/systemd_services.hpp"
|
||||
@ -587,11 +588,12 @@ void lvm_detect(std::optional<std::function<void()>> func_callback) noexcept {
|
||||
#endif
|
||||
}
|
||||
|
||||
auto get_pkglist_base(const std::string_view& packages) noexcept -> std::vector<std::string> {
|
||||
auto get_pkglist_base(const std::string_view& packages) noexcept -> std::optional<std::vector<std::string>> {
|
||||
auto* config_instance = Config::instance();
|
||||
auto& config_data = config_instance->data();
|
||||
const auto& server_mode = std::get<std::int32_t>(config_data["SERVER_MODE"]);
|
||||
const auto& mountpoint_info = std::get<std::string>(config_data["MOUNTPOINT"]);
|
||||
const auto& net_profs_url = std::get<std::string>(config_data["NET_PROFILES_URL"]);
|
||||
|
||||
const auto& root_filesystem = gucc::fs::utils::get_mountpoint_fs(mountpoint_info);
|
||||
const auto& is_root_on_zfs = (root_filesystem == "zfs");
|
||||
@ -614,29 +616,49 @@ auto get_pkglist_base(const std::string_view& packages) noexcept -> std::vector<
|
||||
if (is_root_on_bcachefs) {
|
||||
pkg_list.insert(pkg_list.cend(), {"bcachefs-tools"});
|
||||
}
|
||||
|
||||
auto net_profs_content = gucc::file_utils::read_whole_file(net_profs_url);
|
||||
if (net_profs_content.empty()) {
|
||||
spdlog::error("Failed to get net profiles content");
|
||||
return std::nullopt;
|
||||
}
|
||||
auto base_net_profs = gucc::profile::parse_base_profiles(net_profs_content);
|
||||
if (!base_net_profs.has_value()) {
|
||||
spdlog::error("Failed to parse net profiles");
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
if (server_mode == 0) {
|
||||
if (is_root_on_btrfs) {
|
||||
pkg_list.insert(pkg_list.cend(), {"snapper", "btrfs-assistant-git"});
|
||||
}
|
||||
pkg_list.insert(pkg_list.cend(), {"alacritty", "cachy-browser", "cachyos-fish-config", "cachyos-ananicy-rules", "cachyos-hello", "cachyos-hooks", "cachyos-kernel-manager"});
|
||||
pkg_list.insert(pkg_list.cend(), {"cachyos-rate-mirrors", "cachyos-packageinstaller", "cachyos-settings", "cachyos-zsh-config", "chwd", "chwd-db"});
|
||||
pkg_list.insert(pkg_list.cend(), {"bluez", "bluez-hid2hci", "bluez-libs", "bluez-utils"});
|
||||
pkg_list.insert(pkg_list.cend(), {"firewalld"});
|
||||
pkg_list.insert(pkg_list.cend(), {"adobe-source-han-sans-cn-fonts", "adobe-source-han-sans-jp-fonts", "adobe-source-han-sans-kr-fonts", "awesome-terminal-fonts", "noto-fonts-emoji"});
|
||||
pkg_list.insert(pkg_list.cend(), {"noto-color-emoji-fontconfig", "cantarell-fonts", "noto-fonts", "ttf-bitstream-vera", "ttf-dejavu", "ttf-opensans", "ttf-meslo-nerd", "noto-fonts-cjk"});
|
||||
pkg_list.insert(pkg_list.cend(), {"alsa-firmware", "alsa-plugins", "alsa-utils", "pavucontrol", "pipewire-pulse", "wireplumber", "pipewire-alsa", "pipewire-jack", "rtkit"});
|
||||
pkg_list.insert(pkg_list.cend(), {"cpupower", "power-profiles-daemon", "upower"});
|
||||
pkg_list.insert(pkg_list.cend(), {"duf", "fsarchiver", "hwinfo", "inxi", "fastfetch"});
|
||||
pkg_list.insert(pkg_list.cend(),
|
||||
base_net_profs->base_desktop_packages.begin(),
|
||||
base_net_profs->base_desktop_packages.end());
|
||||
}
|
||||
pkg_list.insert(pkg_list.cend(), {"amd-ucode", "intel-ucode"});
|
||||
pkg_list.insert(pkg_list.cend(), {"base", "base-devel", "linux-firmware", "mkinitcpio", "vim", "wget", "micro", "nano", "networkmanager", "openssh", "ripgrep", "sed", "rsync", "pacman-contrib", "paru", "btop"});
|
||||
pkg_list.insert(pkg_list.cend(), {"man-db", "less"});
|
||||
pkg_list.insert(pkg_list.cend(), {"cachyos-mirrorlist", "cachyos-v3-mirrorlist", "cachyos-v4-mirrorlist", "cachyos-keyring"});
|
||||
pkg_list.insert(pkg_list.cend(),
|
||||
base_net_profs->base_packages.begin(),
|
||||
base_net_profs->base_packages.end());
|
||||
|
||||
return pkg_list;
|
||||
return std::make_optional<std::vector<std::string>>(pkg_list);
|
||||
}
|
||||
|
||||
auto get_pkglist_desktop(const std::string_view& desktop_env) noexcept -> std::vector<std::string> {
|
||||
auto get_pkglist_desktop(const std::string_view& desktop_env) noexcept -> std::optional<std::vector<std::string>> {
|
||||
auto* config_instance = Config::instance();
|
||||
auto& config_data = config_instance->data();
|
||||
const auto& net_profs_url = std::get<std::string>(config_data["NET_PROFILES_URL"]);
|
||||
|
||||
auto net_profs_content = gucc::file_utils::read_whole_file(net_profs_url);
|
||||
if (net_profs_content.empty()) {
|
||||
spdlog::error("Failed to get net profiles content");
|
||||
return std::nullopt;
|
||||
}
|
||||
auto desktop_net_profs = gucc::profile::parse_desktop_profiles(net_profs_content);
|
||||
if (!desktop_net_profs.has_value()) {
|
||||
spdlog::error("Failed to parse net profiles");
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
std::vector<std::string> pkg_list{};
|
||||
|
||||
constexpr std::string_view kde{"kde"};
|
||||
@ -659,166 +681,104 @@ auto get_pkglist_desktop(const std::string_view& desktop_env) noexcept -> std::v
|
||||
bool needed_xorg{};
|
||||
auto found = ranges::search(desktop_env, i3wm);
|
||||
if (!found.empty()) {
|
||||
pkg_list.insert(pkg_list.cend(), {"i3-wm", "i3blocks", "i3lock-color", "i3status", "rofi", "polybar", "ly", "cachyos-picom-config", "dunst", "cachyos-i3wm-settings"});
|
||||
auto profile = ranges::find(*desktop_net_profs, i3wm, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, sway);
|
||||
if (!found.empty()) {
|
||||
pkg_list.insert(pkg_list.cend(), {"sway", "waybar", "wl-clipboard", "egl-wayland", "wayland-protocols", "wofi", "ly", "xorg-xwayland", "xdg-desktop-portal", "xdg-desktop-portal-wlr"});
|
||||
auto profile = ranges::find(*desktop_net_profs, sway, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
}
|
||||
found = ranges::search(desktop_env, kde);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"ark", "bluedevil", "breeze-gtk",
|
||||
"cachyos-nord-kde-theme-git", "cachyos-iridescent-kde", "cachyos-emerald-kde-theme-git",
|
||||
"cachyos-kde-settings", "cachyos-themes-sddm", "cachyos-wallpapers", "char-white", "dolphin", "egl-wayland", "gwenview",
|
||||
"konsole", "kate", "kdeconnect", "kscreen", "kde-gtk-config", "khotkeys", "kinfocenter",
|
||||
"kinit", "kwallet-pam", "kwalletmanager", "plasma-wayland-protocols", "plasma-wayland-session",
|
||||
"plasma-desktop", "plasma-framework5", "plasma-nm", "plasma-pa", "plasma-workspace", "plasma-integration",
|
||||
"plasma-firewall", "plasma-browser-integration", "plasma-systemmonitor", "plasma-thunderbolt",
|
||||
"powerdevil", "ksysguard", "spectacle", "sddm", "sddm-kcm", "xsettingsd", "xdg-desktop-portal", "xdg-desktop-portal-kde", "phonon-qt5-vlc"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, kde, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, xfce);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"cachyos-xfce-settings", "blueman", "file-roller", "galculator",
|
||||
"gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb",
|
||||
"lightdm", "lightdm-gtk-greeter", "lightdm-gtk-greeter-settings",
|
||||
"network-manager-applet", "parole", "ristretto", "thunar-archive-plugin", "thunar-media-tags-plugin",
|
||||
"xdg-user-dirs-gtk", "xed", "xfce4", "xfce4-battery-plugin", "xfce4-datetime-plugin", "xfce4-mount-plugin",
|
||||
"xfce4-netload-plugin", "xfce4-notifyd", "xfce4-pulseaudio-plugin", "xfce4-screensaver", "xfce4-screenshooter",
|
||||
"xfce4-taskmanager", "xfce4-wavelan-plugin", "xfce4-weather-plugin", "xfce4-whiskermenu-plugin", "xfce4-xkb-plugin"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, xfce, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, gnome);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"adwaita-icon-theme", "cachyos-gnome-settings",
|
||||
"cachyos-nord-gtk-theme-git", "eog", "evince", "file-roller", "gdm", "gedit", "gnome-calculator",
|
||||
"gnome-control-center", "gnome-disk-utility", "gnome-keyring", "gnome-nettool", "gnome-power-manager",
|
||||
"gnome-screenshot", "gnome-shell", "gnome-terminal", "gnome-themes-extra", "gnome-tweaks",
|
||||
"gnome-usage", "gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb",
|
||||
"nautilus", "nautilus-sendto", "sushi", "totem", "qt6-wayland", "xdg-user-dirs-gtk", "xdg-desktop-portal-gnome"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, gnome, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, wayfire);
|
||||
if (!found.empty()) {
|
||||
pkg_list.insert(pkg_list.cend(), {"cachyos-wayfire-settings", "wayfire-desktop-git", "egl-wayland", "wayland-protocols", "wofi", "ly", "xorg-xhost", "xorg-xwayland"});
|
||||
auto profile = ranges::find(*desktop_net_profs, wayfire, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
}
|
||||
found = ranges::search(desktop_env, openbox);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"cachyos-openbox-settings", "obconf", "libwnck3", "acpi", "arandr",
|
||||
"archlinux-xdg-menu", "dex", "dmenu", "dunst", "feh", "gtk-engine-murrine", "gvfs", "gvfs-afc", "gvfs-gphoto2",
|
||||
"gvfs-mtp", "gvfs-nfs", "gvfs-smb", "jgmenu", "jq", "lightdm", "lightdm-slick-greeter",
|
||||
"lxappearance-gtk3", "mpv", "network-manager-applet", "nitrogen", "obconf", "openbox",
|
||||
"pasystray", "picom", "polkit-gnome", "rofi", "scrot", "slock", "sysstat", "thunar",
|
||||
"thunar-archive-plugin", "thunar-media-tags-plugin", "thunar-volman", "tint2",
|
||||
"ttf-nerd-fonts-symbols", "tumbler", "xbindkeys", "xcursor-neutral",
|
||||
"xdg-user-dirs-gtk", "xed", "xfce4-terminal"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, openbox, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, lxqt);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"audiocd-kio", "baka-mplayer", "breeze", "breeze-gtk",
|
||||
"featherpad", "gvfs", "gvfs-mtp", "kio-fuse", "libstatgrab", "libsysstat", "lm_sensors",
|
||||
"lxqt", "lxqt-archiver", "network-manager-applet", "oxygen-icons", "pavucontrol-qt",
|
||||
"print-manager", "qt5-translations", "sddm", "xdg-utils", "xscreensaver", "xsettingsd"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, lxqt, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, bspwm);
|
||||
if (!found.empty()) {
|
||||
pkg_list.insert(pkg_list.cend(), {"bspwm", "sxhkd", "polybar", "lightdm", "cachyos-picom-config"});
|
||||
auto profile = ranges::find(*desktop_net_profs, bspwm, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, cinnamon);
|
||||
if (!found.empty()) {
|
||||
pkg_list.insert(pkg_list.cend(), {"cinnamon", "system-config-printer", "gnome-keyring", "gnome-terminal", "blueberry", "metacity", "lightdm", "lightdm-gtk-greeter"});
|
||||
auto profile = ranges::find(*desktop_net_profs, cinnamon, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, ukui);
|
||||
if (!found.empty()) {
|
||||
pkg_list.insert(pkg_list.cend(), {"sddm", "thunar", "thunar-archive-plugin", "thunar-volman", "peony", "xfce4-terminal", "ukui", "mate-terminal"});
|
||||
pkg_list.insert(pkg_list.cend(), {"mate-system-monitor", "mate-control-center", "redshift", "gnome-screenshot", "accountsservice", "gvfs", "qt5-quickcontrols"});
|
||||
auto profile = ranges::find(*desktop_net_profs, ukui, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, qtile);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"ttf-nerd-fonts-symbols", "qtile", "ttf-cascadia-code", "cachyos-qtile-settings",
|
||||
"wired", "rofi", "thunar", "polkit-gnome", "qt5ct", "noto-fonts", "flameshot",
|
||||
"gnome-themes-extra", "ttf-jetbrains-mono", "ttf-font-awesome", "picom", "ly"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, qtile, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, mate);
|
||||
if (!found.empty()) {
|
||||
pkg_list.insert(pkg_list.cend(), {"celluloid", "gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb", "lightdm", "lightdm-gtk-greeter", "mate", "mate-extra", "network-manager-applet", "xdg-user-dirs-gtk"});
|
||||
auto profile = ranges::find(*desktop_net_profs, mate, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, lxde);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"celluloid", "file-roller", "galculator", "gnome-screenshot", "gpicview",
|
||||
"gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb", "lxappearance-gtk3",
|
||||
"lxde-common", "lxde-icon-theme", "lxhotkey-gtk3", "lxinput-gtk3", "lxlauncher-gtk3",
|
||||
"lxpanel-gtk3", "lxrandr-gtk3", "lxsession-gtk3", "lxtask-gtk3", "lxterminal", "ly", "notification-daemon",
|
||||
"pcmanfm-gtk3", "lxmusic", "network-manager-applet", "xdg-user-dirs-gtk", "xed"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, lxde, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
found = ranges::search(desktop_env, hyprland);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"cachyos-hyprland-settings", "hyprland-git", "kvantum", "qt5ct", "sddm",
|
||||
"swaybg", "swaylock-effects-git", "swaylock-fancy-git", "waybar-hyprland", "xdg-desktop-portal-hyprland",
|
||||
"grimblast-git", "slurp", "mako", "wob", "pamixer", "rofi", "rofi-emoji", "wofi",
|
||||
"wlogout", "swappy", "wl-clipboard", "polkit-kde-agent", "bemenu", "bemenu-wayland", "xorg-xwayland",
|
||||
"capitaine-cursors", "cachyos-wallpapers", "kvantum-theme-nordic-git", "cachyos-nord-gtk-theme-git"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, hyprland, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
}
|
||||
found = ranges::search(desktop_env, budgie);
|
||||
if (!found.empty()) {
|
||||
/* clang-format off */
|
||||
static constexpr std::array to_be_inserted{"budgie-control-center", "budgie-desktop", "budgie-desktop-view", "budgie-extras",
|
||||
"budgie-screensaver", "eog", "evince", "file-roller", "gedit", "gnome-keyring", "gnome-screenshot",
|
||||
"gnome-terminal", "gvfs", "gvfs-afc", "gvfs-gphoto2", "gvfs-mtp", "gvfs-nfs", "gvfs-smb", "ly",
|
||||
"nemo", "nemo-fileroller", "nemo-preview", "network-manager-applet", "sushi", "totem", "xdg-user-dirs-gtk"};
|
||||
/* clang-format on */
|
||||
pkg_list.insert(pkg_list.end(), std::move_iterator(to_be_inserted.begin()),
|
||||
std::move_iterator(to_be_inserted.end()));
|
||||
auto profile = ranges::find(*desktop_net_profs, budgie, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
needed_xorg = true;
|
||||
}
|
||||
|
||||
if (needed_xorg) {
|
||||
pkg_list.insert(pkg_list.cend(), {"libwnck3", "mesa-utils", "xf86-input-libinput", "xorg-xdpyinfo", "xorg-server", "xorg-xinit", "xorg-xinput", "xorg-xkill", "xorg-xrandr"});
|
||||
auto profile = ranges::find(*desktop_net_profs, "xorg"sv, &gucc::profile::DesktopProfile::profile_name);
|
||||
pkg_list.insert(pkg_list.cend(), profile->packages.begin(), profile->packages.end());
|
||||
}
|
||||
pkg_list.insert(pkg_list.cend(), {"cachyos", "octopi", "awesome-terminal-fonts", "noto-fonts-emoji"});
|
||||
|
||||
return pkg_list;
|
||||
return std::make_optional<std::vector<std::string>>(pkg_list);
|
||||
}
|
||||
|
||||
void install_from_pkglist(const std::string_view& packages) noexcept {
|
||||
@ -842,10 +802,14 @@ void install_from_pkglist(const std::string_view& packages) noexcept {
|
||||
}
|
||||
|
||||
void install_base(const std::string_view& packages) noexcept {
|
||||
const auto& pkg_list = utils::get_pkglist_base(packages);
|
||||
const auto& base_pkgs = gucc::utils::make_multiline(pkg_list, false, " ");
|
||||
const auto& pkg_list = utils::get_pkglist_base(packages);
|
||||
if (!pkg_list.has_value()) {
|
||||
spdlog::error("Failed to install base");
|
||||
return;
|
||||
}
|
||||
const auto& base_pkgs = gucc::utils::join(*pkg_list, " ");
|
||||
|
||||
spdlog::info(fmt::format(FMT_COMPILE("Preparing for pkgs to install: \"{}\""), base_pkgs));
|
||||
spdlog::info("Preparing for pkgs to install: '{}'", base_pkgs);
|
||||
|
||||
#ifdef NDEVENV
|
||||
// Prep variables
|
||||
@ -936,10 +900,14 @@ void install_base(const std::string_view& packages) noexcept {
|
||||
|
||||
void install_desktop(const std::string_view& desktop) noexcept {
|
||||
// Create the base list of packages
|
||||
const auto& pkg_list = utils::get_pkglist_desktop(desktop);
|
||||
const std::string& packages = gucc::utils::make_multiline(pkg_list, false, " ");
|
||||
const auto& pkg_list = utils::get_pkglist_desktop(desktop);
|
||||
if (!pkg_list.has_value()) {
|
||||
spdlog::error("Failed to install desktop");
|
||||
return;
|
||||
}
|
||||
const auto& packages = gucc::utils::join(*pkg_list, " ");
|
||||
|
||||
spdlog::info(fmt::format(FMT_COMPILE("Preparing for desktop envs to install: \"{}\""), packages));
|
||||
spdlog::info("Preparing for desktop envs to install: '{}'", packages);
|
||||
utils::install_from_pkglist(packages);
|
||||
|
||||
auto* config_instance = Config::instance();
|
||||
|
@ -37,8 +37,8 @@ void lvm_detect(std::optional<std::function<void()>> func_callback = std::nullop
|
||||
void umount_partitions() noexcept;
|
||||
void find_partitions() noexcept;
|
||||
|
||||
[[nodiscard]] auto get_pkglist_base(const std::string_view& packages) noexcept -> std::vector<std::string>;
|
||||
[[nodiscard]] auto get_pkglist_desktop(const std::string_view& desktop) noexcept -> std::vector<std::string>;
|
||||
[[nodiscard]] auto get_pkglist_base(const std::string_view& packages) noexcept -> std::optional<std::vector<std::string>>;
|
||||
[[nodiscard]] auto get_pkglist_desktop(const std::string_view& desktop) noexcept -> std::optional<std::vector<std::string>>;
|
||||
void install_from_pkglist(const std::string_view& packages) noexcept;
|
||||
void install_base(const std::string_view& packages) noexcept;
|
||||
void install_desktop(const std::string_view& desktop) noexcept;
|
||||
|
Loading…
Reference in New Issue
Block a user