Compare commits

...

24 Commits

Author SHA1 Message Date
835ec06d15 add more programs and make script execute commands without confirmation
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2025-06-19 15:52:50 +05:30
ed3cc44eaf Update .drone.yml
Some checks failed
continuous-integration/drone Build is passing
continuous-integration/drone/tag Build was killed
2025-06-16 05:53:39 +00:00
e4529610ea Update .drone.yml
All checks were successful
continuous-integration/drone Build is passing
2025-06-16 05:20:16 +00:00
753b346c1e Update .drone.yml
Some checks failed
continuous-integration/drone Build is failing
2025-06-16 05:16:27 +00:00
bd3054eecf Delete .gitea/workflows/build.yml 2025-06-16 05:15:55 +00:00
7ac18b07e4 Update .drone.yml
Some checks failed
continuous-integration/drone Build is failing
2025-06-16 05:12:20 +00:00
c858c1f601 Update .drone.yml
Some checks failed
continuous-integration/drone Build is failing
2025-06-16 05:10:21 +00:00
a16d691fc0 Update .drone.yml
Some checks failed
continuous-integration/drone Build is failing
2025-06-16 05:05:51 +00:00
d2daea094f Update .drone.yml
Some checks failed
continuous-integration/drone Build is failing
2025-06-16 05:02:04 +00:00
eb62a4bbcb remove git dep 2025-06-05 23:42:11 +00:00
6523c8408e Update .gitea/workflows/build.yml 2025-06-05 23:39:18 +00:00
782aa4c680 Update .gitea/workflows/build.yml
Some checks failed
Build on Multiple Distributions / build-on-fedora (push) Failing after 3s
Build on Multiple Distributions / build-on-arch (push) Failing after 4s
Build on Multiple Distributions / build-on-debian (push) Failing after 3s
2025-06-05 23:37:06 +00:00
24164c8042 Update .gitea/workflows/build.yml
Some checks failed
Build on Multiple Distributions / build-on-arch (push) Failing after 1m13s
Build on Multiple Distributions / build-on-debian (push) Failing after 1m30s
Build on Multiple Distributions / build-on-fedora (push) Failing after 1m45s
2025-06-05 23:31:09 +00:00
7554f59037 change url
Some checks failed
Build on Multiple Distributions / build-on-arch (push) Failing after 20s
Build on Multiple Distributions / build-on-debian (push) Failing after 1m36s
Build on Multiple Distributions / build-on-fedora (push) Failing after 1m52s
2025-06-05 23:18:30 +00:00
46e2859d28 trim whitespaces
Some checks failed
Build on Multiple Distributions / build-on-arch (push) Failing after 1m31s
Build on Multiple Distributions / build-on-debian (push) Failing after 2m57s
Build on Multiple Distributions / build-on-fedora (push) Failing after 1m12s
2025-04-30 17:59:48 +05:30
93a9424b98 minor improvements 2025-04-25 14:59:34 +05:30
d4649c8f00 change guake to yakuake and add kdepim-addons 2025-04-25 14:59:01 +05:30
59ef68a9b4 remove dups 2025-04-25 14:58:36 +05:30
c6096a1d51 add zen and headlamp 2025-04-22 12:16:32 +05:30
30b90ec02b Edit .gitlab-ci.yml 2025-04-21 23:53:17 +00:00
137be4f34c Update .gitlab-ci.yml file 2025-04-21 23:48:52 +00:00
8dc0e308ff Add new file 2025-04-21 23:47:15 +00:00
8269d99d26 Edit build.yml 2025-04-21 23:30:28 +00:00
bd281b11b6 Update .gitea/workflows/build.yml 2025-04-18 11:47:29 +00:00
6 changed files with 177 additions and 139 deletions

129
.drone.yml Normal file
View File

@@ -0,0 +1,129 @@
kind: pipeline
type: kubernetes
name: Build on Multiple Distributions
steps:
- name: clone-repo
image: alpine/git
commands:
- git clone https://gitea.akshun-lab.uk/akshun/rust-setup.git /artifacts
volumes:
- name: artifacts
path: /artifacts
- name: build-on-arch
image: archlinux:latest
depends_on: [clone-repo]
commands:
- pacman -Syu --noconfirm
- pacman -S --noconfirm rustup gcc
- rustup default stable
- cd /artifacts
- cargo build --release
- cp /artifacts/target/release/setup /artifacts/
- mv /artifacts/setup /artifacts/arch-setup
volumes:
- name: artifacts
path: /artifacts
- name: build-on-debian
image: debian:stable
depends_on: [clone-repo]
commands:
- apt update && apt upgrade -y
- apt install -y curl gcc
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
- . $HOME/.cargo/env
- cd /artifacts
- cargo build --release
- cp /artifacts/target/release/setup /artifacts/
- mv /artifacts/setup /artifacts/debian-setup
volumes:
- name: artifacts
path: /artifacts
- name: build-on-fedora
image: fedora:latest
depends_on: [clone-repo]
commands:
- dnf up -y
- dnf install curl gcc -y
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
- . $HOME/.cargo/env
- cd /artifacts
- cargo build --release
- cp /artifacts/target/release/setup /artifacts/
- mv /artifacts/setup /artifacts/fedora-setup
volumes:
- name: artifacts
path: /artifacts
- name: upload-to-gitea
image: alpine/curl
depends_on: [build-on-debian, build-on-arch, build-on-fedora]
commands:
- apk add curl jq
- |
# Ensure required variables are set
if [ -z "$GITEA_TOKEN" ] || [ -z "$GITEA_SERVER" ]; then
echo "Error: GITEA_TOKEN or GITEA_SERVER not set"
exit 1
fi
# Set repo path (fallback if DRONE_REPO is not set)
REPO_PATH="${DRONE_REPO:-akshun/setup-script}"
# Create or get release
if [ -n "${DRONE_TAG}" ]; then
echo "Creating release for tag ${DRONE_TAG}"
response=$(curl -s -X POST \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tag_name": "'"${DRONE_TAG}"'", "name": "'"${DRONE_TAG}"'", "body": "Automated release"}' \
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases")
release_id=$(echo "$response" | jq -r '.id')
else
echo "Using latest release"
# Try to get latest release
response=$(curl -s -H "Authorization: token $GITEA_TOKEN" \
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/latest" || echo "")
if [ -z "$response" ] || [ "$(echo "$response" | jq -r '.id')" = "null" ]; then
# Create a new draft release if none exists
echo "Creating new draft release"
response=$(curl -s -X POST \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tag_name": "continuous", "name": "Continuous Build", "draft": true, "body": "Automated continuous build"}' \
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases")
fi
release_id=$(echo "$response" | jq -r '.id')
fi
# Upload artifacts
for artifact in /artifacts/*-setup; do
if [ -f "$artifact" ]; then
filename=$(basename "$artifact")
echo "Uploading $filename to Gitea release $release_id"
curl -X POST \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F "attachment=@$artifact" \
"$GITEA_SERVER/api/v1/repos/$REPO_PATH/releases/$release_id/assets?name=$filename"
else
echo "No artifacts found matching /artifacts/*-setup"
fi
done
environment:
GITEA_TOKEN:
from_secret: gitea-token
GITEA_SERVER:
from_secret: gitea-server
volumes:
- name: artifacts
path: /artifacts
volumes:
- name: artifacts
temp: {}

View File

@@ -1,102 +0,0 @@
name: Build on Multiple Distributions
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build-on-arch:
runs-on: ubuntu-latest
container:
image: archlinux:latest
steps:
- name: Install basic dependencies
run: |
pacman -Syu --noconfirm
pacman -S --noconfirm git nodejs npm
- name: Checkout code
run: |
git clone http://192.168.1.233:222/aggarwalakshun/rust-setup.git .
git checkout $GITEA_SHA
- name: Install dependencies
run: |
pacman -S --noconfirm rustup gcc
rustup default stable
- name: Build with cargo
run: |
cargo build --release
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: arch-setup
path: target/release/setup
build-on-debian:
runs-on: ubuntu-latest
container:
image: debian:stable
steps:
- name: Install basic dependencies
run: |
apt update && apt upgrade -y
apt install -y git nodejs npm
- name: Checkout code
run: |
git clone http://192.168.1.233:222/aggarwalakshun/rust-setup.git .
git checkout $GITEA_SHA
- name: Install dependencies
run: |
apt install -y cargo
- name: Build with cargo
run: |
cargo build --release
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: debian-setup
path: target/release/setup
build-on-fedora:
runs-on: ubuntu-latest
container:
image: fedora:latest
steps:
- name: Install basic dependencies
run: |
dnf up -y
dnf install -y git nodejs npm
- name: Checkout code
run: |
git clone http://192.168.1.233:222/aggarwalakshun/rust-setup.git .
git checkout $GITEA_SHA
- name: Install dependencies
run: |
dnf install -y cargo
- name: Build with cargo
run: |
cargo build --release
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: fedora-setup
path: target/release/setup

View File

@@ -6,13 +6,10 @@ guake-git
howdy-beta-git
lens-bin
moonlight-qt-bin
oh-my-posh-bin
onlyoffice-bin
jellyfin-media-player
mission-center
moonlight-qt-bin
oh-my-posh-bin
onlyoffice-bin
sunshine-bin
standardnotes-bin
visual-studio-code-bin
@@ -20,3 +17,8 @@ zen-browser-bin
docker
tailscale
openvpn3
plasma6-wallpapers-wallpaper-engine-git
kvantum
flux-bin
helm
spotify-launcher

View File

@@ -19,6 +19,8 @@
"org.qbittorrent.qBittorrent": "qBittorrent",
"org.videolan.VLC": "VLC",
"org.standardnotes.standardnotes": "Standard Notes",
"one.ablaze.floorp": "Floorp"
"one.ablaze.floorp": "Floorp",
"app.zen_browser.zen": "Zen Browser",
"io.kinvolk.Headlamp": "Headlamp"
}
}

View File

@@ -1,4 +1,4 @@
guake
yakuake
neovim
git
flatpak
@@ -9,3 +9,6 @@ kio-gdrive
korganizer
plasma5-integration
kwayland-integration
kdepim-addons
steam
kubectl

View File

@@ -29,7 +29,7 @@ fn main() -> io::Result<()> {
let buffer = std::str::from_utf8(&file_content.data)
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))?;
let first_choice: Vec<String> = buffer.lines().map(|line| line.to_string()).collect();
let first_choice: Vec<String> = buffer.lines().map(|line| line.trim().to_string()).collect();
for (index, element) in first_choice.iter().enumerate() {
eprint!("{}. {}\n", index + 1, element);
@@ -43,9 +43,9 @@ fn main() -> io::Result<()> {
}
match distro {
"arch" => arch_choices(input)?, // Pass the input value here
"Debian" => debian_choices(input)?, // Pass the input value here
"fedora" => fedora_choices(input)?, // Pass the input value here
"arch" => arch_choices(input)?,
"Debian" => debian_choices(input)?,
"fedora" => fedora_choices(input)?,
_ => return Err(io::Error::new(io::ErrorKind::NotFound, "Unsupported distro")),
};
}
@@ -103,7 +103,7 @@ fn install_programs() -> Result<(), Box<dyn std::error::Error>> {
let file = Asset::get("prompts/programs.txt").ok_or_else(|| io::Error::new(io::ErrorKind::NotFound, "File not found"))?;
let buffer = std::str::from_utf8(&file.data)
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))?;
let choice: Vec<String> = buffer.lines().map(|line| line.to_string()).collect();
let choice: Vec<String> = buffer.lines().map(|line| line.trim().to_string()).collect();
for(index, element) in choice.iter().enumerate() {
eprint!("{}. {}\n", index+1, element)
@@ -126,13 +126,13 @@ fn install_programs() -> Result<(), Box<dyn std::error::Error>> {
for n in chosen.iter() {
if which("yay").is_some() {
Command::new("yay").arg("-S").arg(n).status()?;
Command::new("yay").arg("-S").arg("--noconfirm").arg(n).status()?;
} else if which("pacman").is_some() {
Command::new("sudo").arg("pacman").arg("-S").arg(n).status()?;
Command::new("sudo").arg("pacman").arg("-S").arg("--noconfirm").arg(n).status()?;
} else if which("dnf").is_some() {
Command::new("sudo").arg("dnf").arg("install").arg(n).status()?;
Command::new("sudo").arg("dnf").arg("install").arg("-y").arg(n).status()?;
} else if which("apt").is_some() {
Command::new("sudo").arg("apt").arg("install").arg(n).status()?;
Command::new("sudo").arg("apt").arg("install").arg("-y").arg(n).status()?;
}
};
@@ -166,14 +166,14 @@ fn install_flatpaks() -> Result<(), Box<dyn std::error::Error>> {
} else {
match distro {
"arch" => {
Command::new("sudo").arg("pacman").arg("-S").arg("flatpak").status()?;
Command::new("sudo").arg("pacman").arg("-S").arg("--noconfirm").arg("flatpak").status()?;
}
"Debian" => {
Command::new("sudo").arg("apt").arg("update").status()?;
Command::new("sudo").arg("apt").arg("install").arg("flatpak").status()?;
Command::new("sudo").arg("apt").arg("install").arg("-y").arg("flatpak").status()?;
}
"fedora" => {
Command::new("sudo").arg("dnf").arg("install").arg("flatpak").status()?;
Command::new("sudo").arg("dnf").arg("install").arg("-y").arg("flatpak").status()?;
}
_ => eprint!("Unsupported distro")
};
@@ -220,21 +220,25 @@ fn update_system() -> Result<(), Box<dyn std::error::Error>> {
match distro {
"arch" => {
if which("yay").is_some() {
Command::new("yay").status()?;
Command::new("yay").arg("--noconfirm").status()?;
} else {
Command::new("sudo").arg("pacman").arg("-Syu").status()?;
Command::new("sudo").arg("pacman").arg("-Syu").arg("--noconfirm").status()?;
}
}
"Debian" => {
Command::new("sudo").arg("apt").arg("update").status()?;
Command::new("sudo").arg("apt").arg("upgrade").status()?;
Command::new("sudo").arg("apt").arg("upgrade").arg("-y").status()?;
}
"fedora" => {
Command::new("sudo").arg("dnf").arg("up").status()?;
Command::new("sudo").arg("dnf").arg("up").arg("-y").status()?;
}
_ => eprint!("Unsupported distro")
};
if which("flatpak").is_some() {
Command::new("flatpak").arg("update").status()?;
}
Ok(())
}
@@ -245,13 +249,13 @@ fn aur() -> Result<(), Box<dyn std::error::Error>> {
let file = Asset::get("prompts/aur.txt").ok_or_else(|| io::Error::new(io::ErrorKind::NotFound, "File not found"))?;
let buffer = std::str::from_utf8(&file.data)
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))?;
let choice: Vec<String> = buffer.lines().map(|line| line.to_string()).collect();
let choice: Vec<String> = buffer.lines().map(|line| line.trim().to_string()).collect();
if which("yay").is_none() {
eprint!("AUR helper not found. Install yay Y/N? (1/0)");
eprint!("yay not found. Install yay Y/N? (1/0)");
let input = handle_int_input();
if input == 1 {
Command::new("sudo").arg("pacman").arg("-S").arg("git").arg("base-devel").status()?;
Command::new("sudo").arg("pacman").arg("-S").arg("--noconfirm").arg("git").arg("base-devel").status()?;
Command::new("git").arg("clone").arg("https://aur.archlinux.org/yay.git").status()?;
std::env::set_current_dir("yay")?;
Command::new("makepkg").arg("-si").status()?;
@@ -275,7 +279,7 @@ fn aur() -> Result<(), Box<dyn std::error::Error>> {
}
}
for i in chosen.iter() {
Command::new("yay").arg("-S").arg(i).status()?;
Command::new("yay").arg("-S").arg("--noconfirm").arg(i).status()?;
}
Ok(())
@@ -291,7 +295,7 @@ fn third_party() -> Result<(), Box<dyn std::error::Error>> {
let buffer = std::str::from_utf8(&file.data)
.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))?;
let choices: Vec<String> = buffer.lines().map(|line| line.to_string()).collect();
let choices: Vec<String> = buffer.lines().map(|line| line.trim().to_string()).collect();
for (index, element) in choices.iter().enumerate() {
eprintln!("{}. {}", index + 1, element);
@@ -373,8 +377,8 @@ fn handle_intel_driver(distro: &str) -> Result<(), Box<dyn Error>> {
return drivers();
}
match input_2 {
1 => Command::new("sudo").arg("pacman").arg("-S").arg("intel-media-driver").status()?,
2 => Command::new("sudo").arg("pacman").arg("-S").arg("libva-intel-driver").status()?,
1 => Command::new("sudo").arg("pacman").arg("-S").arg("--noconfirm").arg("intel-media-driver").status()?,
2 => Command::new("sudo").arg("pacman").arg("-S").arg("--noconfirm").arg("libva-intel-driver").status()?,
_ => {
eprintln!("Invalid choice");
return Ok(());
@@ -383,10 +387,10 @@ fn handle_intel_driver(distro: &str) -> Result<(), Box<dyn Error>> {
},
"Debian" => {
Command::new("sudo").arg("apt").arg("update").status()?;
Command::new("sudo").arg("apt").arg("install").arg("intel-media-va-driver").status()
Command::new("sudo").arg("apt").arg("install").arg("-y").arg("intel-media-va-driver").status()
}?,
"fedora" => {
Command::new("sudo").arg("dnf").arg("install").arg("intel-media-driver").status()?
Command::new("sudo").arg("dnf").arg("install").arg("-y").arg("intel-media-driver").status()?
},
_ => {
eprintln!("Invalid choice");
@@ -403,12 +407,12 @@ fn handle_amd_driver(distro: &str) -> Result<(), Box<dyn Error>> {
clear_terminal();
match distro {
"arch" => Command::new("sudo").arg("pacman").arg("-S").arg("mesa").status()?,
"arch" => Command::new("sudo").arg("pacman").arg("-S").arg("--noconfirm").arg("mesa").status()?,
"Debian" => {
Command::new("sudo").arg("apt").arg("update").status()?;
Command::new("sudo").arg("apt").arg("install").arg("mesa-va-drivers").status()
Command::new("sudo").arg("apt").arg("install").arg("-y").arg("mesa-va-drivers").status()
}?,
"fedora" => Command::new("sudo").arg("dnf").arg("install").arg("mesa-va-drivers").status()?,
"fedora" => Command::new("sudo").arg("dnf").arg("install").arg("-y").arg("mesa-va-drivers").status()?,
_ => {
eprintln!("Unsupported distro");
return Ok(())
@@ -424,12 +428,12 @@ fn handle_nvidia_driver(distro: &str) -> Result<(), Box<dyn Error>> {
clear_terminal();
match distro {
"arch" => Command::new("sudo").arg("pacman").arg("-S").arg("nvidia").status()?,
"arch" => Command::new("sudo").arg("pacman").arg("-S").arg("--noconfirm").arg("nvidia").status()?,
"Debian" => {
Command::new("sudo").arg("apt").arg("update").status()?;
Command::new("sudo").arg("apt").arg("install").arg("nvidia-driver").status()
Command::new("sudo").arg("apt").arg("install").arg("-y").arg("nvidia-driver").status()
}?,
"fedora" => Command::new("sudo").arg("dnf").arg("install").arg("akmod-nvidia").status()?,
"fedora" => Command::new("sudo").arg("dnf").arg("install").arg("-y").arg("akmod-nvidia").status()?,
_ => {
eprintln!("Unsupported distro");
return Ok(())