From efa6ff9cd2eb77204028de361be008a68338aeb8 Mon Sep 17 00:00:00 2001 From: Chris Titus Date: Thu, 6 Feb 2025 15:14:09 -0600 Subject: [PATCH] allow different os-releases and hyprland setup (#1013) * allow different os-releases and hypr setup * Update core/src/inner.rs Co-authored-by: Adam Perkowski * Update core/tabs/system-setup/debian/hyprland-kool-deb.sh Co-authored-by: Adam Perkowski * Update core/tabs/system-setup/arch/hyprland-kool.sh Co-authored-by: Adam Perkowski * Update core/tabs/system-setup/fedora/hyprland-kool-fed.sh Co-authored-by: Adam Perkowski * Update core/tabs/system-setup/tab_data.toml Co-authored-by: Adam Perkowski * Update core/tabs/system-setup/tab_data.toml Co-authored-by: Adam Perkowski * Update core/tabs/system-setup/tab_data.toml Co-authored-by: Adam Perkowski * Update core/tabs/system-setup/tab_data.toml Co-authored-by: Adam Perkowski * Update core/tabs/system-setup/ubuntu/hyprland-kool-ubuntu24.sh Co-authored-by: Adam Perkowski * refactor: Improve File Contains precondition (#1016) * Update inner.rs (#1021) * Update inner.rs (#1022) * revert to liams commit * Update core/tabs/system-setup/arch/hyprland-kool.sh Co-authored-by: nyx * Update core/tabs/system-setup/debian/hyprland-kool-deb.sh Co-authored-by: nyx * Update core/tabs/system-setup/fedora/hyprland-kool-fed.sh Co-authored-by: nyx * Update core/tabs/system-setup/arch/hyprland-kool.sh Co-authored-by: nyx * Update core/tabs/system-setup/debian/hyprland-kool-deb.sh Co-authored-by: nyx * Update core/tabs/system-setup/debian/hyprland-kool-deb.sh Co-authored-by: nyx * Update core/tabs/system-setup/arch/hyprland-kool.sh Co-authored-by: nyx * Update core/tabs/system-setup/arch/hyprland-kool.sh Co-authored-by: nyx * Update core/tabs/system-setup/arch/hyprland-kool.sh Co-authored-by: nyx * Update core/tabs/system-setup/arch/hyprland-kool.sh Co-authored-by: nyx * fix bashisms * Switch to SH from bash --------- Co-authored-by: Adam Perkowski Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com> Co-authored-by: nyx --- core/src/inner.rs | 23 ++++---- core/tabs/system-setup/arch/hyprland-kool.sh | 15 ++++++ .../system-setup/debian/hyprland-kool-deb.sh | 9 ++++ .../system-setup/fedora/hyprland-kool-fed.sh | 10 ++++ core/tabs/system-setup/tab_data.toml | 54 +++++++++++++++++-- .../ubuntu/hyprland-kool-ubuntu24.sh | 10 ++++ 6 files changed, 105 insertions(+), 16 deletions(-) create mode 100644 core/tabs/system-setup/arch/hyprland-kool.sh create mode 100644 core/tabs/system-setup/debian/hyprland-kool-deb.sh create mode 100644 core/tabs/system-setup/fedora/hyprland-kool-fed.sh create mode 100644 core/tabs/system-setup/ubuntu/hyprland-kool-ubuntu24.sh diff --git a/core/src/inner.rs b/core/src/inner.rs index a3a0fc9c..16d12cbe 100644 --- a/core/src/inner.rs +++ b/core/src/inner.rs @@ -111,12 +111,10 @@ fn default_true() -> bool { } #[derive(Deserialize)] +#[serde(rename_all = "snake_case")] enum EntryType { - #[serde(rename = "entries")] Entries(Vec), - #[serde(rename = "command")] Command(String), - #[serde(rename = "script")] Script(PathBuf), } @@ -132,14 +130,16 @@ impl Entry { match data { SystemDataType::Environment(var_name) => std::env::var(var_name) .is_ok_and(|var| values.contains(&var) == *matches), - SystemDataType::File(path) => { - std::fs::read_to_string(path).is_ok_and(|data| { - values.iter().all(|matching| data.contains(matching)) == *matches - }) - } + SystemDataType::ContainingFile(file) => std::fs::read_to_string(file) + .is_ok_and(|data| { + values + .iter() + .all(|matching| data.contains(matching) == *matches) + }), SystemDataType::CommandExists => values .iter() .all(|command| which::which(command).is_ok() == *matches), + SystemDataType::FileExists => values.iter().all(|p| Path::new(p).is_file()), } }, ) @@ -157,12 +157,11 @@ struct Precondition { } #[derive(Deserialize)] +#[serde(rename_all = "snake_case")] enum SystemDataType { - #[serde(rename = "environment")] Environment(String), - #[serde(rename = "file")] - File(PathBuf), - #[serde(rename = "command_exists")] + ContainingFile(PathBuf), + FileExists, CommandExists, } diff --git a/core/tabs/system-setup/arch/hyprland-kool.sh b/core/tabs/system-setup/arch/hyprland-kool.sh new file mode 100644 index 00000000..7c85f857 --- /dev/null +++ b/core/tabs/system-setup/arch/hyprland-kool.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +. ../../common-script.sh + +printf "%b\n" "${YELLOW}Starting Hyprland JaKooLit installation${RC}" + +if ! pacman -Q base-devel >/dev/null 2>&1; then + printf "%b\n" "${YELLOW}Installing base-devel...${RC}" + "$ESCALATION_TOOL" pacman -S --noconfirm base-devel +fi + +git clone --depth=1 https://github.com/JaKooLit/Arch-Hyprland.git "$HOME/Arch-Hyprland" || { printf "%b\n" "${RED}Failed to clone Jakoolits Arch-Hyprland repo${RC}"; exit 1; } +cd "$HOME/Arch-Hyprland" || { printf "%b\n" "${RED}Failed to navigate to Arch-Hyprland directory${RC}"; exit 1; } +chmod +x install.sh +./install.sh diff --git a/core/tabs/system-setup/debian/hyprland-kool-deb.sh b/core/tabs/system-setup/debian/hyprland-kool-deb.sh new file mode 100644 index 00000000..58229792 --- /dev/null +++ b/core/tabs/system-setup/debian/hyprland-kool-deb.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +. ../../common-script.sh + +printf "%b\n" "${YELLOW}Starting Hyprland JaKooLit installation${RC}" +git clone --depth=1 https://github.com/JaKooLit/Debian-Hyprland.git "$HOME/Debian-Hyprland" || { printf "%b\n" "${RED}Failed to clone Jakoolits Debian-Hyprland repo${RC}"; exit 1; } +cd "$HOME/Debian-Hyprland" || { printf "%b\n" "${RED}Failed to navigate to Debian-Hyprland directory${RC}"; exit 1; } +chmod +x install.sh +./install.sh \ No newline at end of file diff --git a/core/tabs/system-setup/fedora/hyprland-kool-fed.sh b/core/tabs/system-setup/fedora/hyprland-kool-fed.sh new file mode 100644 index 00000000..3a7ebd92 --- /dev/null +++ b/core/tabs/system-setup/fedora/hyprland-kool-fed.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +. ../../common-script.sh + +printf "%b\n" "${YELLOW}Starting Hyprland JaKooLit installation${RC}" + +git clone --depth=1 https://github.com/JaKooLit/Fedora-Hyprland.git "$HOME/Fedora-Hyprland" || { printf "%b\n" "${RED}Failed to clone Jakoolits Fedora-Hyprland repo${RC}"; exit 1; } +cd "$HOME/Fedora-Hyprland" || { printf "%b\n" "${RED}Failed to navigate to Fedora-Hyprland directory${RC}"; exit 1; } +chmod +x install.sh +./install.sh \ No newline at end of file diff --git a/core/tabs/system-setup/tab_data.toml b/core/tabs/system-setup/tab_data.toml index 9f80eec0..51aa4745 100644 --- a/core/tabs/system-setup/tab_data.toml +++ b/core/tabs/system-setup/tab_data.toml @@ -16,15 +16,22 @@ task_list = "SI D" multi_select = false [[data.entries]] -name ="Linux Neptune for SteamDeck" +name = "Hyprland JaKooLit" +description = "Install JaKooLit's Hyprland configuration" +script = "arch/hyprland-kool.sh" +task_list = "I MP" +multi_select = false + +[[data.entries]] +name = "Linux Neptune for SteamDeck" description = "Valve's fork of Linux Kernel for the SteamDeck" script = "arch/linux-neptune.sh" task_list = "I PFM K" [[data.entries.preconditions]] matches = true -data = { file = "/sys/devices/virtual/dmi/id/board_vendor" } -values = [ "Valve" ] +data = { containing_file = "/sys/devices/virtual/dmi/id/board_vendor" } +values = ["Valve"] [[data.entries]] name = "Nvidia Drivers && Hardware Acceleration" @@ -50,6 +57,20 @@ description = "Yet Another Yogurt - An AUR Helper Written in Go. To know more ab script = "arch/yay-setup.sh" task_list = "I" +[[data]] +name = "Debian" + +[[data.preconditions]] +matches = true +data = { containing_file = "/etc/os-release" } +values = ["ID=debian"] + +[[data.entries]] +name = "Hyprland JaKooLit" +description = "Install JaKooLit's Hyprland configuration" +script = "debian/hyprland-kool-deb.sh" +task_list = "I MP" + [[data]] name = "Fedora" @@ -64,6 +85,12 @@ description = "Optimizes DNF for parallel downloads" script = "fedora/configure-dnf.sh" task_list = "PFM" +[[data.entries]] +name = "Hyprland JaKooLit" +description = "Install JaKooLit's Hyprland configuration" +script = "fedora/hyprland-kool-fed.sh" +task_list = "I MP" + [[data.entries]] name = "Multimedia Codecs" description = "This script is designed to install multimedia codecs, and to ensure RPM Fusion repositories are installed." @@ -103,7 +130,26 @@ task_list = "I PFM SS" [[data.preconditions]] matches = true data = "command_exists" -values = [ "btrfs" ] +values = ["btrfs"] + +[[data]] +name = "Ubuntu" + +[[data.preconditions]] +matches = true +data = { containing_file = "/etc/os-release" } +values = ["ID=ubuntu"] + +[[data.entries]] +name = "Hyprland JaKooLit" +description = "Install JaKooLit's Hyprland configuration" +script = "ubuntu/hyprland-kool-ubuntu24.sh" +task_list = "I MP" + +[[data.preconditions]] +matches = true +data = { containing_file = "/etc/os-release" } +values = ['VERSION_ID="24.04"'] [[data]] name = "Build Prerequisites" diff --git a/core/tabs/system-setup/ubuntu/hyprland-kool-ubuntu24.sh b/core/tabs/system-setup/ubuntu/hyprland-kool-ubuntu24.sh new file mode 100644 index 00000000..bd12ef76 --- /dev/null +++ b/core/tabs/system-setup/ubuntu/hyprland-kool-ubuntu24.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +. ../../common-script.sh + +printf "%b\n" "${YELLOW}Starting Hyprland JaKooLit installation${RC}" + +git clone -b 24.04 --depth=1 https://github.com/JaKooLit/Ubuntu-Hyprland.git "$HOME/Ubuntu-Hyprland-24.04" || { printf "%b\n" "${RED}Failed to clone Jakoolits Ubuntu-Hyprland repo${RC}"; exit 1; } +cd "$HOME/Ubuntu-Hyprland-24.04" || { printf "%b\n" "${RED}Failed to navigate to Ubuntu-Hyprland-24.04 directory${RC}"; exit 1; } +chmod +x install.sh +./install.sh \ No newline at end of file